Teaching the Next Generation to Program
The software industry suffers from a lack of talent to fulfill the increasing demands of the market. Software development is no longer a skill that only big enterprises require; it’s a part of every business. We know that software will continue to shape the world we live in, but who is going to write it?
Supply and Demand
With the supply of competent developers far below the demand of the market, many companies are capitalizing on this need by building businesses around training new developers. These programs seek to take individuals with little or no experience and churn out developers after a period of months or even weeks, depending on the program. Online variants teach specific skills or programming languages in a more automated way, and non-profits are also trying to improve the talent pool. A recently launched campaign in the UK, Year of Code, is attempting to get programming taught in schools beginning at the primary level. Another education company, CodeAcademy’s Code Year, allows users to sign up to receive daily emails and begin learning programming basics.
These programs make impressive claims in terms of the speed at which they think they can turn out developers. In a recent interview, Year of Code’s Director claimed that coding can be learned in an hour and could be taught after a day of instruction; however, she admits that she herself doesn’t know how to code. While other programs may not make quite such bold claims, they still aren’t delivering fully “competent” developers in a matter of weeks who are ready to tackle any project.
This training turnaround time is remarkably fast, especially when put in context with other, more familiar skills. After only eight hours of instruction in piano, no one would be capable of teaching a classroom of students how to play the instrument, nor would someone be capable of playing in an orchestra after only a few months of practice. In that amount of time, an individual would learn some of the basics, but he would still far to go. More instruction is necessary to fill in gaps in knowledge: early students don’t know the limits of their experience.
The real risk behind any initiative to train masses of developers is that below-average developers make the supply problem worse. Beginners who are still learning have blind spots that can sink projects. Flooding the job market with people who don’t possess the experience and skills required makes finding experienced developers more difficult for employers.
What Is a Developer?
Programming does involve writing instructions that a computer can understand and process, but simply knowing syntax does not make someone a programmer. Developers are problem-solvers, and they use software systems and programming as tools. A problem-solver never works in a vacuum; constraints and requirements are always placed on the results that are produced.
A developer’s ability to translate a process into something solvable with software is one of the primary skills that he brings to the table. However, as with those who practice any other craft, developers exhibit different skill levels. The bigger the system or project, the more this skill gap becomes evident. One measure of a developer’s skill is to examine systems that he has built. Can they be easily changed and improved? Do other developers enjoy working with the systems? Answering these questions should always be in the forefront of a skilled developer’s mind as he seeks ways to leverage his code and make it leaner.
How do we solve this problem at RoleModel? For years we’ve been training our people with an apprenticeship model. Like other crafts, software development is a skill with many nuances that cannot be taught solely from a textbook. Becoming proficient requires experience, either gained firsthand or from a mentor.
In our Software Craftsman Academy, our students spend hundreds of hours solving problems and learning the foundations of Object Oriented Programing, Systems Thinking, and Project Management. However, their training doesn’t end there: they’ll then spend months working alongside more experienced developers. In reality, becoming a competent developer will most likely take thousands of hours of practice over the course of a couple of years, but in the interim, these students have the chance to do work that provides value under the guidance of a Craftsman. This experience will increase the speed of their learning and help them to find the gaps in their knowledge.
When applied properly, this model produces amazing results, as RoleModel has demonstrated over the years. The model isn’t a way to turn out new developers every few months, but the experience gained is deeply anchored and sets up the individual for a life of learning and a solid career. Constant learning is what makes being a developer so exciting, as the team builds upon a shared foundation.
The push to teach more of the next generation to program is exciting. A developer with basic programming skills may not be quite ready to build the the next Instagram or Snapchat, but these skills will provide new developers with a framework for thinking about ideas and problems.
Note: If you think learning to program isn’t for you, watch this TEDTalk and see what you could spend your next 20 hours discovering. Go forth and learn!