Monday, January 7, 2019

The Education of Software Developers

When I first entered the ‘professional workforce’ years ago as a software developer, it was not a requirement to have a 4 year degree to be able to get a job. Several things have changed along the way that have made it more difficult for high school students to get ‘formal educational’ training and to then be able to go out and successfully apply for and land a software development job. I don’t believe all of these were good things.

  1. Many high schools that used to teach computer science (programming courses) stopped doing so.
  2. State educational departments made rules that disallowed many teachers who had been teaching programming from teaching those classes at high schools
  3. State educational departments made rules that disallowed many working professionals from teaching computer science at community colleges

Combined, these rules limited the ability for students to explore software development as a profession and limited the ways in which students could get formal education on how to become a software developer.

On the plus side, several things have happened that have made it easier for young students to explore software development. If only these things would have been around when I was a kid:

  1. The internet … boom!
  2. Open source development tools – languages, compilers, frameworks, editors, IDEs, test automation frameworks
  3. On-Line tutorials
  4. On-Line college level programming courses
  5. On-Line help forums
  6. GIT – online source control and sharing of code
  7. Bootcamps teaching programming (primarily Web and Java)
  8. Scratch online programming educational tool for students in K-8 – developed by MIT Media Lab
  9. Lego Mindstorm competitions

The problem, we don’t talk about the learning opportunities early enough in school to attract students to the idea that they can become software developers. In many school districts, students have no insight into any of this until they graduate high school. That is too late. We need to be exposing kids to the idea of software development very early in their educational career – think grade school. Then we need to reinforce those opportunities with additional educational opportunities thru middle school and high school. The goal should be to allow those interested in pursuing this to potentially get out of high school and find entry level software development roles. Not every student would be able to do this, some will need additional education, or may want to pursue additional education to perform within specialized areas – artificial intelligence, data analytics, etc.

I would also argue that we need to rearrange graduation requirements at the high school level – computer science classes should be counted as part of the core curriculum, either as language classes replacing Spanish, French, German, etc., or as math and science classes. Additionally, every high school should be offering computer science classes – either locally or thru remote class arrangements with the nearest community college. I know of high schools teaching Java, C++, C#, and networking (providing CISCO certifications at the end of the class). These kids are old enough to understand these concepts and get a jump start on their post high school education or prepare themselves for direct entry into the workforce. There is no reason not to provide these learning opportunities and have students work ready for entry level programming positions by the end of high school.

Can it be done? Yes, even with the constraints that were in place when I was a kid – no internet, no open source software, no PC’s, I was able to learn enough that I was doing contract programming by the time I was in high school. I personally have hired kids that were graduating from high school that showed they had the chops and the passion to be a developer. Does it take a little extra hand holding? Yep – it sure does, but it’s worth it.

I’m not trying to devalue a college education. There are reasons to pursue a 4 year degree, but we also must be cognizant of the challenges we face today as employers:

  1. There is currently a shortage of skilled software developers that will only get worse as the baby boomers retire – some sites are reporting a shortage of at least 220,000 software developers in the US.
  2. Currently colleges are graduating approximately 30,000 computer science majors each year.
  3. Unemployment for folks in the software development role is currently running around 1.9% (mid 2018 stat)

We need to think outside the box on what we are doing and how we are making this career path accessible to young students. The big boys on the block are starting to change their hiring methods – no longer requiring degrees. 



Be nimble, look for ways to help out your local schools, find ways to let kids explore opportunities in software development. Encourage your kids to go online and find coding learning opportunities. If we don’t figure it out, we are going to be at a disadvantage as we attempt to find bodies to fill the jobs that we need to be successful.

If you'd like more information on my background: LinkedIn Profile