Posted
by
CmdrTacoon Monday August 30, 2010 @12:10PM
from the just-like-supermodels dept.

theodp writes "Universities really should tell engineering students what to expect in the long term and how to manage their technical careers. Citing ex-Microsoft CTO David Vaskevitch's belief that younger workers have more energy and are sometimes more creative, Wadwha warns that reports of ageism's death have been greatly exaggerated. While encouraging managers to consider the value of the experience older techies bring, Wadwha also offers some get-real advice to those whose hair is beginning to grey: 1) Move up the ladder into management, architecture, or design; switch to sales or product management; jump ship and become an entrepreneur. 2) If you're going to stay in programming, realize that the deck is stacked against you, so be prepared to earn less as you gain experience. 3) Keep your skills current — to be coding for a living when you're 50, you'll need to be able to out-code the new kids on the block. Wadwha's piece strikes a chord with 50-something Dave Winer, who calls the rampant ageism 'really f***ed up,' adding that, 'It's probably the reason why we keep going around in the same loops over and over, because we chuck our experience, wholesale, every ten years or so.'"

Anyone in the field who hasn't figured this out yet needs to be let go. Programming requires long nights staring blankly at mind-muddling objective languages. Experienced directors/designers have the foresight to be able to properly direct all that youthful energy to the most worthwhile pursuits, rather than just letting them wander aimlessly through some other other geek's code.

Actually, no, it doesn't. I have never done this and never will. And yet I'm gainfully imployed as a programmer and my bosses (including the owners of the company) constantly tell me they value my contributions to the company.

To each his own. More importantly, if you are being directed properly by experienced management then you see the meaning of the statement. The purpose is meant to divert overly enthusiastic but misdirected individuals from spending countless hours whiddling away at unimportant tasks which due to their lack of experience might put them at risk of staring blankly - nights or days is irrelevant.

Granted in my mid-30s I'm not greybeard but I can tell you that you don't earn less as your experience increases. If you do, you're not doing very well with the job hunt. Poeple pay you more for your ability to get things done despite difficulties that will stump an inexperienced coder.

This article is pure drivel. It's advice made to con old experienced programmers to undervalue themselves, put up with shitty conditions and leave the game. It's the kind of advice a used car salesman gives you as he's trying to sell you an old bomb with the engine about to fall out. This guy's either a coder who wants less competition or he's a manager looking to hire cheap.

Oh and one more thing: If you can't out-code quite naturally a college grad after 20 years in the game, you're in the wrong game, or in the wrong job all along. By naturally I mean without spending a lot of your own time learning.

Oh and one more thing: If you can't out-code quite naturally a college grad after 20 years in the game, you're in the wrong game, or in the wrong job all along. By naturally I mean without spending a lot of your own time learning.

because 20-something morons who have never seen a project managed competently think it's supposed to be that way."
I would venture to guess...there are PLENTY of 40-50yr olds that have yet to see a project managed competently...

Most projects are doomed before they start, when the budget, timeline and requirements silently collide in huge explosion that nobody acknowledges seeing or hearing.

