I’m trying to work my head around some of the issues we have with the gaping hole we are looking at, in trained software development professionals.
There are a variety of ways for people to enter into the profession:
- University degree
- Technical school diploma
- Online programs
- Teach yourself
These are often presented as options to choose from, depending on your learning style and budget. But that’s only part of the story.
University education is both expensive and elitist. And it is elitist. Don’t argue, I attended University of Calgary, and got my Bachelors of Science degree, majoring in Computer Science, minoring in Applied Mathematics. It’s totally elitist. There just aren’t enough spots in universities for all the students who would like to attend. The filter is either cost or stringent entry requirements (or both). All A’s sometimes isn’t even good enough to get a student into some of these programs. The cost of attending a university is often beyond the reach of prospective students. Certainly in the US, but here in Canada, too. Even with student loans (like I did), it can be an almost intolerable burden. Many programs churn out graduates with nice shiny degrees, but no practical experience. Some universities have work experience co-op programs, where students get 4 or 8 month stints gaining valuable real-life work experience. I find it interesting there are businesses that will sometimes only hire people with university educations, and other businesses that will never hire people with degrees. There’s definitely something to be learned from this, but it’s probably not what you think. Neither one of these opposing view points is completely wrong. But I think these businesses also don’t always understand WHY they have made these choices. And that WHY is the interesting part. But I digress. We’ll have to revisit that point
below in another post.
Technical school diplomas (2 year programs) like those at colleges or technical institutes are the next producer of CIT graduates. Since these programs only take 2 years, and are generally lower in cost that university programs, they are within the reach of many more people. But they also have limited space available, and thus it can be as difficult to get into these programs as the university ones. These schools spend less time on theory, more on practical experience. Graduates of these programs are the solid backbone of the industry. As I mentioned, I have a university degree, not a technical diploma, but if I had to make a recommendation to one of my teenage nephews or niece right now about how to enter our profession, this would be my go-to.
Bootcamps. Rather than list them all (so very many), I’ll just point you to this review. I’m really torn about bootcamps. They are trying so hard to fill that big gap between IT personnel & IT jobs, but IMO they are leaving great gaping holes in the training of those people. Holes that those bright, eager people will either fall into (never to return), or will need to be bridged by on-the-job training wherever they end up. Some of these programs have follow up “apprenticeship” work with associated companies. I really believe this is a good way to fill in some of those gaps, and prevent some of the pre-mature exits that I have been witnessing. And let’s not forget the biggest downside of bootcamps… expense. They don’t take a lot of time, but holy hell are they ever expensive (a few are more economical, like HackerYou, but it is an outlier).
Online programs have been proliferating like bunnies. Udemy, Lynda, Udacity, Coursera, Code Academy, Pluralsight, & Khan Academy are just a few that come to mind. Each has different types of programs, some that go far beyond coding, and some that are very narrowly focused. Some are free, some are low cost, and some cost quite a bit more. The common theme for these is that you can learn anywhere with an Internet connection and you need to be a motivated self-starter. That last bit is important, because you won’t get a lot of hand-holding. What you will get is a work-at-your-own pace experience, which can be an advantage if your schedule won’t permit participating in more traditional programs, or your wallet can’t bear the cost of the bootcamps.
Teaching yourself is also an option. There are quite a few good books you can read, and some are even free. This particular form of learning works best if you have a specific project in mind, and you want to focus on learning just the things you need to build it. This will definitely leave Swiss cheese-like holes in your coding skill set, but I’ve met more than a few people who learn best by “doing”, so if you fall into this category, teaching yourself might be your best bet. You probably also need a mentor. Someone you can turn to when you run into problems. Because you will run into problems.
So we’ve reviewed all the different methods of training new software development professionals. Now what? We have all that, and it still isn’t filling the gap. There just aren’t enough people ENTERING these pipelines. We do however, have the beginnings of a solution to that. In Canada, that solution is operating under the auspices of “Canada Learning Code” (Hey, did you know it’s Canada Learning Code WEEK? (Jun 1-7)). We need to start by getting all kids coding. That will only happen if we make it part of the core curriculum. But before THAT can happen, you need teachers who can teach coding. We’re not there yet, but hopefully we will soon have a flood of kids with basic coding skills flowing into all those further education programs to produce some of the people we need going forward.
Hey, do you think we’re ready for that? I don’t. We don’t have enough trained people to train all the people we need. Most are too busy doing. And not all doers make good instructors. See what I mean? Chicken & egg problem.
Anyway. That’s my nickel’s worth on the issue. Hopefully if we start thinking about it now, we’ll have some ideas before it becomes a crisis. Well, a different crisis, anyway.