nerdschool studenter som jobber i klasserommet
Nerdschool: narrowing the technology gap - Bouvet Norge blogmask-mobile

Nerdschool: narrowing the technology gap

Siv Midtun Hollup 
15. sep. 2015

Remember how there were gaps between what you learned while studying and what you actually required when you started working as a developer in the IT industry? How the world suddenly went from nicely ordered to mildly chaotic as you suddenly needed a whole host of different techniques and tools, all at once? Or are you trying out a new direction in your career and don’t know where to start?

We hereby present Nerdschool: a workshop series on basic techniques, languages and tools developers use on a day to day basis. Our goal is to narrow the knowledge gap for students and developers. The IT industry moves at a rapid pace and the tools we use may not be taught at the university. Nerdschool workshops provides participants with a quick introduction to important topics for developers.

Over the last year we’ve been developing workshops tailored for students and others who want to learn basic programming techniques, languages and tools. Each workshop is around three hours long. After a short introduction (typically 10-20 minutes) the participants spend the rest of the time working either on their own or in small groups. For some workshops, like basic pair programming, we enforce collaboration. Participants should walk away from a workshop knowing where to begin when they encounter the same topic later on.

We aim at delivering a workshop every two weeks following the university semesters, in total 10-12 workshops over a year. Anyone can participate and all workshops are free of charge. Over time the number of workshops and topics may change, but we intend to run the same or at least similar workshops every now and then so new participants can join in. This also gives previous participants the possibility to repeat a workshop and see what they’ve learned since last time.

Nerdschool workshops introduces topics like applied shell scripting in bash, Git and version control, the JavaScript language, test driven development, SOLID programming principles, code smells, refactoring and build systems. For most of these workshops basic programming skills are sufficient, but we also welcome experienced developers to guide novices.

Each workshop will have its own repository. We'll make them available as we run through our schedule. The workshop contents: slides, assignments and supporting code will all be available from https://github.com/nerdschoolbergen

Come play with us!

All our stuff is free! If you like our setup, feel free to start a Nerdschool in your own city. Use our repositories or fork you own. Are you a participant and want us to run a specific workshop? Want to contribute in some way? Contact us either through @nerdskool on Twitter, email us at nerdschoolbergen@gmail.com or check out our Meetup page.

Last year myself, Anette Bergo, Njål Nordmark and Eirik Årdal made up the Nerdschool team, and this year we are joined by Eirik Bell, Erlend Røsjø and Regine Sagstad Berg. Thanks to Bouvet for allocating us some time to administer and plan these workshops, and also the Department of Informatics at the University of Bergen for housing us!

What we learned the first year

It’s been both challenging and fun to develop Nerdschool. Since we’re targeting fairly inexperienced programmers it isn’t always easy to see where the participants will struggle. Our most successful workshops have been where we’ve either repeated a small exercise or where we’ve planned a loosely defined tasks for last. Clearly defined tasks are great for checking out boxes, but it can be hard to make them realistic. Loosely defined tasks let both inexperienced and more advanced developers feel that they get something out of the workshop while delivering a more realistic view of problem solving. We’ve also encouraged more advanced participants to help novices, learning even more themselves.

We try to have short introductions and spend the rest of the time working. We've also run workshops where we have a couple of sessions with short introductions at the beginning of each task. It’s important not to get stuck in a particular format, as different workshops require different setups to be successful. The only golden rule was not to deliver lectures and make it as hands on as possible.

We rediscovered and relearned basic techniques we thought we knew. It never ceases to amaze how much you can learn from simple exercises even though you are an experienced developer. This is one of the reasons we’ll rerun the same or similar workshops on a regular basis.

Three hours is a short time and it takes quite a while to understand what’s going on in a codebase before you can start coding. This is doubly true if you’re using a new programming language. We used small codebases so that participants weren't overwhelmed by complexity before even getting started. 

We ran some workshops in JavaScript and some in Java, as our most inexperienced participants knew some Java. A strongly typed language also makes it easier to introduce principles like refactoring and the help you can get from a good IDE.

A few times we worried about a workshop being too short. Our solution to this, aside from having some open tasks, was to have the more advanced participants repeat the task with a twist or an expansion. We also saw that what we thought were short workshops ended up taking the whole three hours and even then some.

We’ve selected some well known katas for some of our workshops and will probably offer a variety of katas when we repeat a workshop. In this way the workshops can be of value to participants who have been to a previous workshop on the same topic.

Lastly, we quickly realised that it was good to have at least four people planning and executing the workshops. A three hour workhop every two weeks made for an intensive schedule for us. We were always two at each workshop where at least one of us had a deep knowledge of the topic. 

Temaer