I remember back in the dark ages (early 90's) I sat through a meeting describing software that had an only slightly smaller scope than the creation of the universe. After the meeting, I told the project manager that the only way to be on-time, within budget and meet specs would be if he had a magic wand and a time machine.

For some reason that wasn't a popular opinion and I wasn't invited to any more meetings.

OTOH, the project was a massive money sucking hole, and when it was months overdue and way over budget, the company killed it and was sued for breach of contract. Then went bankrupt.

Successful project management starts with realistic expectations, budget and time-line, which due to market-pressures is usually absent.

This is the same attitude that puts every project behind schedule, because 20-something morons who have never seen a project managed competently think it's supposed to be that way.

In my experience that's usually because some 30-something moron passed a lot of their bad habits onto their subordinates as if they were revelations from the lord himself.

I personally tend to shy away from hiring developers who brag about living in the office as it says to me that they don't know how to work smart, only hard (which leads to sloppiness). Living in the office also leads to "office as home" syndrome which totally destroys your developers ability to know when they're working or not. This leads to a never-ending cycle of almost-working developers eating up time and power through all hours of the night without a lot to show for it.

90% of the time a smart and hard 8 hours is all that's necessary to get what you need out of your devs (or your job if you are a dev.) If you're constantly working all hours of the night you're either:

1. Getting ripped off by your employer

2. Being managed by an incompetent

3. Incompetent yourself

4. Some combination thereof

I wish I knew how to better articulate this to others but I can never seem to get the point across. Something tells me posting this here isn't going to solve that but I can dream.

In my experience that's usually because some 30-something moron passed a lot of their bad habits onto their subordinates as if they were revelations from the lord himself.

Well if you accept it blindly then you're just lazy. I have spent many hours picking apart code I didn't understand thinking I'm either looking at something very smart or something very stupid. I don't remember who said "Ninety percent of everything is crap." but it's true, however the other 10% can be utter revelations. Not clever code as in exotic trickery which raises complexity 10x for marginal gains, but simply elegant - not as in pretty, but functionally elegant - code that is extremely well designed

As SMART and EDUCATED as a 20 year old is, they are IGNORANT and INEXPERIENCED.

So over my life time, I went from "making 20 year old mistakes" to "making 30 year old with 10 years experience" mistakes to a point in my late 30's where with about 15-18 years of experience including a half dozen years of objected oriented experience and project management on top of a computer science degree (not a business degree with computer science) I finally knew a little bit. Not as much as consultants who worked on 3 major projects at three different companies a year had at 15 years but I didn't make the obvious mistakes due to ignorance and inexperience.

And about that time I started working on things developed by 20 year olds (because they were "cheap") which made all the old mistakes and were impossible to fix because the mistakes were embedded in the design.

I have nothing against bright 20 year olds managed/lead by an experienced senior coder/analyst/designer. That's a cost effective method for business that produces reasonable results. But you do not want the 20 year olds running the shop. And that's what happens when you start laying off and refusing to hire anyone over 45.

And think about what business gets out of it. Failed multi million dollar projects or "successful" but poorly performing or hard to maintain projects. And projects which reflect the utter lack of business expertise the young eager programmers bring to the table.

Meanwhile, the young eager programmers work incredible hours (10+ to 12+ or more) for 10 to 15 years, including weekends and holidays, and late night support calls, and then they get about 10 decent years, and then THEY get laid off and dumped.

Unbelievable.

Thank god I did follow the management path. They have all the coders working 10+ hour days and weekends right now for an emergency project which will get the upper managers big bonuses and the line workers maybe 10% (for working an extra 40% for a couple years). Will be very happy when the market tightens up again (which unfortunately means ageism since the boomers ahead of me have to frikkin retire). And I sympathize with the poor graduating 20 year olds- they are screwed. No jobs so no experience and a $40k college bill.

I've pulled exactly 1 all-nighter in my entire career, and that only because my boss specifically told me to do so. Anyone with any knowledge of human psychology knows that when you work late, you get slowly more and more stupid, which ends up costing you more than you gained in bugs you need to fix.

The image of the all-night programmer needs to go away. (Ditto for other professions that call upon people to lose sleep, like medical residencies.

If you "get stupid" after 16 hours of being awake, maybe you need to see your doctor, because you don't sound like you meet the definition of "physically fit" - which is, among other things, being able to do at least moderate exercise after a day of work.

Don't be ridiculous. The average person does sleep about 8 hours and stay up for 16. By the end of the day they're tired and they do, indeed, suffer decreased brain function. Particularly in a case when you're working later than normal, or perhaps so late you've approached or passed your town bedtime, almost anyone is going to be less sharp than they would be during their initial 8 hours of work.

As for "needing to see a doctor" -- that's again silly. Disregarding the fact that having your brain worn down

No, you think you're good. You won't actually know until somebody else looks at your results. One of the first things to go when brains start getting impaired is the ability to judge your own capabilities.

I also take some exception to the goal of "creative juices". For any system that needs to be reliable and maintainable, the last thing I want is a developer that got overly creative. That doesn't mean that there's no room for appropriate refactoring and the like, but a lot of "creative" code can quickly tu

But proving you've been discriminated against by age is difficult, at best. "The candidate we hired had skills more relevant to our business needs and displayed an attitude that meshed better with our company culture."

...Actually Google tried that "company culture" line of crap out on Brian Reid, and it's actually digging them further into a hole -- because the "stray remarks" doctrine no longer applies in that case -- since "stray remarks" are indicative of "company culture."

It's funny how the things companies try to keep themselves off the hook tend to be the very things that hoist them in the high-profile cases.

I would guess it is much harder to prove than race or religion. I mean seriously, we interview a lot of candidates. No one I have ever worked with expressed the thought that older people can't be competent in CS, whereas I have run into actual racists/religionists.

Older people don't get hired because:1) They let their skill sets get out of date. We're hiring people currently skilled in java. I have seen some older people apply who only knew cobol, apparently, and weren't willing to learn enough java to

Shouldn't you be hiring competent people with some measure of perspective? I understand that this can masquerade as tired to those used to eager beavers, but I assure you that they actually get more done.

I would guess it is much harder to prove than race or religion. I mean seriously, we interview a lot of candidates. No one I have ever worked with expressed the thought that older people can't be competent in CS, whereas I have run into actual racists/religionists.

Older people don't get hired because:
1) They let their skill sets get out of date. We're hiring people currently skilled in java. I have seen some older people apply who only knew cobol, apparently, and weren't willing to learn enough java to pass a basic technical interview.
2) Older people can appear tired. We're hiring energetic people with enthusiasm for their work. If you can't even fake it the length of an interview....

I say all this headed for my 30th birthday and knowing the clock is ticking.

I am over 40, and work at a small startup. I was very actively recruited. However, my skills are current, I have a very broad base, and I got a good nights sleep before the interview.:) I hear about this ageism in IT all the time, but I have never seen it. Don't worry about the clock, just the attitude...

"I'm going to have to start my own business again. Searching for a programming job when you're over 50 is a Sisyphean endeavor. It's all a go until you get to the interview and, no matter how well that goes, the job goes to a younger candidate. "

Interesting. You might consider incorporating yourself (if not already), and doing the contracting thing? I mean, I've done mostly that the past years....and honestly, they never really know my age, especially since all my interviews have been phone interviews!!

Experienced directors/designers have the foresight to be able to properly direct all that youthful energy to the most worthwhile pursuits.

This.

100 times this.

This to the power infinite.

I'm reaching my 4th year of professional programming (so still pretty young), and I remember starting out I definately marketted myself as one of those fresh new guys who are up to date with the latest stuff. I would not be where I am today without the senior developer over my shoulder though - he is basically the bridge between what you are taught and what the real world is like. Universities, Colleges, Polytechnics, all churn out hundreds of monkeys like me, but those guys who stick with it are the valuable ones, and I hate to see them under-appreciated. We recently had our lead developer with 10+ years experience in the company leave because of political BS, and while I'm capable at keeping the maintenance in check, I have no idea how to lay out the big projects that the VP's want done. Well, let me rephrase that: I know I could come up with something, but I have no idea if it is truly the best course of action, how easy it will be to implement with existing systems, or any of the logistical stuff on how long each section will take under the rest of the team with their experience.

I only hope that I can stick it out long enough to develop my skills to be as helpful to some protoges some day, and that they too will be appreciative of me.

