There are many tools out there today trying to keep people interested in programming. I’ve seen attempts such as CodeCombat or PencilCode at captivating new or novice programmers and somehow “tricking” them into being interested. Likewise, while in college, I saw many people attracted to Computer Science degrees because they heard you can make gobs of money writing code. These are all great tools to try and capture people’s attention, but truth is, they are insufficient to motivate people to be “interested” and improve their programming skills.
What are we really talking about? First thing’s first. When they say they want people that are “more interested” in computer programming, what they really mean to say is: we want more capable programmers. Let’s face it, anyone can open up a text editor and start writing a small website using Python and Flask and get it up and running in the matter of minutes. That being said, when you hear people say, “we need more people interested in programming,” they’re not suggesting that the current set of programmers is necessarily too small in number (though that seems to be what they’re saying) but, instead, we are short on strong and passionate programmers.
What are the problems with our current methods? We have two overarching problems with the way we are tackling our current problem. The first is that we don’t say what we mean (this must be a programmer thing). The other problem stems from the fact that we’re baiting people in the wrong way.
First off, when we say we need more “interested people,” we are actually saying we simply need more bodies to write code (which is not what we mean). By doing this, we end up with many people who are mostly idle and a few people working very hard. As a result, Brook’s Law is not surprising (barring usual learning curves for the passionate and experienced devs). We then create this atmosphere of lukewarm developers who hold a job because they got their degree and that’s what they were “supposed to do.” This tends to drive the passionate ones away (after all, they’re excited and they want those around them to be as well) and you’re left with teams who constantly struggle to meet deadlines and have practically stopped innovating on their product. I will leave it to you to figure out why that dynamic isn’t good for your software projects or your company.
Now, back to our bait-and-switch issue. By making programming seem easy and fun, we attract all sorts of people. I mean, seriously, who doesn’t want a job that pays well, is easy, and is fun? Sounds like an amazing position. That said, we’re lying to ourselves to say that software engineering is always fun (rewarding and exciting for innovators is more like it). It is often frustrating, difficult, and cumbersome. It really takes a special (though I do not necessarily claim incredibly rare) kind of person to be a programmer and to enjoy their work.
How can we fix this? We simply need to stop lying to ourselves and tricking others; let’s be honest about our business. First of all, we are always looking for capable developers. Claiming we need more warm bodies to write code is like saying we need more cores on a chip for a single-threaded application to run faster. It is simply wrong. That said– and I cannot stress this enough– do not discourage those who are seeking to become stronger programmers. People who are working hard to really learn and innovate are the people who (if they aren’t already) will become your capable developers. Everyone starts somewhere and it takes time to get there, but we should also be frank with these developers. We should let them know we are looking for skilled developers and to encourage them to work hard to reach that level by correcting their issues and providing constructive criticism. Likewise, we should always continue to strive for this goal ourselves (we can always be better, of course).
Similarly, just like we should not fabricate the responsibilities of a particular position when seeking top talent (who will ultimately leave when he/she realizes they’ve been lied to), we should not convince people that what we do is in any way easy or as fun as playing a video game. If we do this, we’re simply lying. To be fair, if you’re a strong developer, you’ve likely learned on your own that these are mystical unicorns that everyone wants you to think exist so you’ll come work for them. However, when you do get some people who are disillusioned by these fabrications, they surely will not produce as you had hoped. Fixing this problem is even simpler than the last. Be up front and explain that there can be frustrating times when working with code. Similarly, be honest and let them know that what they are working on may not be groundbreaking in and of itself, but when integrated with the rest of your system will be an integral part of a much larger and more important system. You should be seeking the devs that hear this and get excited. They truly understand that sometimes someone needs to do the “chores” and occasionally you get the opportunity to work on the more exciting work (though it’s all important). Finding people who understand this and are not deterred by the difficult work ahead are sure bets for strong programmers and, likely, strong innovators.
Above all, we should quickly work to dismiss any falsehoods about our field. We should look to find people who are genuinely interested in the kind of work we do rather than courting other intelligent people who have no interest in our day-to-day. Intelligence without passion tends to be wasted. After all, if someone is a biological genius and also happens to be pretty smart with computers, we would probably rather have them discover the cure for cancer than to write our nextgen ad platform. Just saying.comments powered by Disqus