I recently celebrated my 40th birthday. A friend joked to me, “Hey, guess that means you’re too old to program anymore!” I laughed on the outside, but it gave me pause. Age discrimination is nothing to laugh about in our field. COBOL guys faced this problem years ago as Java guys like me were ascending the ranks, and we laughed heartily about legacy code and their inflexibility with new technology.
Now the joke’s on me. Maybe you too. And if it’s not now, it will be soon enough. Still laughing now? Yeah, I thought so.
Our field is ripe for age discrimination in so many ways. We value hot, new technologies, the ability to absorb them at unheard of rates, working insane hours to push products out the door–all things attributed to the younger workers of our field. And did I mention that younger workers are cheaper? A lot cheaper. But the trends of computer science degrees do not bode well for having a plethora of young, cheap workers at a manager’s disposal indefinitely. In fact, all data point to one conclusion: CS degrees enrollments have been declining or flat for almost a decade. And if anything, the candidate pool for hiring is getting worse, at least according to Jeff Atwood. You’re going to have to hire someone to write your next project, and with the backlash against outsourcing, who you gonna call, Egon?
If you’re thinking you’re going to avoid the “grey matter” of software development, think again. There are a number of myths about older software developers that continue to be perpetuated in IT and software development that somehow put older, experienced workers at a disadvantage in our field. But they’re largely crap and considering the degree trends, ignoring everyone 40 and over because we’re too old seems plain foolish. Let’s debunk these myths one-by-one.
MYTH: Older software developers are more expensive than younger ones, making younger developers more desirable.
REALITY: The real reason experienced developers are labeled as expensive is because staff salaries are the #1 expense of any software organization. The fact is, younger means cheaper. But, while inexperienced, younger developers may save you budget, but they will cost you in the long run if that’s all you have on your team. Younger developers haven’t taken the lessons of failure to heart. They haven’t had enough time to learn those lessons yet. And guess whose money they’re going to be learning on? Yours. Think that won’t cost you money in missed deadlines and incomplete projects? Think again.
Yes, older software developers have higher salaries than younger ones. But what exactly are you paying for here? With an experienced software developer, you’re paying for all the experience that comes with past project successes and failures. Those are expensive lessons if you want to pay for them directly during your tenure as a manager. But if you buy into an experienced worker, that’s like getting insurance against some of those classic mistakes in project management and software development that you don’t have to repeat. Meaning you look better on your annual review because you hired smart people that know how to get the job done.
MYTH: Older software developers are less flexible and less capable of learning new technologies because of their legacy knowledge.
REALITY: It’s actually because of their past experience, that more experienced software developers can migrate to new technologies, frameworks, and systems more quickly and in greater depth. For example, if you learn a GUI framework in C/C++, you have a mental model about message passing, event handling, MVC patterns used to design the system and separate presentation from back-end logic. The very first time you learn a GUI framework, in addition to the syntax, the examples, and the quirks of the library, you also need to learn all the conceptual stuff. And after two, three or more GUI frameworks, you notice that they all have very deep similarities outside of the syntax. You might even notice newer frameworks have overcome substantial limitations that you used to have to work around with complicated hacks. Those insights are lost on someone new to the framework. And those insights can really boost productivity in ways you’re not able to directly measure.
MYTH: Older software developers are less able to perform the arduous tasks of software development (read: work long, painful hours) because of family commitments and other attachments that younger workers don’t have.
REALITY: I think it would be fair to state that experienced software developers are less willing to work those long, painful hours because they’ve learned the hard way that there are productive limits to pushing yourself 80 hours a week for months on end. It’s called burnout, and I’m willing to bet that anyone who has already experienced it in the past simply isn’t as eager to go there again. But with that said, the supposed reason of “family commitments” is bogus. High-quality, experienced software engineers are ruthless time managers, and those with families are even more motivated to get things done in allotted times. They may have dance recitals and soccer games to attend to, but they also make up that time in off hours and highly focused work during the 40 hours they’re given in a week. Good software engineers with families must become highly efficient with personal time management or they quickly get buried with the deluge of work coming their way.
MYTH: Older software developers are less mentally agile than younger ones.
REALITY: Aging does affect the brain and it is measurable to show that older workers think more somewhat slowly than younger ones. But mental agility is only part of the equation. Thinking faster isn’t always better. What about judgment? There’s an old expression:
Good judgment comes from experience, experience from bad judgment.
Lost mental agility is a poor excuse to not hire an older software engineer in light of the fact they’ve seen, done, and lived many more successes and failures than a younger developer. Experienced developers have tons of past projects to draw from and assist in avoiding bad decisions today. Younger developers have new ideas which are important, but often untested and unproven. Having both perspectives on your team is of great value.
MYTH: Older software developers are more jaded and cynical and therefore, less desirable in the workplace than younger ones. Younger developers are more enthusiastic than older ones.
REALITY: Anyone who believes this is probably someone who doesn’t like their ideas criticized by those who’ve been around long enough to see really stupid decisions put into practice again and again. Experienced software developers smell crap a mile away. They don’t buy your stories about how the product isn’t well received in the marketplace because they’ve been interacting with the customers for years and know you’re trying to cover up a future layoff in the company. They won’t put up with managers asking them to work 80 hours a week because the customer wants the software next month and they already told you it will take 3 more months to complete with the features agreed upon.
Younger developers haven’t been in those situations as frequently and therefore, have less resistance to bad management practices. The only desirable trait management wants here is naivete. If you want a great team and great products coming out of it, having people that can call you out on bad decisions will save your bacon again and again. But only if you have the courage to admit you don’t know everything.
And as far as enthusiasm goes, you can’t tell me age dampens enthusiasm. If that was the case, Donald Knuth, Ward Cunningham, Bill Joy, Bill Gates and hundreds of others who’ve crossed the magic 40 barrier would be less interested in our field just because of age. But they’re not. Passion is passion. If you have it when you’re 40, chances are you really love that field. That kind of love isn’t going to die overnight. Younger developers still finding their footing in the world may have short-term passion, but that can be swayed in the face of obstacles and challenges in the field along the way.
In conclusion, let me be absolutely clear about a few things: Young is not necessarily bad. Old is not necessarily good. And most importantly, anyone who can’t program their way out of a wet paper bag shouldn’t be hired, no matter how old or young they are. Keep your teams a vibrant mix of age and experience–where diversity exists, learning can take place. But if you’re the person looking to hire someone, don’t write off the dude with the gray hair sitting across from you. Let go of your age prejudice and see if they can impress you.
Someday that dude (or dudette) may be you.
Excellent article. One of the problems I had, up until my most recent employer, was being recognized as an experienced developer. My resume sure showed it (11 years experience, military veteran, open source contributions), but the confused look on their face when this 26-year old kid, that appears to be 21-22, showed up for the interview was constantly disconcerting.
Awesome post! I’m in my mid-40s now, but back when I was in the corporate world, I noticed that the younger programmers oftentimes did not see how a system could fail, while veterans like myself were able to point out the many risks, and obviate them.
About older programmers being more expensive: I make 4x what I made when I started out in 1990, but this isn’t because I’m 4x as good as I was then. I have gotten better, but not that much better. The biggest factor is that now I’m proven. It’s very hard to evaluate programmers without a track record, and that uncertainty is priced in. Some young hires will turn out to have been an amazing bargain, while others will turn out to have been a waste of money.
Please don’t try to see discrimination everywhere things don’t go your way. I agree that a lot of these practices are bad, but that doesn’t make them illegal.
Besides, whether it’s due to stupidity or criminality, this ensures there are plenty of “experienced” software developers to start your own company, where you can do things right.
One point you’re missing is that developers are seen as a entry level job.
You’re expected to climb the ladder and become an architect, project manager, product manager, startup funder, CEO, CTO…
A developer isn’t expected to have more than a few years of experience, after that, you’re becoming a domain expert, technology expert…
Leave the title of developer for the younger crew, do the same, better, with an expert title and your age isn’t going to be an issue.
But until the equation developer=young entry level staff is true, change your branding.
X+
I think that this perception is a side effect of the industry being new. It still is the newest industry and software engineering/development has only been around since the mid seventies. Further game and web development has only really been around since the late 80’s and even mid 90’s.
Since it was so new developers were expected to get old and go into management because there was a huge drought of experienced developers to become managers.
That is changing and development is a key skill and tool that is needed in everything that companies do today. To only focus that on 20 or 30 yr old developers is silly. It was simply a effect of the young technology industry.
The oldest game developer is around 40, the oldest web developer is around mid thirties, but this will change and probably go to 50-maybe even 60.
Hopefully developers are successful enough though that they don’t need to work for someone at that age and can run their own. I believe this perception will soon die as the industry gets older and the lack of new developers will keep developers who can code and build successful systems in demand no matter the age.
Old programmers should be left to die like eskimos!
What am I saying?! I’m close to my 30! Close because > 30 is also close 🙁
Great article. Now, back to code (I’m old too, but still can learn some tricks…)
I started my company in my mid-40s, and now I’m over 50. So what’s “too old”? 60? I have colleagues in their 60s, so maybe it’s 70?
I seem to remember encountering more curmudgeons earlier in my career. But maybe it’s because more people seemed *old* then. 😉
As for programming one’s way out of a wet paper bag, I’m not sure what sort of API that would use…
As a member of the “over 40” crowd, I totally enjoyed this article. I enjoy working with younger developers, and I hope they might enjoy working with me!
While I absolutely don’t condone (age) discrimination, I think this article is flawed. You are basically trying to make the point that older developers are superior (or at least not inferior) to younger ones. To do this, you “debunk” some “myths” that would suggest the exact opposite by using your conclusion as an assumption. I.e. “older programmers are not more expensive, because they are better”. Yes, if the older programmer is better, he may save you money. But all things being equal, he will be more expensive.
It is a well-known fact that aging causes you to learn slower and be less agile. This is (likely) not caused by experience, which as you point out may help a little to counter this effect, but simply by changes in the brain.
Also, /on average/ older people will have less energy and more family obligations.
Now, I’m sure experience can help you a great lot, but it doesn’t make most of these “myths” any less true. It would probably be more accurate to say “older programmers may (on average) have these disadvantages, but they also have the great advantage of experience” and then go on to explain why experience is so awesome and relevant and more important than these disadvantages. Even though you have a disclaimer at the end, most of your arguments hinge on the belief that older programmers are better and therefor not inferior.
Let me be clear about this though: I don’t think anybody should be judged based on some category (young, old, female, black, foreign, degree) you can place them in. Group averages are not important if you’re looking at an individual.
Oh to be 40 again (or 50 or even 60). Older programmers bring two things to the table; life experiences and business experience. Even though it’s called ‘Computer Science’ good programming is still an art.To those over 40 I wish to remind them of Y2K. Where would we be with out old programmers fixing problems created by 20 yar olds in the 1970’s.
I’m also close to 30 (27) and I relate to this article because I used to fully believe some of these myths. I still have my thoughts but now relate now because i would like to see some of the “older” qualities in me very soon.
“The oldest game developer is around 40, the oldest web developer is around mid thirties, but this will change and probably go to 50-maybe even 60.” – Ryan
The oldest web developer I know personally just turned 65, and I’ve been a web developer for 10 years and am soon to turn 47. You can’t judge the age of the individuals involved in a niche by the age of the technology niche. Savvy management of a technology career means that you have to stay current, so I’ve been doing just that since I started programming professionally when I was 18. And when I started in 1982, I worked with male and female programmers that were already in their fifties.
Also, software development, and even game development, date back far further than Ryan believes. I’m not trying to pick on Ryan, call him out, or say that this is typical, I’m just saying he’s mistaken.
In general though I have been a little shocked recently when I’ve read blog entries by web “professionals” in their twenties that are unapologetically hostile towards older professionals and seem to think that no one over 30 can really use the internet, yet alone be part of building it. The arrogance is quite stunning.
Great post. I just turned 30 myself, and I agree with your points – I’ve always been really impressed with older programmers and all of the background knowledge and experience that they have gained over the years – it is incredibly handy, and I hope to be one of those guys some day! :]
However, I’ve noticed that there just aren’t that many older programmers. It seems that the programming ranks really thin out as people get older.
I’m not sure why that is – but my guess is people must either move to management or get burned out with always having to re-learn technologies every 1-2 years and move to a different career.
I remember feeling old at 26! Now I’m 33 and I even have a bit of gray, and I feel as though I may have to move out of this career. Great article.
well damn, here I am 62.5 years old and still working a programming job. The company I work for is a little unique. I work with a bunch of guys in their 60s, including my boss. One of my co-workers is 72. We do defense contracting.
I have to constantly be pushing myself in this field. Load up Google Reader with feeds from programming blogs. That at least keeps my finger on the pulse of what’s new. dzone.com is one of my favorite feeds.
I had been doing C programming on Suns using emacs and CVS for about 20+ years. I’ve been at my new job a year and a half and we develop for vxworks on a winXP platform in C++. So for this job I had to learn C++ and Visual Studio and Netbeans IDE and Mercurial. Ha ha, I was the guy who picked Mercurial and I love it. I learned VS and Netbeans side by side, we only had to learn one, but I like to look around and pick the best tool. By the way, I’m partial to Netbeans.
On the side I’ve been doing linux web/mail server administration and web programming (perl, PhP, MySql) for about 10 years. I’m recently picking up cakePHP.
I’ve done some pretty slick things with Javascript.
I’ve dabbled with Ruby. Followed simple tutorials for Scala and CouchDB.
But yet that still is not enough. When I went looking for a web programming job, they told me I didn’t have experience with high traffic sites. My perl knowledge wasn’t deep enough for a perl job. I couldn’t pass the interview test to design an interface in C++ for another job.
To stay in this field and keep up to date you have to have a passion for it. It can’t be just a job or else you will get stuck and your skill set will become crusty.
I hope to be doing this line of work into my 70’s. I want to keep the money flow coming in as long as possible. But a lot depends on nature. Yeah I keep fit with exercise and good diet, but nature has its own agenda.
– Greg
Oldest programmer I’ve ever worked with was 78 years old, still actively producing code.
Of course, he owned the company so there was nobody around to tell him we was all washed up.
Excellent article. But, we don’t have to talk about this any longer. The next years the industry will show that there are not enough developers so that the age will not be a problem any longer. The demand for experienced “developers” will arise because limited resources demand for more efficiency. That’s what we old guys are good in without investing extra efforts ;-).
Awesome. I’m 37, but I always listened to, and trusted, the wisdom of the “old guys”. I’ll always hire the grumpy old guy with years of experience who only works 30hrs a week over some 22 year old kid who works 80hrs a work. Working harder is not always working smarter. Something is terribly wrong with a project if people have to work more than 40-50 hrs a week.
I’m 48. I cashed my first check for writing software on 1 May 1979, on my way to a career where I’ve worked in well over two dozen languages and on just about any software you can imagine except for “big iron” ERP/CRM/LSMFT.
It got noticeably harder to find new clients/projects after I was 30, then again after 40 and again at 45. Too much of the corporate world is locked into the short-term instant-gratification mentality; I went to an interview recently where the manager had a sign, “We will pay any price to cut costs.” He did not see that as irony. And he, like many other managers I’ve dealt with, was visibly uncomfortable with the prospect of dealing with a (senior) team member who’d been in this craft longer than he’d been alive, even though nothing at all was said about age per se. But it was obvious within less than five minutes that he was looking for a cheap, young Indian developer; he made the comment, in the broadest terms he could, that he wasn’t certain that hiring 2 or 3 fresh-off-the-plane boys with mimeographed certs wasn’t better use of budget money than hiring one “admitted expert” who could “no doubt work smarter, if not harder.”
This mentality has completely taken over the “business IT” world, and for all Jordi’s “well-known facts”, every single project I’ve ever seen that had ONLY cheap young kids on it was less than successful… and that was true even when I WAS a cheap young kid.
We can’t progress if we keep making excuses for the status quo.
Hi Dave
I definitely agree with you !!!
Best regards.
Any developer can learn the syntax of a new programming language in 1 or 2 years. The rest is all about experience and how to avoid pitfall. Programming is all about applying tricks, younger developer have no advantage, by default. 🙂
Great article. Being myself just over 30 I started to have some thoughts about this. What dazzles me reading in the comments, and the post itself, about this need of experienced developers that will rise in the next years as consequence of “limited resource”. Who are we trying to fool here? I don’t see it like this, actually, with the huge amount of “resources” emerging from countries like India, China etc, I think quite contrary. Perhaps it’s time to seriously consider an alternative 🙂
I’m not sure I agree with the idea that the mental agility slows in older developers, or at least what that statement implies. While gray matter in the brain peaks in the 20’s White matter development does not peak until well into middle age. White matter can be thought of as the system bus and although your compute power has peaked, the messaging throughput between sections of the brain continues to increase. So yes maybe the older person is not as quick in linear processing, but he is better at engaging larger and more diverse areas of the brain for problem solving. It is the difference between the rat scurrying quickly through the maze vs. the lab tech who can see the whole thing from above.
Ah, I notice a lot of young ones have commented bemoaning being old!
I started programming at Uni in the late 1970s(Fortran) then through various forms of BASIC, Pascal and operating systems from CP/M, DOS, Windows or platforms from PCs to field systems.
At 55 I’m still actively programming and embracing new ideas, new technologies. Currently working with C# and considering tinkering with F# when time allows. (Though still can do VB6 legacy stuff as well).
I started as a geologist and learned programming – the combination of these skills and the experience over the years have been invaluable for work in the industry.
Good programmers are good programmers – whatever age.
But experience helps to get stuff as right as possible as quickly as possible.
Good article and good discussion.
Especially as we see the retirement age rise because there are not enough young people to support the old age “bulge” ! (That’s me!)
I am 48, I think I am poor programmer. It is made by beeing graved in old projects and old technologies I must maintain. But I am opened to new technologies and I have learned them.
We old programmers have good habits:
1) We are interested in the problem domain. We want understand it and we are able predict many variants and possibilities.
2) We are used to work deliberately, responsible. We think out several variants to choose the best under given conditions. If we have 4 variants of the solution we know we have to use the sixth one.
3) We study technology and problem domain. Young people would to finish as soon and they are not interested in it. They look up some solution by Google, apply it by copying and rapidly run away. I asked me many times what is better: to finish quick or well? Nowadays? To be quick. If it needs some changes somebody makes them by the same way.
Having reached the ripe age of 39 I would mostly agree with the “older” generation’s experience cushioning many of the effects of aging. Yes experience does count for a lot in terms of process, management and good design but it is also true that agility and speed of learning does become an issue. I also found that exciting projects and new technologies reignite a lot of the passion and love of software development. Add in good training, a developer focused culture and age becomes almost a non factor.
Hahaha… Nice article!
Sorry to say but the new programmers are so “at home” with short cuts, vs. those of us who have programmed in COBOL or BASIC or Clipper. We had to do everything ourselves!
Managers sometimes come to a dead end:
“Would I hire a technical guy and teach him the business? Or would I rather get a guy who knows the business and ask him to learn the technical side of it?”
With “more mature” developers, he gets the best of both worlds. 🙂
Just 2 cents worth from a 47 year old programmer.
Hi
If you read French, there’s a famous article on the same subject on “Le Touilleur Express”
http://www.touilleur-express.fr/2009/07/27/senior/
The author explains what it would happen to a young developer that become a Manager too early. Fun to read (if you understand French)
Pierre
I’ve been developing professionally for 15 years. That whole time I have pushed and pushed myself to get better. In fact right now I am debugging some sort of Weld classloading issue on last nights snapshot of Glasshfish 3.1 on a hobby project of mine.
To compare the knowledge I have now to a kid coming in to the industry… phew.. I just can’t even comprehend how little they (and I at the time) know.
I would say I have added 50% to 100% to my knowledge each and every year I have worked as a software engineer.
Something I find really disturbing with the young ones these days is how when they don’t understand something you are trying to explain, they act like the PHB from Dilbert and assume if they don’t understand it – it’s simple – AND that’s *if* they think you aren’t trying to bullshit them with terms they don’t understand!
Of course when they come across what you warned them about – they listen a little better next time – but that attitude doesn’t seem to ever go away completely.
It’s disturbing because in my day we didn’t have that attitude AT ALL.
Cynical… oh yeah.. I mean come on – most of the projects I’ve joined to rescue (which is basically what us senior guys get stuck doing – which I resent btw) are so foul it feels like putting my hands down a toilet.
I just wonder how the industry came to be like this.
On the plus side, it seems that it’s becoming ever more accessible for senior guys to start their own online product companies – so maybe there will be a large influx of software companies in the next decade founded by people who value quality, and things will change again.
This is a fascinating topic and was speaking to my mother about it this week. I’m curious as to when others have suspected an age related decline, if at all. I’m 30, and in many ways I feel like I may have been in peak form in my mid-20s. Recognition of this change raises personal concern about achieving some form of success with more than a decade invested and transitioning to some other way of life away from the frontlines of software development. However, I find some hope in others. For example, although I don’t know the full composition of the team, the public faces of the ZFS project at Sun looked to be in their 40s.
Marc Andreessen on age and the entrepreneur: http://pmarchive.com/age_and_the_entrepreneur
This is a nice read since it is applicable to artists, musicians, and scientists. In contrast, physicians don’t hit a peak until their 50s.
Excellent article and absolute good read! Finally, this is an article which hits the bulls eye on the debates/myth of “older programmers”.
But I do truly believe that in a development team, a good mix of more experienced developers and lesser inexperience developers is needed for knowledge transfer and naturing for the young ones, while striking a balance of delivery and results.
GREAT WORK! Cheers!
I was thinking about this recently, and I agree with you. The physicians, surgeons, actively operate (fine motor skills required as well) well into older age. When you look at tech journalism, some of the blogging rock stars don’t look so good when compared to John C. Dvorak and the likes. The same is true for developers.
Someone who experienced the evolution of frameworks and paradigms preforms better than someone who missed out on a few steps.
Very interesting topic. “Age and Programming”
I just want to share a general perception I found here in my dev circles. I am 25 years of age Java developer. Most my age fellow developers used to say that we cant code more than 5 years. We have to shift ourselves to project management or some architect positions where we manage resources, monitor deadlines or talk about design, diagrams, flows but no IDE any more.
I feel myself little uneasy with it. I always find some thing useful to learn and code. If I talk more specifically, if some developer love facebook, he will start studying its SDK to code some fun app. So this thing keep going. And never stop. People who do programming for fun, never get older with their hobby. Job guys may think differently.
So coding never stops, if its a hobby and fun.
I’m going to follow up my post with a few concrete examples of the sorts of things that greater experience brings – that senior’s usually bring to the team, which are hard to measure but have massive value. It’s a little off topic, but I’ve always wanted to say it and I’m in the mood today 🙂
1) design
This is a big one for me. Most code I look at from junior/mid level developers has essentially no design. It is basically a series of scripts cobbled together near the place in the code where the resources are first obtained. It’s hard to qualify good design, but well designed code (either OOP or functional) tends to bundle the data and the operations that are safe to perform on that data for passage to the area where it will be consumed. Either through small immutable objects in java or mechanisms such as pattern-matching on tuples in functional languages. Code like this is highly thread-safe and looks like a little engine of many small pieces working together. It’s pleasing to watch it work and reason about, like intricate and elegant clockwork. To reach this level of elegance, many principles will be internalized, such as SLAP and the Law of Demeter. The principle benefit of this is (aside from less bugs) is it’s low change resistance. Once projects get a few years old, most codebases based on the ‘script’ approach become unmaintainable.
2) psychology
Another big difference between seniors and juniors/mids that comes from experience (not intelligence) is our understanding that programming is simultaneously for the machine (requiring correct algorithms) AND humans also (non-linear-dynamic-systems as Alistair Cockburn jokingly refers to them). Sometimes code is elegant in terms of the machine, but we know will cause a problem when other developers look at it in the future. An example of this that is understood by juniors is the case of leaving braces off if statements, but there are many ways of expressing code solutions that are likely to cause a maintainer to introduce a bug when they try to extend it – such as clever looping tricks. For example, in Java I tend to make heavy use of command-like patterns to make sure resources are closed correctly, in c++ we have the ability to use ‘handles’ to the resources which can be allocated on the stack which will trigger the destructors. A more subtle example is that it is better to design objects which need nested levels of resource acquirement as a series of factories that return ‘sessions’ for the resources rather than as ‘peers’ which are passed to each others ctors turn. Using the latter approach, once past 2 levels, the mess of exception handling becomes very error-prone.
3) reasoning about aspects of the code – e.g., transactional behaviour.
With experience comes the ability to reason about the correctness of the code. This of course works better when the code is well designed – such as largely immutable etc. This skill is developed by thousands of hours debugging code. The sort of thing that I am thinking of here is reasoning about whether a failure in one part of a complex operation will cause the system to fail in a way that can be safely recovered by a follow up operation. Not as simple as it sounds with all the layers of abstractions used in complex systems and far more complex then simply having your last database operation in a transaction. I am in my late 30’s and have the privilege of working with people who have been developing even longer than I, and I can see they can reason about the *performance* of code – including the jvm’s ability to optimise and the caching behaviour at various levels (ORM and database etc) – an ability which requires a skill level I can barely fathom!
This is leaving aside all the supporting skills such as process improvement and best practices for development tools (such as source code control, build and configuration management, and release management – among many others), and soft skills such as team leadership and mentoring.
The issue is one of TACIT learning. We simply lack a language to COMMUNICATE what we have learned tacitly. This, combined with being managed by bozo’s (getting promoted after only 5 years to project leader – sheesh) who don’t appreciate such matters, results in the situation we find ourselves in today.
After 15 years as a developer, I can clearly see that I am only MID-WAY (at best) through my career compared to some of the great people I have worked with.
I would strongly council anyone with a few years of experience to consider if this really is the career they want (basically, how much fun is coding for them – because for those of us who have been at it for over a decade, it’s INSANE amounts of fun most of the time!) If that’s the case then (a) settle down for a long career. (b) try to read (or reread – equally important) a book a month by the masters (c ) concentrate on learning a language well from each of the 4 main styles – OOP (ObjC,Java,C++), functional (Erlang,Lisp/Scheme,Haskell), scripting (Ruby,Python,Lua), and declarative (SQL, XSLT) and by well I mean well enough to write idiomatic (not just correct) code in each one.
Then you will have a career that is more fun then it deserves to be 🙂
… and you will be considered one of those grumpy and cynical ‘old’ developers who don’t deserve your high salary 😉
@myself.
You’ll note that spelling and grammar are obviously not necessarily in that list of things seniors bring to a team 😉
Perhaps old people can program well, but choose not to? There are programmers in my group that have 30+ years of experience. They use vi to program Java, and refuse to use an IDE. I have 4 years of experience, and can code circles around all of them put together.
An excellent segue into my next post… 🙂
Thanks for all the lively commentary, everyone.
“There are programmers in my group that have 30+ years of experience. They use vi to program Java, and refuse to use an IDE.”
I have to wonder about people who use old tools. There are still people who cling to csh, even after they are shown that bash will do TAB completion.
At my last job I was in with a group of “older” guys. Our development environment was on Sun Solaris and we all used emacs. A younger group of guys wrote windows drivers and were based on winXP and Visual Studio. I think they laughed at us emacs users.
When I switched jobs, I was stunned to find a young sys admin and a middle aged, extremely bright programmer, both using vi and xterms.
The amount of typing and shifting of windows involved working in that environment is mind boggling.
I wanted to try something new after 20 years of emacs, so I learned both Visual Studio and Netbeans. Netbeans is now my favorite editor. I raved about Netbeans so much, that the young sys admin picked it up. However, I couldn’t budge the other programmer. He was convinced that vi + xterms was far superior. In fact sometimes when he was looking over my shoulder and feeding me instructions, he would tell me to leave Netbeans and grep for a pattern. I would tell him that could be done easier from within the IDE.
I do believe that Linus uses vi + xterms. And probably Larry Wall too. I was amazed to discover another kernel hacker had used Linux for years and never tried X-Windows until recently. I don’t think that Richard Stallman uses a web browser.
There are lots of people who don’t have any preference for tools, because programming is just a job for them.
Then there’s always the oddball, a guy started at our company and requested the “Ultimate Editor”, a windows only edito. This is in a company whose projects span Suns and Windows.
Interesting post and as I am 46 today, I thought I might add my 2p worth.
I currently work for a company with about 15 developers and where I would say the developer profile ranges from perhaps 25 through to 50+, with a fair spread of ages and experiences rather than top or bottom heavy. The site I work at (partner company) has maybe 4 developers, ranging from 24 to 32.
I can’t honestly say that any of the above is a problem as I’m lucky to work with people who know their trade. In the past I’ve come across the opposite at all ages and imho it seems to stem from having a true interest, as opposed to a careerist “it’s a job” approach to the chosen profession of software development.
I think because it is a creative profession (in spite of the engineering disciplines I’ve seen applied to at over the 28 years I’ve been in it, including CS at university) it is quite vocational in a sense and therefore going at it half heartedly, or treating it as something to be endured before getting promoted to management, is not going to do anyone any good.
The older staff don’t work any less hard than the younger ones though it’s true to say that it becomes more of a grind more quickly the older you are, and especially when you have family commitments which are as full on as any at work.
I can’t speak for others but for me, it’s learning new stuff that keeps me interested and that never stops – I would be unemployable in a few years if I stopped learning, both because my skills would degenerate into legacy support only, and because my motivation would die away too.
Apart from that, if anything I’m more able to learn as I get older as I can apply a filter of experience to new technologies and see how they fit together underneath and compare them to what has gone before – which is quite revealing, usually. Not much is truly new under the sun, just the uses to which those things are put, if that makes sense.
…reaching 50.
Reminds me of a small math-like puzzle:
If one worker can dig a hole in 10 days, how many workers does it take to dig the same hole in 1 day?
answer by junior manager: 10
answer by experienced worker: 1, 2 at max (try to put 10 men around the same hole)
answer thinking out-of-the-box: 0 (someone already spent 10 days digging that bloody hole 😉
cheers
I saw one post that stated older people would have less energy. Being older is only one part of the equation. I eat and drink a lot healthier then I did when I was younger. Watching the young guys try and exist on red bull and V to get a lift. They don’t eat much and what they do is junk.
Their energy based on red bull is a total false economy, their health is not good and it seems in a lot of cases the older guys have more energy and last the days better just because of the diet the young guys exist on today. Throw in lack of sleep they deprive themselves on and half of them look like zombies at work.
Well, I first programmed a computer when I was 16, in 1967, and it was already several years older than I was. Now I’m nudging 60, titled various kinds of Techie God depending on the needs of the latest assignment (and the prejudices of the customer!), but fundamentally still a dev. And do I compete with the annual “age group” emerging from the colleges and universities? You bet; I wouldn’t have lasted otherwise.
I believe that age is a factor (how could it not be?), but outweighed in most cases by that precious experience. “Most cases”: an experienced idiot is still an idiot.
But it surprises me that people who’ve been in the game for a fair length of time don’t realise that all the above is just a bunch of pimples on what really matters. For developers, Pareto’s Law applies, but “squared”: not so much an 80:20 rule, as a 95:5 rule (and even that is probably an underestimate). First-rate developers are vastly, VASTLY better at their jobs than the rest. They are far more productive, far better at grasping requirements, produce zero-defect code as easily and unselfconsciously as they <>, and test their own code rigorously and without possessiveness. And of course this difference lasts over the decades, and hugely outweighs the effects of ageing or anything else. I’ve seen it many times, and it explains people like my illustrious namesake, or Martin Fowler, or even Old Father Time himself (are you ever going to finish that book, Donald?).
So that’s a factor complicating this comparison as well. If you’re naturally gifted at the art of programming you’re very likely to stick with it over the years; if not, then in most cases not.
PS: Greg, you’re darned right about NetBeans; why use anything else? Personally, I can never comprehend all those Eclipse-worshippers: what a noxious heap of doggy-doo…
Neurologs of all the world are saying brain is plastic, that means an older man or woman can train their brains at evry age to go as faster as they want. It’s only a matter of training. The fault is not in the age, the fault is on our educating system that makes you think quick during your first years and then nothing but routine until death.