Which is exactly what the second programmer mentioned in the summary is talking about. You're having to figure it all out again, instead of learning from the mistakes of your predecessors. You lost everyone with more than ten years experience. Assuming that you're no smarter than the smartest guy just lost, that means that in 6 years time (your current 4 years + 6 more makes 10) you will finally be about as a good as the guy that just left. Whereas if he'd been there showing you the mistakes he made and helping you navigate around them you might be there in in 2 or 3 years. Worse, if trends continue as they are, it quite likely that in 5 or 6 years you'll be leaving, or forced out, and the next crop of people won't benefit from *your* hard won experience either.

Anyone in the field who hasn't figured this out yet needs to be let go. Programming requires long nights staring blankly at mind-muddling objective languages.

That's simply not true. It's just *one* way of getting the job done. True, you need to achieve a flow state to be maximally productive. The reason for the late nights is to have time when you aren't interrupted. In other words, the belief that you *have* to stay late at night to be productive is the product of incompetent management.

I have yet to see a developer fresh out of school even know what a SQL injection is, let alone code to prevent it.

I am not an SQL developer. So when I heard about this SQL injection business, curious as I was I had to figure out what it was and how it was done. When I finally found a web page explaining it, all I could think was: What the fuck. Only an absolute complete idiot would ever, ever take the contents of a user entered text field and plug it as it is into a string that is constructed to form a query. Not even in dBase would you do that. What a fuckup.

Seriously, I wouldn't have know what an SQL injection is because, well, it is like I have never thought about how dangerous and life threatening it would be to stop breathing, or to take a bath with the face _in_ the water instead out of _out_ the water. When I first about "SQL injection" I thought it had to be some really clever hack that you had to be really careful about, but no, you only get SQL injections through code created by a total and utter imbecile.

Self-aggrandizing much? Since there has been books with SQL injection vulnerabilities in their examples, Open Source projects with provably skilled programmers containing these flaws, it is not only utter imbeciles that do not protect against these types of attacks. Or maybe they are just complete idiots in comparison to your God-like skillz. That kind of narcissism makes it hard to actually improve technology and processes. Your solution to SQL injection is "dont be an idiot" while a more pragmatic and hum

What you need to realize is that software bugs are frequently not created at one time. Instead, successive changes (sometimes years apart) that are each correct but done without full understanding of the system can conspire to create bugs. For example, the string in question may initially have been generated by a trusted source (another of your servers, for example) and did not need to be escaped or quoted. It may have originally been an internal tool where the users are trusted, and had to be hacked togeth

You must work exclusively with stupid older developers then, because that kind of generalization is ludicrous.

Experience can't replace knowledge, but knowledge won't do you a whole lot of good until you have some experience.

In my experience there are good developers and not-good developers.

The good ones "get it", and can adapt to new languages and platforms quickly and still be effective and productive.

The "not-good" developers won't do well on the platforms they are used to no matter how long they work at it.

I was able to get hired to work in languages I'd never used before and adapted quickly. Good managers, which are increasingly hard to find, can recognize this kind of thing. Bad managers are how mediocre people can thrive in a career they are no good at.

Many, but not most, young kids fresh out of school "get it". They are worth hiring. Many, but not most, old timers with decades of experience don't "get it", and by that point they probably never will.

But I don't care how smart a person is, years of paying his dues in the trenches is absolutely imperative to become a true expert.

That's funny because every time there's a massive security problem, it's not a younger programmer at fault.

[Citation Needed]

In my anecdotal experience, it's always a younger programmer at fault. "I didn't put in error checking, 'cause it always worked on my machine" is quite common among those who have yet to be burned by such statements.

And something like SQL Injection is a pretty easy problem to solve. I worked for a company that decided to use the filesystem as their database for their "Enterprise Clas

'It's probably the reason why we keep going around in the same loops over and over, because we chuck our experience, wholesale, every ten years or so.'

Oh, sure the initial steps in the web's client/server model may have had resembled the dumb terminals and mainframes of the days of yore but with HTML5 my generation is bringing in a new original and fresh way of computing where worker threads [w3.org] and local storage [w3.org] give us the ability to distribute...

*red LED under the skin of eldavojohn's arm starts flashing*

What's this!? What? Wait, no! Nooo! It can't be!

*eldavojohn stands up to run only to be met by two members of the sunset squad holding stun batons behind him*

No, I just turned 28! You bastards, I was supposed to have more time! It's not my time yet!

*as they drag him away, a young acne faced male takes his place and begins mockingly humming "Circle of Life" from the Lion King while tearing down the X-Files poster and MST3K figurines adorning the cubicle*

I'm one of those old timers. I still stay up all night programming about once a week, but only because I work for myself. Ageism affects those in the corporate culture... and those of us trying to deal with people just starting out who think they know everything. It's rare to find someone who is young who values the experience we dinosaurs bring to the table. We've been around long enough to have broken it and fixed it again several times over so don't discount our skills just because we're old enough to be your parents.

No, I just turned 28! You bastards, I was supposed to have more time! It's not my time yet!

I worked not very long ago with one of those young "rockstar" programmers. While he was intelligent and a good worker, he had no formal education in computer science, and in some ways it showed. For example, he had no idea what a Big O() was, and did not have the necessary math or theory to be able to determine the efficiency of anything he was writing.

*nod* That has been my problem with working around untrained 'rockstars'... they can be really bright, but they spend all their time reinventing things that have been around for decades because they did not know the solution already existed off the shelf.

and those of us trying to deal with people just starting out who think they know everything.

It's rare to find someone who is young who values the experience we dinosaurs bring to the table.

We've been around long enough to have broken it and fixed it again several times over so don't discount our skills just because we're old enough to be your parents.

Sounds like you're indulging in a bit of casual ageism yourself! Delightful, innit?

I'm 35. I work with lots of guys who are 15-25 years older than me; some are quite bright, excellent problem solvers, and their experience is tremendously valuable. Others are obnoxious, stale, inflexible, cantankerous pains in the ass. I value the former. I despise the latter - not because they're old, it's because they behave as if their age automatically confers upon them some sort of infallibility in all things technical.

