A few months ago I wrote a column for Visual Studio Magazine titled “Where have all the developer’s gone” in which I pointed that interest in programming and computer science seems to be dropping – at least in the United States. And in fact, much of the interest in learning programming seems to be in countries like China, Pakistan, etc. I concluded with a somewhat cautionary note that if we want our kids to become the technologists of the future, it’s up to us to do something about it.
This brought forth a great deal of comment, one of the most interesting questioning why anyone would encourage their kids to go into the software business in the first place. Why would you go into an industry where it’s increasingly difficult to keep up, where jobs are increasingly being outsourced, and where there is rarely long term career viability? Doctors can continue treating patients into their 60’s and 70’s, Lawyers continue lawyering, bankers banking and politicians politicking until they drop dead (and sometimes longer in the case of politicians). But past 40 or so, software developers who aren’t fortunate enough to have solid management gig are likely as not to find themselves unemployed or in some other career.
I’ve been particularly fortunate in this regard. Through a combination of being self-employed, honestly passionate about technology, and a bit of talent, I’ve had the opportunity to continue coding. What’s more, I’ve had the freedom to diversify into all sorts of new technologies beyond my core expertise. But keeping up is an effort. I often compare the life of a software developer to that of Alice in “Through the Looking Glass” – where Alice is told by the Red Queen that she has to run as fast as she can just to stay in place, and to make progress she has to run even faster
Why would anyone wish this on their kids?
It seems that our interests as a nation are radically different from our interests as individuals. There is no doubt that we need a lot of skilled engineers and programmers going forward. Not only do we need to maintain our existing technological base, there’s going to be increasing demand for power engineers and some incredibly sophisticated software to handle the future smart grid (or EnergyNet” as Juval Lowy calls it). Where are those developers going to come from?
I suppose we can continue to import them. But will the United States continue to be a desirable place for migrant technologists? To some degree it is likely, but as their local economies develop, they may find better opportunities at home. And many engineers consider foreign workers to be part of the problem – competition that makes it even less desirable to enter the business. But let’s assume for the moment that for the foreseeable future foreign nationals will continue to provide needed support our technological society, and that it is in our national interest for them to do so – thus making home-grown talent less essential.
What do you encourage your kids to study if not technology?
Medicine is good – the Baby Boom generation is getting older and there will be demand for more health care. Lawyers? It’s hard to argue that the U.S. needs more lawyers. Investment bankers? It seems unlikely that will soon return to being the path to instant riches it once was. Therapists? That’s not bad – there are going to be plenty of stressed-out unemployed people who will need treatment.
I suppose there’s always the option of flipping burgers or greeting folk at Walmart (not that there’s anything wrong with that).
It’s not enough to say that technology is a hard field – it is. But hard isn’t necessarily bad. And training in engineering sharpens one’s problem solving skills in a way that few other degrees can manage.
So here is my answer to those parents who wants the best for their kids: absolutely encourage them to get a technical degree. But don’t let them think they can rely on that alone to create a good future for themselves in a tumultuous world. Make sure they develop great communication skills, written and verbal. Teach them about money and accounting so they can use the relatively high income from the early part of their careers to establish a foundation for what comes next. Teach them to how to evaluate risks and opportunities so they can jump when the time is right and perhaps create their own businesses. And teach them to follow their passion, so that no matter what happens with their career, at least they’ll have some fun along the way.
I find it hard to fathom that people would discourage others from entering a technical field. Keeping up with any professional field seems to be a neverending battle of keeping up with the latest. I think that we might be feeling the transition of the “anyone can be a programmer” mentality of the 90’s into a more professional mindset, and some who used to call themselves developers may not like what that requires.
I agree with your advice to kids. Just as if they wanted to be a doctor or lawyer I would say that they better really enjoy the profession. Because to be successful at it you are going to constantly work hard at it and from time to time you will find yourself asking if it is worth it because of the dedication that is involved.
I was so offended by the behavior of American and UK programmers on usenet during the writing of “Build Your Own .Net Language and Compiler”, and their malicious attack on the Amazon site, that this contributed to my decision, after BYODNLAC was published, to leave the field.
I started on the 8K IBM 1401 in 1973 and survived several transitions. Visual Basic gave me a new level of interest in the field as it gradually improved, and then I learned C# and OO.
But as it happens, I’d developed a class in “English as a second language for software professionals” in China and started to study English and English teaching. Since 2005 I’ve been educating people in English, social studies and computer science.
I’m still coding but absent any deadline pressures or nasty co-workers.
I did get tired of the interminable language debates, and the widespread ignorance of basic computer science. I got tired of excessive loyalty to languages; although I defend VB’s semantic completeness and equivalence to C#, I am more comfortable with explicit block structure.
I do get a feeling that a lot of software has been already written, and that the quality stuff is Open Source. I find it disturbing that the origin of specific open source packages is obscured, and arbitraged for profit by traders, who are ultimately trading IMO in a virtualized form of free (as in slave) labor.
Good to catch up with your blog again, Dan. Thanks again for your editing BYODNLAC which has been moderately successful…occasionally in the top ten compiler books.
Becoming a coder isn’t bad itself, but it’s true that parents should teach their ‘future coder’ kids about importance of money management and communication skills. That’s mostly a sitting job and lot’s of time spent in front of computer. That can easily turn someone into a person that is just focused on coding, solving software problems, not noticing their personal life’s issues. Despite of degree and education, being a succesful coder requires constant learning new stuff, thinking about the future, who really knows for sure what technology, software and programming languages will be on top in couple of years? Take a look at Ruby on Rails, fast grow and hype, RoR coders were strongly needed because web 2.0 business was on top, but lately I didn’t notice so big demand for ruby coders. Now what? Let them jump on another language?