My goal over the years has been to shrink the time for a developer to learn a new technology so they are job ready. A couple of weekends ago, I was invited onto the Locknote panel at this year’s DDD Sydney conference. The topic of discussion was learning.
The two most common questions asked were:
- What is the most effective way to learn?
- How do you retain the most valuable information?
So I decided to write this blog post about it.
At SSW we have trained thousands of developers over the last 25 years in Australia and around the world and we have seen the best results when developers learn by doing. The theory of “Learning by Doing” basically says that in order to retain the most amount of information, you’ve got to actually do the thing you’re learning.
Traditional Methods of Learning
There are many ways you can learn a new technology. Below are some of the traditional ways you can learn:
Studying at University or a Community College
Studying at a learning institution is highly recommended to kick off your career. They give you a good foundation in software development best practices, but they often do not teach the technologies that are in demand in the marketplace today. The curriculum takes a very long time to create and get approved, so it is often out of sync with the job market.
- The program includes lectures, tutorials, assignments etc
- Spend 3 or more years learning broad concepts in a formal lecture environment
- Learn extra information that you’re never going to use
- Emerge “fully qualified” with no actual hands-on experience
Conferences are great opportunities to find out what technologies are hot, important and coming. They are an awesome way to quickly get an overview of technologies and practices and help you decide if you want to dig deeper. They give you a lot of high level information about a lot of technologies but they don’t give you an opportunity to get your hands dirty.
- They are expensive. You are spending thousands of dollars in just a few days
- You learn broad concepts briefly
- Develops the need for learning more
- Allows you to work out which technologies you want to learn more about
- Great networking opportunity
Some conferences I enjoy speaking at and attending are:
The traditional classroom/lecture style training is still very popular but has some major drawbacks. The speaker tries to pack a lot of information in a small period of time. It just isn’t possible to retain all this information (I’d say retention is around 20%) and most of it is learning stuff you might use one day.
People typically leave classroom style training feeling great, but get into trouble when they try to implement what they learned into their work project. By this time the trainer has moved on and they are alone with no one to assist.
SSW runs these types of classes, however unless they are coupled with self-education and further learning, they will not help you attain the level of knowledge you need to be an effective enterprise software developer. Relying on these methods alone is ineffective because you’re getting your information from someone who waves their hands, rather than rolling up their sleeves. I know this all too well ?
Classes available at SSW that fit this description are:
Teaching yourself is one of the most popular and inexpensive ways to learn a new technology. It is excellent as it is fuelled by your own thirst for knowledge. If you are teaching yourself, it means you want to know more!
- The downfall is you don’t know if the information you’re getting is accurate
- From the myriad of blogs it’s hard to figure out what you need to know
- The lack of structure and direction means you can sometimes miss key building blocks
- You burn a hell of a lot of time
Online Video Courses
These video courses are all the fad today. Whether it’s Pluralsight ($49 per month), Xamarin University($1995), SSW TV (free) or Codecademy (free) they are all very useful and very detailed in their explanation of new technologies. But when you need to know how to apply a concept differently to the way it is explained you have to go searching online for an answer.
You just don’t have someone to call on when you get stuck.
- These are all awesome sites and really great ways to get some accurate and up-to-date knowledge
- All of them are cheap/relatively inexpensive, or free
- This method utilizes downtime when you’re commuting
- They are very passive but you get to choose what you learn, and you can also stop and pause and replay parts you didn’t fully understand
User Groups / Meetups
I have been running the Sydney .NET and Canberra .NET user groups for over 20 years so I believe user groups are a great way to learn. You not only learn something new every month, but you also get to network with others in the industry and make friends who can help you when you are stuck with a problem.
As good as they are, they do not give you much opportunity to Learn by Doing.
A New Approach to Learning
The traditional approach to teaching developers new technologies is learning by watching :-). I believe learning by sitting and listening sucks and is ineffective. Classroom training falls in this category and many corporates still like to spend money training their developers this way, but I am hopeful that we will reduce our lecture style training and talk them into training their developers the new, better way of Learning by Doing.
So how do you make this approach work for the average developer? Is it simply getting a developer to spend their personal time studying a new technology and then creating a side project using it? That is actually the best way to do it and is the essence of what Learning by Doing is all about.
But my experience tells me that only the best developers will do this as it is hard work and consumes a lot of personal time. Few developers take this approach, so the challenge for businesses is getting their developers skilled up to build enterprise-ready apps in the shortest possible time.
Mentoring is the Answer
Mentoring is the practical way of getting the average developer to learn by doing. Mentoring provides a framework where average developers can receive the benefits of building side projects with the additional help of having an expert helping them along the way. Mentoring is all about building real world apps and learning by doing.
Having a mentor is like having a coach. You have someone to bounce ideas off and ask questions if you don’t fully understand something.
Mentoring allows developers to get up to speed on a new technology in record time, for the following reasons:
1. Mentors are developers, not just trainers
The power of mentoring is that mentors are actual developers. They are using the technologies they are teaching every day. They are not academics teaching principles and techniques that worked 2-3 years ago. They teach what they implemented on a project a few weeks ago. The best mentors are usually full time developers who mentor a group of students after hours or between projects.
2. Mentors work alongside students
Mentors are also different to trainers because they don’t just teach the technology, they also review the developers’ code, debug their work and pair program. As the developer works through the tutorials and tries to apply their newfound knowledge back at work, they will inevitably get stuck. There are always more questions than answers to be found in tutorials and blog posts. So when these questions arise, the mentor is there to provide the answer quickly to get the developer unstuck and moving forward again.
3. Students build real world enterprise-grade apps
In most general courses the tutorials and examples are one-dimensional. The apps are simplistic and never cover complex scenarios. When working with a mentor you have the opportunity to build real world apps that solve real problems, not just problems that are easy for trainers to use in a classroom setting or explain in a 2-hour video.
Be Mentored at FireBootCamp
Last year we won the Microsoft Partner Award for Excellence in Learning. I believe a big part of the reason we won was because of our new approach of using mentors.
FireBootCamp was developed over the last few years to help developers Learn by Doing. Each program has a mentor who is a full time developer at our consulting company SSW. They mentor between projects or 1-2 days a week.
Students also build a selection of apps during the program, so they get lots of practice writing code. The two most popular programs are:
- FireBootCamp Angular 2 Online – This is a 6-week online program where each student has 2 weekly one-on-one sessions with a mentor. The students learn how to build enterprise apps using Angular 2 by building 4 web apps, the last being the SSW Enterprise Music Store
- FireBootCamp Ultra – This is a 9-week full time *in-person* program where graduates and developers learn to build enterprise apps using Angular 2, Web API and the Microsoft .NET stack. The training includes a full time mentor who trains and works with the students as they build a large real world app
For over 20 years I have been trying to shorten the time to train a developer in a new technology to get them enterprise ready. After training 1000’s of developers I believe that mentoring is the best approach get developers up to speed in the shortest possible time.
If you are keen, join the fun at FireBootCamp.com