Not surprisingly, the latter group are also the ones - in my experience - who like to knock me (with ~12 years in the field) as "young," "unseasoned," and "still wet behind the ears," normally while I'm disagreeing with their approach and outlining why it's bad, and why a different approach would be better. Because apparently nothing supports their point quite as well as waving away technical limitations with "you're young, you can't possible understand." The former group tends to explain their proposals in such a way that it is immediately obvious why their approach is a technically superior alternative, instead of being condescending pricks to everybody with less experience.

"Old enough to be my parent" is a secondhand appeal to authority - a) you're not my parent; b) if that's the only reason I should be listening to you, you probably aren't as good at your job as you've judged yourself. People old enough to be my parents earn my respect when I see that they are genuine authorities in the subject matter, they don't automatically get it by virtue of the fact that they've been sitting around the office longer than me. Just as I don't expect someone to assume I'm correct simply because "my college training is more recent than yours" - if I'm correct, then it doesn't matter if I'm young or old; if I'm incorrect, the same applies.

"Old enough to be my parent" is a secondhand appeal to authority - a) you're not my parent; b) if that's the only reason I should be listening to you, you probably aren't as good at your job as you've judged yourself.

No one asked for your respect or even for you to listen. I believe I said "don't discount our skills just because we're old enough to be your parents." It has nothing to do with appealing to authority... had I said "you should listen to us because we're old enough to be your parents" I could see you point. But in this case you're simply off the mark.

At 35 you're not young, especially in IT. Your touchy response leads me to believe you may end up in the second group of people who are 15 - 25 years older than you are.

Then why did you bother responding, if you didn't ask or expect anybody to listen? I simply pointed out that you're indulging in ageism yourself when you start painting youngsters as "people just starting out who think they know everything," and the "rare" young people "who value the experience" you bring to the table.

At 35 you're not young, especially in IT. Your touchy response leads me to believe you may end up in the second group of people who are 15 - 25 years older than you are.

Length of experience means very little, quality of experience means quite a bit. I've known people who make the same dumb mistakes over and over again, and never learn from it; I've also known people who learn the first time they make a mistake, and have learned quite a bit in just a few short years.

So, if I'm destined for the bitter old guy heap, I guess I'll see you there. I'll be the one wearing the ironic "Dinosaur Jr." nametag, Pops.

As a middle aged programmer, I always try to keep my knowledge up to date. Yes it comes at the cost of 'free time', but in the end, if I want to have a fun job, I need to do it (and luckily, my significant other understands it and supports me). The other options are: moving into management (which I despise) or be stuck fixing Hadean Cobol code. When I got my degree, I knew only Cobol, Assembler and C. Over the years I added VB, Java and C# to my list along with a bunch of frameworks like.NET, Spring, iBatis, name it. This self teaching has brought me a lot of fun projects in all kinds of languages running on all kinds of systems.

But I can see where this animosity towards older coders comes from: the vast majority of them don't give a damn about new technologies/languages/frameworks. So when the boss decided to use one of those, they won't be able to keep up. In my group of 20 or so coders, maybe 2-3 are continually keeping themselves up to date with recent technologies. Some of the VB coders have hard time grasping class attributes in C#, because they never kept up with object oriented languages. Hell, some of them code in C# as it was VB.

Unfortunately, due to the nature of this domain, I see only one option for me if I want to keep programming: learn or perish. When the next great recession hits, I can at least put multiple language/system skills on my resumé, while some older programmers can't.

Im pretty sure the reasons corporations chuck people is because they can hire a young ones for 50 percent the cost of you old people. They look at small term gains vs. long term sustainable profits. If anything the young ones should be guided directly by you older guys, not slapped in some new formation. Really, its a management issue because they do not recognize other peoples skills but their own as valuable. Management is one of the worst disciplines taught at Universities. It generates a whole bunch of dilettantes that believe the "business degree" hype and think "Well, shit I can get a job making big bucks if I do an MBA and still not work very hard at learning anything difficult." I believe this is why its very important to phase out MBA managers in general and only hire someone like an Industrial Engineer or in this case an actual senior level programmer to do management in any kind of production be it software or physical products.

"I believe this is why its very important to phase out MBA managers in general and only hire someone like an Industrial Engineer or in this case an actual senior level programmer to do management in any kind of production be it software or physical products."

Good luck getting the MBAs who hire MBAs to see that they aren't best suited for...everything.:)

Well, in all honesty web workers are explicitly NOT like worker threads. In particular, they are shared-nothing, as opposed to the shared-memory model of worker threads. While it's possible to use worker threads in a shared-nothing manner with careful discipline, that's not how they're typically used.

All of which is to say that we _have_ learned something over the years, even if the "something" is that shared-memory multi-threaded programming is somewhat error-prone and pretty much impossible to debug san

Some years ago, I was reading a flame here on slashdot and one of the insults was calling RMS an old dinosaur from the 256 color era. I grew up with the 16 color Commodore 64, so that made me older than the dinosaurs. That was the first time I felt really, really old and I was 24 at the time.

On a more serious note though, I will say that I am a better coder than I was 10 years ago but so much has changed. My professor would keep going on about bits and bytes like the difference between a short and long real

What is that? When I was younger I could code more, but I wouldn't say I coded better. Now I take my time and produce efficent, well documented, fully tested code - which functions 1000x better than my 'mass produced' code. Any *good* programmer programs well - not in volume.

Any 50+ year old programmer should be able to keep up with 25yo programmers, knowing how to program isn't just knowing the ins and outs of the hottest language - it is knowing HOW to program so that you can swap languages efficently. (Yes, there is time to learn differences in languages, etc) But anyone worth their salt can jump where needed and go.

Being said, if your first language was cold fusion and it is all you have done for the last 12 years, you may have a difficult time switching to C!

Yup... I'm the oldest on my team and the young pups can spit out more code, but when the rubber hits the road it's the old farts like me that deliver quality, stability and scalability. (Sort of a symbiotic relationship, they spit out tons of schlock then we fix it.)

