Do you have to go into management to continue progressing upwards in pay and influence? I know this isn't the case at some companies (e.g. Google), but is it rare or common to progress as an individual contributor?
Is there a plateau in pay? Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?
Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?
Is becoming a specialist rather than a generalist the answer?
And lastly: if you're in your late 30s, 40s, 50s, what are you doing at your job? What are the older people in your workplace doing?
There's been a constant push towards management that I've always resisted. People I've known who have gone into management generally didn't really want to be programming - it was just the means to kick start their careers. The same is true for any STEM field that isn't academic. If you want to go into management, do it, but if you don't and you're being pushed into it, talk to your boss. Any decent boss wants to keep good developers and will be happy to accomodate your desire to keep coding - they probably think they're doing you a favor by pushing you toward management.
I don't recommend becoming a specialist in any programming paradigm because you don't know what is coming next. Be a generalist, but keep learning everything you can. So far I've coded professionally in COBOL, Basic, Fortran, C, Ada, C++, APL, Java, Python, PERL, C#, Clojure and various assembly languages each one of which would have been tempting to become a specialist in. Somebody else pointed out that relearning the same thing over and over in new contexts gets old and that can be true, but I don't see how it can be avoided as long as there doesn't exist the "one true language". That said, I've got a neighbor about my age who still makes a great living as a COBOL programmer on legacy systems.
Now for the important part if you want to keep programming and you aren't an academic. If you want to make a living being a programmer, you can count on a decent living, but if you want to do well and have reasonable job security you've got to learn about and become an expert in something else - ideally something you're actually coding. Maybe it's banking, or process control, or contact management - it doesn't matter as long as it's something. As a developer, you are coding stuff that's important to somebody or they wouldn't be paying you to do it. Learn what you're coding beyond the level that you need just to get your work done. You almost for certain have access to resources since you need them to do your job, and if you don't figure out how to get them. Never stop learning.
I have noticed though that experience become a liability. If you wrote JavaScript for IE 6, a lot of the optimizations and things one did to make sure things worked in IE 6 are no longer necessary. One should be ready to let go of things as soon as they aren't necessary anymore. Always keep learning and know why you do the things you do with code.
Sort of. All that experience adds up.
I think one of the key things is to have a passion for learning. I've always been bored doing the same thing over and over. Learning new technologies, design patterns, architectures, skills, etc is what interest me. That also, coincidentally, is what keeps me up to date and productive.
I took a 10 year excursion into being a guru, but I'm technical now and intend to stay that way. I love programming. I've never been a manager. I suppose that capped my pay, but I'd rather be satisfied with my work. I haven't noticed a pay drop with age, but my experience may not be typical.
The most important factor for me has been to keep coding. It gets harder. I have noticed a definite drop in my long-term memory, concentration, and general cognition, but I compensate by being better at picking important problems, being able to pattern match a large library of experiences, and not panicking. As Miracle Max said, I've seen worse.
I started learning Haskell a couple of years ago, and that has really helped expand my programming style. I still don't like it, but it's good for me. I'm also learning React and the reactive style of coding UIs. That's also a brain stretcher.
Love this. The whole "small team in a big company" thing is great until you realize there's nobody to coach you.
I'm also transitioning to using it to integrate new knowledge. Clip to Evernote. Create flash-cards in Anki, and practice on my commute.
Some people don't learn anything new and become obsolete, or become management, or even have to start over away from programming. It's not easy to stay out front but you are the only one who can do it.
Learning for learning's sake is actually pointless and can do more harm than good if done tastelessly. The best kind of learning happens either when something is cool and you want more just because you get a boner just thinking about it or when facing a real-world problem that you'd like to solve using a different approach.
For an example of pointless learning - learning a language that's similar in concept and popularity to another one that you already know is pointless (e.g. Ruby vs Python), unless you learn it because you've got specific real world needs. For learning new languages, I actually apply the following rule - if learning it doesn't hurt, then I'm waisting time.
Another example of pointless learning - anything proprietary, as proprietary things don't survive as well as open-source stuff or stuff based on standards. Actually, taste is required to pick winners - SOAP will be irrelevant in 30 years from now and anybody with taste could have seen it coming since its inception (speaking of which, Google's Protobuf won't survive either, because simple text-based protocols always win).
I can't disagree more.
Learning latin, ancient greek, french,italian, portuguese and spanish, C C++ JAVA Javascript, ruby python coffescript and groovy, lisp clojure...
Studying the patterns help being better user of each language. Consider it a "classic" coding education. Is totally worth the time. Especially because after a while, you see the ideas, the broader picture, not the words or the code.
Being ignorant is not so much a shame, as being unwilling to learn. Benjamin Franklin
I expect Protobuf, Thrift (fbthrift) and Avro to be around for quite some time. Once you know what they're good for, everyone likes binary formats that can be easily shared across multiple languages via code gen. You can turn every binary format into text-based for debugging purposes using standard commands. Heck, even Apple has binary plists. It's natural that a format eventually gains (or is based on) binary alongside text -- for those times when binary is simply faster. Now, if it's just transmission speed, you can convert text to binary using gzip.
Frankly, the key to success for protobuf or thrift as independent projects is how much adoption you see outside of the companies.
Oh and I'd also point to the "death of rest" in http://techblog.netflix.com/2012/07/embracing-differences-in... -- just as websites provide front-ends to a myriad of backend services, so too can API servers provide a consistent, simple front-end for devices. Not sure what to call it, since as a pattern, it doesn't require a specific protocol, and it could be considered somewhat HATEOAS, except state is easily maintained client-side these days....
1. "There's something to be told about learning stuff that matters. Data-structures,"
2. "Protobuf won't survive either, because simple text-based protocols always win"
If the simple inefficient way always wins, we don't need data structures.
As time goes by, people should be publishing interesting blog posts, getting involved in interesting projects, amassing followers in social media and generally making a name for themselves.
Ideally, you want to get to the point where people ask you to work for them, rather than the other way around. Learning and showing that learning applied is a very effective route.
It's OK to be late to a party, as long as you're fashionably late.
I'd say JS is by far the hottest language around and I'm a ruby programmer not JS programmer (although, I'm starting next month with JS).
Then depends I guess:
* if you're a web dev, JS/RoR/SASS/HTML5 with an eye on Rust and Go. Python has interesting frameworks also for web-dev.
* If you're into mobile Java/C++/Obj-C of course (old news) and HTML5
* If you're into low level, embedded stuff it's always C.
* Scalability? Erlang... and so on..
It's really easy to follow the trends around. The hard part is to understand new trends well enough in order to be able to understand if they are a better fit and use them in production. (e.g. Go is faster than RoR, but most people will stick to a framework that's heavily tested, well supported, with an active community, huge set of external plugins and tutorials .. for production. This might change in 4 years... Or maybe not :-)
I've never done any 'IT work', and I've focused almost entirely on product development, over my 16 year career.
As a salary, I think I have plateaued at 160K, which is good enough for me. With 'adjustments for inflation', that's usually an extra $5K increase per year. There are people who make more than me, I know. For example, a guy I work with probably makes $200K (and he doesn't have a college degree).
There are always 'business problems' to solve with software, and there is always software to maintain. A lot of software never 'ends' - it just keeps going on, or dies dramatically, replaced by something similar. There's never been a better time to be a developer.
At a certain point, you'll have to become something like a 'manager'. For me, this is more of a 'tech lead' / 'architect' sort of role. I'm responsible for the quality, functionality, road-maps, integration, etc. I'm responsible for understanding the business domain, in and out. I'm responsible for managing the parts of the system, and ensuring that they all work together. I have to lead meetings, give presentations, work with the field and customers.
However, all of that is a small part, for me. I still code a good 85% of the time.
I get somewhere around 10-15 recruiters contacting me per week. So, I believe the job market is hot. But, I am really comfortable where I am. I work from home, and I run an entirely distributed team. We meet in person, when we think we need to meet. Things go very smoothly, because we're all experienced devs, and we fit together culturally.
I'm far from an 'amazing dev'. I don't have a slick github account. I don't run any important open source projects. I just know how to do a lot of different things, I am very efficient, and I have a great track record for success. I know on any given week, hundreds of thousands of people use software that I had created, and that makes me feel good.
I took the first interesting offer that I got, when I graduated from college. It was $43k. (You have to start somewhere!)
But, as you get more experienced you must also learn to understand the value that you provide to the companies that you work for. Too many developers get taken advantage of. Software currently rules the world; remember that. Companies make trillions of dollars (in real revenue or efficiency) on the things you create. You deserve a good pay, if your products are valuable.
http://money.usnews.com/careers/best-jobs/software-developer...
On the other hand, it's really obvious when someone has 10 years of experience staying invisible and just hanging on. Those are the ones that get ignored in my experience, and for good reason.
I don't like risk, but that's just me. I know I could hire more inexperienced (e.g. cheaper) staff. But, there's just a lot more risk that goes with that. I'd rather pay someone good, a lot, and know I can sleep at night.
Can you elaborate on this?
It's not common among ambitious people and in geographic regions with a robust job market, but some people resign themselves to career mediocrity.
Similarly, if someone looks like an opportunistic job-hopper who never stays put for more than nine months, I also get hesitant.
The most common seems to be to try and generalize, because relearning most of your job skills every few years starts to get annoying the 20th time you've had to do it. It's different when you are younger and everything is new, you just chalk up a major tooling change as just something else to learn. But when the next hot platform or architecture or whatever comes out you get tired of running in exactly the same place. You also start to get a long view on things, where all these new things coming out don't really seem to offer any advantage to you that keeps development fun. It's just more and more layers of abstraction and you start to see the nth demo of WebGL maxing out a 4 core modern GPU system doing exactly what you did 20 years ago with a single 32-bit core, 1/5th the transistor count and all in software. So how do you generalize? One word: management. You start to take over running things at a meta-level. You don't program, you manage people who program. You don't program, you design architectures that need to be programmed. You don't program, you manage standards bodies that people will be programming against. It's not a higher level, more abstract, language you go for, it's a higher level, more abstract job function. The pay is usually better and it's a natural career progression most organizations are built around. There's lots of different "meta" paths you can take. And because most of the skills in them will be new to you in your late 30s, 40s or 50s, they're at least interesting to learn.
The problem for some people is that these kinds of more generalized roles put you in charge of systems that do not have the sort of clear-cut deterministic behavior you remember from your programming days. Some folks like this, and look at it as a new challenge. Some hate it and wish for their programming days again. YMMV
So the next most common path is to just become more and more senior as a developer, keeping down in the weeds and using decades of experience to cut through trendy BS to build solid performant stuff. These folks sometimes take on "thought leader" positions, act as architects or whatnot. Quite often though industry biases will engage and they'll be put on duty keeping some legacy system alive because their deep knowledge of the system lets the company put 1 guy maintaining half a million lines of code in perpetuity vs. 10 young guys maintaining the same, who all wanting to leave after a few years to build more skills. The phenomenon is best seen as the ancient grey beard COBOL mainframe guys. Some people love this work, they can stay useful and "in the game", but some hate it because it comes with the cachet of being stale and not keeping up with the times. YMMV
Probably the third most common path is to simply branch out and start your own gig. A consultancy or something where you get to work on different things in different places on short engagements. The money is good while it's coming in and you get to make your own hours. At some point you decide to keep doing this till retirement (if you can keep finding work) or to grow your business, in which case you generally end up doing the meta-management thing. There are thousands of these little one-man development shops like this and I wouldn't be at all surprised if this is more common than third on my list.
Probably the next most common path is to just get out of development entirely. The kinds of logic, planning and reasoning skills, plus the attention to detail required to be even a half-assed developer, can be extremely valuable in other fields. Lots of developers go into Systems security, Business Analysis, Hardware, etc. With a little schooling you can get into various Finance, Scientific or Engineering disciplines without too much fuss. The money isn't always better in these other fields, but sometimes the job satisfaction is. Again YMMV.
I'm 35 and just changed jobs from the first path described here to the second. I had been in the software architecture group at a typical bigcorp. It was actually a pretty good career progression as far as bigcorps go, but just wasn't a cultural fit for me. I had no interest in supervising and mentoring and directing other programmers, I'd always rather just do it myself. I'm a coder at heart and don't think bigger than that. I hated it and wished for my programming days again, just as you said.
My new job is with a small company, you could call it an established startup but it's not really looking to grow and exit, it serves as a lifestyle business for its founders. This has me on your second path, using experience to cut through the trendy BS to just get stuff done. It's mostly legacy .NET maintenance, but I actually enjoy carving out and solving and tweaking these sorts of problems more so than building new stuff. I'm probably going to become stale and outdated in another 5-10 years, a .NET version of the COBOL dinosaurs, but I'm fine with that and don't have any drive to advance more. This can work because I'm also on track saving aggressively enough to just retire from full-time work by then.
Your third path of a one-man development shop has attracted me for years too, except for the fact that it tends to really be sales in disguise with the programming coming secondary. I'd do this in a heartbeat if the work found me, but don't have any desire to go pound the pavement to find clients and deal with all the usual self-employment headaches like getting paid.
Some folks will try to be "architects" (used in quotes because there are lots of definitions about what that means), and some will go into management.
As a coder, your pay will definitely plateau. One of the interesting things about the current situation for 'rock star' coders is that their pay will plateau faster, this will be a problem for them later. If you can get a number of people on the same page to build something bigger than what a single person can build (not so much management as technical leadership) then you plateau will be a bit higher (roughly 20% if you believe salary surveys).
Keeping it fun is key though.
Mine seems to keep climbing. I'm hearing reports of >$300k, and have received an offer in that range myself (counting signing bonuses and stock grants). Granted my pay might plateau there, but honestly that's enough money to keep me happy without having to see it go up every year.
I'm a total generalist, but I also have a few areas where I would qualify as a specialist; that offer I'm sure was because of the specific skills I've built up. I've also been programming professionally since 1989, and I try to keep learning, which can't hurt.
Agree that keeping it fun is key. :)
There are obviously vast worlds of software engineering outside of web applications. Embedded/real-time systems, programming languages & tools, robotics, graphics, bioinformatics/computational biology, machine learning, machine vision, the list goes on. Why not "pivot" your career into a completely new subfield? The downsides: you will likely need to take a year off for self study and to build up a body of work to land you a job, and you will have to take a pay cut. But you will be able to build stuff, will remain excited on the edge of your field, and might be able to have a fresh slate and replicate those feelings you had when you started off in the first place.
C/C++, ML, data analysis with Python/R or learn more domain specific knowledge such as Bioinformatics or graphics or quant finance? Much appreciated, thanks.
I am doing this myself. It's a risk but I think the rewards are worth it!
I'm at an inflection point these days on whether I want to push forward on the management path or go for the third path, as you mentioned above.
The management path seems to be the path of least resistance, but getting into the politics of management is unappealing. Also the level of competition for management jobs is at another level. As an engineer, I'm used to having jobs thrown at me left and right, but it seems like engineering managers compete for jobs quite a bit more. It feels risky to go from something with high demand to something with clearly much lower demand.
The third path is very appealing from a satisfaction standpoint, but clearly a lot riskier, especially for someone US-based who needs better healthcare as they get older. Also the feast or famine nature of consulting can be a little brutal. I think a combination of consulting plus products is the best bet, but it can take a while to get that going.
FWIW, the few folks I know who tried to stay on purely technical paths ended up regretting it many years later. While the ones who went into management merely lamented the loss of their hard earned technical skills.
Anecdotal, and I know there are lots of people on HN with counter anecdotes, but think forward 10 or 20 years and see if the things you don't like about your role are things you can continue to tolerate or not. The grass isn't greener on the other side, but sometimes new problems are easier to handle than the same old problems over and over again.
Also, don't make the mistake of thinking going into management will give you more agency as an employee. From a non-management position it feels like those "higher" than you get to call the shots, but quite often a good manager is creating space for you to get to run your day-to-day and is boxed around almost daily by those higher than they are.
You're contradicting yourself when you say on one hand you're used to having jobs thrown at you and then saying it's clearly a lot riskier. From my point of view there's way too many management/analyst types trying to get those management positions. The politics is no joke. You have to be really good at it and in some ways you have to have no soul.. just kidding! ok maybe a little ;-)
anyway, going solo and starting your own thing, if done right, is more rewarding on all levels. less politics, more tech stuff you love, better pay (that totally outweighs the cost of having to pay for your own insurance), better hours (however you define better hours for yourself), not having to do any "company contribution" for someone else's company, the clients treat you better because they know you're the expert, etc etc.
Granted, it took me almost 15 years working at bigger consulting firms before I wised up and went independent. And maybe I could have done it sooner, who knows. But I highly recommend it since you don't like "the politics of management". The trick is to find one good solid gig. Just one. And there are enough of those going around.
From a non-management type, I have loved working for managers who can play the politics part, in a level headed way that keeps awareness of and effects from politics out of my individual contributor's life, and at the same time understands what I do and what can reasonably be done.
I've been working for more than 20 years (still an individual contributor), and I can think of two managers in my history that fit that description. If you think you can do it, you'll improve the lives of a lot of developers.
Our jobs aren't like that at all. We may not be able to handle 48-hr caffeine-fueled marathons anymore, but our experience tells us that those are a bad idea anyway, and we wouldn't do them even if we could. That experience is valuable, giving us insight and true productivity, and lets face it the job is sitting at a desk... we can do that well past retirement age, since we'll be doing a lot of sitting around anyway.
The difference between a programmer and an athlete is that the programmer is better at math and can save and invest and not piss away money, and enjoy an early retirement without lifelong body damage.
10 young guys? Sheesh, back in my day it was just two of us, and that's how you started. Learned a lot about systems, architecture and most of all, how NOT to code. It really is a crime youts of today don't have to slog through legacy for a year or two before being given the keys to the sexy projects.
I wonder what all that google legacy code looks like, and how often the n00b says "I can't understand all this, I'm going to rewrite it all from scratch."
"Sometimes I have to leave a company when I get promoted to the stage when I can’t code anymore"
(http://www.fastcolabs.com/3007250/open-company/boxs-65-year-...)
Not so much a career choice, but simply finding the next relevant challenge. Still in software development, but I can see myself shifting out of software altogether.
It still surprises me that from starting out as a shy, introverted computer geek one of my primary responsibilities is now people management. But like programming used the be, the fact that it's hard is an important part of the challenge.
Another friend started out in programming and IT, but he migrated to a sales engineer job where he works for [big infrastructure vendor] to design solutions for their clients.
It's the ultimate generalization: being able to run a complete business.
> The problem for some people is that these kinds of more generalized roles put you in charge of systems that do not have the sort of clear-cut deterministic behavior you remember from your programming days.
Can you expand a bit on this? What do you mean by "clear-cut deterministic behaviour" ?
This is really the gem for those who don't want to take the MGMT route. But the tough thing is advancing in your pay-scale, etc., and really showing that your skills are really that much better than the young people who cost less.
You can get this in a straight-up programming job, too, if you take on in-house development for a big company, eg a bank. I am doing that right now, and while there's lots to complain about banks, the immediate contact with the users is a great change from making shrink wrap software.
2. Architect or senior specialist, this is probably the most nature and common development as programmers age. However, most of them often become technological dinosaurs when distance self from hands on works and not able to keep up for too long. Analysis turns into paralysis, abstraction turns into distraction. Their value is reflected mostly in legacy system of those business functions slow to evolve. But every ten years or so a major platform revolution usually throw them off the bus.
3. Get into other profession where their long time disciplined training as a programmer can benefit. As stay out of the pressure of fast pace technology evolution, this career could be a winning path if you're never a passionate programmer and ok to settle for a 9 to 5 job waiting the day to retire. But the problem is, most programmers are never the type of person who can settle with these kinds of work to begin with. Admittedly many are, who have programming as a 9 to 5 job, would find this path with ease if money is not a priority.
4. Entrepreneur at an older age. The upside of this path is obvious. Years of experiences go both technology and human will greatly benefit your business operation and market. True, this is another form of management, but different from corporate management, the personal achievement, responsibility, idea, build, essentially a manifestation of programming at its grind level. If programming is toy play, running a small business is the real deal. If you're ever good at programming, it shouldn't very different to create once own business.
You can still code, but you'll usually need a "Director" or "VP" title (increasingly, you see Directors and VPs without reports, perhaps as organizations realize they actually need experienced people) after 40, because you're going to know (one hopes) how to do things right and be infuriated if you don't have the organizational credibility to do things properly.
The technical skills that non-techs evaluate us on are the constantly changing, coarse familiarities, and the PYTs they listen to are going to be similarly biased in favor of hot new flavors. This isn't a meritocracy because, in truth, it's only easy for a good person to prove he's good through technical work if he either (a) controls the tech stack, or (b) selects a company with a tech stack he's already well-matched with. The problem with (b) is that companies are always changing their tech stack (hence, the zillion pointless flamewars). Otherwise you have to get some other, more legible, credibility (the "X") and transfer it over to technical decisions.
I'm aging in reverse. I was a cripple in my early-mid 20s (cyclothymia) and at 30, I'm probably healthier and more energetic than average for my age. I still have cyclo, but it's managed and I lose less time/health/energy to it than the average "bro" loses to alcoholism/hangovers. Because of the cyclo, I can achieve an incredible amount in a short-term job (say, 2 months) but the superficial reliability that most organizations care about is not my strong suit. So I've seen a lot. No one would call me "old" but I definitely know what it feels like to be "overexperienced". It sucks.
I think you're getting confused by the other phenomenon involving roles, which is that once you accept the management track, you start losing dev mojo; cf. the CTO who loses their commit bit.
Something to keep in mind is that this industry is aging and maturing alongside us. You can't use historical precedent for understanding unprecedented events.
My personal hope is that the software developer monoculture (young dudes with ancestors in Europe or some parts of Asia) will mature into the kind of diverse profession where people aren't any more surprised by a female coder than they would be by a female orthodontist.
+1 for this nice phrase :P and, out of interest: what keyboard might that be?
I just bought a Microsoft Natural Keyboard 4000 which is nearly as good, even though the keys feel more "mushy" than I would like.
I think anyone who is a seat-filler has a problem. But if one codes for fun, if one sees new technology and just DLs a tutorial and starts using it, if one is always thinking about how ones code can be tighter, such that every time one looks at ones code one rewrites it, one will be OK.
No need to stop coding to make money. Top coders do fine, and then one gets to code.
I am consulting for a company where I gave up a top spot so I would have more time to work on my startup: http://tiltontec.com/
I am sixty-two, have been coding head down on hard problems since 1978, on the Apple II.
Good news, grasshopper: it never gets old.
Now if you'll excuse me, it's time for my nap.
Either way, I'm semi-retired. I do client work (iOS and experiential retailing installs) for about half the year, then I do my own projects for the other half.
I live in Vietnam but commute to NYC for certain client projects, so maybe 25% of the year there, the rest in Vietnam.
Prior to the move, I did 20 years focused mostly on new media/creative tech so my skill range crosses through design to code. This is pretty rare in NYC, so it's never been a struggle finding work, age has never come into the equation.
It's probably an arrogant assertion, but if you are exceptional at what you do, none of this nonsense about age will matter at all, so one should always strive to be exceptional in their careers. For me, that's involved 18 hour days, 7 days a week of working, learning, exploring, making mistakes and maintaining a healthy curiosity about how things work. Every piece of software I see, or motion graphic I see, I am constantly deconstructing in my head.
But I've worked with a lot of dudes that treat this as their jobs, and those guys are on a trajectory I don't understand, so maybe I'm not qualified to comment. I suspect if you're mid-level or worst, or that is the most you've aspired to contrary to talent or skills, you'll be set to pasture at some point.
The great thing about this move to Vietnam is that a single day at my day rate pretty much pays for an entire month of living here. So those months I'm not doing client work, that's a shit ton of free time to throw myself into technical and creative challenges that you wouldn't normally encounter working on projects for others.
As an example, I've always been fascinated with the tablet as a publishing platform but have always felt the current toolset a (adobe dps and magplus specifically) are glorified PDF generators that completely ignore the unique user experience properties of the device. So I spent a good six months in Vietnam working on the problem. And now I have publishing platform that eclipses Adobe DPS on a lot of different levels. I also publish a digital only fashion magazine here in Saigon (eating your own dog food). So life is kind of random.
I work as an independent contractor, and my pay has gone up
I still code every day, but my understanding of what is important has changed a lot.
I care much more about the solution as a whole than the technology. While the technology is important, most clients care more about correct results. From the business side, nobody has ever tell me "Thank God you used TDD over Angular with a no Sql database". But on the other side, I have seen software that crashes every other time they run, but big companies still willing to pay in the 6 figures to use, because when it runs, it solves a very complex problem for them. So understanding the whole solution, and why is valuable, has become much more important. And that is what has kept me as a valuable individual contributor.
I went into management for a while, found a few cultural differences, like that Indian woman are way smarter than most of team members. Also with younger people, some of them need to be professionalized before they can be fully useful, once I got one that sustained that being late to work because he was drunk in a party the previous night was a reasonable excuse because he was the king of JS in his shop. Didn't last 6 months.
Nobody can guarantee you any pay scale, you make your own profession.
Family becomes a big factor, so job jumping is not something to be proud of, even as a young professional, it can be easily read as lack of maturity, and it plays against you in your resume.
Specialist vs. Generalist. There is room for both, but just be careful that you don't become specialist in a passing fad. Is better to accumulate specializations, so you become a well rounded generalist
Today I am coding in 3 different (but business process related) projects. I am part of the "think tank" that design the mathematical models behind the different products; and also work with the rest of the senior team on how to bring the energy of the younger people to a more self disciplined and productive place. We are finding that too many people think that "loud and opinionated" makes them noticeable, but the truth is that we cannot put high value products in the hands of the frat house king (to put it in stereotype terms: the bullied geek in the school probably has many more chances than the high school quarter back)
> Do you have to go into management to continue progressing upwards in pay and influence?
No, like many corporations we have a dual path system although one level up from my senior engineering position I would have to do some visionary stuff, which I'm not good at so I'll probably stay at this level. Pay is not directly linked to position here.
> Is there a plateau in pay? Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?
Doesn't seem to be the case here. I could imagine switching jobs gets trickier in your 50s because hiring someone new at high pay appears riskier.
> Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?
Yes, major issue with two kids in middle school and good benefits at current job. Planning on being more flexible in a few years...
> Is becoming a specialist rather than a generalist the answer?
I don't think so. As an engineer I think it's always good to have a balance between a specialty and a broad base. I've benefitted more from learning new skills but having a specialty is often good to get a start somewhere.
> And lastly: if you're in your late 30s, 40s, 50s, what are you doing at your job? What are the older people in your workplace doing?
Fun stuff: writing code, building SW/FW/EE test systems, building production lines, running product tests, doing failure analysis.
Boring stuff: working with outsource vendors and CMs, working through regulatory issues.
Surprisingly, there's almost no corporate training and bureaucracy left. I think first all that stuff was outsourced and then we decided that our vendors were too expensive and just got rid of everything. Win!
Is there a plateau in pay? Sure, but programmers make okay money, so I cannot complain. If I want to work more I can sometimes do consulting work or teach a bit, but generally life is getting too busy for too much of either. I stay where I am because I love running up the steps every day to work, but really I've been happy in almost every job I have ever had.
My career has basically taught me that being a generalist in an age of hyper-specialization makes me very useful. Being able to code in many different languages and environments helps, but so does having domain knowledge in related fields (economics and statistics in my case). Softer skills like writing and public speaking pay for themselves 1,000 times over, as does having a sense of humor and a willingness to share credit and help out when the chips are down.
The older people in my place are doing pretty much the same things that I am doing, but a few a starting to wind down and think about where they want to spend the final days of their careers.
It seems way too early to start looking at my career in retrospect, but really I cannot imagine anything more interesting or worthwhile than the past 30 years have been in programming. It has been an amazing ride with more cool stuff then I ever imagined back when I was typing programs out of Creative Computing on my Apple ][+.
The money is better than ever, and I'm getting more and more interesting things to do.
One factor over the last 10 years or so (I've been in the game for 20 years now (yikes!)) has been having the experience to know which technologies to even bother messing with.
Far more important than the above, is to mentor other people, help people, and befriend everyone you can. It pays off in spades down the road when some C*O calls you up to lend a hand because he remembers when you helped him out a thousand years ago, trusts your judgement and skills.
Likewise, payback can be a bitch, so making "enemies" is not a great idea. Life is too short.
Amen. This is, perhaps, the best productivity enhancement experience gives you.
I've not seen a hard plateau in pay but there's definitely a certain amount of soft leveling off in terms of percentages -- early in your career it is way easier to find a new job with a 50% pay increase, once you get into 6 figures that obviously becomes increasingly harder to repeat.
The only pay drop I've had was voluntary, to work at a startup I wanted to work at more than I wanted to maintain the pay I was making previously.
I think you can remain a generalist if you "specialize in being a generalist". My current job is doing Android client software development, but at home I code mostly in Go (servers, camera control systems, embedded Linux GUIs, etc) and I am still constantly learning new tech, new languages, etc, and still enjoy playing with technology in general seemingly much more so than even my late-20s/early-30s coworkers. Just built a RepRap 3d printer at home, have been learning about camera lens design and creating some custom lenses for my cameras (relatively basic Double Gauss designs with 4-6 elements at this point), etc.
I figured it was a sector in constant skills cycle and decided to get out of the rat race.
By my late 20s I was a business analyst - having the tech/dev background really helped.
Now, I work in security. the tech/dev/business background is invaluable.
In short, generalism seems to be the path (in terms of skillset), whereas you can specialise in terms of career direction).
I just turned 36. I had been a manager for seven years across a few companies, managing teams ranging in size from 4 engineers to 35 (five teams underneath me). I reached a point in my last job where I was spending 80% of my week in meetings and the other 20% trying to stay on top of what my team was doing technically. I found myself becoming less and less useful in the technical discussions as the team was building up skills in new technologies that I didn't have time to learn.
I felt like I was losing my ability to be an engineer and therefore my ability to be a good engineering manager. I was not enjoying any part of my job at all. The rare opportunities to write code and learn new things were my only time where I felt good about the work I was doing.
So, I quit and got a different position as a senior developer. I told my new employer up front that I had been a manager for a long time and I wanted to be more technical again and focus my career on technical expertise. I my new position I am able to lead and set technical direction without being a "manager" in the traditional sense, people don't report to me but I help define what we're building and how we're building it. I am able to write code, learn, teach and explore ideas without feeling bogged down by management. My goal is to grow technically as much as I can and avoid becoming a manager that spends all my time in meetings again.
However, I am not sure how long this can last. At some point career growth seems to always steer towards doing less hands on and more managing of others, so perhaps i'll just need to find a way to enjoy that.
If you want more money, sooner or later you'll have to "take more responsibility" and "lead the team". While being on the management level just above the programmers, you'll still have some contact with the technical part, but when you progress further, you'll loose it and become the pure bean counter and look at other programmers as resources.
And you will hate that, but you still have this mortgage you have to pay, and to save for your kids colledge, maybe go few times a year on vacation, or you need to do that latest gadget as an impulse buy.
And with the time, you will hate your job, as much as anyone else at that position. You will start to question whether it was the right choice to become software engineer. But it was. You had some ten years when you liked your job and found it both well paid and satisfying, which is much more average person, even with a degree, can realistically hope to have.
/rant
Being in a similar situation, I had to vent a bit. I made my choice to switch to the dark side and go the management route. I know I'll hate it, but that's the reality where I live. I know I could get a few more years as a software engineer in Silicon Valley, but USA is among the last places on earth where I would like to raise my family. So, management, here I come.
The WhatsApp guys are experienced engineers who were rejected from FB and Twitter. Prepare yourself for ageism. Your path is to create a $19B company.
A marquee erector
A chemical toilette attendant
A barman
A bouncer (prefer the term doorman)
A commando
A telecoms engineer
A programmer of various different languages
Now I'm the CTO of a start up and we don't have any older people (apart from the founders by a few months). About the only thing I can think of to say is to keep learning forever, as many different things as you can think of. With a background in development and that kind of mentality you'll always be useful to someone! :-)
Learning and delivering strategy is far more valuable than just tactics (latest hip language/framework/stack), because a solution doesn't exist just in programming alone, but a combination with policy and process.
As you grow, you can become a strategic aligner that is not dishonest about using the latest toy at the expense of your customer's growth.
I'm in my early 30's, developed professionally for over 15 years.
The one thing I see over and over now is how secondary development starts appearing the more I interface with upper level management directly. There is a major starvation for developers who can learn to understand a problem and leveraging a solution to magnify competitive advantage.
I spend more time thinking and analyzing the problems (way more) before ever daring to trivialize something to whip up some code.
This ends up with my development work being tremendously more valued, instead of just being a means to an ends. As I get older, the value I add is not just coding, but being able to architect a solution that
For me it's not just about building things anymore. It's more about what I consider - building things and doing it with style. Give me the time to plan an app, put together a team, predict our finish date and then build our system. My goal is to do it with the team feeling happy and proud of their work the whole way. No horrible crunch mode or last-minute heroics. At this point in my career that's what I aim for more so than just getting an app built.
I also like helping young people become proficient, reliable developers who know how to plan and maintain large systems. Young developers tend to have a lot of clever ideas and know the latest tools - but I have various skills that they lack or find uninteresting. So I don't see them as competition. I think young and old developers can really compliment each other.
As for salary, it's hard for me to say since I'm in year 5 of a startup venture that just hit the black last year and is looking towards being a profitable company. So whether or not I will ever be looking for another job is something that I'm unsure about. I've pretty much decided that I would like to manage larger teams - not because I have to but because I enjoy it.
I was hired to my current gig 11 years ago to fill an emergency need for someone with perl and B2B experience, where I showed myself to be competent and approachable, and received a token promotion and consistent merit raises.
I have made all my IT hires in a similar way. In 1995 CompuServe had an immediate need for anyone who could tell a mouse from a keyboard, and due to my experience troubleshooting modem connections to play better dial-up Doom, I was put right into tech support in the ailing company. Before they imploded, I was hired at an ecommerce VAN to troubleshoot comm problems and write comm scripts for some of their software packages when they were very short on good comm help.
At each of the companies I've worked for over the last 19 years, I've dodged layoffs, demonstrated competence and agility, been given a single token promotion, and have been paid below the market average for my position due to not having a college degree.
Pluses: Haven't been fired, laid off, aged out, or put out to pasture. I have had consistent employment, taking only two contracting gigs over the years, both while still employed full time. Plus no one gripes that I wear jeans in a business casual environment, or that I look like a hippy with my 21" hair.
Minuses: Fewer promotions, lower average pay.
If I did the math of some of my peers who negotiated more pay from employers, but were then laid off during low profit years, I would either break even or end up in the black by comparison.
By showing competence, a sense of urgency, and willingness to keep an enterprise system healthy for the long game, I've done pretty well, plus no pesky student loans to pay off.
...but on the other hand, I haven't written that killer app, founded my own tech firm, or otherwise found my way to riches. As 50 gets nearer, and as I cost my company more, any of that may change. I fully expect within the next re-org or two to be handed a severance package, and then see if my secret project-x is a gold mine waiting to happen, or if I've been kidding myself all these years.
> Do you have to go into management to continue progressing upwards in pay and influence
That depends on how much pay and influence you want. At some point, influence means managing. If not in title, certainly in actions.
> Is there a plateau in pay? Yes and no. If you stay in the same qualification range at a given company, your pay will stagnate modulo annual increases. Move up or out to improve.
> Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?
There can be. If you can, trade the drop for something you care about that advances your career. E.g. 2 jobs ago I took a pay-cut, but that translated into being given the responsibility to build a new team from scratch. It was something I wanted enough to take the cut, and it was a great learning experience. I subsequently traded back for money ;)
> Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?
Can't speak for all - I usually pick jobs I like, at companies I like, for pay I'm OK with. As long as the job comes with growth opportunities, I don't look for new jobs because I'm enjoying what I do.
If I don't, I'll probably switch.
But yes, I've also settled down a bit more. I wouldn't root up my family on a whim and move to a different continent any more, unless it was a stellar opportunity. Or maybe I'm not settled down, just pickier.
> And lastly: if you're in your late 30s, 40s, 50s, what are you doing at your job? What are the older people in your workplace doing?
I write code, and am trying to move into a bit more of a lead position, because that's what I care about. In general, the ones who want to write code do so. The ones who want to manage do so. And we've got people that are significantly older than I am.
In short, I wouldn't worry too much about being too old just yet :) Just make sure you keep your skills sharp.
For me, there's the obvious path into management but being good at your trade does not imply you'll be good at management.
I think there's a more subtle path too: consultancy. I particularly like consultancy because you can start off basically as a freelance developer and gradually raise your profile into project management (if you own a consultancy team) or architecture design or CTO-type problems. It's much easier to get away from the code whilst still avoiding the management trap.
Of course, that assume the need to move away from the code but I know I don't learn new technologies quite as well as I did 10 years ago and that'll only get worse over the next 10-20. Also, as you get older, you generally need to find higher-value activities and a monkey coder is not top of that pile.
It makes me really sad. I've tried retraining him in web development, and he actually picks it up really quickly, but I doubt there'd be any work for him out there given his age.
The older people where I work? Yeah not sure, management mostly I think. Some older people still program where I'm at.
My dad taught himself programming as a hobby in his 60's.
Why is this ever even a question anyway, no one asks what happens to people in their 50's who craft furniture, drive trucks, carry on scientific experiments, climb mountains, etc. Do what you like.
> Do you have to go into management to continue progressing upwards in pay and influence? I know this isn't the case at some companies (e.g. Google), but is it rare or common to progress as an individual contributor?
That has not been the case for me. I'm currently doing software development for a startup - the same thing I've done my whole career. I do get asked to provide guidance and help for younger devs sometimes, but I don't mind that one bit, it's actually very personally fulfilling.
> Is there a plateau in pay? Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?
For me, so far no. I'm currently making the highest salary I've made yet in my career. I've been here for a year and a half.
My age has not been an obstacle to finding a job yet; I've had plenty of interviews and offers over the last 5 years and have chosen the places I wanted to work, rather than the places where I had to. It's worth noting that I'm white, male and American, so I realize I'm less likely to suffer from workplace/interview discrimination with US companies than people in other demographics.
> Is becoming a specialist rather than a generalist the answer?
I'm pretty much a generalist web developer, I do backend and front end work, On a nearly daily basis I work with Ruby, Javascript, Postgres, Haml, Chef, CSS, Sass, Shell scripting, etc. I didn't have to become a specialist to get my job, although the fact that I've been doing Ruby for about 10 years did help me get it. I think the answer is, just to be good at what you do, whether that's as a specialist or a generalist.
> Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?
> What are the older people in your workplace doing?
I have two kids, 5 and 2. My coworkers are evenly split between man and women, are mostly in their 30's to 50's and most of them have kids too. A coworker of mine recently returned from a ~5 month maternity leave after having triplets, and we've been flexible about her work hours/conditions because we didn't want to lose her. So we're definitely not averse to having employees with families. I look for companies that have this kind of attitude to work at. It's not as hard to find as you might think; as long as you're good at what you do people will probably want to hire you.
I'm not sure to what extent my company is "typical" but you can at least count me as one "older" developer who is happily still working as a developer, was able to have a family without harming my career, and didn't get pushed into management.
All in all I would say, your early 30's is still young. Statistically you've got more than half of your life ahead of you, likely the best part, too. As we get older I suspect the demographics of our profession will change along with us, and there will be more older people in roles we stereotype as being for younger people. At least that's what I keep telling myself!
That's my hope too. At 36, I still enjoy what I do and have zero desire to move into management or run my own consulting business (I like the security of steady pay). While software is considered a young man's game, my hope is that this is mostly because historically it's a young industry and that I'll age along with it.
I've been doing this 15 years and am better than I've ever been. The key is to keep on growing and learning. I naturally love learning new things so that keeps me relevant and productive, and I hope to continue doing it the rest of my life. Or at the very least another 20 years (I'm 36) so I can pad my retirement savings before moving to a freelance / consultant lifestyle).
Also, call me crazy, but I don't really care about continuing to climb the pay scale or company charts. I make enough now and like what I do. More money is great, but my overwhelming focus is on keeping a rewarding career going and not continually earning more and more.
all in all from that i can take you have been always paid the current market salary, hence later years equals the highest paying.
Incidentally, Google has matured and hired some of my classmates. Facebook still seems to be more of a CS kindergarten.
My father is nearly 70, and still writes & maintains those horrible departmental VB+Access apps. He started in his late 40s, having noodled around with spreadsheets & databases since the 80s (from whence my fascination with this stuff stems).
Sadly, the world of VB & Access is so alien from my own that we can't even talk shop.
From my (limited) experience, it looks like, as we age, we have these options:
1. Continuously learn new things - this negates the "old man" perception in the industry
2. Be good (not necessarily bleeding edge) in programming, but have good domain knowledge (this ties us to one domain though) - these kind of people are very valuable, as most programming jobs don't need bleeding edge skillsets.
3. Become a suit
I'm the eldest of 5 developers, but I think the youngest is 29-30. We're essentially all generalists, although we have individual specialties. A couple of guys have really deep knowledge of iOS strangeness or shaders. I've got some specialization in game AI and physics, as well as game design skills. Any task can go to any dev and come back with reasonable results. There's no hand-holding.
We're an iOS shop, so my day-to-day coding is in Objective-C, although I do a lot of tools programming in Python 2.x.
Generally, I get to do what I want, with some exceptions. There's a strong culture of just doing something that helps the company, without necessarily being tasked to do it. Taking a day off to do a research project is also tolerated when we're not on a really tight deadline.
Unlimited vacation and sick-days, within reason.
I don't see working for anyone else in the future -- I'd have to start my own gig.
There's some temptation to work for a Google, but at this point in my career it's getting a bit undignified to work for other people as an employee. I.e. I don't want to deal with your BS, unless you're a client (I can fire you).
Thinking about this from a numbers standpoint, the market for people with software development skills on a truly national (or global) scale only really developed in the late 70s at earlier - I'd say not until the mid 80s did we see enough of an uptick such that the idea of a long-term career for large numbers of software developers was viable. With that viewpoint, we're just now seeing a ~30 year mark from the start of that time period - people who started in their 20s or 30s in software are now hitting their 50s and 60s. Watching and learning from what their careers have been will be instructive for people, although I'm not sure there's a whole lot of lessons we can draw conclusively from that yet. It's only one generation, and the world of tech changed dramatically during that generation.
Will this always be a problem? I don't know - embeddable bio-devices may be the next seismic shift, but "the internet" - the idea of billions of people always connected to services - this was little more than a dream in the eyes of a few people back in the 80s. Given that viewpoint, the career of software developers in the "always connected" age of the internet has been not even 20 years.
Unrelated, I've had pretty gray hair since my early 20s, and I'm not sure I've been too affected by ageism, but I know it's been a factor during some hiring - people assuming I was in my 40s or 50s when I was ... 31. :)
Really? There were full-time professional programmers in the 1960s.
Totally true. IF you are a developer.
How many managers do you meet who still contribute to Free Software? Or who even look at Stackoverflow, let alone contribute.
You might, which might make you exceptional but the vast majority of managers do not. Yet you are llikely only achieving 10-15% premium over them.
Whilst you (and they) are achieving a significantly higher premium over existant developers.
The problem is that the close you are to the people are the top of the leadership chain, the more they believe you are valuable -- even when your value is motivating other people nothing particularly intrinsic to you.
The startup I have worked for 3 year was not quite taking off. So a few months ago I decided to quit to look for something new. This is the first time I have quit a job out right without having a new job waiting. It turned out to be the best thing I have done. Once I broadcast the message that I am in the job market, my email box quickly fill up with requests (I'm in the San Francisco job market). I've spent the next week pretty much interviewing full time. Very soon I've received multiple job offers. The company I like the most did not make the highest offer. But I successfully negotiate up to a satisfactory level.
In terms of work and technical skill, I feel I am in the top of the game. I'm not sure where people get the idea that young person is better than more experienced. New knowledge often build on top of old knowledge. Fundamental skill like logic, math, data structure are just equally relevant. Plus experience is useful when you need to make judgment on where and how things are likely to change, and where things is more risky that deserve more attention for design and testing. That say the landscape of technical knowledge is huge and quickly expanding. There a new thing to learn everyday. I am aware that many people around me, both young and old, are really talented. There are always things I can learn from them.
In terms of pay, it is rising in absolute term. But I'm not in management and I'm moving mostly laterally. I don't believe I am making more than someone who are in their 30s. In this sense both my career and my pay is plateaued. But still I satisfied with the work and pay level. I think this is an excellent career choice for myself.
Most of my friends are between 35-45, all fully employed with good salaries (mostly Java / Enterprise shops though, but also some cool startups / Googlers / Twitter / Amazon)
My take on this, both as an older guy, and also as a hiring manager is that for me merit and skill matter more than anything else, I'm completely age, race, color and gender blind. (I recently hired a 50+ years old dev who didn't work for 5 years, he was simply that good)
Good developers of any age will always find job, at least this is my theory.
Yes, there are 10X 1 year of experience people, yes there are people who as they grow older they have less desire to work long hours / cut salary (due to having a Family, this is legitimate) but I don't really believe that anyone out there will say no to a 40 years old developer if she is an ace. If someone does, then they are missing the talent and hurting their own companies.
I'm 100% unforgiving to skill issues, but in my experience, usually the older the candidate, the better they do, merely due to more experience.
They might not all know the latest vagrant / docker / hadoop / scala / Haskell / scss / node.js trends, but they know how to write code.
I'm shocked how many people with BSc or even MSc in CS, years of experience, simply don't know how to code. I mean some can't code their way out of a paper bag. But this has nothing to do with age, the last thing I care about is someone's manufacturing date. really. it just doesn't make any sense to do so.
Watch It, and you'll discover what happends to Older Developers.
By the way, I'am 36 now, nearly half way. I still looking for code only jobs, I've been managing people since I was 18 to now. I go reverse, and toward more and more coding, architecture, research ...
I have done pretty well in the field. I eventually focused on data warehousing and business intelligence. I worked for a startup that was recently acquired by a huge company, another startup from early on, and the highlight of my career was working on the Metrics team at Mozilla. I eventually accepted a management position in that team, but after a few years, the stress was getting to me and I missed coding so I switched back to the technical track and I'm doing software architecture at Pentaho, a business intelligence tools company.
I live on the east coast, I work from home full time. I make a good salary. I took a very small drop in pay when I left Mozilla, but it would be tough for many companies to compete with the full scope of life and benefits at Mozilla, and I wasn't unhappy with the change. I am on the upper end of the pay scale, but having been a manager at a couple of different companies, I also know that there is still plenty of room for improvement, even staying on the technical track.
I like @bane's reply, although I feel that personally, there is an important distinction between the middle-management handing hiring, firing, performance reviews, and bureaucratic BS and the director, CTO, VPoE, or team lead where you are doing the abstract work he discusses. Maybe I just got unlucky or I didn't take advantage of the opportunities there though. :)
I would eventually like to move into a principle role, or maybe a director, but I personally have to be careful because I enjoy leading teams but I don't enjoy middle management. :) It is very possible that I might not hit that level because of my self-imposed restrictions.
I attribute my success to a ceasless passion for technology in general. I keep a notebook where I jot down any keywords or tech that I run across or hear mentioned so I can look into it in my spare time. I love diving deep into these technologies and understanding where they can be effectively applied. In most people's books that would make me a generalist, albeit within a specialized field.
I don't pull as many over-nighters as I used to a decade ago. I am more concerned about stopping work in the evening to spend time with my family. That said, I have never felt or acted like a "5:01'er", and I don't believe I would continue to prosper in this field in a way I want if I were to become one.
It's not as "sexy" as tinkering with this month's Scala/Node/Go/Rust/Julia fad... but when you get older and have family and other commitments, perspective often changes. A lot of guys just want to "get things done", and then go have a life outside of work. To be fair, most developers continue to learn new technologies and skills throughout their life. But the drive to always be on the bleeding-edge with your professional work tends to be a trait of younger developers and smaller companies.
I think a large part of the fear of age is that we don't see a lot of middle-age web developers. That is because Generation X was really the first generation for which web development even EXISTED during our entry-level formative years! So I'm not convinced that we will all simply vanish into management 10 years from now. Rather, I think you'll just see a lot of middle age Gen-X web or Java developers, with perhaps younger guys focusing on newer niches (e.g. wearable devices, VR, pure client-side JavaScript with little to no backend, etc).
Or maybe web development will become a more cross-generational field, with middle-age and younger developers working side by side. Hard to predict the future with certainty. At any rate, I'm about to turn 40 myself, and I stopped stressing out about my "exit strategy" a few years ago. I'm currently working for an exciting small start-up. I ENJOY being hands-on with the code... and as long as I maintain that passion and desire to learn, I find that my income and responsibilities keep going up. I'm sure that will plateau at some point soon, and maybe decline later in life if I choose to slow down a bit. But I find that I'm still highly employable among the employers that I want to work for.
If on the other hand you are interested in what is the business purpose of what you are doing, then you may have a long and rewarding engineering career ahead of you. Developers of 1st kind (butterflies) are dime a dozen. Second kind is much harder to find - someone who understands the business. I would recommend to specialize in business, but remain a generalist in technology (they haven't invented anything new since LISP and APL anyways). As a bonus, if you get sick of development or modern developers, then you can easily transition to business side.
I am in mid 40's, work in Finance.
I'm in the "start your own gig" boat as far as people who have a useful skill set and don't want to learn an entirely new set of languages/frameworks/etc. I'm nearing my mid 30's have a consultancy, but simply being a consultant with a decent rate is a better option for making more money yourself without having to play as many corporate games (provided you have the discipline and tenacity to work well by yourself and stick with it).
The other side of that is creating products, which has been beaten to death here (look to patio11 for great inspiration and excellent insight), but it's quite relevant to this thread. It's somewhere between a massive amount of work and a crap shoot, but if you can figure it out and do it well, in my opinion it's the best of all realistic worlds for people in our position.
The devs I worked with for 20 years either stayed and stagnated with average pay rises every year, moved onto new firms to get a bigger pay rise, one went contracting then earnt a lot of cash and retired to be a farmer in Cornwall. Another dev retired with a nervous breakdown
The only 50+ programmers I've worked with who where still employed as programmers as their main/only responsibility where those who'd been at the company since "the early days", had written and/or designed all the companies core systems and thus where the ones who understood the system better than anyone.
I'm 40 and still young. I'm learning tons of new stuff, developing into new areas, and started as a freelancer two years ago (which boosted my pay quite a bit). I still have great plans to work on ideas of my own in the future. No idea where I'll be in 10 years, but I bet it's something totally different.
At least when I was a developer, I could focus on the technical parts. If things went south, I could hone my skills for the next gig on someone else's dime.
I should probably be honest with myself and move into consulting and contracting before my skills degrade too much and I'm less relevant for it. I honestly don't care much for the politics of management, I'm not terribly charismatic, the company's processes are tiring and frustrating, and my team would probably be better served by someone who handles all that well. I'm scraping away time to hack when I should be taking care of the team.
People who go into management literally have no cap in earnings. There are people who started as engineers and worked their way into senior management and even C suite positions. These positions can pay 7 or even 8 and in some cases 9 figures a year. The cap is much, much higher than you could ever make as just a programmer.
I also get more and more interested in personal development. Getting through middle age, heavy swings of depression, emotional health struggles, addiction struggles are issues common to most, not only programmers or technical people.
Having overcome all these I've collected a set of very useful and practical personal improvement methods that I plan to gradually launch as my personal development business to help other people who are suffering from these issues.
I like to solve my own problems and then help others do the same.
- You can move into management, but you have to keep your technical skills sharp. It is harder to find management positions than programming positions. Also, you cannot manage what you don't understand.
- I have stayed around 5 years on each job. Knowing the specific systems of company as well as the technology makes you very valuable at that company. However, you may be able to raise your salary if you move more often, but that has its own risks.
- Specialist or generalist? if you are willing to move it is probably better to be a specialist.
- I still enjoy coding, the trick is to think of it as a craft. The feeling of being good at something, is a big motivator.
I guess this falls under the "more and more senior as a developer", but I'm outside the direct line of fire of bugs, deadlines, etc.
I can't complain, and I'm often working on newer technologies than the folks in engineering, keeping my relevance.
My plan will probably to migrate into a consultancy.
You will get all sorts of advice about learn this, do that. Bottom line, know yourself well, especially what is deeply important to you as a person, and the rest will take care of itself. Spend time to ponder, have fun, try everything, stay optimistic, read widely.
Right now I get up at 05:30am every day to hack on Arduinos in C and Pythong and burning my fingers with soldering iron, and doing stuff to help my son on his PhD research into humanitarian logistics. 07:30 i down tools, breakfast and shower and go to my day job of ERP, global MNCs, C#, ABL, databases cloud this-and-that. Evenings i review and CTO on a system to help people collaborate worldwide. In between times im learning yoga. Colleagues amazed i do so much. The secret is that hackers/developers are blessed with a natural curiosity - when we learn to occasionally turn that on ourselves we can find that which motivates us, and then can follow that and have tons of fun.
Wish you well.
I'm 40 and still looking at more school and something to keep busy another 20 years after the kids move out.
As for salary - I believe I was getting close to plateauing as a developer in my area (for jobs I would want to do), and I have opened up my career and salary path a bit more.
Regarding looking for jobs - I moved from the agency world in my early 30's to the startup world. I am so much happier, even with the perceived risk, I believe it has made me far more marketable for future endeavors. I got to work on far more interesting things, and the people I've met after making the switch has helped me tremendously.
But they're totally still working and not being replaced by dumber, cheaper kids fresh off the boat or fresh from the diploma mill. Totally.
If you aren't lucky enough to work for a company that values the aptitude of older workers, even without domain-specific experience, your options are to become a technically indispensable genius, capable of writing metacode that the younger chimps can turn into working applications without much hand-holding, or you can become a person that spends increasing amounts of time firewalling those experts and chimps from the people who understand money and people better than computers.
Architect or manager.
Nope. You can invent a new programming language.
But a few things happened in the meantime. First I had a home that was little too low in elevation a little too close to New Orleans that got wiped out in 2005. Then I found my Visual C++ skill set considered obsolete almost overnight. I learned the similar Visual C# .NET WinForms skill set, and started to work on the ASP.NET skill set. However, it seemed that the necessary complementary skill set to be an employed ASP.NET web developer was growing exponentially. By the time I realized that I had to learn JavaScript, CSS and who knows what cr@p API Micro$oft would push as its flavor of the month, I looked at my financial situation whose descent started in the loss of my home in 2005 and that hit rock bottom when the Great Recession came about, and decided to just throw in the towel, file for Chapter 7 bankruptcy (keeping my retirement accounts intact) to discharge 6 figures of credit card and other unsecured debt, take full advantage of the social welfare system (i.e., SNAP "food stamps", ObamaCare, etc.) and just be an extraordinarily cynical "bum". I now advocate for socialist redistribution.
I have gotten off track in this response, so I will get back on. I would say that the front end is for the birds - the back end database stuff is where is the action is, and where the underlying skill set remains having value. Although there is the possibility that the current k3wl data scientist will be lose its luster, I really don't what a tech oriented person should do these days.
I don't know how many other jobs I can get with a certificate that will pay decent. I already have a bachelors in CS, and don't want to go to college again (its several more times more expensive than when I went). All my skills are computer related and I do not plan to go back into tech support ever again. Management isn't me and neither is sales. Guess I'm not sure what I'll end up doing.
Everyone here seems to be rockstars or A-list devs, but I like reading the comments here since it keeps me up to date and I learn a lot.
Its a shame that after 10 years my salary seems to have peaked, just when I feel I am starting to get good. Problem is no one seems to reward you for being good. They are happy when something works (or appears to). They seem to have no concern that the code will be buggy and unreliable and require constant tweaking. Get something out like that in a week, rather than something solid that takes twice as long.
Emotionally, it's definitely harder to get excited about the new next hot thing. I'm not sure there's a lot more in coding that I am super excited about. I could see getting out of development. I'd be interested in getting into a related discipline, so if anybody has specific suggestions about that I'd love to hear them.
Your comp definitely plateaus if you remain an individual contributor. You become more valuable, and more highly compensated, by managing and/or mentoring people, helping evolve the technology to match the needs of the business and to find new markets, touching customers and revenue, etc. In my opinion this is required from all senior level technical people in the software industry.
"I am a 20 year resident currently in the process of being "de-located", and will be leaving San Francisco in a few weeks, destination unknown. A little known secret about the tech industry is that if you're not in your 20s or early 30s, you are basically unemployable. It's a great gig for the kiddies, but if you're an adult with a family and responsibilities, you'll learn all about the magic of "at will" employment. Not to mention that many/most of these companies are run by financial criminals/sociopaths who could care less about anything other than lining their own pockets."
Comment on http://valleywag.gawker.com/twitter-will-cause-so-much-gentr...
Does the company have a technical development path ? Do developers get promoted to senior developers to technical leads or is the organization flat (bunch of developers reporting to a non technical manager) ?
Does the company value employees with experience or does it assume that everybody is an idiot and only a select few can make decisions ? A good way to asses this is to look at how responsibility is spread around the org chart.
Can you see yourself working for the company in 5 years time, what about 10 years, what about 20 years ?.
The sad fact is that after 40 even if you are the best developer in the world changing jobs is going to be more difficult so if you can find a company culture that works for you this is vastly more important than more pay.
I did take a small pay cut when I left the startup for a larger company. Mainly because the startup was grossly over paying me. However I got a bonus up front and my performance the first year earned me a merit raise back in line with my former salary. I've now surpassed that. So far no plateau.
I'm currently trying to make the decision to move into management. In my current role as a tech lead I do a lot of management anyway so why not get the title and a salary bump? The only options at my next promotion is manger or architect so if I stay there it's the time to make that decision. It probably helps that I don't care much for developing in our stack. I do code a significant amount on my own projects to offset that though. In my early 30's I was so burned out from coding that I thought I needed to quit programming. I realized I really just needed to quit amzn. :) no matter what I decide I'll always code I just may not do it as a part of my job. I cannot stress enough the importance of keeping current. That plus experience is what will keep you marketable.
At one point I had two managers, both women in their late 40s, and they used to time-share the one job. One worked Mon-Wed, and the other Wed-Fri.
I do know one female developer who has worked non-stop and is now in her mid-30s, and shows no signs of dropping off that. But she has no kids.
But there are some places that want more experience. My current job wanted someone to come in, take the central piece of a new embedded system, and not have to take time on a learning curve. They didn't have any problem seeing the value in 25 years of experience.
Does salary plateau? More or less. Salary growth tapers off after about 10 years experience, or so it seems to me. It still grows some, though.
In other words, you sit in the planning meetings & your experience on past projects helps get over that "where do we start" mode. You make sure the proper QA and testing is being done, things like that.
Your day is filled with many other tasks than just writing code. You go home at 5pm & work on your private projects for fun & interest (not that 9-5 is uninteresting, but you don't have the time to "play" so much any more)
To a large extent, you get to choose which of these paths you prefer to go down.
I seem to have personally gone down path four: Start your own business. Consulting, unlike employeeing, tends to map bill rate exponentially to experience. And selling software products... well, when was the last time you decided not to buy a SaaS product because the company's founder seemed too old? That's what I thought.
It is interesting that some parts of CS have more opportunities for consulting than others. Has anyone else experienced this in their chosen specialization?
I've been seriously thinking about going back to school, and specializing in something entirely new (computer vision), as I'm already learning about it on my own.
Learning something new would be exciting, but the idea of starting over, being an "intern" again, then _maybe_ qualified if everything pans out is frightening.
As anyone here changed their technical career for another different technical career, instead of going the management route ?
People who aren't excellent, or not truly passionate about the coding itself go into management, sales, or consulting. (I'm in this group) There is age discrimination by people in the open market who don't know your work. There is much less age discrimination amongst people who personally know you.
I spend 10+ years working for a mid-size company, progressing from developer to a sort of combination senior developer / IT manager. My salary grew at a reasonable pace. I was wearing a lot of different hats, and gained experience in a lot of different areas. That company went out of business a few years ago.
I then spent a couple of years at a small (12 person) web dev company. We had one in-house product and worked on various sites for various clients. Mostly ASP.NET, some Drupal. I took a bit of a salary hit there, making maybe 85% of my previous salary.
I left that company about a year ago, and am now at a fairly large company, primarily working on Dynamics AX custom programming, with some random ASP.NET/C# stuff in there too. I'm still not back at my old salary, from the company that went under, but I'm closer.
With a little more Dynamics AX work under my belt, I could probably jump ship for an AX consulting job that would get me back to that old salary. Or I could stay here and make a pretty reasonable salary, with modest gains, over the next several years. (There doesn't seem to be much room to move into management here, though if I stay long enough, that may change.)
Or I could try to go back to another web dev position, ASP.NET and/or Drupal, maybe. (That probably wouldn't get me much of a salary bump though.)
I'm not entirely sure what I'll be doing ten years from now. The company I'm at now is stable enough that I might be able to stay here until retirement, but I wouldn't count on it. I'll probably need to change jobs 2 or 3 more times before retirement. I try to keep my skills up to date, so I can stay employable, and, at some point, I'll probably start using the standard 50+ tricks on my resume: dropping my college graduation date, dropping the oldest jobs from the resume entirely, etc. And dyeing my hair maybe, if I get too grey.
This being HN, other people have of course talked about starting their own company. I'm not sure I want to do that, but it may become an attractive option at some point, especially if the health care situation in the US gets straightened out enough that I can afford to pay for my own health insurance.
I have a number of colleagues in my current position (in the Internet Security domain) around my age doing the same as I, although the average age is lower to be sure.
http://venturebeat.com/2013/05/16/homeless-to-hacker-how-the...
I enjoy planning and developing systems. I have seen all aspects of working in small (~100 persons) and big companies (160.000 persons). Why should I switch to management when I am good with what I do? Being a developer is not only a step in career, its also passion. Being a manager is not the next step, its a completely different job. You plan deadlines and HR and speak with customers and their contracts. This is not the next level, its something different. You can do this also without being a software developer in a previous life.
There are not that many older devs I know. The people of whome I speak are between 40 and 50. These folks are truly experts in their domains. I learn a lot when speaking with them. In some cases 40+ devs act and work like 20+ devs: they learn. Imagine what you can do with a knowledge grown by 20 years? Age really doesn't matter, except you want to do a completely different job after your software development time.
I have not suffered any salary drops so far. I could have steadily increased my income. However I decided before around 3 years to stop this and work as a freelancer. My time is limited, my rate is pretty normal and so I know pretty much what is possible in a year and what not. You could say, I have limited myself to a certain income. On the other hand since then I only worked on projects I liked. I have never written a single line of code of something I didn't like (except that one time, but I fired the customer).
For me, being an "old" dev with 35 as you maybe would call it I have realized that I found my high in my career: the full freedom of what I do and what not.
I get a lot of offers because of my experiences and I have the choice. Please consider "earning this choice" as an important point in your career. Many can have more money; a few can have the freedom.
That said, the 30+ or 40+ devs I know are not shy to switch jobs. I know a few who think like that, but well: I was 32 when I quit my job. Now I am 35 I don't need "safety". With 33 my son was born, I still didn't feel like that.
If you would ask me: don't worry about your career. Spend your time with the things you like. Life is to short to waste it with people who tell you what a "great career" is.
The reason wasn't age as much as it was simply a desire to do more complicated stuff. To me the real challenge in technology has always been at the intersection of business and tech, that spot where you have people with a need meeting people with capability. The business side alone is pretty boring, and the tech side at the end of the day just amounts to variations on bits and bytes. Puzzle books. (Although, like I said, I love it)
Being a consultant, I see a lot of older developers around. I think there's a significant bias in the industry towards younger guys -- mainly because younger guys are the hotshots moving through development into management, and people like hiring people that look like them. [Insert long discussion here about age bias if you must. I prefer to just acknowledge it and move on.]
The "mistakes" I've seen from older developers come in two flavors: not specializing enough and not moving around enough. Some guys will "float to the top", and become more of a surface-level generalist. This is the path I see my own technical skills leading. That's great, but many times companies specifically want some kind of bullshit new technology because somebody thought it looked hot on HN. In that case, you're at a disadvantage. And after a few years pass like that, sure, you're the guy that can do anything, but only in C. That has real, solid, useful business value -- but it sucks to try to sell in the labor marketplace. I have a feeling there are going to be a lot of older startup founders over the next 30 years that fit into this mold.
The second way to kill yourself is to stay at one company, working on one product and one technology, longer than a couple of years or so. Pretty soon you're the master of C++11 as it applies to real-time embedded weasel-hunting robots -- in other words, you are truly the master of something nobody else on the planet cares about. That works great until they stop making weasel-hunting robots, then it sucks.
I think the problem with age as a developer is the same problem you have at 22: you have to wisely balance the time and energy you spend on learning new things. You can't learn everything and move around every other month, but you can't stagnate either. Instead, you have to carefully watch the market and anticipate where it's going to be in 3-4 years. As you get older, sadly, it's just easy to stop giving a shit as much as you used to. Sure, in five years everybody will be using X, but what will they be doing with it? I'll tell you what. In 99% of cases, they'll be doing the same kinds of things they're doing right now, that's what. So after a couple of dozen rides on the "Gee whiz! Is this cool tech or what!" wagon, it gets tougher to get back on again.
It seems to me that the skills needed to make a good weasel hunting robot (computer vision, mobility, audio processing) would have lots of other applications. Probably could angle to get hired for some of Google's robotic initiatives...
:)
Even NASA has this find big asteroids contest for $35000 in prizes because they got bit by the startup hackathon of cheaper labor sources of 20something college dropouts instead of 15 plus years of experience programmers.
Fact facts most hiring managers hate older developers. Unless they want quality and pay a salary to support a family can't hire us.
Need to move to find work but my family don't want me to move. Given ops for Google, Amazon, etc but had to move to take them. Nothing for me in St Louis Missouri USA.
My wife has a fulltime engineering job working for the government. We have a small condo that is just about the cheapest sort of place you can get around here without living in a rathole. We have one new car between the two of us, which works because I work from home and don't drive (I have a 15 year old car). Between our two salaries and the fact that we cook better than most restaurants, we live comfortably.
But I worry about what having kids will do to us. We would certainly have to buy a house. The condo is almost too small even for the two of us right now, but "fortunately" I didn't have a lot of stuff to begin with because I've never been paid very well. I have always risen to a head leadership position amongst developers wherever I've worked, but it has never turned into anything meaningful. "We appreciate your work!" would have a lot more meaning if it came with greenbacks.
If she decided to stay home, it would cut our income in half. Not to mention that we'd have to find private health insurance. I just don't see a bigger place plus half-income working. We need to either move in-state (which she doesn't want to do) or I need to make more money.
I'm reluctant to look for a job because I've not had good experiences working in offices. I don't enjoy the type of work I'm doing or would get hired to do. I like programming, a lot, just not this same, old, bullshit CRUD all the time.
I had good grades in college. I've always had strong programming, math, and science skills. I've always had lots of interesting side projects. I get along with people really easily. And I've never been able to find a good match for a job. The only places that ever call me back are shotgun recruiters and consultoware dungeons. It's disheartening.
I got really depressed with the consultoware field about three years ago. I lived off cash for a month while I looked for a new job, and ended up taking a huge salary cut to get into the only product-based startup that has every returned my emails. Turns out, they stuck me in their own consultoware project. After a year, they fired me without telling me why. I'm pretty sure it was because I was very unhappy, had worked it out so that none of my work was very much effort, and fell back to only putting in as much effort as was required of me, which was less than the 60 hours a week they expected.
I was on unemployment for a couple of months. I applied to everywhere I had ever wanted to work. I figured I had a bit of a time window and, at least in the first 2 months, wasn't terribly desperate to have a job right away. I reasoned I could "hold out for my dream job." Out of 30 job applications, not a single person called me back.
Eventually, a friend got me an introduction to the company he worked for at the time. I started contract-to-hire with them, and when the intro period was up, I took a chance on an ultimatum of letting me stay freelance or letting me leave, I would not take a salaried position. I've been working for them for 2 years now and it's been decent. I have a good working relationship with my client, he loves my work, they pay me, I don't go in to any offices, and sometimes the work is a little interesting. But, it still doesn't pay very well, in the grand scheme of things. I don't think I'm being paid what I'm worth.
It feels like the only out for me is to start my own company. I think I would really like to do that, but I don't have the funding for it and I don't know the right people to get funding.
That's false. You can figure out out directly.
Paying your own social security tax: +7.5% (say $7500 out of $100k salary) Health Insurance: $700-$1000 per month (say $12k annually) 2 weeks paid vacation + paid holidays: +7% (another $7000 out of $100k salary)
So, $100k contractor is equivalent to ~$80k as a full-time employee with benefits.
These guys pull down big money, have very flexible working hours (2 days a week from home) and are set financially. I know them from the very start of my career. Every 5 years or so someone comes in, sees the pays and freaks out and has them terminated. Within a couple of months they are re-hired, usually with an increase in pay.
There are tons of legacy COBOL systems running in big companies. Whether it is keeping them running, or helping plumb up various middleware solutions, a top-quality COBOL guy can make lots and lots of money.
Thank you for this question.
Like the elephants when devs sense they're going to die, they travel to elephant's graveyard / management position.
The ones that refuse to die are disposed of humanly and ends up generally as cat food ... or dog food according to their last wishes.
At 45, I've been professionally coding for just over 20 years, so I've been able to work with the majority of technologies that have been available during that time span. Just for a frame of reference, I've worked in consulting, manufacturing, owned my own business, for health care companies, and most recently, a NLP "Big Data" (quotes intended for lack of a better term) company that is all OSS and cloud infrastructure.
First off, I don't feel like an older developer, as I still have the same passion for building software that I did when I was 24, but how I approach it is different. I have no real interest into going into a management position as it would rob me of my main passion in life. However, by being heavily involved in the local developer community, I've been able to help many people who are new to the field, and companies who need technical help at an architectural level, while not distancing myself from actual development as my primary job.
To address your questions specifically...
If pay and influence are your primary concern then traditional management is obviously one route, but I offer up the alternative, only because it has been my experience. That alternative is being involved in helping people in the community. Speaking at conferences to share your skills and experiences, attending hackathons to help people build interesting projects and meet even more interesting people, working with teachers/students at local schools, or any other types of event where you share the expertise you've gained over the years can help serve the same goals. You gain exposure, so more people will want to work with you which may easily lead to increased pay and influence.
As for there being a plateau in pay, I can't answer that, but I can definitely attest to there not being a drop in pay as long as you don't let your skills atrophy. There is a huge need in the technology world for experienced developers who can guide product development either individually or as part of leading a team.
"Are older devs not looking for jobs..." I think this is a faulty assumption. There are plenty of older developers looking for new opportunities, but I cannot deny that there is a significant segment of the workforce that does favor stability. Again, in my experience most companies that I talk to are looking for a mix of the 5+ and 20+ crowd. Only the most naive would hire a team of developers in their 20's and expect a robust, maintainable, sustainable solution... unless, of course, that's not the goal.
As for the specialist vs. generalist question, I think the distinction is irrelevant and either route would be fruitful. I might give a slight advantage to generalist because then your personal opportunities increase, but there's room in the industry for both, as they are both valuable.
So currently I'm coding and mentoring at my job. I know many other developers in my area that are approximately the same age doing either pure development, a mixture of development and being a team lead, or they've moved on to management.
I think the point is that the path of a passionate developer is not set in stone. You don't have to do any one particular thing in order to advance a career. The important thing is to figure out what's really important for you.
Do you care about remaining a developer?
Do you care about gaining influence and/or getting a high salary?
Do you care about helping your community?
Do you care about educating or mentoring others?
There's no one path.
I'd like to discuss an issue that you might not have thought about: What's going to happen if you lose your job?
Employment in the 50s can be problematic. If somebody is skilled and employed, and has a high-level title or is a specialist or has useful connections, they should be able to obtain a new position.
Otherwise, they might go from well-off to homeless. It happens. I'm 55, my resume has been called pretty good, and I was worth $1M a decade ago. I'm a transient now. I've got some medical issues, no medical care, and no dentists. Potential jobs are primarily unskilled physical labor, which I'm not able to do.
I'll be taking a shot at tutoring. However, I don't expect that to provide more than gas money. The head of an admin assistant firm said that I can't be a secretary unless I already am one. Two people considered sending me to care for elderly relatives, but we didn't proceed. My title at one of those positions was going to be "poop scooper".
Don't let this happen to you.
For what it's worth, here's my advice:
1. Don't fall off of the employment ladder.
2. Become a specialist. Try to remain broad enough, though, that you don't become obsolete.
3. Build a network of people. Make it a large one.
4. Diversify your investments.
5. While you're employed, don't let medical issues, even minor ones, go untreated for long. If you lose your job and your assets, you'll lose medical care too and the issues may become serious.
6. Be kind to people. But don't be a fool. Most people that you help are not going to return the favor.
Regarding specialists, I did recruiting for a while in 2011 and I can confirm that the filters are heavily weighted against generalists.
I've spent about 35 years myself as a generalist. My jobs called for it. The place where I spent most of my career took any project that came along, code of any type. At a dot-com that followed, after the money ran out, I handled all of the technical roles; IT, websites, development, support, documentation, etc. I was able to do a bit of everything.
Later on, none of this made a difference. There are no job listings that say "a bit of everything".
After the dot-com shut down, 2003, I made a million dollars in the stock market. Lost most of it afterwards and reentered the job market. Learned that middle-age generalists were not in high demand.
In my case, there were other factors that won't apply to you. It's a story for another time. But if you're a generalist who falls off of the ladder in middle age, you can expect things like this:
"With a resume like that, why isn't he a CTO? Why doesn't he even have a job?"
You'll be asked questions about algorithms that you haven't thought about for 30 years. Or you'll go through coding tests under adverse conditions that don't allow you to show what you can do.
Plan ahead. Understand that the best-laid schemes of mice and men often go awry.
My own resume is located at:
http://oldcoder.org/general/misc/Kiraly_Resume.pdf
Regards, Robert (the Old Coder)
I had good early education, but left school as a college freshman to focus on industry work, and didn't return until 2004. The lack of formal education has never held me back, as technology companies especially like people who have been successful without those credentials. I am doing a graduate program in CS now, for the pure intellectual fun of it.
Pay has continued steadily over my career, with the only setbacks being self-imposed when I tried my own startups or left a high paying job for a lesser one because of better long-term prospects. It is mentally hard deciding to leave those $200k+/year jobs, but I have not once regretted it. In the end, I have only had 2 years total in my career where my taxable gross was less than the year before, and one of those years is when I took a year off to goof off (as an aside, I highly recommend that people do this every 5 years or so).
I have always wondered about ageism, mostly because I started doing this when I was 18 and there were a lot of older developers I worked with that were not effective. I have come to learn over time that age has really little to do with this: people can become complacent for a variety of reasons, and age has little to do with it.
The few folks I've known that are older and who did have trouble finding jobs had some other life issues in the way, such as letting their skills become irrelevant, being a bitter whiner, or not being a very good salesperson. You don't have to be the smartest tool in the shed to interview well, and sometimes you will not (I have had some spectacular uhhhh-duh moments more than once!), but take those setbacks as opportunities to learn and improve, not to sit and complain.
The whole discussion on management, leadership, architecture, etc. is quite pertinent. I have done mostly architecture since my early 20s and always find myself back in that role whether or fight it or not. I try very hard to code every single day, but the reality is businesses get more value from me when I am looking at the bigger picture and enabling others to code faster. Personally, I would much rather go code than do that type of work, but it is still very fulfilling and is still engineering.
When I give others career advice and coaching, my number 1 suggestion is to always do what you love, but be open-minded about what that means. Most of us will find ourselves with a variety of opportunities over the years and being self-limiting is the best way to keep your career from advancing.
My number 2 suggestion on career is that if find yourself being the smartest person in your company, either because you are or just believe it, it is time to move on. Don't be that guy/girl.
I have always deliberately avoided the siren-song of the Valley, but I know I could make enough compensation to make up for the cost of living differences and still support my family well there. But, I will only go there if the project/company is one where I will be making a substantial impact on something interesting. And, frankly, that really should be true for anyone with more than 20 years of experience: it is time to use your experience for great works, not just paying the bills.
p.s. rules of thumbs are just that, and sometimes you have to make compromises because life is in the way - that's okay, too. Just don't let yourself fall into a trap/rut because of those.
p.p.s. people in this field are rich by almost every measure, even if you aren't technically still in the 1%. If you're struggling to get by in the Bay Area, there are a lot better places to live where you can do a lot better. Don't be fooled into thinking that is the only place to be.
p.p.p.s. get off my lawn
> Do you have to go into management to continue progressing upwards in pay and influence? I know this isn't the case at some companies (e.g. Google), but is it rare or common to progress as an individual contributor?
You will always have more influence as a VP, Director, or general board member. Architects and team leads can be part of the management group, but actively avoiding or despising it is alienating those who carry financial responsibility for the company. Once you have the ability to make long term and rational architectural decisions, you will want to be able to use that knowledge to change things. Making things happen outside of the management structure requires a great deal more force than from within.
But, you can retain your technical edge while in management (at many companies at least). I am an architect and CTO at one company and a board member at two other companies. I also code almost every day, as I believe that software design and architecture cannot exist without understanding how things work today.
That said, you don't have to go the management route. I do suggest at least making peace with management and managing, as it is a valuable tool for getting things done when mad coding and design skill is not enough.
As for pay ...
> Is there a plateau in pay? Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?
Yes, pay rates tend to plateau if you're not part of the management or directorship. There are exceptions to this, including a number of smarter employers or if you change jobs regularly. You can also start your own company, but that requires both management and business savvy, and adds some risk.
I have only changed employers a few times as I've been lucky to really enjoy my teams, but I do own a consultancy as well (which allows me to adjust for any ceiling at my day job).
> Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?
Many older developers end up in management, owning companies, or as architects (who gravitate toward larger, older companies). Most older devs prefer stability, but not all.
> Is becoming a specialist rather than a generalist the answer?
The answer to what? Specializing will allow you to do more of something you want to do. Generalists often do better with entrepreneurship and general opportunity. You want to make more money? Management and ownership are great routes for that, and generalists excel in those roles (in my experience).
> And lastly: if you're in your late 30s, 40s, 50s, what are you doing at your job? What are the older people in your workplace doing?
I spend about half of my time designing systems and interfaces (from APIs to UIs). I spend half my time prototyping and setting up projects for my teams. I spend the last half of my time making sure it gets done properly. I still have more ideas for products than time, and I still pick up several new tools a year. I'm always learning, and always improving my own methodologies (as well as my team's). I still love what I do.
I also work with a software architect who is in his late 60s who is still both passionate and coding daily. He avoided management and does not often regret it, and has coded everything from OS subsystems (in the 60s) to iOS and web things today. His rate of learning has slowed down appreciably, but his vast knowledge and experience more than makes up for it. He was the first architect I met that still loved what he did (when he was in his early 50s).
I do contracts almost exclusively because I have no faith in the employment market as an employee given the current trends in hiring.
Also I dont feel that being an employee makes me more of a team player, In most places contractors are doing the real work and employees are sitting around chatting over the water cooler. Id rather get work done.
Im a generalist and in spite of the rather idiotic statements about that in the first comment, its really the only way to go, if you are not a generalist you are likely not employable regardless of your age. Any shop that has hordes of 20 year olds spitting out HTML/CSS is wasting their time.
The beauty of being a generalist is that once you have enough experience and a core set of tools, you can add new ones or not at your leisure. The pace of things is really not that fast, about 80% of all tools that get released are just junk that noone will remember in a couple years.
One benefit of being an older developer, is that in a decent shop people tend to notch down the bullshit factor, because they know you have heard it before.
Conning people into doing things that are stupid is reserved for the 20 somethings.
It started in 1999 during the Dotcom busts that flooded the market with cheaper labor sources.
Suddenly if you had a good job with a good salary some 20something working for $20K/year replaced you.
Unable to find work and provide for your family really wrecks the go. Most of my friends chose the suicide by shotgun route. I went to a lot of closed casket funerals and then got too depressed to go anymore.
My last job was in 2002, I thought I had a good job, but my employer only hired me to 'super debug' their main software that they hired these cheap labor sources for and they had a hackathon and prizes and none of them could get it stable or good quality and secure. So I got paid $150K/year and fixed it in two months, and then was fired even if everything worked great. I found that most job offers in my area are like that, promise you everything and as soon as you 'super debug' their problem you are fired.
Happened to most of my friends, and they ate a shotgun.
Some 20somethings on Internet forums kept telling me to eat a shotgun, shotgun mouthwash, etc. I refuse to kill myself and I will keep looking for work and bootstrapping my own side projects. I am glad Hacker News is not like Kuro5hin or IWETHEY or some other troll forums telling me to kill myself. You guys are professionals here.