17 ms·
Programmers: Before you turn 40, get a plan B
- tptacek 17y agoThis logic is so broken. Languages and dev platforms may change every 10 years. C++ may get stale. But image processing, or compression, or security, or low-latency high-throughput congestion-aware network protocols, or what-have-you don't. Just don't pick things to specialize in that are guaranteed to date themselves. People who did program transformation masters theses in the mid-90's are just now coming into their own in the industry.
- deleted 17y ago[deleted]
- tptacek 17y agoNone of what I wrote above exempts you from keeping up with the superficial trends of the industry. If things shift from J2EE to Python on the DLR with .NET libraries, you still need to keep up with that stuff. So yeah, if you're stuck with recruiters (and, don't be), be keyword compliant. But the big scary force in this article is, "over 10 years, your C++ experience makes you progressively more expensive and less attractive to a Ruby shop". That's true, if all your 10 years were about was C++. C++ is a distinctly dumb thing to build a career around.
- stcredzero 17y agoSo yeah, if you're stuck with recruiters (and, don't be), be keyword compliant. Most recruiters and big company HR departments are among the biggest destroyers of meaningful language there are. "Keyword compliance" is just another of the forces trying to dumb us down and turn us into automaton neurons in a big brain, exchanging and processing signals we don't have any inkling of.
- Retric 17y agoI got my first programming job in 2002, because I knew Pascal, If you where a consulting firm with 10k employees then you need to keep up with industry trends, but we are not. You can try and keep up with all the latest trends, but it pays better to focus on about 3 areas and know a lot about them.
- timr 17y ago"C++ is a distinctly dumb thing to build a career around." For that matter, so is Ruby, Rails, Python, and everything else that's popular today. In ten years, everyone will be using Blub, and badmouthing those dumb ol' guys who were slogging around in Ruby. It's the one thing in life I can guarantee.
- tptacek 17y agoI agree completely, in case it sounded like I was just ragging on C++. When I do that, I accompany it with all the many reasons why C++ deserves the treatment. =)
- brown9-2 17y agoSounds to me like you and the recruiter have totally different target audiences. Just my two cents, but I think you might be doing yourself a disservice by dumbing your resume down to their level... Unless the type of job you're looking for is just a cookie-cutter "latest pet framework" position.
- deleted 17y ago[deleted]
- azanar 17y agoI asked this elsewhere, but I'll ask it again here, and I am being completely sincere. Why pick things to specialize in at the expense of other things you elect not to? Specialization is not free; it decreases flexibility, and would seem that it would decrease cross-pollination of ideas from different areas of knowledge. It increases income, for sure, but also increases the attendant risk that people won't have need for an X specialist right at that moment, or at least no one you would want to work for. I'll grant that generalization is not free either. Someone who really needs an X specialist will pay top dollar, because the supply is likely pretty low. And people may not trust a generalist to go and implement some specialized X performing application. I think there are opportunities and attendant risks for both. I really don't think either one wins outright. But, I'll be happy to listen to words of wisdom you might have on this.
- timwiseman 17y agoReally, your post answers your question. There is value (and risk) in either specializing or generalizing, and there is room in the world (and the job market) for both. Personally, I am a database specialist. I do have skills in other areas (I do python coding as a hobby and I can write C# code that at least works), but my strong suit is definitely in databases, and even with databases I focus on MS SQL Server and Access with just a little experience in some others. I personally chose to do that because databases appealed to me and by specializing I could gain a depth of knowledge that very few generalists can. In terms of careers this limits my options somewhat, but it means that within my particular domain I can out compete most others. When the company needs a generalist that can do a lot of things, I am probably not their best choice, but when they need someone with a deep understanding of SQL Server and relational theory then I am a good candidate. Its all about trade offs really.
- KWD 17y agoBut in a work environment it's often not your choice to pick what you work on. I tended to find that those with the experience were set on legacy systems, and the new technology went to contractors, or were outsourced. And no matter what your 'application experience', any chance at employment elsewhere became based on your 'language/platform experience'.
- edw519 17y agoOP glosses over one critical truth: programming is not just about delivering code, it is about delivering value. In spite of what many of us technologists may think, customers and employers do not purchase "software", they purchase the benefits that software delivers. These benefits come in many forms, and it's just as likely that they come from solving general problems as well as solving technical ones. If someone at any age complains about their difficulties securing work, it's not necessarily because of their technical skill set, it's because they're not delivering the value their customer covets. They need to find out what their customer needs and deliver it, whether that means brushing up on their skill set or not. When the posers and BS'ers meet their makers, it's not necessarily a bad thing; I prefer to call it "industry Darwinism".
- deleted 17y ago[deleted]
- azanar 17y agoFor the sake of imagining someone working at an employer where they have no real control over the direction of the product, what value do they bring other than their technical skill set and analytical ability? Presumably the value most developers out there deliver is producing a coded up version of someone else's specification. Outside of having enough business acumen to know when to shut up before the management threatens your employment (if remaining employed is important enough to you), what else is there?
- edw519 17y ago"...they have no real control over the direction of the product..." Not my experience. I (and almost every other programmer I have ever met) have had some control over everything I've ever worked on. Perhaps this is a self fulfilling prophecy: if you don't think you have any control, then you don't. "Presumably the value most developers out there deliver is producing a coded up version of someone else's specification." Not my experience either. At least on this planet. If anyone else ever produced a specification rigorous enough for me to code from, I could die happy.
- tdavis 17y agoIf the geezer with 10 years of C++ experience showed a capacity to rapidly learn a new language / framework, I'd hire him every time. Those 10 years of C++ experience taught a lot in terms of general understanding of programming, best practices, how to "think" like a programmer, etc. (or at least one would hope; it varies, of course). That is far more important than a few years using an extremely high-level language. I think about it this way: I am supremely confident that I could know all I need to know about Ruby/Rails to do just about anything within a few months of working on an honest-to-god project. I'm equally confident I wouldn't know a fraction of C++ in that time. As our tools continue to become higher-level and more acutely focused, they become easier and easier to grok. The learning curve of a language with C++'s history vs. a new-shit-on-the-block web framework? Forget about it. You can write a blog in 10 minutes, remember? ;)
- deleted 17y ago[deleted]
- tptacek 17y agoYou'd hire her, I'm sure, but would you pay her 70% more than the kid out of college? Because in reality you probably won't get 70% more value out of the experienced candidate.
- patio11 17y agoBecause in reality you probably won't get 70% more value out of the experienced candidate. I was a fresh graduate once. I remember my productivity less as "60% of that of a twenty-year veteran" and more as "It is a miracle that they allowed me into the room for a purpose other than to empty wastebaskets, to say nothing of permitting my code in shipping products".
- patio11 17y agoFor that matter, I don't think I had 60% of my current productivity as recently as 2-3 years ago. I can still see my first commit at the day job in the repository. That code is an offense against God. It took me two months to get working the first time and then another two years of squashing periodic bug reports. (Unit tests? What is a unit test? Is that something you do with Subperversion?) My product's code, particularly the parts of it which were laid down earliest, is so bad in some points that I wouldn't pollute a repository with it if I were rewriting today. Oh, God, the print logic. I can quote one line out of that file by memory: // Abandon all hope ye who enter here.
- deleted 17y ago[deleted]
- frossie 17y agoI wonder how accurate those statistics are. For example a dozen years ago I was called a programmer, now I am called a project manager, but I still work in software in the same group for the same employer - about as good longevity as you can get. It may be that seniority leads to job relabeling that misrepresents the true situation. The real question is whether the people who "drop out" of the statistics still wanted to be "programmers" at 40.
- deleted 17y ago[deleted]
- tptacek 17y agoI can definitely see how this force works against generalist programmers. I can definitely see how the market limits the shelf life of a generalist programmer. So specialize in something where those years of experience accrue to your benefit. 10 years of image processing experience will make you an industry thought leader, as would 10 years of cryptography or 10 years of compiler backend design. We aren't running out of applications in these fields.
- timr 17y ago...but be sure to guess correctly! If you make a mistake and choose a technical specialty that isn't hot in a decade, then you're really screwed.
- azanar 17y agoI can definitely see how this force works against generalist programmers. Come on now, what basis do you have to say that someone who is a generalist is unable to provide value to people through the software they write? Do people need to be excessively specialized to make something people will pay money for? And for that matter, I could see the generalist programmer fairing better, because they don't lose the general theory things are based on while diving incredibly deeply into a narrow body of very specific knowledge. If the job/labor/consumer/whatever market presents some new area of need, they're in a better position to go learn and capitalize on it.
- dkarl 17y agoThis reasoning doesn't take into account the fact that a lot of people are very bad at programming and get tired of doing something they're very bad at. We have a fair number of bad programmers in their twenties, few in their thirties, and probably none over 35. It isn't because they get better. The only middle-aged programmers we have are absolutely solid.
- blogimus 17y ago"The only middle-aged programmers we have are absolutely solid" As a several year veteran in the government contractor space and from personal experience as a configuration manager, I strongly disagree this this. I've seen poor and mediocre programmers survive as programmers well toward retirement age. Part of the reason is that programming isn't the only skill that they provide. They provide domain knowledge on the systems which the gov (mil and civilian) rely. Then us poor sods have to clean up after them and clean up after them, and hold their hands on radical new ideas like object oriented programming. I could really rant on this topic if I wanted to. Another perspective: I mean, how many coders do you know that make it through a few years working who have NOT developed some significant domain knowledge?
- azanar 17y agoFor the lucid moments he has, which people would argue about the frequency of, Alex Papadimoulis discusses something similar to this in one of his site articles, providing what I think is decent insight on why they make it to retirement age: http://thedailywtf.com/articles/up-or-out-solving-the-it-turnover-crisis.aspx http://thedailywtf.com/articles/up-or-out-solving-the-it-tur... FWIW, I think there's enough people in this audience that wouldn't be happy holding on to a job they aren't particularly interested in keeping up to date on, simply because they have the domain knowledge to make them "safe". I could be wrong though.
- lallysingh 17y agoHuh, combine two elements in the article you linked, quoting: * The higher-up the position, the longer the curve. Changes tend to occur much more slowly at the top. For example, a basic “refactoring” of a department’s teams could take well over a year to implement. * The greater the skill, the shorter the curve. Ambition and skill go hand-in-hand, and ambitious individuals tend to want swift changes, and quickly lose motivation when these don’t happen. * The larger the company, the shorter the curve. Large teams are generally not receptive to ideas from the new guy, leaving a large part of contribution (i.e. past experience) wasted. Furthermore, promotions are often based on tenure, not skill. * The smaller the company, the longer the curve. Smaller companies, on the other hand, are more receptive to change, allowing one to contribute past experiences for a long while. * The less skill-demanding the company, the significantly longer the curve. Not all companies need top talent. For example, the company who needs only maintainers of an ancient COBOL application might be best fit with curves that are closer to the value convergence." Notice what happens when you're very skilled in a large company?
- netsp 17y agoI think there are some other questions that need to be asked here. I'm not sure exactly how to phrase this: "Of the software-centric industries, what percentage of employees are actually writing software? What percentage of software developers do not work in these industries." I don't know the answer to that, but for some reason I think it's well under 50%. It tends to (on HN anyway) get presented as the coders & management. But (IMO) that's too simplified to mean much. Programming makes sense as a starting point. It's a relatively straightforward, transferable & acquirable skill set. On the other hand, things like account management, or sales may require the kind of skills you need experience to gain & are hard to develop intentionally. Also, I think it's relatively easy to shift from coding to something else organically, but not the other way around. If you are a programmer that ends up making software for the agricultural industry , you may pick up all sorts of skills & knowledge that make you useful in other areas. If you enter that industry from another end (even if you are very close to the software), you are unlikely to become useful as a programmer. At least not without intending to. You wouldn't be surprised to hear this story: CS degree at 22, worked as a developer of farm management software for 5 years >> a (software/technology) consultant in agribusiness for 5 years >> a manager/executive/account manager/marketing person etc. for irrigation supplies manufacturer >> something else. You would be somewhat surprised to hear the reverse, someone with 10 years industry experience leveraging that to create software for that industry. It's not impossible, but it's worth remarking on. It probably means that either the person was a programming amateur that went pro or that they actively decided to retool themselves via a path of quite a lot of existence.
- mrbgty 17y agoDoes anyone still think it really matters which programming language a developer has experience in? It didn't take long at all after working full time as a developer to realize that software development is much more comprehensive than simply knowing a language. Shouldn't we all be able to create software in any language after a short ramp up period to learn the new language?
- mattmcknight 17y agoSome languages are really different, function, object oriented. While you can learn to write code in a new language fairly quickly, figuring out what the best practices are in a new language, what libraries are reliable, can take much longer. Maybe learning a new language the runs on the CLR/DLR or JVW isn't quite as different, but languages are ecosystems that take experience in order to make good decision.
- 10ren 17y agoThe industry turns on a dime, but is slow to retire proven technology. I have been slow to retire vim. In fact, I keep learning new things that make my work easier (like :arge filename --- the e means it's like :e, to edit a file, but it also adds it to the arglist, so you can move back and forth the list of files with :n and :p; and :tabnew, ^PgDn and ^PgUp give you tabs and switching between them). It seems inevitable that the day will come when the Eclipses and IDEAs of this world are more productive (some say it already has), and when it does, I won't be up to speed to make the switch. I don't think typing support is critical for understanding problems and solving them, but it helps.
- msluyter 17y agoSigh. Over 40 geezer checking in, but because I spent my 20s pursuing a music career, and then a number of years in QA, I've really only been doing pure software development for about 4 years. The problems I've been encountering these days mostly center on the physical demands of the job (typing and sitting) -- joint pain, back pain, tendinitis, etc... Yoga has been helpful, but I'm wondering how long I'll be able to cope.
- locopati 17y agoOn the physical demands (speaking as an 37yo coder), I've found these things to be very helpful... - yoga (which you've got covered) - a kneeling chair does wonders for posture - placing your monitor at the proper height (eye-level is 1/2-1/3 from the top of the screen otherwise you tend to crane your head forward and downward) - stepping away from the screens regularly (set a timer to remind you because it's easy to blow this one off) - eye exercises (especially this one...alternate focusing on the tip of your nose and focusing on a far distance) Good luck
- eru 17y ago> - stepping away from the screens regularly (set a timer to remind you because it's easy to blow this one off) Ubuntu includes an application to enforce breaks by locking your screen. I have tried it. Works.
- didip 17y agoFor Mac there's this: http://tech.inhelsinki.nl/antirsi/ http://tech.inhelsinki.nl/antirsi/
- yummyfajitas 17y agoI found a great solution to keyboard induced joint pain, basically a 100% solution to my problems (which were extensive). Buy one of these (way too expensive) keyboards: http://www.kinesis-ergo.com/images/freestyle-solo_690x375.jpg http://www.kinesis-ergo.com/images/freestyle-solo_690x375.jp... Then build one of these out of a cardboard box and duct tape: http://www.kinesis-ergo.com/images/solo-ascent-90_512x390.jpg http://www.kinesis-ergo.com/images/solo-ascent-90_512x390.jp...
- cglee 17y agoDisclaimer: I didn't read the full article. I can't stomach these types of "career strategy" articles anymore. This approach to life in general is very misguided (maybe less so if you just want a career to fulfill other goals), but for those who want to pursue a more idealistic life, just pursue your passions. Plan B is being an improv comedian. Plan B is writing the great American novel. Plan B is traveling the world as a war correspondent. I left corporate world precisely because I felt "planning my career", as I was encouraged to do, was an absolute false way to live (for me). I couldn't reconcile the absurdity of it with the severity of the consequences if I didn't do it. But the consequences are all socially constructed, and they go away as soon as you change your mentality. When I think of my heroes, I don't think of people who've hedged their bets here or there - they just did what they felt they had to.
- SapphireSun 17y agoThank you! I've felt exactly this way. It's rare that someone expresses it so well.
- e4m 17y agoAmen. The best decisions of my life were spur of the moment ones. You can't generalize. People are vastly different from one another. Two guys with the same degree from the same school will have varying levels of success in life. Personality and initiative are not taught in school... they can't be.
- akkartik 17y agoIn other words, if you want to be a programmer all your life, become an entrepreneur. http://friendfeed.com/akkartik/5ab60c50 http://friendfeed.com/akkartik/5ab60c50
- wglb 17y agoHiring by resume keyword is good only for recruiters, internal and external. Most jobs [citation required] are found through networking. My advice is to make that your plan B, if you feel you need one. Network all the time. As noted elsewhere in these comments, the ability to pick up a new language is not really the critical factor in experience. The value of experience includes 1) knowing what not to build, that is, avoiding building the wrong thing 2) knowing which approaches don't work, or avoiding building the thing wrong 3) being able to pick up the technical parts of a project thoroughly--the language, code, design in good time. This is helped by a mindset of taking the initiative for your own education, and never stop learning.
- lvecsey 17y agoWhat ever happened to the view that some programmers have a capable productivity that is entire orders of magnitude over others? I think most employers just look at keeping expenses to a minimum. This means ruling out the concept of pair programming, because why would you consolidate two into one (even temporarily) when you have a brick and mortar mentality to construction that points to keeping everyone busy? And most importantly, young employees need to pay their dues. That means lower salaries for a while, and toleration of extra abuse.
- dave_au 17y agoI have a problem with the idea that all the C++ veterans with 10+ years of experience are priced out of the market. If they're "too expensive" to hire doesn't that imply that their services are in demand?
- eugenejen 17y agoI just found the same phenomenon in science career. http://news.ycombinator.com/item?id=650898 http://news.ycombinator.com/item?id=650898
- khafra 17y agoThe similarity raises a question for me--what are the defining characteristics of a vocation without longevity? What do I do if I like this computer stuff, and hate doing management stuff, but just turned 30 and can't claim anything near "guru" status?
- bpyne 17y agoBy the time you turn 40, you may likely have a mortgage and family. Packing the family up and selling the house to pursue a more challenging development job in another area is just not feasible, especially when your spouse has her own career. The "Plan B" suggestions given by the author are good for people in this situation. A few more are teaching software development and writing about technology as a journalist. Most software in the field today (80% is the figure I read - trying to find the article again) takes user input from a screen, queries a database, and sends results back to the user. After developing enough systems like this, you realize only the technologies are changing, not the problems solved. Keeping up with the latest tools does not change the dull repetition of this reality so you can easily lose incentive to keep up. And, frankly, I'm not sure companies need to pay someone with 20 years experience to do such mundane development. Interviews for my last couple of employers centered more around growth in the organization, ie. understanding business processes, the business' industry, and organizational dynamics, not on technical knowledge. I think there comes a point when organizations begin evaluating a potential employee on potential to grow in the organization rather than grasp of functional vs. imperative paradigms, etc. If staying a developer is what you really want, then it's probably worth learning another problem domain. Perhaps mining biological data for patterns, etc. (Heck, despite advances in neuroscience we can't explain why a stroke causes memories to "move" to another set of cells in one patient but are lost in another patient. There are plenty of problems to be solved.) Anything that makes the field fresh again. (Of course, you may run into the same problem I stated in paragraph 1.)
- asciilifeform 17y ago> you may likely have a mortgage and family I would like to point out that these don't simply fall out of the sky. They are something you sign up for voluntarily (at least in the civilized world.)
- tybris 17y agoVoluntarily? More like instincts & hormones.
- 17y ago
- c00p3r 17y agoThere is one more fundamental reason. When you getting aged you have less time to stay tuned with all changes in your field. Of course, if you have a contract to maintain some old system, or playng a key role in some long project with solid finance - that is ok. But on the field motivated younger guy will easily outperform you, because you have many things to do as an adult. You simply cannot spend days and nights with laptop. So, there are two obvious directions how to reuse your experience - project management and work as a system architect. But these positions are rarely vacant, so, you probably should start your own project or a joint venture. There is no use to try to compete with younger generations on their field (coding). It is much better to reuse your own experience and use thier energy, naivety and enthusiasm.
- Arun2009 17y agoHas anyone considered the possibility that maybe the workhorse technologies in software development have begun to stabilize? C, C++, SQL, Unix etc. has been around for some time. Java and .Net aren't going to go away anytime soon. We may yet see some disruptive changes in Web development, but I doubt whether the basic Javascript/HTML/CSS scheme, or PHP/Python/Ruby set will become obsolete anytime soon. My plan is to ensure that I can always deliver valuable software and maybe even create some that I can own. A lot of my friends are doing their MBAs - I just don't think that route is for me.