I know lots of "programmers" that copy/paste what they read for exercises in books and that's what they use.

The problem is they never learn "why". They write just because that's how they saw it done in examples.

I don't look at a problem and think, how can I program this. I look at a problem and think, if I was a computer, how would I do this. Once I figure that out, I try to figure out how to make the computer do that with my programming language.

I love to know how things work.How does the.Net GC workHow does.Net handle objectsHow does SQL decide to use indexesWhy is a 64bit op non-atomic in a 32bit machineHow does the CPU calculate floats/doubles/etc and how can I reduce math errorsHow can I take advantage of the 80bit double precision of x86 registers

Which SQL object should I use for reading in data vs manipulating datasets. When should I use Byte Arrays to manipulate string instead of String methods. How can I re-use objects to not use so much memory. How can I reduce lock contention for multi-threaded programming. How can I use bit flags to reduce the amount of data stored in a struct. How can I reduce cache thrashing. How can I pack more important data into a cache line to reduce fetches. Can I use a hash table or binary search. How are managed objects stored in.Net and how can this affect threaded programming

I may work in a high level language, but I don't think in the high level language. I program using logic, I communicate with the computer using a programming language.

Ditching experience would be unheard of in medicine, engineering, law, carpentry, pluming, construction, etc, etc, etc....But only us have the balls to say that youth trumps experience, I wasn't aware kids were born with all computer science concepts from the get go.

How is it that a senior programmer ends up in sales?

Maybe we are not taken seriously because our professional low self esteem.

Programming skills aren't what they used to be. They're often based upon the latest language--most often here they're C#. It's interesting to watch programmers who've been trained in such high level languages adopt low level languages. I work with fresh graduates day in and day out, and while they are energetic, they're also completely unaware of the basics. I have had lengthy discussions of concepts like double-buffering, and queues, and static/dynamic memory allocation, pointers, and such. These are conce

are concepts that newbies assume can be handled by an API, or automatically garbage-collected...

To be fair, for all practical purposes on many (not all) projects, they not only can be, but probably should be. Your primary focus is on the business or application logic and not on optimization or memory management -- unless it matters, and often it doesn't. For example, I have a sense of how to design a project and write code that supports a high degree of scalability and high availability of services -- but that's been relevant on only a small fraction of the projects I've worked. Wasting time building heavy scalability (for example) into a piece of software that would for certain only ever be used by one person or a handful of people at a time would not be the hallmark of a good programmer.

(Though I agree you can get into trouble if you don't have any sense of when it isn't true that you can let these things slide.)

The "alternatives" toward which a programmer is supposed to steer according to TFA are plain stupid and slightly offending by assuming that becoming a manager or a Sales ~person~ is a move "UP". How the fuck is your programmer background going to help with those? Not withstanding the fact that most good programmers I know don't have the skills needed for those jobs.

It's like telling restaurant cooks to jump ship and become kitchen appliance salesman, or graphic artists that to move UP they need to open and

I agree with you that most good programmers don't make good managers or salespeople. However:

The "alternatives" toward which a programmer is supposed to steer according to TFA are plain stupid and slightly offending by assuming that becoming a manager or a Sales ~person~ is a move "UP". How the fuck is your programmer background going to help with those?

A manager or sales person who both is legitimately suited for their job and is technical is a godsend, because they tend to be much less likely to promise their superiors and/or clients the impossible or impractical. They also tend to be better at "selling" the decisions that the development team has made and their tradeoffs.

The difference between the computing industry and the other industries you mentioned is that computing is hundreds of years younger, and thus changing orders of magnitude faster.
Medicine comes the closest because of continuous research, so doctors are required to stay current with continuing education (they have to do this to maintain certification).

Businesses dump older programmers in favor of newer ones because it's cheaper to hire a out-of-college kid for an entry-level salary than it is to pay a career-programmer his substantially higher salary to learn whatever the newest, hippest, programming style is.

Note: this is a bad thing. It's bad for body of work that is our code-base in every language, and it's bad for the intelligent design of large systems (which requires vast experience). However, it will take a large shift in the rate at which the tools we use in the industry change. If the entire field doesn't change hugely over the course of 2 decades, then someone who has spent the last 2 decades writing code becomes exponentially more valuable.

The difference between the computing industry and the other industries you mentioned is that computing is hundreds of years younger, and thus changing orders of magnitude faster.
Medicine comes the closest because of continuous research, so doctors are required to stay current with continuing education (they have to do this to maintain certification).

I have a huge problem with this. The computing industry is younger, but I don't think it's changing that much faster - a lot of "new" concepts are just recycled old concepts! Albeit wrapped slightly differently. E.g. are dumb terminals and thin clients that much different? What about, as someone else noted, worker threads and local storage? Is the concept of local storage much different than caching? And I distinctly recall being taught about threaded programming in the 1990s. The big difference now

What I've observed as an I.T. guy who often worked along-side developers is, management often decides a certain technology is the way forward for a given project. At that point, the experienced developers are sometimes left out in the cold, because although they may have, say, 6 years of good experience coding in Java, they didn't spend time on the latest Microsoft technologies. The "new kid on the block", by contrast, may have claimed experience in that area, so to management, he's the "better bet".

Most likely, the REAL problem here is that management doesn't buy into or grasp the idea that the development language used is rather immaterial. If you've got someone with many years of experience coding in a specific language, it'd probably yield the best results to let them continue doing that. Ask them to produce product X or Y with whichever tools they're most versed in using!

Instead though, there's an overall sense that programming languages get "stale" after a while, and a new product needs to be designed with a new language.

