Last month, I commented on Scott Hanselman’s blog about his Hanselminutes podcast in which he interviewed interns who worked for him at his now former company, Corillian. Listen to the podcast and see my comment in that post. Basically, I stated that I was concerned about the lack of students interested in programming these days, attributing it to the loss of passion for the field. Perhaps it’s due to the loss of immediacy, instant feedback and control that used to come from the more dynamic tools of the past. I’m hoping the growing trend of dynamic languages such as Ruby help turn this around.
Actually, I’ve been thinking about this a lot since I wrote this, and I believe that there are several contributing factors to why kids are shying away from the field. Here are a couple:
- Back when I was a kid, it was a lot easier being a generalist. Most of us were programming generalists in school, and saw that most people already in the field were generalists. These days it’s virtually impossible to be so. This is frustrating to many of us already in the field, because by nature we tend to be control freaks, wanting to have the ability to control everything about the machine when we code. And with the lack of experience, students can get easily overwhelmed with all the disparate technologies required to really create something great. The Internet gives them tremendous exposure to these technologies, but it also serves to overwhelm them. And teenagers, in general, are at the stage in their lives where they’re trying to take control of their lives, and are natural control freaks. I think many kids doubt they could really master the field these days. I sure feel that way, and I’m in my mid 40’s, with around 25 years of experience under my belt.
- I think kids also notice adults (like their parents) in the field often coming home at the end of the day feeling beat up at work — not beat up by their bosses or anything like that, but beat up continually by obscure issues that are caused mainly by the complexity of the software and interoperating systems. Several of my colleagues spend much of their time researching strange issues with drivers, communication, security and so forth, basically living in Google or on the phone with tech support rather than creating software. Sure, the industry is trying to abstract much of the plumbing, but because of the complexity, several issues do arise, and most of us have to spend a lot of time playing detective. Yes, it can be challenging the first couple of times you go through this exercise, and some problem solvers thrive on that, but after a short while it starts monopolizing your time and drags you down. We’d much rather be using our problem solving muscles on the main task, but we so often have to switch our focus to these tangents, which drain us and our morale. The kids are not blind to this.
I’m not sure how any of this can be solved. I have to think about this. There’s a growing trend towards simplicity (in and out of the field), and maybe dynamic languages are part of a reaction to that, but for most professionals, those are just other tools to use to solve specific types of problems. Even if students are drawn to programming through that type of vehicle, they still realize that if they want to make this a career, the complexities and frustrations of the above points are what they’d eventually face. Naturally, the more systems need to interoperate, and the more diverse technology platforms become, the more the above scenarios become a reality. I think it takes a different type of person these days to want to enter this field than it did several years ago. And that type of person is in far fewer number than the number of techies of 20 or so years ago.
Many of my colleagues and I get excited all the time by the technologies that come out, but we are quickly overwhelmed (even by a single platform like .NET), and often lose focus. Some of us have resorted to becoming specialists, which often leads to general dissatisfaction for feeling like just a small cog in an assembly line, while others try desperately to maintain the generalist mindset, facing total frustration and loss of focus, jumping from one technology to another, never really doing deep dives, which also leads to general dissatisfaction through overwhelm and a growing inferiority complex.
Hmmmm…I guess the lack of kids interested in the field today is caused by the same frustrations many professionals in the field are feeling lately. I miss the simpler times…