What's the Shelf Life of a Programmer?
Esther Schindler writes "Why is it that young developers imagine that older programmers can't program in a modern environment? Too many of us of a 'certain age' are facing an IT work environment that is hostile to older workers. Lately, Steven Vaughan-Nichols has been been noticing that the old meme about how grandpa can't understand iPhones, Linux, or the cloud is showing up more often even as it's becoming increasingly irrelevant. The truth is: Many older developers are every bit as good as young programmers, and he cites plenty of example of still-relevant geeks to prove it. And he writes, 'Sadly, while that should have put an end to the idea that long hours are a fact of IT life, this remnant of our factory-line past lingers both in high tech and in other industries. But what really matters is who's productive and who's not.'"
And they find older people around them to be outdated and archaic?!
This has never happened before
Depends on the programmer!
It depends on the people they work with, company they work for, and of course, their proximity to a loaded gun
Five.
Have you kept them out of the sun and filled them with preservatives such as redbull?
Shelf life is far longer that way.
Do not look at laser with remaining good eye.
Older workers, regardless of the industry, come in (err....well, broadly) two flavors, those that are open to new tech, ideas, whatever, and those that are adamant they stay within their old niche. The latter is, in some sense, understandable. That niche is one that has rewarded them in the past. The problem is that it may not reward them in the future.
The ones that are open to new ideas also fall into the trap of glomming onto the latest whizzy technology to come down the pipe. That will result in no sense of perspective.
What is needed is a happy mix: developers who will evaluate new tech and adopt given experience, and who will also keep past tech that still has the right punch.
This necessarily weighs older developers more than younger, you cannot teach experience. I say developer because programmer is too, what, blinkered. If you are good at development, you know your industry. If you are good programmer, it is hard to say what you are good at. Programs do something, and that something is not in a vacuum. To be a good developer, you must understand much more than being a good programmer.
Why is it that young developers imagine that older programmers can't program in a modern environment?
Although I'm fighting anecdote with anecdote, I've never seen this happen. The only people I and my young coworkers assume can't program in a modern environment are people who have shown that they're unable to program at all.
And I'd bet if asked if he REALLY understood Linux, he'd be saying nope.
There is something to be said for being comfortable with not knowing everything.
I'm 50, and with 30 years' experience, growing up with the Software industry, I do fine.
I learn better today, than I did at 25.
Back then, I just knew how to do stuff.
Now, I also know WHY it works. Right down to the bone.
My years of experience and nonstop training (self-training, when my company didn't want to foot the bill) has paid off in a big way.
However, I have absolutely no illusions at all that I'd have much of a chance in the job market.
In the day of the "brogrammer," there's no room for gray hair. I'd have to start my own company (something that I'm quite prepared to do).
I get paid to manage younger programmers. I code for fun.
"For every complex problem there is an answer that is clear, simple, and wrong."
-H. L. Mencken
You cannot disprove a generalization by way of counterexample. Certainly, lots of old programmers are wonderful. They read the latest developments and new paradigms, and work to understand whether they are appropriate or not, and they have lots of experience that lets the quickly detect problems or avoid paths that will become future problems...But lots of them also just get burnt out. They haven't learned a thing since college, and/or they just want to put in their hours and go home until they are able to retire. Until someone does a survey that compares age and software development apptitude (which would be a really hard thing to do well), it's a valid archetype to watch out for. I fully expect I'll have to prove I'm one of those exceptions to the "rule" when I get to be an old coder.
But what really matters is who's productive and who's not.
Your so naive grasshopper. Management is taught that a good manager is one who is able to manipulate their subordinates to make themselves look good. Old timers are much harder to manipulate because they typically have too much experience in this area.
hostile to older workers.
Hostile to expensive workers. Combine with the notorious inability to evaluate programmer productivity, and ...
how grandpa can't understand iPhones, Linux, or the cloud
I'm technically old enough to be a grandpa, in fact in the inner city I'd almost certainly be one by now (its a cultural thing, "my people" tend to get married a bit older, vs some cultures its all about the teenage/highschool pregnancy, etc) The funny part is despite my apparently grandfatherly age I've been there the whole time for all three examples, and that's not even all that unusual. Great grandma might have some issues, but not my generation.
Now pick a fad that I am the wrong age for social reasons, that I intentionally skipped because I thought it was dumb, like SMS text messaging, or twitter, or myspace, then you've possibly got a point...
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
...let me be the first to say that these young whipper-snappers can't code their way out of a wet paper bag. They don't know the difference between C and C++, they've never heard of FORTH and they can't write makefiles. And they think a 2GHz CPU is slow!
Stick Men
I've been in IT for 33+ years, mostly as a zOS Systems Programmer. A little assembler language programming now and then though. There are several programmers in my age bracket still programming full time though, but they've had to reinvent themselves several times over the years.
Well they normally start to smell funny after only a couple days.
Troll is not a replacement for I disagree.
After working for 40 years in IT and 27 years teaching CS at Northwestern part time I would say that a lot of the young programmers don't have a real sense of programming. They feel that knowing a particular framework is programming, or using a particular package is programming. But the deep programming comes from the Data Structures and algorithms used and the patterns used. There is an art to programming much of which comes with time, experience and study. So you may not be fashionable if you don't have all the latest acronyms on your resume but if you don't know the DS and Alg. you are just window dressing.
Young people are stupid and don't know anything.
They buy into every fly-by-night shiny that come in; remember MySpace?
Even the iPhone is in decline.
Older developers have seen all that shit before.
IMHO, In five years your skills will be antiquated. While your skills are in demand, demand 4-8 hours a week to keep up on new stuff.
IT is always evolving and there is always new stuff. If you choose not to evolve and learn new things then you will become out dated and have problems finding a job. This is not unique to programming, demand for NT 4 Server and Exchange 5.5 admins is probably pretty low these days.
There's a similar thought process in mathematics. Many really amazing mathematicians died young (Srinivasa Ramanujan, for instance), "and therefore any old mathematician can't possibly be a good one." Well...that's a load of crap. The truth is, mathematicians of all ages contribute importantly to mathematics. CS probably faces a similar thought process because computational technology is still very new. (It wasn't long ago that algorithms were primarily researched as a mathematical curiosity.)
PS: I don't reply to ACs.
that's the dumbest thing i've ever heard, especially about programmers. unless your skillset is limited to some ancient unused language, i'd take a 50 year old programmer with real world understanding of architecture and code flow over half a dozen college squirt outs any day.
sigs suck
Youngsters with magic coder fingers are far in between. I'll take a coder with 20+ years of experience over a half dozen near-rookies any day, thank you very much. The senior will typically be cheaper, much faster, and will invariably produce much less bugs.
I'm of the younger generation, but I've worked with all the age groups at some point or other on multiple occasions, and what I've found is... older devs tend to be more encompassing, think their approaches through, and have the jist of how to tackle a wider range of techniques / fixes (experience). Younger devs tend to be faster coders, better out-of-the-box thinkers, and more motivated to do the work (typically, comes from having something to prove), as well as try various approaches at solving a problem. There are high & low programmers in all age groups, I've met people 40+ who rattle code off methodically without external references, and those that can't rewrite a render method. A lot of "newer" code is "older" code optimized, all AJAX is is javascript more or less, insanely complicated javascript at that. A lot of big wig types find it easier to deal with somebody that is more their peer also. Another thing that comes to mind is "culture", bringing a 20-something year old into a team of 50 year olds has some serious cons to consider. There's a ton more factors, but there's a reason age isn't listed on resumes, and that's because it's the shoe that fits that you'll wear.
Whether or not there is an avalanche of contradictory evidence, most people will remain true to their beliefs and will ignore and deny facts that don't agree with them until they die.
This is a human failing. And it is pointless to blame humans for being human. It's hard if not impossible to change the thinking of a single person. Now imagine the scale of impossiblity it would be to change the thinking of the whole human species?
Pretty darned impossible. So what do you do about it? Well? Sometimes there simply NOTHING you can do about it. Unfortunately, the economy no longer makes "retirement" an option for everyone. And if you don't have it, you're destined to end up somewhere miserable in your twilight years hoping for death to take you when you're sleeping. Why? Because there is simply no chance of changing the world of people and their ideas that older people are incapable. Best hope is comfortable retirement if you can... ...and people need to start planning for their retirement in their 20s these days. And are 20-somethings thinking about retirement in their immortal years of adulthood? No. What about 30s? Yeah, sometimes, but often times not... they are thinking of buying bigger and better things all the time for the most part. And 40s? Oh crap... now it's definitely time to think about retirement and if you're not making a lot of money to invest in your retirement, then you are either going to have to put almost all of your extra cash in there (that's money after paying your bills and buying food on a tight budget) until that fateful day arrives when you simply can't get any more work... and then... ...then? ...Then hope that a bunch of wallstreet assholes don't tank your retirement with ponzi schemes. This is what happened to a lot of people with the economic crash.
TL;DR?
You can't change the world. Change what you do in it and hope for the best.
I find younger programmers don't know how computers actually work. They've never used assembler or C for anything. They can't use SQL properly. They don't have the range of experience that lets you attack a problem from all angles and find the best solution.
That's not to say that I use assembler or C for anything nowadays, but the understanding I gained way-back-when gives me a feel for what's actually happening behind the scenes when write in Javascript, Python, etc. And the addiction to application frameworks among young programmers seems to have inhibited their ability to come up with creative solutions to unique problems. They just apply their favourite framework to everything, regardless of how well it actually fits the problem.
Sorry for the rant, but the lack of technical breadth in younger developers is a real pet peeve of mine. I guess part of the reason I get annoyed by it is that experience isn't given that much weight in hiring decisions, so you have inexperienced people in roles of responsibility that they're not ready for. Us old farts who do know better end up having to deal with with the mess afterwards.
It is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. - Abraham Maslow
Productivity is hard to measure. Salaries, however, are very easy. When you can get 3 24yos for the price of one 40yo, good luck convincing an MBA the latter is the better choice, all else be damned.
I'm 29. I've interviewed, managed and been on successful teams with people from ages 20-50. It really comes down to whether an **individual** is adaptable to change or not. I've actually encountered quite a few younger engineers that have no motivation to learn anything that has evolved in the CS landscape within the last decade outside of what they learned in school. That being said I'm not blind and I know this does happen. However, in my humble opinion, stereotyping that "young engineers" believe this perpetuates the very problem that you are bringing up.
...as you leave them in the wrapper, but once the seal on the shrink-wrap is broken they start to decay within seconds.
the above is my personal opinion and does not necessarily reflect that of the little voices in my head
It's not about age per se. It's about money. Experience costs more, because programmers who have been through the fires and fought the wars and climbed the learning curves feel like they've earned more than entry level wages. Because they have earned it.
But that doesn't mean that management wants to pay it. Many companies would rather pay less and "file to fit" and "paint to match" than to do it right the first time. No matter what it does to the total project cost.
And that, my friends, leads us to the myth of the "tech. shortage". There is no shortage of programmers, engineers, or scientists. What there is a shortage of, is *cheap* programmers, engineers, and scientists.
Think about it.
Citing a few counter-examples doesn't disprove claims about a general trend.
they say Java is brain dead
Probably because that's the truth.
Get a life
The kind of life you're probably talking about is almost certainly trash.
get a smartphone
Trash.
I'm fucking *19* and I can see them as more respectful than a piece of shit worthless pile of garbage such as yourself.
Agreed. Especially that Linus guy. 42 and never jumps in and solves problems.
Since everyone is putting forth their sweeping generalizations, here's mine:
From the late 90's up until 2008-2010, there were two camps: the old school and the web crowd. But now the old school is learning web, and the web crowd is finally learning OO, design patterns, etc. So now everyone's the same.
fell asleep
Do you know what is the shell life of a dentist ?
Jehovah be praised, Oracle was not selected
We need a new "Godwin's Law" with respect to discussions about 'older' programmers. In this case, a person's thread becomes invalid any time they use the term 'new fangled' in their explanation on why they think older workers aren't as good as young ones.
-- I ignore anonymous replies to my comments and postings.
Roughly the same as the stuff they eat. I think some of my ramen will last until the 2038 Problem hits.
Old programmers are like old wine; we have no shelf life. As we age, we get better. We also get more expensive. If you pour us into the new wineskin of long hours, low pay, and other kinds of abuse, we burst your bubble and leak out. Put us in the old wineskins, preserve us with reasonable working hours, pay us well, and we'll reward you with the best patches you have ever seen. Keep away the patches coming from new wine, or you'll tear your garment and your hair. After trying us, you'll too say "truly, the old is better", and then continue "however, our shareholders demand higher profits this quarter and prefer 'cheaper'".
"The truth is: Many older developers are every bit as good as young programmers,"
Whew! Glad to know that folks with experience are as good as those without...wtf?
same as any other industry, there is value in experience.
Every programmer or IT "pro" over 40 is worthless. Never met one that jumped in and solved any problems.
As an over-40 engineer I'll confess that I'm less than enthusiastic about solving problems that involve new APIs, new but obscure language features, etc. I suppose It's all the boring boilerplate that I just can't get past anymore. I mentally recoil at the thought of having to trudge through pages of documentation just to get at the little piece of information I need to go forward.
When I was younger I had no problem memorizing some silly function call's bizarre name or learning the odd syntax of a new language to get something done. It was exciting and I didn't mind. But now I just don't have the time to master the 100th variation of someone's system or library that accomplishes the same thing as 100 other systems or libraries.
Solving problems still excites me, though I admit they're problems solved by using older systems, tools, and languages. Solving problems never gets old.
One day after HTML is dead and gone (it might, really!), or after the desktop dies and in replaced by a tablet (possibly not an iPad!), you might find yourself confronted by a new system that does everything the old systems did (though better).
And you'll be asking yourself, "do I really have to relearn all this crap again?"
How long before the myth that you must be 20 to be a good programmer dies out?
We should learn what we need to know about issues, before we decide what we need to feel about them.
I am 53, been in computers since I was 18 years old, cutting my teeth on a TRS-80 at home and HP mini's at the college I dropped out after one semester. I've had jobs writing assembler, COBOL, C++, FORTRAN, perl, Java and who knows how many proprietary or niche programing languages. On HP, Burroughs, Tandem, IBMs and Windows boxes. Reading ISAM files at first, switching it up to Oracle, Sybase, Informix and even a few Access database. Even wrote a COBOL program that did communication via RS-232 ports. Spent 5 years as a system administrator/manager because of my Unix skills, learning Linux from a floppy disk install and dual partitioning. Spent time on HP, Burroughs, IBM, NCR, Sun and Windows computers. Even spent a year programming a phone system with my phone admin got himself fired. I sincerely doubt that I've been left behind.
But I have known several developers that have gotten left behind. For some of them, it's just because they got stuck in a rut and didn't try to learn anything new or take on new assignments in new tech. Others just wouldn't speak up and let their boss know they were getting bored with what they were working on and would like to work on something new. Happened to me once, I got passed over because my boss didn't know I was interested and I vowed to never let it happen again. If someone is willing to sit at their desk and only code in COBOL or Java or C++ or C# all day, in a few years they will look around and notice things have changed and they didn't keep up. If they wait too long, they may not be able to catch up.
But there is one batch of old IT people that are the worst -- the old programmer who absolutely refuses to learn anything new because "programs today just aren't elegant' or "these new programmers and their fancy languages today use way too many resources to get something done!". They have all kinds of reasons to not learn something new, but it all comes down to they think they know the best way to do things, and expect everyone else to change to their way instead of giving new things a chance. (My personal opinion is that many of them are just to insecure to admit they don't know something.)
Whatever the opportunity that comes up for me, you can bet that I'll dig in and learn anything new that I have to. My boss told me that the reasons she hired me was I was the only person she interviewed that basically said "I may not know it, but I can figure it out". Today's tech changes too fast, and people who rely on the excuse "But I don't know how to program in XYZ" or "But I don't know how a firewall works" will surely see their usefulness decline.
Just like so many old programmers before them.
I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
There are two kinds of fool. One says, "This is old, and therefore good." And one says, "This is new, and therefore better." --Dean Inge
Techniques for interviewing are still so jacked. That's really what it comes down to. I think ageism does occur, but I think if interviews were structured to allow people to flex their technical muscles and show their technical weaknesses we would end up with a fairer treatment across the board. As it stands, interviews are usually a practice of the interviewer trying to prove his hypothesis bias rather than disprove it, and therein lies the problem for young and old.
Young programmers don't usually have a full grasp of how things work, and haven't the experience to apply the correct solution to a problem. What they do have, much more than older programmers, is energy. They can turn out a LOT of code (and usually do, most of it irrelevant to the problem) in a given time and work long hours. They're cheaper too. An effective team is therefore an older programmer that can guide and mentor the younger productive units.
Not every programmer thinks they know everything, even young ones. The shelf life of one depends on if he gets the training he needs, and whether or not he gets shot for snitching on dope dealers by crooked military officials who allowed the crap to get here. That's all I've been trying to say. That's the thing. That's what I've been trying to tell yas.
If the mature programmer has spent the last 20 years firmly entrenching himself in the bureaucracy and making an uninspired living providing grudging maintenance on the systems he created in his much more productive youth, then yeah, his status in the company is "obstacle to be overcome".
If the mature programmer has spent the last 20 - 40 years sharpening his skills, trying new things, learning from his mistakes and adding to his experience, then he truly becomes a force to be reckoned with, a mentor sought after by the smarter of the new employees.
Which you become is up to you. The former takes less effort and skill. The latter is more rewarding.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
I think this is perhaps the biggest thing, and might explain what made my dad finally burn out (at 50).
People keep re-inventing the wheel, with the same shortcomings as the previous iterations, only with 10x the code.
Back in the day it used to be possible to actually know the code, both the code of your development team as well as the code of the tools you used to produce a product.
But today? The sheer breadth of a codebase combined with it's usually short life on-market (See every version of mono producted, and every version of java past... 1.4?) has caused it to reach a point where it's senseless to put in the time to learn the cornercases and undocumented features of a library, tool, or codebase, and rather to just work around the current issue and ignore the rest because 'it'll either get fixed when it's a glaring problem, or it'll get fixed in the next version of tool X I was using.' Only half the time when one of the bugs gets fixed a new one pops up in some existing code, or a workaround for a no-solved bug. And then the mess starts all over again. Only in 2 years time it won't matter because either the dev staff has been laid off, or you're being told to do it in .)
While it's not to say none of this happened in the past (Because it assuredly did!), the amount of different code any one person was likely to run into in a few years of development was generally less than it might be today, although the odds of any one person being overspecialized or underspecialized in a group of languages is probably about the same.
People need to look into spending less time reinventing the hammer, and more time on consolidating the numerous nails that have been produced as a result of hammer-mania. Perhaps then people can get back to focusing on good development practices and educating themselves on new platforms and tools.
I've seen so many fads come and go that I don't get very excited about the new one. Even persistent things like smart phones don't attract me much; I have a phone, and a small tablet, because I prefer to separate the uses. Causes a bit of ribbing from the fanboy crowd, but, when they cannot figure out why what they're doing isn't working well on an embedded system, or just want to bounce a few ideas around (and they do often have good ones), they're at my cubicle.
Too many younger programmers and managers mistake buzz for value, but the good ones also recognize the value of experience.
it's the US health care system that hurts older people as they are the ones that need to use it and 20 years old's mostly don't need it.
... your health and energy levels then anything else. A person who has no energy or health is not going to remain a good programmer as they age since it is demanding profession. Like any other jobs there are those who are just there for the paycheck and those who grasp programming as a craft and it is a part of who they are.
As someone who's seen and done a lot, the problem with young programmers is lack of perspective - just because you can put in a lot of hours or make the computer do things does not mean you know how to code. Especially when it comes to large projects. This is a huge problem in the game industry with 'rock-star' young programmers many of whom hack together awful code to get games out the door. So many projects are giant screw ups because of inexperience. Learning how to build anything non-trivial is a learning experience.
Like always potential + hard work = rewards.
Where I live companies basically scramble to hire new young people fresh out of college (and sometimes middle school) as fast as they can and give them short-term contracts. The maximum length of these is declared by law to be three years; after that you have to give someone a permanent contract. And that determines the maximum shelf life of programmers: three years and that would work out to be about 26 or so. But if there are more new recruits that term can shorten dramatically; mine only lasted a year because there were more graduates than average in the year after mine. I know my trade and know it well, but I know the law creates an insurmountable barrier against hiring me, so I'm thinking of giving up my trade. My next job may be repairing bikes or cooking for all I know.
are for the most part idiots?
now you kids get off my lawn
What must your life be like, having the certain knowledge that it will end at 40.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
One of the skills required to be a good developer is being able to write well in a human language. Maybe it's my prejudice, being 50 myself, but the older generation writes better and can generally express themselves better. This is required both for the obvious documentation and for the real difficult skill of a functional analyst, in conveying a business proposal or a solution.
They also express themselves better orally. Not all, and not always better, but it's an observation...
It's about five years, after that (s)he should be promoted into project management. There's no substitute for real-life experience.
AccountKiller
I'm not sure, but the half-life can't be more than 40 or 50 years.
Like you would say to someone older than you, like they would say you aren't old enough to know stuff and you would say "whatever old man' stuff like that
It's human nature, sadly, to stereotype. Fact is, most stereotypes (at least of groups or cultures that people have actually encountered personally, as opposed to ones they've only seen pictures of or heard jokes about) have a basis in fact. Most old people don't understand iphones, Linux, etc. The vast majority of females care about shoes way more than the vast majority of males, too. That doesn't mean no old person understands technology, or that every female cares about shoes more than every male, but a lot of people - consciously or unconsciously - act like it does.
If you suck as a younger person then you just appear to lack experience even if your suckiness is due to you sucking. If you suck as an older person then it's obviously because you really do suck. A sucky younger person will turn into a sucky older person, but people will still hire the younger person because they assume it's really just inexperience.
Cow Cube
I think one of the probs is that younger people extrapolate from their own experience, where they don't work too many hours and have a life, and then try to mentally add kids, aging, and 40 hour gaming sessions to maintain their level 85 chars and just can't imagine how anyone could do that.
It's called caffeine. That and dropping abusive "friends" from Facebook that just argue with you, plus not answering cell phones or tweets during meetings.
Multitasking doesn't work, actually, according to all (yes, all) the scientific studies.
Besides, who do you think wrote the first object-oriented code all your libraries are built on, n00bz?
-- Tigger warning: This post may contain tiggers! --
Um, dude, all the management magazines say Java is dead. Heck, why do you think Objective C is hot? Wake up and smell 2012 already.
They're tweeting mean things about your attitude right now ... besides, nobody has used Geritol in something like two decades, how old are YOU? CoQE and Resveratrol is the way to go.
-- Tigger warning: This post may contain tiggers! --
What must your life be like, having the certain knowledge that it will end at 40.
Carousel will Renew you!
Don't trust anyone under 80.
-- Tigger warning: This post may contain tiggers! --
As an over 40 programmer with more than 20 years experience, I find your post offensive on a number of grounds.
I have a smart phone. More than one kind actually, and I've developed software for most of them over the years. Thank you.
I know from experience that solving problems requires that you understand what needs to be done first. I know that those who jump in without enough information end up working many times as hard as they need to. Sometimes you can get lucky and hack your way into a solution, but more often than not it will cost you dearly to maintain. You apparently don't get that.
I've programed in Java and I fully believe that it is a valuable tool for the problems it is suited for. I also know that many software developers leave school not knowing any other tool so Java gets used places where it doesn't belong. Good programers have developed many tools over the years and knows the limitations and proper applications for each. You are a one trick pony good for only one thing, but you THINK you know everything. Smart guys listen to the old farts and try to learn from others mistakes.
I've been doing Linux since you had to compile kernels to fit on a floppy, and back when getting X-Windows started involved actually editing text configuration files. I doubt guys like you know anything about this now that installing Linux is hitting return a few times. You can thank guys like me for making your life easier. You are welcome!
You may be some hot shot with computers (although I doubt it) but I've seen your kind come and go. I clean up the mess they leave, not because I'm smarter, faster or some hot shot computer guy myself, but because I can and will learn. Your kind won't stop and listen, won't learn something from the prattling on about all the past failures (and some successes) I've lived though. You haven't done anything of importance yet but you refuse to listen so you can avoid the same mistakes I made when I was your age.
You sir, need to read "The Mythical Man Month" and think about how software development hasn't really changed all that much. Sure, we may be coding Java and not assembly or JCL but at its core, the really hard part about software development hasn't changed all that much. Yea, I started coding procedurally in C back when K&R where still writing their book, but now doing Object Oriented in Java and C++ is really not that different. I've done waterfall development and now Agile in an effort to "revolutionize software development" but experience proves to me that there is no silver bullet. The hard parts of software development remain the same. But you would already know that if you'd listen to us old farts from time to time.
Go ahead hot shot. Dive in and beat yourself to death. We've seen this kind of thing before, heck, some of us had the same attitude and already made the mistakes you are going to make. We will just stand here and wait for you to come to your senses and start asking for help. Until then, good luck.
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
Frustrations of being an old programmer:
Javascript is at last a decent object-oriented programming language, but much of the Javascript out there is miserably written by people who have no clue. Much of it is cut and pasted from older bad Javascript, with special cases for different browsers. Even worse are front ends to convert Java or something else into obfuscated Javascript.
C should have died decades ago. The problem is that all of the replacements were worse. Modula tanked because Wirth and DEC botched the marketing. Ada tanked because it was too verbose. All the languages with garbage collection are unsuitable for low-level work. The C++ committee went off into template la-la land and became irrelevant. So we still have buffer overflows, security breaches, and crashes all over the place because the key language of the infrastructure sucks. Treating arrays as pointers was a horrible mistake.
HTML browsers should have required, from the beginning, that the opening and closing brackets balance. Instead, we now have HTML5, with clearly defined semantics for broken HTML. Have you ever seen what has to go into an HTML 5 parser to make that work?
Machine learning is great, but the notation of the field sucks. Most of what's going on is better visualized geometrically.
Microsoft says the future of programming is adding trivial little "apps" to a Microsoft-provided core and being paid peanuts for them. Apple insists they get to monopolize anything worth doing, and others can only develop "apps" in areas Apple can't profit from. Not a good future.
System administration is a blue-collar job, like electricians. But without unions.
the shelf life of the programmer depends on the amount of food and water on the shelf.
...seems to be the one kind of bigotry that is not only tolerated but considered fashionable.
Is there anyone who talks shit about older programmers who isn't a clueless fuckwit themselves? I've never seen one.
Ok age jokes aside, honestly I worry just as much about younger programmers. They have less of an idea where it all comes from. Not many graduates these days are coding in assembly. Or even C anymore which is pretty much the mother language to all other languages.
Drivers and other down-to-the-metal stuff aren't written in Java. Yes, I know that with Google you can find me an experimental counterexample. I know that. But the system you are using right now? It'll all be assembly, C and maybe a little C++. And you're most likely not using a browser written in Java or Python or C#.
You know, some years ago I considered going back to college and getting a CompSci degree. When they said that Java was their main language I decided not to. I like Java, write in it, and I plan to get whatever Oracle is calling the SCJP this week someday soon. I'm not dismissive of any of the new technologies. I like them. They are great at the problems they are designed to solve.
But there is something to be said for writing assembly and manually turning on an MMU unit, just once. You can know about computers, or you can know computers. We're missing something by shifting the educational focus to the higher level languages.
Weaselmancer
rediculous.
Part of the problem is younger programmers who assume they're better because they put in a lot of effort to learn the latest GUI or DB libraries, and they know the intricate specifications of six trendy programming languages off the top of their head, and they can configure four different Linux web servers on auto-pilot. See, they're always keeping up to date!
Older and wiser programmers know that usually, to a first approximation, a GUI library is a GUI library and a programming language is a programming language and a web server is a web server. They're just tools, and while some are better than others, it's what you build with those tools that ultimately matters.
Of course, they also know when and how to check out the specifics and decide which tools are right for a given job, but they don't waste time on that until they have a need for it, which makes them less buzzword compliant in the eyes of the newbies (but a lot more productive).
When a tool isn't just a rehash of numerous similar tools before it, it's usually the older and more experienced folks who came up with the industry-moving developments, but the newbie programmers who are buzzword aggregators always trying to improve a resume and the naive managers who hire based on buzzwords don't notice that sort of thing. They don't care that someone older could build an efficient database schema that answers the important questions in an instant, or an easy-to-use GUI that customers love, or a robust concurrent server that doesn't crash and make you look like idiots in front of those same customers. Do you have at least 7 years of experience with C# 5?
Of course some older programmers really do slow down, stop learning, and coast along. It might be getting stuck in a rut and not bothering to do anything about it. It might be a matter of changing priorities, family commitments becoming more demanding and the like.
But the thing that really divides the good older programmers, IME, is whether or not they know how to take advantage of their greater understanding and better transferrable skills. If you're still playing resume buzzword bingo at 40, you're doing it wrong, not least because it implies you still look for jobs by spamming resumes like a college grad. You should be landing a good position through your network contacts before it's even advertised, transferring from wage slave to freelancer/contractor/consultant arrangements, starting your own business so you're on the other side of the desk, or otherwise avoiding being a victim of ignorance.
In short, an older developer who knows what they're doing has a more-or-less indefinite shelf life, as long as they don't play games with young, dumb people who don't understand why. As a bonus, avoiding those games is an excellent filter for avoiding crappy jobs, poor working conditions, incompetent colleagues, and low pay. :-)
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
As with most things "Young (fill in the blank)" are usually ignorant, stupid and arrogant.
All these people they think don't know anything in many instances INVENTED the shit the young people are using.
So...fuck'm I'm their manager anyway so the fuckers will use what use tell'm to use.
While I don't disagree that older programmers can be, and are still relevant: all the people he pointed to as part of his argument made their contributions as coders in their 20s and/or 30s.
First time post...
I'm a software developer. I'm getting ready to turn 30. My coding co-workers are ~30, ~50, and 75. Given the choice, I'll take the 75 year old over the other 2. He slings code soo fast, and I'm pretty sure he's the most bleeding edge of us all.
Odd? Most people attempt to stand on the shoulders of giants to avoid tripping over their footsteps.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
Heck, I'll comment as myself. Here's the real scoop - "programmers" under 30 (Yes, it's quoted, most of them can't program the equivalent of the way out of a wet paper bag) will work dirt cheap, talk the latest lingo, and wow - that sounds really cool! Latest buzzwords, systems, what not.
Experienced programmers (those with more than 10 years experience) have already seen 2 iterations of those latest buzzwords, systems, and what not, and realize that it's much more productive and the chance of success is much higher by using established, known, and relatively debugged systems instead of those latest iterations that reinvent the wheel.
The Wheel, reinvented (and buggy)
Things that are truly unique and may have a place:
Then there's the special list of things that went off the deep end, and in this arena, C++ is the most notable failure. It has failed to produce not because of lack of capabilities, but more because it started out as a promising well constructed language, but when scaling was added for ever larger projects, bad decisions were made which doomed it's ability to be written or maintained. LISP is another, in that it's too flexible, and only under a dictatorship would it be feasible to write long term software systems in LISP.
So I'm prepared to lose kharma because I'm sure I've offended every mod out there in one way or the other, both by what I've said and what's implied by what I've left out. C'est la vie.
The cesspool just got a check and balance.
I'm 36 and I have been programming since I was 12. I work with embedded though. I don't feel like older folks have any issues in the embedded market... quite the contrary actually. You can find javascript kids a dime a dozen but good embedded developers are very hard to come by. Most of the market is still C as well. Now granted ... embedded is probably a fairly small job market compared to other areas. But it is probably one of the areas were experience and older age still carry a lot of weigth.
Created some resentment among the older Indian immigrants who had to slog through med school or get through IITs and IISc to make it to USA. Now grads from third class colleges like Sri Bhagawati Amman College of Engineering, Middel-of-Nowhere, Godforsakenpradesh, India were waving their newly minted H1B. It was disconcerting. "Why is America letting these lunatics in? Why did I have to struggle so hard to get in? And this hoodlum is also in E2 category?" they were muttering under their breath as the nouveau immigrants were talking loudly and hogging the buffet line.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
When I was under 30, I thought everyone over 30 was a dinosaur and I was right from a certain point of view. Now that I'm well over 30 I think everyone under 30 is a punk ass and I'm usually right about that too. Fact is, good programmers come in all shapes, sizes, colors, and ages. I suppose the same can be said about bad programmers. Being a game developer I've been turned down for jobs because I'm "too old". I wonder if the "enlightened ones" who make those decisions realize they are discriminating on a level similar to discrimination of race or gender? Pretty low mentality for such "smart" people. Anyway, I figure as long a Metallica or Iron Maiden can still tour, I can still make games.
The fallacy of programmer shelf-life is predicated on anecdotal evidence that old programmers who are shitty are shitty programmers because they are old. This is a form of age discrimination that appeals to middle managers who wish to drive down the value that 20 years of experience brings to the table.
The key word here is "age discrimination".
Amazingly there are a lot of procedural programers out there that still have to bend their minds around Object Oriented Development.
You can take the courses for java, C# and other OOP languages but you will be left wondering why all the trouble to apparently do the same thing.
You need to read "Object-oriented Software Construction" by Bertrand Meyer
Written at the beginning of the OO methodologies (circa 1998)
It was required reading when I was in University and many concepts he explains in his book are very valid today.
or... having more fun! seriously.
Because the old guys always want to do that shit in RPG. Really? Does anyone besides RPG programmers actually *like* using an app developed in RPG?
*blah* *blah* stable *blah* secure *blah* since you were in diapers *blah* *blah*
It has nothing to do with the attitudes of younger workers. I work in a field where the oldest workers are treated with the most respect because experience, insight and wisdom are highly regarded. The youngest are most likely to treat the oldest with deference.
It just so happens that like most industries, there is consolidation in the IT industry, and that means more power to fewer companies. Since those companies no longer see the communities in which they reside as having any value beyond the tax benefits they are willing to grant the company, they have no problem cutting the oldest workers loose because they tend to have been around longer and make a few dollars more than their younger counterparts. Since they worry about age discrimination suits, they just can't say, "Get lost, old man," they create a hostile work environment, hoping for attrition.
This is one reason you are seeing such a concerted attack by businesses on workplace rules and civil rights laws. Those "age discrimination" rules are part of what they call "stifling over-regulation", along with minimum wages, child labor laws and environmental regulations.
Left to their own devices, these companies would be more than happy to see the US turn into one big Foxconn dormitory.
You are welcome on my lawn.
Changed jobs 4 times in the last 15 years, usually due to buyouts and downsizing, though I am typically one of the last standing. Never been unemployed for longer than two months (that during the dot.com bust).
I'm through with large corporations. They don't know how to build their talent and don't value teams, can't assess productivity, don't know their end-users (just the buyers). Too many ill-conceived projects ill-managed. Working for a smaller company now, and enjoying the impact I can make on a business this size. Pay is competitive, though I could make 20% more if I wanted to put up with the corp b.s., longer hours, and be programmer-in-a-box.
Am I at my prime? No! My memory is not as good as it used to be, and so I've compensated by honing my research skills. I no longer like pursuing technical solutions that may be interesting but offer no business (or end-user) benefit. I enjoy working hard, 40 hours a week. I put in overtime when it's enjoyable and productive. I may not be ninja anymore, but I have loads of experience on projects from conception to completion to initial maintenance cycles. I can smell failure a mile away.
I stay competitive. Moved from 4GL -> C -> C++ ->Java -> HTML+CSS+JS. Currently reimplementing a web site using jQuery, node.js, and Groovy. And yet perhaps the real reason I'm still in the game is that I'm not a geek's geek. I am primarily a problem solver, customer empathetic, and laaaaazy. I look for the expedient way to get things done and don't care much if I impress my colleagues with my l337 5k1llz. I communicate and write well, and would rather work in a collaborative environment than one with hotshot cowboys who can't be bothered to document or mentor and see nails everywhere the moment they discover the latest cool language/framework/service hammer.
Unless I pop a brain vessel, I expect to be good for another 10 years. It's not been hard for me personally to find employment, and on terms that I can tolerate.
I have 38 years of experience. I started out as an MVS systems programmer, eventually coding program products on contract for various software houses, I've worked on various UNIX systems including Solaris and currently work on Linux and VMware. I'm also a developer at FreeBSD.org -- I used to do key zero supervisor state (kernel) programming for MVS (now zOS). I currently do programming for FreeBSD (some of it kernel). I've reinvented myself a few times. Same s**t, different pile.
I had a couple of students living in my basement a few years back. One was in third year comp sci. Many of his courses were Java and web based. I asked him if he was taking any O/S or compiler writing courses. He answered no and he had no intention of doing so. It makes me wonder how civilization will maintain what we built if there are few people with the ability to understand it. I don't think the age of the person matters. What does matter is that our universities are not producing enough people with the proper skills to replace those of us who have built the IT world we see today.
You had text files? I had to patch sectors on the disk!
Shelf Life
You keep using that word. I do not think it means what you think it means.
If you keep your programmers on the shelf and don't actually "use" them, then they'll be out of date within 12 months. If you take them off the shelf and put them to work and treat them right they'll probably last much longer.
I'm a 40+ yo programmer who runs a team and hires/fires programmers. A lot of the complaints about new grads is true, so don't hire them. But honestly, there are a lot of new grads who are excellent developers. They know all the relevant technologies, and thy are happy to work for half of what the senior developers make. Truth be told, a lot of the senior devs either can't or won't keep up. I don't know hey that is; and I'd rather not deal with it. Honestly, old folks brains slow down, become hard, can't learn, can't remember, etc. It sucks, but it's true. I'd rather have 2 new grads and work with them or the next 10+ years
How many really cool things that relevant today were made by be oldsters? Not MS, not Facebook, not Linux,not google, not anything that I can think of.
I think there are a lot of sides at fault for this. There are guys, like you (presumably) who are highly competent and very good at their job. I imagine that you are probably worth the higher rate an employer has to pay you because of your experience.
There are, unfortunately, a number of other programmers who have been in the industry for years and haven't increased their skills, and are mediocre programmers. They still expect to make the same wage you do. You, in many cases get painted with that same brush that they do. I hope you do a fine job demonstrating those skills, and I know there are employers looking for those skills and rewarding people for them.
I am however sick of people saying they deserve X wage because they've worked for X many years. Who don't increase their marketability and skillset and then expect to pull in grossly higher wages based on their time-in-service when they have to compete with people who will acquire those skills. There are definitely employers who can't make that distinction. There are also those employers who will. I hope the folks here who give that effort can find those employers.
I don't think shelf life of a programmer is a good analogy, I think of a programers half-life. When programmer is fresh out of school many times they are pre-trained with all the skills and knowledge that employers need and guess what, they are cheap. So employers don't spend money on training and the wages are low. What happens 5 years out? Skills start getting out of date and salaries go up. To justify paying a programer more they have to learn new technology and be more productive than kids out of school. The bottom 20% don't make the cut and move to different jobs. An additional five years same thing happens. By the time your forty you have been through this cycle several times. What your left with are people who are good at learning new technologies and are more productive than younger programmers but there aren't many of them. So by the time your forty 80% have moved on.
I'm a comp sci student in Sweden, and we've used assembler (mips), C, Java, ML, Python and Erlang. We probably spent most time with C. Least time with Python. Just wanted to show you it's not all bleak out here!
You had disks?
Great Windows SFTP Server!
By the time you've reached a position of seniority, you should be prepared to manage.
Why?
Skilled and experienced people can contribute in both technical leadership and training/mentoring roles, to the extent that they aren't really part of the same thing anyway, without getting involved at all in "management" in the common senses of project management, product management, being someone's "manager", and the like.
Moreover, being a good manager in any of those senses has very little to do with technical competence. Being good at the job and being good at managing people who do the job are no more the same thing than being a world class athlete and being a world class athletics coach.
A false equation of seniority and management is one of the biggest dumb ideas holding back our industry, and it needs to die. Unfortunately, as long as we keep promoting geeks with no aptitude for management into management roles, they won't understand what's going wrong well enough to stop it happening...
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I'm 64 and after years as an IT manager I'm back to being a full time programmer and enjoying more than ever. I'm also very impressed by the respect I get from my younger colleagues.
I have been programming for 35 years, and I am still way under 50, my father was also a programmer (I bet not many can say that). I have developed from COBOL to Arduino, and Android, and most platforms and languages in between (except apple for freedom reasons). Programming is not about the language or the platform (LOL Java), but a mindset and techniques. Hence the shortage!
Wow I'm 40ish and using Java so I guess I'm with the in crowd.
Where are those cute female java coders? I want to teach them how to catch exceptions properly
So... you stick to java?
Anyone ever had to deal with crapware like foxpro? maximizer? god help us.. RIM.
People learn a system, so long as the system does the job they don't make large changes in skillset. More money comes from doing than learning in the shorter term - until someone who knows what they are doing comes along improves upon it.
Besides.. who has the time?
Older people have to start businesses and employ younger people. There is nothing new about that. It is the way we pass knowledge to the young and the way in which capitalism advances. All these programmers who clamour for jobs and being let down by the 'old farts' who do not want to go out and start businesses.
What does matter is that our universities are not producing enough people with the proper skills to replace those of us who have built the IT world we see today.
Oh it's already started. My university offers a compiler course, but there are no qualified professors to teach it in the comp sci department so it hasn't been taught in 4 years. And at that point it was taught by someone outside the department.
Very well said.
I've been down the same road as you. Although I've moved on to management, I still write Android apps in my spare time. I use Java for that, not because it's such a great language--it's pretty crude actually--but because that's pretty much what you have to write in if you're doing Android. Yes I know there are other choices, but not...really.
Now I'm literally training young hot-shots to be better programmers. Most of my effort with the brighter ones is setting boundaries. They tend to be loose canons, lacking direction and focus. The ones that will listen really can accomplish amazing things, but the ones that already know everything end up doing lots of re-writing because they didn't stop and think or ask for input.
We need the hot-shots because we old fogies can get set in our ways. But we also need the maturity that experience brings. The two kinds of people, under good leadership, can accomplish amazing things.
Young programmers just want to use the latest over hyped framework that looks cool. They end up building slow pieces of crap that within a year no one will remember how to maintain because everyone has moved on to the latest over hyped framework. Older programmers want to fast programs that just works for the next 20 years.
Well, it was only a thin circular medium coated with iron oxide particles and covered in a cheap plastic cover, but it was a "disk" to us!
YOU HAD LOWERCASE?
.
What kind of geometric visualization do you mean/envision for machine learning? Or are there examples out there in the wild that you could perhaps point out to me? Thanks.
.
Also, what exactly do you intend the phrase "machine learning" to encompass? SVM? Neural nets trained on partial subsets of a dataset and tested/validated on other partial subsets? Supervised or unsupervised learning / algorithm modification techniques? Any pointers you have would be greatly appreciated.
No slight towards you, but the respect is at least partially because you are closer to the 20-somethings grandparents age than their fathers. It's pretty common for someone in their early 20s at least to still have a bit of rebellion against their father's / mother's ways "and new way this, modern way that" and project such attitudes on anyone 30-50 years. At your age, you're actually beyond their ability to be scourgy little d-bags around.
On the other hand, you might work at a company (or country) were the culture doesn't allow childishness to fester.
Like with so many things, there are definite signs of diminishing returns when it comes to experience, especially in IT, as the more experience you have, the more of it will probably be in long forgotten and obsolete technologies.
In my experience, the sweet spot seems to be around 10 to 15 years.
Thank you Sweden. It's nice to know that when my generation hands off the torch, there will be some people available that will know what to do with it.
In America the situation is different, or at least it appears to be. I've been a part of the interview process on the hiring side. A lot of kids we get are fantastic on big iron Java and website back ends and SQL, but really couldn't program an 8 bit processor to do anything. It worries me. You ask them how a keyboard works and they panic. They don't know.
Weaselmancer
rediculous.
I find what actually happens is this: grizzled, old programmer enters a new environment. Said environment has fundamental issues like:
- How to parallelize problems across cores / nodes / etc
- How to reduce data size
- How to perform optimal queries or other operations
- etc etc etc
Yet, old grizzled programmers have these problems presented to him/her using a lot of new jargon and buzzwords. Grizzled programmer scratches his head, having no idea where the problem solving begins. Younger programmers, meanwhile, are whipping out Jongythonoop scripts left and right.
All the while, the actual fundamentals didn't change one bit. All we did in the past 2 decades was change the language.
Windows is built with make. You don't use a toy build system when you need to do real work. Visual Studio's junk gets... "interesting" when you have multiple developers and a proper source control system.
BTW, Microsoft also does not use their own source control for Windows. See a pattern here?
OK so I'm 60 and have been in all aspects of software design, creation and delivery. I've worked in Hex, ASM, C (learned from K&R book), C++ when it was a pre-compiler (Glockenspiel) for the ATT & Sun (68000) C Compilers. I currently work as a Solution Architect on JAVA & .Net based platforms, BPM platforms, messaging architectures. I've designed and delivered realtime trading systems for the biggest trading entities and huge application suites for international banks.
This field has been good to me but I've always looked over my shoulder at the younger entries (many of whom I hired when I was managing) and known that our word, at a basic level, is made up of the quick and the dead. I've chosen to be quick. I've spent countless time learning new languages, frameworks, concepts, design patterns and my ability to contribute spans a broader number of key topics than most of the people I meet at work. I've been an independent contractor for many years so I make sure that I get paid fairly for the work I deliver for my clients. I can never imaging retiring because this is what I love to do.
This thread has a lot of speculation from both sides of the argument but from my point of view, you either (a) become obsolete, archaic and unemployable,(b) force yourself to suffer through it out of fear of becoming unemployable or (c) thrive within an ever changing endeavor that will always challenge you to grow because it is what you do and you wake every day looking forward to the challenges.
I know that choice 'C' has always worked for me. As a consultant I change assignments more frequently than the average employee changes jobs. I am interviewed for each opportunity, usually including some level of technical regimen. In the end I continue to succeed due to the breadth of topics I can integrate into an overall design and arrive at a high quality solution for the given clients' challenge.
Yes I can program and I do work closely with the developers but there's so much more to creating great software to simply focus in on knowing the nuts and bolts of every language or framework. Clients expect more from experience and that is good news for any of us choice 'C' types that aren't ready to hang it up just yet.
I get the feeling that many of the comments here are from people who are 30-50, with just a very few exceptions. (I am somewhere in the middle of that range too in fact). Slashdot users are getting older? Where do the 20-somethings hang out?
"iPhones, Linux, or the cloud "
I simply do not care about closed platforms, nebulous memes, worthless technologies with no technical merit and sprawl of new companies whos raison detre is to peddle ads and collect market intelligence.
"They can't understand that the same old server thinking doesn't work in an era in which everyone is migrating to the cloud"
What does this even mean?
That implies that you're sitting around doing nothing. IMO as long as you stay engaged and resist the urge to "coast" you can stay sharp until you retire or keel over.
Shelf life of this story is like a week.
Keep on knockin'
https://robbiecrash.me
79 6f 75 20 68 61 64 20 74 65 78 74 3f 0a
01111001 01101111 01110101 00100000 01101000 01100001 01100100 00100000 01110100 01100101 01111000 01110100 00111111 00001010
:>)
Anyways, here's the translated for those who don't want to parse away:
hexdump -C msg
00000000 79 6f 75 20 68 61 64 20 74 65 78 74 3f 0a |you had text?.|
The answer is 42.
1: Re: YOU HAD LOWERCASE
_ _ hex-encode{you had ASCII?0x0a}
2 :
_ _ binary-encode{you had HEX?0x0a}
3:
_ _ stream-of-electrons-encode{you had switches to flip?}
4:
_ _ M-x-butterfly-encode{you had electrons? why i had to create the universe... get off my dark-matter lawn, you damn dirty apes!}
We have about 10 where I work. Dev team of about 200 overall. So they are a small percentage, but clearly not mythical.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
.
0: Re: You had disks?
_ _ YOU HAD LOWERCASE?
1: Re: YOU HAD LOWERCASE?
_ _ _ hex-encode{you had ASCII?0x0a}
2 :
_ _ _ binary-encode{you had HEX?0x0a}
3:
_ _ _ _ stream-of-electrons-encode{you had switches to flip?}
4:
_ _ _ _ _ M-x-butterfly-encode{you had electrons? why i had to create the universe... get off my dark-matter lawn, you damn dirty apes!}
Java gets used places where it doesn't belong
When I got my degree, C was the primary language. Then Perl 4 came along and suddenly I could access system libs much faster than before. Then I realised the weak typing in Perl would never make it a mainstream language for business purposes. Perl is not to blame but crappy programmers that refuse to read manuals are. Then I switched to the OO paradigm and Java -learning OO the right way takes time. Initially the absence of regular expressions in Java was the only thing preventing me from making a significant switch. Since version 1.4 Java can be used for most things I need. Java 5's best feature for me is generics. Java 6's best feature is JAXB 2.2. JPA 2 is very usable.
In Java I still miss IPC and a DBM/NDBM/GDBM solution to offload hashes and sets to disk in order to minimise memory usage. But Java SE is turning more and more into a general purpose language. I ignore today's GUI/App hype as I know tomorrow will bring new hypes. I use Java SE as a preferred language. And with a bit of schadenfreude I watch newbie programmers overkilling anything coming along.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
Honest comments are good ones. I agree with some of what you said, but I have to disagree about C# being a Java want to be. Full disclosure, I used to work for Microsoft, but I currently work at a startup using mostly Java and Python. I've written code in just about every major language, and a few not so major ones, started on assembler, C, and Lisp. I have to say that C# is one of the best languages is at this point Java would love to be everything that C# now is.
Of course C# was heavily inspired by Java, but it had the benefit of hindsight to learn from a lot of mistakes, not to mention IMO a better group of people behind it as far as language design is concerned. It has evolved quite nicely. I used .NET since the alpha framework internally at MS, and now that I'm using Java I miss it so much. I've tried to get my team to compromise and start doing some things in Scala, but so far I get a lot of resistance particularly from the older Java devs about using it. Anyway, I feel like I've been knee capped and shot in the face when coming from C# to Java, even with various good third-party libs like guava. It's just not the same as having some obviously useful things in a statically typed language baked in - examples: LINQ and expression trees, better meta-programming, better Generics, helpful keywords like default, lambdas, better collection initialization, better default async libs, etc.
As for Smalltalk, if we're on the subject of karama burn, I love it and I think it's a shame that things happened the way they did. It deserves to be a top language for rapid development and for web applications. Modern Smalltalk is great and a joy to work in. I worked in Gemstone Smalltalk as well as Squeak and Pharoh quite a bit. All feel liberating compared to anything else object-oriented. I feel no other language is so clear to me. It reads like a book, and keeps it simple.
The old geezers love it because they know you don't need all this crap like in Java and C# if your language and standard libs are designed well. I can't stand the Ruby hype because after using Smalltalk, you feel like Ruby is the idiot cousin that doesn't quite get it. And of course the VM concept is absolutely brilliant and opens so many possibilities. If only they would solve multi-threading a bit better and have slightly nicer UIs in some of the dev environments. Even the source control is nicer (but needs polish in terms of usability) - object oriented source control. As Smalltalkers love to say, "Files, how quaint."
But I find younger team members (and managers) do not always take the long view and don't listen hard enough to good advice. This is particularly important when thinking strategy. Getting ahead of where the technology diffusion curve is going is incredibly difficult but surely is often the key to hitting the big time. Companies should be planning two years ahead of what they are doing now instead of always merely reacting to things. Evaluating the potential for long shots and possible industry futures is important but how many small companies do it? When it does get done, the process tends to be locked up in one department with a few people only since those few managers (usually 40yo+) are the ones who are supposed to be the strategists doing "ideation". [Aside: apparently age begets wisdom in managers only]. To my mind, I'd prefer to encourage input from all including the most junior staff member instead of having them sit in stunned silence, politics preventing them from contributing. Yes people will say a fair bit of wild crap but that's to be expected and even praised in a brainstorming session.
Shouldn't that read: 011110010110111101110101001000000110 10 00 01 10 00 01 01 10 01 00 00 10 00 00 01 10 10 00 01 10 01 01 01 11 10 00 00 11 11 11 00 00 11 01 00 00 10 10
.
yep, I cut-n-pasted the binary translation of the previous line's "you had text?" rather than "you had HEX?". That's why my later reply to myself includes the correction as pseudo-code:
_ _ binary-encode{you had HEX?0x0a}
it's indefinite.
Over half of new programmers will never finish their first commercial product.
Dunning–Kruger in effect.
Do you know who finishes marathons?
Mostly people who've finished marathons before.
Would you rather trust your life to 1 experienced surgeon or 8 new ones?
Would you prefer 1 experienced mechanic or 8 new ones?
Would you pick the plane with 1 experienced pilot or 8 new ones?
How about your food? 1 experienced cook or 8 new ones?
Most mangers want large numbers of pliable people because they think it will advance their prestige.
If you really need something done, find people who've done it before.
If you've got seniority, you probably see the big picture better than most, so you ought to be spending some time keeping people on track and (most importantly in our shop) not re-inventing the wheel.
I probably spend 20% of my time doing project coordination and that sort of technical support. (I'm 53 and have spent the last 40 years messing with computers).
From what I've seen there's a tremendous price the whole IT industry pays for moving older programmers to the management. The same mistakes are repeated over and over again because there's no one experienced enough around to kill a flawed idea in its beginning. I would not be surprised if I was told that this phenomenon doubles the costs for large IT projects.
Again, a totally inflammatory IT world expose. They need to fill a magazine, what is slashdot's excuse?
Same question asked 3 times this year. tldr; You're only as old as you feel.
I really see this viewpoint eroding. I think a lot of it originally came from that old guys tended to be mainframe-centric, and young guys were cut on open systems. There is a HUGE difference between the development mentalities between the two. My experience has seen that for the most part, mainframe guys really struggle when they are taken out of that environment. Between the fact that modern open systems have been around long enough for the young guys on them to become the old guys, and that many of those guys are now management making hiring decisions, I personally have seen this become much less of an issue.
.NET is not a language C# is and is Java the Microsoft way
Ruby is Perl updated
ADA is what it is...
Lisp/Scheme is a good basis for a language in the same way that most systems are still actually complied in C/C++ regardless of what they are written in
Puteulanus fenestra mortis
You had text?
If it's over 40 years and has started to wrinkle, you'll only have a couple of years left before it starts to mold. You may want to throw it out and get a tight-skinned new one. They're cheaper these days.
"Shelf Life." LOL.
/humor
(Useful working) Life begins at 40... at least, if you believe some of the recruiters and managers I work with.
By the time you hit 40, you start to have the critical mass of knowledge that means any new systems you come across will have at least some analogues and parallel concepts with your existing skillset, meaning that you will reach intermediate/advanced levels of competence with the systems faster than younger colleagues, and you are less likely to make errors that require major corrections and cause long delays while getting to that stage.
Two of the best programmers that I know are approaching retirement within the next 2 years, and my management team are terrorising recruiters already, trying to find adequate replacements.
Actually, you can make a case that the kids don't really get issues like modularity, consistent APIs, and backwards compatibility. But really, of course, the trouble is that it's hard to con older programmers into working at half-pay with a promise of equity in a facenorth game app company targeting the slyFad 9.0 platform.
I regularly work with developers 20 years younger than myself and marvel at how stupid and poorly educated they are. They all have C# backgrounds. My future is assured amongst these dolts. I'm gold.
What kind of boobs do they have? Heh
115-120 years if you are very lucky.
This could change if medical science progresses enough.
Oh wait, did you mean "what is the shelf life of a programmer's commercially-valuable programming-related skill set?"
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
What a load of crap. It doesn't change at all as far as I can tell. The patterns are the same, sometimes a few details change, but its still the same as it ever was.
"The truth is: Many older developers are every bit as good as young programmers"
Um, the truth is that most young developers are basically clueless and arrogant about it. Who do they think built those smart phones? I spend a lot of time consulting in Silicon Valley and most of the "young" people I see have been convinced by apple that a piece of hardware is a fashion statement. They look like brainwash victims from an ipod commercial.
Being a good programmer is not something that's learned, it's not something that goes away. It's not something that goes stale. It's something you are, or not. Age is not the relevant issue here. I've known programmers both extremely old, and extremely young that are brilliant. It's a California myth that age has anything to do with it.
This signature intentionally left blank.
...well, at least where I am presently working the problem is management. Supposedly we're hiring a few software engineers, only they are low-balling the offers to anyone they do consider, and won't consider anyone over about 42 (the 'software manager' refuses to have anyone work for him within 5 years of his own age, or so I am told). This means that most of the guys that have the experience we need, to get the job done on time and done right are being rejected by idiotic management - possibly (likely) doing something illegal - and our projects and customers are suffering for it.
Their idea is to get students out of college and train them. Only, we don't have the time or resources to train anyone. We don't have anyone that can be a mentor to younger workers either, and the required skill set to stay afloat is rather high. (We really need people with at least 5 yrs of experience plus college at the bottom end, and 10-15 years plus college at the upper end).
So, I wouldn't so much say that there is a shelf life as there is a perceived benefit by management to younger works - from taxing them with grueling overtime, to paying them less since they don't have as much experience.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
Hey man, I wrote a TON of enterprise-ready perl code in the late 90s and early 2000s that is still going strong.
Perl is like English - flexible enough to write both Shakespere and "50 Shades of Grey". And it is still my go-to language for fixing stuff quickly.
Yes, there's a lot of really crappy perl out there - but crap is not langauge-dependent.
DG
Want to learn about race cars? Read my Book
This attitude doesn't really surprise me at all. In fact, I'd say it's a direct consequence of a society that worships youth.
I have a collection of good quotes about software development. Here is one of my favorites:
"It's a curious thing about our industry: not only do we not learn from our mistakes, we also don't learn from our successes." -- Keith Braithwaite
You are correct - .NET is a platform, the best comparison is the JVM. They then took the concept of compiling to linkable code (from the FORTAN/C/C++ compilers) and created a spec for creating IL code from many languages. Nothing new there. The problem they ran into was that they dealt with both managed and unmanaged code, which meant that even managed code was never guaranteed to be really managed, nor locked down securely. The JVM has a similar "hole" with JNI, but that "hole" can be locked out. I'm not sure that can be done with .NET, and honestly, I don't care.
The cesspool just got a check and balance.
Smalltalk is pretty cool, I certainly like what it has to offer. Not sure why it didn't take off as I was never a proponent. Perhaps that was it's core issue - too few proponents?
C# is a cluster of a language, it's C, but not quite, it's Java, but not quite, it's managed, but not completely.... Fair warning, I wrote system admin software when 2008R2 came out and C# was listed as the intended language. Well, truth be told, more than half the codebase is straight C/Win32 code, because C# no longer supports 90% of the calls that were needed, or only supports them half-assed. It may be that the language itself is fine for business programming, but for anything system based it blows. This would be at a time before the .NET 4.0 docs were updated, and a whole slew of samples on MS's MSDN site flat out did not work in 2008R2 due to changes in the framework. And therein lies probably my biggest .NET complaint - the documentation. Who'd ever think that you'd yearn for JavaDocs? The .NET documentation is abysmal, it would require tens of 1000s of man-hours just to approach the usability and correctness of the average open source project. That's the language side of it, the OS is a whole other ball of wax upon which eloquence would be wasted.
Oh, and I'm not a fan of C#'s class and method syntax. Having to explicitly allow the overriding of a method, for instance, means that I need access to anything I want to override. That one design decision makes the language almost useless in large projects where a component may need to override a random method somewhere to add (or decorate) some core functionality. Granted, now you can create a delegate, and do all sorts of other steps to achieve what a simple override would have done. If you say "You would never do this in a production setting" I'd have to disagree, since I'm doing this on a large scale project with a commercial product where I'm extending the capabilities of the product by extending and decorating various internal objects and injecting them back into the system where they are then used seamlessly by both my code and the product's code, as applicable. These types of things would not be possible in C# unless every method were labeled virtual. Of course the product would also have to follow proper OO design guidelines, but that's a different topic and not one C# affects by design.
The cesspool just got a check and balance.
In my area - Java is the best solution for a large number of problems. I also code in Javascript occasionally, and C/C++/C#/Obj-C, among others.
So no, I'm not a single language person, having dabbled in a large variety of languages over time, including in no specific order Assembly, Basic, Pascal, Fortran (various flavors), Perl, awk, LISP, Smalltalk, and Ada that I recall, not to mention various shell scripting frameworks. Having experience over time across this broad selection of languages and codebases gives you a different perspective that someone that's an expert in only one. It allows you to see patterns in problems that keep coming to the fore again and again. Scalability in scripting languages, such as Ruby and Perl, maintenance nightmares (Perl, PHP) large code bases (C and C++ still struggle here, but this also applies to Perl, Ruby, PHP, and a host of others) Concurrency - pretty much all of them, although some are easier than others to use.
Finally, while some languages are good for specific purposes, others are not good for anything, despite the best of intentions and even potentials.
The cesspool just got a check and balance.
You're trying too hard ;-)
Great Programmers are those that have honed their skills through decades of dedication to mastering their craft. They continually improve their knowledge fhey need for developing experiise with new technologies to use programming languages as tools to practice their craft. They learn to master new programming language tools to facilitate optimal solutions. Great Programmers are always learning to use the best tools to build the highest quality solutions. Great Programmers improve with age. They say "knowledge is power" but the wisdom to use it wisely is gained from experience over time.
Proof positive that old white men are lousy coders
http://arstechnica.com/information-technology/2012/11/inside-team-romneys-whale-of-an-it-meltdown