I'd say I only have a few personal anecdotal stories to back this belief up, so it could be way off base... except how much demand is there today for developers with experience in COBOL or Fortran or BASIC, or Pascal, or Forth? I've always worked in a "Support Specialist" or "Network Management" role, but I've observed all these programming languages come and go -- and it seems like such a bad deal for a developer. He/she has to put in so much effort to learn and subsequently master one, only to find it fading into obscurity.

Seen many "Be a surgeon in 21 days!" or "Criminal Law for Dummies" books lately?How about a plumber doing all his work with a single screwdriver and no other tools, equipment or material?

A nine-year-old with a "PC" can be a programmer since.. well... decades now.And while surgeon's/plumber's/lawyer's etc. hands on experience accumulates only in him/her and can't be transplanted into another human with a click of a mouse - that nine-year-old copy/pasting someone else's code is actively using all the accumula

In fact, by saying I have 2 yrs experience, apparently I get lumped into a very large group of programmers. I keep getting sent offers for jobs that want someone with at least 7 years experience.
So apparently employers classify potential programmers into:
fresh blood out of college ( less than 2 yrs xp)
worthless trash (2 to 7 years experience)
Gods walking amongst mere mortals (over 7 years experience and guaranteed to be able to do anything you desire)

A while back, a friend of mine -- a very experienced software development manager -- was running a development team, and was planning to hire a developer who was in his early 40s. One of the team members openly objected to the candidate because of his age, saying something like, "How could he possibly be up to date on current technology or keep up with the rest of the team? He's so old!" My friend eventually hired him anyway, and the "old" developer turned out to be a superstar, one of the best on the team.

That was about eight years ago. The guy who raised the objection is now about the same age as the candidate he had wanted to reject. I wonder if he's facing the same kind of age discrimination, now that he's "so old."

Good point, but I would say burn-out is kind-of similar to the experience of the man on the shirt button production line who's just made his 1000,000th button. It's more about the feeling of impotence with respect to raising yourself up, than it is about actually writing code. That is to say, in order to raise yourself up you need to change career. There's not much you can do as a producer of buttons otherwise. But this experience is not unique to developers. It's true pretty much across the board when

Well... I got burned out working 85 hour weeks for three years, and retired from game development to do enterprise software development. Now I have a very enjoyable life working 40-45 hours/week, and plenty of time with my kid, etc. I've been in software for a total of 20 years now, and I'd say right now I'm charged up.

Hi there! I started programming professionally in 1978 on mainframes and micros, upgraded my skills to that then-new unix boxes (4.2, 4.3 BSD) throughout the 80's, stayed current as all those new Unix Workstations came out, and then to the Linux and web programming (server side of course) in the 90's. Picked up SQL and now noSQL database skills in the mean time.

It's all more relevant than ever, isn't it? After EDIFACT, XML was like a breath of fresh air, and after XML, JSON was like a breath of fresh *clean* air. Python is more fun than C++, C still makes cleaner system interfaces than C++. Ruby, Java and Scala are pretty much a POS, but the kiddies haven't quite figured that out yet. The kiddie managers keep going for silver bullets less and less likely to dig them out of a hole ("Java site failed? oh here's a bright young man who will reprogram the whole thing in Ruby! Ruby failed? Oh, here's another bright young man who will reprogram the whole thing in Scala!") Face. Palm.

When the whole enterprise turns to custard, it turns out to be some basic easy fix in the guts of the code they were afraid to touch -- you know, the C parts, with the system calls. Lol.

I'm well into my third decade of continuous employment as a programmer and still love it.

Every once in a while an employer will try to move me into management because "women are so good with people" and watch them try to credit my male co-workers with code *I* wrote -- when there's a perfectly good code repository that fails them when they try to back up their ill considered opinions with facts. It's hilarious.

as in, arts and crafts: in many ways, programming is an art form, not a science

and honestly, if you take exception to this description, i will go so far as to say you aren't a real programmer. you haven't pored over a piece of code, and, after cognitively digesting it, sat back and thought: "beautiful". that's an aesthetic description. because programming DOES have a genuine aesthetic component to it that really delineates the difference between a creative rock star and a code maintenance bureaucratic functionary

but what kind of art is it, cognitively speaking? and i would say: it is more like a being a movie director than being a musician

but people THINK of programmers like musicians, with a musician's career arc: you are a nobody, then you skyrocket to fame, then you fade and are a forgotten has-been doing greatest hits at the country fair: called in to adjust their COBOL from the 1980s

programmers should be thought of like movie directors, who can most certainly be a geniuses at a young age, like robert rodriguez, but don't really hit their prime until their 30s and 40s, like chris nolan, and are still valuable as greybeards making great stuff in their 60s and 70s, like martin scorsese. and the young hot shot movie directors might be glowing hot, flying by the seat of his pants with tiny production budgets and just his friends to help, like a young programmer fueled on soft drinks and potato chips at 3 am. but the older movie directors are sitting atop large multimillion dollar productions, with a giant staff of cinematographers and key grips and production assistants... more like commanding a battleship than a dinghy. in programmer terms: moving into management

so as for the prejudice of ageism in programming: maybe there is just something about a young supple mind that makes art that is exciting and electric. i mean i had to do a double take just now composing this comment: i described a good programmer as a rock star above. showing that even within my own way of thinking about programming, i am applying the false musician's metaphor for the artistry that is programming, when it is more like being a movie director

programmers are movie directors, not musicians. that's my metaphor and my message, even if i myself can't keep my story straight

I leave at 5PM because my experience has taught me how to avoid many of the problem new coders create for themselves. I get twice as much done in half the time compared to when I first started. Looking back at my first experiences as a programmer, I laugh at all the late nights spent working diligently to complete code only to find that I had checked in something inadvertently or forgotten to check something in that broke the build. This in turn wasted many other people time simple because I was too tired to think. The idea that technology has changed tremendously and older coders experience no longer applies is LOL. First the technology has primarily gotten smaller and faster. And coding techniques have improved in some ways but degraded in others. It all still ends up as binary in the end, something many of my younger colleagues don't deem to get which leads to some extremely sloppy techniques. These arguments are mainly bull similar to memes like out sourcing saves money (usually at the expense of time and quality).

