Developer Bootcamp
Tags: development, beginners, learning, coding
Published: 2017-08-03 17:57:01

---
title: Developer Bootcamp
published: true
description: Why are bootcamps only run as a way to get into your first role? Why not set them up and run them in your organisation for either junior, intermediate or even senior developers?
tags: development, beginners, learning, coding
cover_image: https://thepracticaldev.s3.amazonaws.com/i/iszdazi6abjfrydzc2s1.png
---

##Introduction
Developer bootcamps are often associated with 3rd party organisations offering bootcamps to help train junior developers looking to get into their first job. Development bootcamps are used as a way to upskill  an individual's coding knowledge rapidly.

Why are bootcamps only run as a way to get into your first role? Why not set them up and run them in your organisation for either junior, intermediate or even senior developers?

This is exactly what we did at my current place of employment, when I made the [transition from QA into a Development](https://danieldonbavand.com/qatodevelopment/), a 2 month C# coding bootcamp was setup that would start off with some of the basics of the C# programming language then move into more advance topics. 

##Why a Developer Bootcamp?
C# is a complex language and contains many different areas that require diving deep to fully understand them. It can be quite overwhelming for junior developers to see how many different areas there are in the C# language. All areas of the C# language are important, but when starting out, it's important to know what areas are going to give you the biggest bang for your buck, i.e what areas to learn first, then work out how deep to go in learning these certain areas.

It’s easy for developers to fall into the trap of copying and pasting code without actually understanding it, with sites such as stack overflow that many developers use to grab snippets of code, it’s important that you actually understand the code you are using. When you don’t understand what the code is doing you are in danger of releasing code that is not scalable, has unintended side effects and you are more likely to have bugs in your code.

When starting out as a developer the bootcamp helped me build on top of my existing coding knowledge. While I knew certain areas, I definitely fell into the trap of copying and pasting a lot, without actually understanding what it was doing. The camp has allowed me to more easily see when I should be investigating other ways to do things, to know when something doesn’t look right and to know why code might be written the way it is.

##Bootcamp Structure.
The boot camp consisted of three two and a half hour sessions a week run by the more senior developers in our team. We were assigned homework to complete prior to class. The homework included watching pluralsight courses that were focused on the next day's topics, reading relevant articles and certain chapters from code books.

We were assigned mentors that put time aside every week for 1 on 1 sessions. In these sessions, we would go over anything we needed more clarification on from the bootcamps.

An example of the bootcamp structure that we followed can be seen below.

####Weeks 1 - 2
* C# Fundamentals
* Equality and comparison
* Collections
* Interfaces
  * **Exercises**
  * http://exercism.io/exercises/csharp/accumulate/readme
  * http://exercism.io/exercises/csharp/strain/readme
  * http://exercism.io/exercises/csharp/word-count/readme

####Weeks 3
* Best practices - collections and generics
* OOP 
* C# events, delegates
 * **Exercises**
 * Write a shard/route/cell lookup cache
 * Create an event driven file watcher
 * http://exercism.io/exercises/csharp/robot-simulator/readme

####Week 4
* Lambdas/anonymous objects
* LINQ expressions
* LINQ operators
 * **Exercises**
 * Refactor previous lessons to use LINQ
 * http://exercism.io/exercises/csharp/simple-linked-list/readme
 * http://exercism.io/exercises/csharp/binary-search-tree/readme

####Week 5 - 6
* Defensive programming
* Exceptions and exception handling
* Streams/IO
* Http Requests
* Reflection

####Week 7 - 8
* Threads/Concurrency
* Monitors/Locking/Semaphores
* Async programming
* Concurrent collections
 * **Exercises**
 * Coding Dojo


The bootcamp can be customised in many ways, depending on skill level, the amount of time people have to invest etc. 
  
The format for each session depended on the person taking the class and also what content was being covered.

An example format that was followed would be, answer a set of questions at the start of the class, this then helped drive what areas to focus on. We would complete coding exercises and dive into deep discussions on ideas and thoughts about topics that were being covered in that week.

While we use many different websites for the training material, some of the more common sites are

[**Pluralsight**](https://www.pluralsight.com) - is an online education company that offers a variety of video training courses for software developers, IT administrators, and creative professionals through its website.

[**Code School**](https://www.codeschool.com) - is an online learning destination for existing and aspiring developers that teaches through entertaining content. Each course is built around a creative theme and combines gaming mechanics with video instruction and in-browser coding challenges to make learning both educational and memorable.

[**Exercism**](http://exercism.io/) - is an online site that provides coding exercises in many languages. Each exercise has a set of automated tests, that you must get passing. The exercises encourage you to explore trade-offs and best-practices. Each solution you write is an occasion to ponder readability and code smells.

####Coding books that we found useful,
• [C# in a Nutshell](https://www.amazon.com/C-6-0-Nutshell-Definitive-Reference/dp/1491927062/ref=sr_1_2?s=books&ie=UTF8&qid=1501612688&sr=1-2&keywords=c+in+a+nutshell)

• [C# in depth](https://www.amazon.com/C-Depth-3rd-Jon-Skeet/dp/161729134X/ref=sr_1_1?s=books&ie=UTF8&qid=1501612666&sr=1-1&keywords=C%23+in+depth)

• [Clean-Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?s=books&ie=UTF8&qid=1501612644&sr=1-1&keywords=Clean+Code)

• [Code-Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&ie=UTF8&qid=1501612324&sr=1-1&keywords=Code+Complete)


##Mentorship
Having a mentor assigned was another part that made the bootcamp so successful, it gives people a single point of contact to ask questions to. Mentors would setup weekly training dojos, that were used to through a set of problems, based on the weekly bootcamps. These dojos would be used to also cover areas that might not have been fully understood at the time or needing further information on.

##Summary
I’ve taken one of these bootcamps and it has helped increase my knowledge and understanding in the C# language. I believe that it’s important we understand the code we are writing so that we write more maintainable code that is easy to read and less prone to bugs.

The bootcamp has helped section off the C# language, allowing me to more easily set goals and tasks to focus my learning on these areas after the bootcamp has finished. 

These bootcamps can be targeted to any skill level and be run over a set period of time that works for you and your team. 

If you have any questions or comments, I would love to hear from you. See my ‘About’ page for my contact details, or feel free to leave a comment below.