There's no future in management, and geeks hate managing people anyway so wtf? I've been asked a few times and no, I won't do it. Thing is, I like writing code. I *enjoy* it. It's why I come to work and what I like to do. I don't *want* to referee the personalities in the office and I surely don't want to be the one who answers for everyone else's fuckups. Not to mention, excess management is usually the first to get cut when job reductions go around. who wants that? I'd rather be a hired hand for some consulting outfit. The benefits suck, and people think your dogsh#t, but if you can get over that it's a good application for experience and the change of scenery on projects is nice too.

The field expanded greatly in the 1990's. When I interview with a tech lead, that tech lead is usually younger than me. During the interview process, the tech lead sees from my resume that I have a lot of experience and knowledge, and then sees from his overly-targeted interview questions that I am not expert on the specific thing he happens to be working on day and night at the moment. Based on a "failed" interview, the tech lead is able to dismiss a potential leadership threat.

This will continue to go on until there is more age diversity in the field, which will take several decades for the dot-commers to mature. Meanwhile, since I started nearly a decade before dot-com, I more or less am limited to those businesses that have people older than me.

Well, first, Engineers shouldn't become programmers. They should know how to program, but otherwise it's a mismatch of talent.

Second, programmers who are still just crafting code after 45 years in the field should go somewhere and get a shot of ambition. Programming is a good place for younger folks to keep them out of trouble. Sooner or later the smart ones figure out that programming is more about creating solutions to problems rather than writing code. Figure out a solution and then pass it off the the young guys to do the drudge work. Those that don't figure this out will eventually give up and migrate to management, sales, Art or something more suited to their talents.

Third, problems don't solve themselves, but code can write itself. Writing programs that write programs frees up truly creative minds and you get the benefits of not having to hang around with a bunch of hotshot, know-it-alls who don't listen to their elders.

Hey, I've been programming for 45 years, and I know what I'm talking about...

I'm in my mid-30s, and have already long experienced exactly what you describe, and agree 100%. We also do use codegen heavily to create a *maintainable* fast pipe between "problem to solve" to "solution".

Of course, going the entrepreneur route does force some of those issues, as solving the customer's problems is what puts food on the table, not just cranking code and keeping a boss off your back. But even then, quite a bit of my increase in perspective came well before, when I realized that what I want

I wrote this last year on Stackoverflow. Still holds true this year. Edited slightly to remove reference to another post there.

I'm 49 and I'm a programmer.

Well actually I'm a DBA, IT consultant and Business Analyst too. But in my heart I'm a coder - and I think I'm getting better with age. And I make a nice living at it, thank you - but I put a lot of effort into setting myself up that way.

There has always been ageism in IT. I entered commercial IT relatively late in my mid-20 after being a research scientist (biological - but writing scientific code for analysis). When I went to move jobs at 28 looking for an Analyst/Programmer job one recruitment company told me I was 'too old'.

Ha. Since then I've done a rollercoaster so far as coding is concerned - followed the big corporate trail up though systems analyst to project manager by my mid-30s before deciding I really missed coding. Went to a small organisation as senior developer then morphed into DBA for 7 years - but started writing code at home which grew contacts and income until I started running my own consultancy a little over 10 years ago. I purposely don't grow larger because I don't want to spend my time managing other people, but I do have a large network of other consultants in complementary fields (graphics, management consultancy etc) I can collaborate with.

My clients are nearly all in the SME sector, most I talk to the boss directly and they no or limited development support inhouse. Age in this case is an advantage as experience with systems in business means that people trust me as I can both deliver software, and deliver the right software for the business context. There is something awfully satisfying about being able to go to a client and say 'you need to spend $10k on this hardware and software development to support this' and the client does it because they trust your abilities and the experience you bring to recommend that decision. It helps I'm a complete neophile too and I replace my skillset every 5 or 6 years - I'm currently moving to Python and.Net (and raving about Ironpython for desktop apps)

So I spend about 50% of my time writing code, 25% doing 'business IT consultancy' and 25% general purpose IT to support that - for instance several of the systems I've developed for my clients are web based - and I run the web servers to host them.

And lastly it's a great job for fitting with family life and commitments. I have my office in the house (large room, lots of computers and screens) and I work probably 10 hours a day, but it fits with family. I've been at home when my kids were small and when they've come back from school as they've grown older. I don't even have to be in one place - last week I had to see a client on site at the same city when my son is a student, so I go in, see my client at lunchtime, sit in Starbucks all afternoon coding on my laptop, then take him out for dinner. Perfect mix:-)

So ageism - phah. Ageism is only a problem if you associate with people who are ageist - and as a society we're growing older and many of those older people who do have work going are not going to be comfortable with giving it to youngsters. There's plenty of opportunity for older developers, but you have to play to the strength of the experience you've accumulated and adapt. If you don't learn new technologies and stay excited by what's happening then that's your problem, not ageism.

Myself I see myself coding until I drop. I'm actually looking forward to being more flexible as I get older - when all the kids have left home we've plans to equip a camper-van with all the tech I need and wander around europe nomadically for a year or three working remotely as needed.

Coding is the best occupation ever invented. Who on earth would want to give it up?

Ageism isn't a problem for star performers... it is a problem for the "average" people. If you want to do your job for 30 years and never change anything about what it is or what you know... you will be out of luck...and a job.

It is true in nearly every position, possibly with the exception of some forms of sales or medicine.

If you're going to stay in programming, realize that the deck is stacked against you, so be prepared to earn less as you gain experience.

This makes no sense to me. If he'd said, "expect that your 30 years experience will allow you to command a salary roughly equivalent to someone with only 10 years experience" then I'd be on board with that. But to actually earn less because of additional experience? As in, "If you had 10 years experience we'd pay you X, but since you have 20 years experience we'll only pay you 0.8X"? That's nuts.

My personal experience is that people pay based on the position, and the position usually has some experience requirements. No position requires more than 10 years experience, so any experience beyond that is superfluous. So the salary arc for a developer, assuming he stays in development (and not architecture, design, etc.), should steadily increase from year 0 to maybe year 10, then mostly plateau.

Productivity is secondary to one attribute that management (particularly of large organizations) seeks above all else: naivete. Management loves young, fresh faces. In spite of lower productivity and less experience on the job, what employers value is that unquestioning loyalty that comes with youth. Once people gain a certain amount of experience, they start calling 'bullshit' on the PHB's plans and that's the end of career growth.

Its a management style inherited from the military where there's a need for cannon fodder. Grab the rifle and charge the machine gun nest. Once the grunts start to realize that there's a better way to get the job done, and not get your ass shot off, its time to bring in the new recruits.

This isn't as true for smaller organizations or those with flatter management structures. Here, workers are expected to contribute across several levels of the software (or engineering) development life cycle. In larger groups, where these boundaries are more strictly defined and reflected on the organizational structure, such cross disciplinary communications are not encouraged. They are often viewed as an additional burden on the management structure.

So, your best bet, once you have acquired this kind of experience, is to seek a job position in an organization that values it.

A lot of people seem to think that programmer productivity has something to do with lines of code produced. That misconception gets propagated by uninformed managers, who are basically looking for something that is easy to measure.

In reality, productivity has more to do with achieving required behaviors with a minimum of code-writing. When a fresh-out writes 3000 lines of code, discards or changes 2900 of them, and ends up with a 700 line program that only sort-of works and only remotely resembles the design, after 10 weeks of working 70 hours a week, is that really productive? If an older guy thinks about the problem for two weeks, spends a day or two writing docs, writes a couple pages of code in one morning, tests it that afternoon, tweeks it a little the next morning, spends another day improving comments and updating docs, and has the whole thing finished and solid in 3 weeks, is that really less productive?

Uninformed managers reward the guy who works 80 hours a week and writes lots of bugs. The buggy code needs to be fixed, which then requires heroic amounts of overtime. They reward the overtime, without understanding why it was needed. By contrast, the guy who gets it right the first time, and doesn't need to fix it, doesn't have to work those silly hours. The uninformed managers also do not understand why a program doesn't need to be fixed, and why overtime is not really needed, and so the better programmers are not usually rewarded.

Programming is about function and behavior, not lines of code.

Just for fun, I sometimes run 'uncrustify' on a mess of old code, or change a variable name, before doing a small logic change. My nontechnical director gets a report that counts the lines in each commit.

I'm in the unenviable position of getting older (35) and am starting to see the beginnings of this trend.

The three suggestions the author offers are sage advice. Keeping your skills up and taking on higher-level roles are really good ways to ensure you'll at least stay employed. Point 2 is equally important - save like crazy during your prime earning years, so you aren't forced to be that 50-year-old guy who demands $125K for a $70K position because you actually need the income. The reality is that there is little hope you'll convince an employer that paying more for your skills is worth it. Management only sees you as a cost, and wants to maximize the amount of value they get out of you. Even if the 22-year old screws up a few times, the 80-hour weeks he's going to be able to pull to fix things will offset the extra salary. Counterintuitive? Yes, but it's standard Business School 101 fare, so we have to deal with it.

It really stinks that you can't have a full career with a path laid out for you like you used to. if you're not the entrepreneurial sort (which I definitely am not,) you're going to be stuck either bouncing around in short full-time stints or even shorter contracting stints. I'm a systems person, and really enjoy solving tough integration/sysadmin problems. I hate people management and project management, so I've concentrated on keeping my knowledge current and not being the person constantly begging for raises. It's worked well so far - I have a pretty good reputation within my smallish specialty field. My next plan is to ditch full-time employment and start contracting - but even that's dangerous. Like the article says, those of us who are older have families counting on us; we don't live alone in a one-bedroom apartment with no financial concerns beyond next month's rent.

The more entrepreneurial types among us older folk would clean up if they started a contracting firm based on the concept of companies paying for experience. I can't tell you how many projects (both business-related and IT-related) I've been on where a company hires one of the big-name consultancies (Accenture, Bain, Booz, McKinsey, etc). These firms hire Ivy-league graduates (early 20s, typically very little work experience) on the premise that they're smart and have a good reputation. Unfortunately, I've found their skills lacking, and they tend to learn on the job, causing downtime, wasted meeting time, etc. If some slick sales guy could convince a company that a bunch of people who have seen all the tech industry hype cycles, know what's really going on, and know how to solve problems based on having done it before, we'd have a working business model.

Companies have no interest in paying more for people more skilled in software engineering. They want people who can "just write code." The medium-term to long-term consequences of writing unmaintainable, disorganized, undocumented code are almost never recognized by management. And even if they were recognized, we live in a short-term-profit world, where it is standard practice to run a project or company into the ground by releasing a shoddy product which holds together just enough to avoid lawsuits.

A company who values older developers is a company who values the quality and long-term viability of its products. Good luck finding one of those.

The problem at Microsoft is that, once someone has reached a level of experience enabling them to spot flaws in the overall product architecture, they become a burden on management. Questions along the lines of, "Why don't we just fix this crap?" interfere with getting the next release of crap out the door. So its time to move them aside and hire in someone who still thinks Ballmer is God.

It's getting difficult to find such people without having to recruit in the third world.

I found articles about IQ and race, IQ and sex, IQ and health, but not one dealing with age. AFAIK, your IQ only declines with age if you have alsheimer's or some other medical condition that would affect your brain.

Decline in testosterone just makes you more laid back and harder to piss off. Nobody can think straight when they're pissed off. How productive are you when you're ina bad mood? Testosterone has a negative effect on IQ; have you ever see