Yeah a big mystery in our relatively young industry: what happens to old programmers? Do we all _have_ to become managers? Management is so much less fun.
Once or twice I have met programmers in their 60s who remember the days of punched cards etc. That's really exciting. Generally there's not many of those guys and now they are tucked away in major corps or government systems.
Who would we manage, if per the article their average future employee only has 2 yrs experience and I have about half a century of working life. So the average bottom layer of the pyramid programmer will end up reporting to roughly twenty five ex-programmer managers simultaneously.
Or rephrased, 24 out of 25 programmers "must" find work elsewhere every two years or so, to keep the numbers reasonable.
"tucked away in major corps"
That's where I am. Work to live, not live to work, great benefits, nice working environment, nice coworkers, but if I want a promotion pretty much ten people would have to quit or die of old age first. This "being pushed into management" stuff from coasties sounds really weird to non-coastie ears. Or having a "career" sounds weird, since I've had the same job for decades and have no realistic hope of title advancement, and I'm perfectly OK with that.
In most of the organizations I've worked for you reach a salary cap as an engineer. The only way to make more is to become a manager where you get paid more simply because you're part of the group deciding how much people get paid. The other career path I've seen is the architect route where a skilled developer no longer codes but instead spends their time helping others design good software.
both of those routes is boring - which route involve working in "the trenches", whilst still getting paid management level salaries? Don't say startup because that's just money earned on risk-taking, not guaranteed payment like a salary.
which route involve working in "the trenches", whilst still getting paid management level salaries?
The engineering track at AmaGooBookSoft. You'll earn +/- $200k a year mid-career and have roughly zero market or execution risk.
There exist many options if you're willing to take more than a W-2 employee level of risk. (e.g. Found a boutique consultancy. Redirect the conversation when your W-2 friends ask what your weekly rate is.)
Broadly speaking: 1) Try getting a job at AmaGooBookSoft a few times, because many devs I know who believe or believed that they were not good enough are/were wrong (self likely included), 2) Skill up. If you're not finding opportunity for advancement in skill levels at the present job -- which is something I felt when I was doing roughly similar work -- change to a job which does allow you to skill up, or create opportunities for skilling up at your job or outside of it. 3) Consider getting out of the BPO firm and into one of India's emerging software product companies like e.g. VWO or Zoho or what have you. I have no clue what the relative salaries look like but you're virtually guaranteed to learn more.
Finally, the 0th option: if your local economy doesn't have the job you want, make it for yourself.
Hey Patrick, could you talk more about the options available to you if you are good enough to get into AmaGooBookSoft, as well as ready to take on plenty of risk?
If you constrain a problem enough it eventually becomes impossible. The odds of staying "in the trenches" and getting a management level salary are extremely low outside of a company you own a large portion of or a consultancy. When you have the same skills everyone else has you can't command a salary appreciably greater than theirs.
Why is it this way? Because there are more programmers who can do your job than there are managers who can manage you. You can argue that's unfair, but it's the way it is. The managers have skills that are in demand, and despite what the general HN attitude towards managers/executives is they are important to the success of most businesses.
1) One explanation is that, often unexperienced people start doing programming, start looking for a job, but after 1 or 2 years, they just know its not their cup of thee.
Lots of people try learning programming themselves. And while it may work out ofr a lot of them. I think there is also a huge dropoff.
During my computerscience study at university there was almost 50% dropoff after 2 years. Only the die-hards survive.
2) A lot more people are learning to program these days. 10 years ago, there were a lot less people doing programming. That's why you are seeing the curve.
3) People with 10+ years experience generally don't go out looking for work and applying for interviews. By then you have enough connections that if you want to change job, you'll find it through old colleagues. Not by shopping around like younger devs. This applies to most all professional occupations, not just Software Engineering. If you look at people applying for positions in economics / law you'll see a similar graph.
This perception has really been hurting me, I think. Nearly all of my professional connections are lifers at my original employer, and a significant number of them are in the 75% group mentioned in Ed's post at the top.
I hear you. I moved from Boston to Charlotte 10 years ago for family, and I've had a hard time building a local network because of spending (too) many years at one employer here. I have a very nice network back in Boston, but my local one is still much weaker.
Here's something you can try: what do you wish you did 5 years ago (that you could have done with your knowledge at the time)? Now, imagine what you in 5 years will want the you of today to do. Go attend some local conferences or meetups. If you have trouble making connections quickly, prefer repeated events.
This is overwhelmingly because the resume and interview route to acquiring a new job is so incredibly worthless and inefficient.
I'm actually surprised that I have found so many jobs that way, compared to how easy it was just knowing some people who already work at the company who is hiring. I still had to interview, though--one interview with the hiring manager and her boss that took less than an hour.
The only problem is that very few of my old colleagues have connections to any of the jobs that I might actually want.
So now the standard response I get is "we decided to hire someone that was a better fit for us" or "we decided not to fill the position at this time". If you can't read the subtext, that means "you're too old (and therefore expensive)" or "we were trying to import someone cheaply, and your application screwed that up."
Shuttling experienced devs off into management is of course a sad thing that should be prevented. It's better to have high ranking technical positions available. (Although, Microsoft, isn't "fellow" basically a posh word for "guy"? So the high ranking tech guy gets a position called "posh tech guy"?)
Anyway, my dad has always resisted any push towards management. He did occasionally get the lead of a project thrust upon him, but he was still programming until he retired. However, he comes from an age where people stayed with a single employer for their entire life. You don't get to see his CV because he was never looking for a new job. You see my CV a lot because I'm constantly looking for something new.
Although in that graph, I guess I'm actually in the 10+ segment now... I'm still a young dev, though.
Proving only that it's not only Microsoft that's using highly gendered language for positions of respect. However, last I checked academia as a whole is doing better in the gender diversity department than tech (low bar).
I just turned 36, and I am in a contemplative self battle with this very question for my own career. As far as internal career development goes for my current employment, I have "succeeded". I have had a slew of successful projects and have been slowly but surely moving up the chain. It's difficult because in a large firm (20k global employees), moving up means coding less and attending more meetings. This is starting to drive me mad. I know that I can only go so far as an engineer in a large firm, but I don't want to just coalesce into the larger bloat that churns out hours and hours of meetings and powerpoint. On this path, in 5 years, I will be a director of some department and my distance from the code will be far. One way I am coping is by continuing this management ascension and writing code on the side - but when I have kids in the next couple years I probably wont have much time for that. It is a difficult decision to be sure.
You should work for a tech company (i.e. those companies that solely focus on tech). Most usually have clear career paths for those who want to become senior individual contributors vs. managers, because that is actually very useful.
I'm skeptical about dual-track organizations (read my other post in this thread, here: https://news.ycombinator.com/item?id=8481680 ). I agree that it's a good idea, but they tend to make it astronomically harder to be a Director-equivalent engineer than a Director. Ultimately, the management ladder is easier to scale and therefore "better", insofar as you can be a Director and still code (if you want).
I look at it this way. I've been programming for 10 years and, in a typical "do what I'm told" job, I'm not going to learn anything new. Sure, managers only get 10-15 hours of coding time, but that's more than you'll get in useful coding time as a managed employee anyway.
As a manager, you can have your underlings explore new technologies and report back, keeping you current on the field, and while you'll only get 10-15 hours of coding time (unless you work 40+) you have a lot more freedom in deciding what you code, and power to get your work noticed. I'd rather have 10 hours per week of quality coding experience than 40 hours in the Java mines maintaining someone's VibratorFactoryVisitorSingleton.
Managers are good at complain-bragging and making their track sound more painful than it actually is. The fact is that a manager who keeps his coding skill current is highly valued. Being a manager means you have organizational credibility, and if you want to use that credibility to code because you think it's the right thing for you, then you can.
If I were to take a cynical view of dual-track organizations, I'd say that the real purpose is to convince the programmers that the management-ladder people are better than they actually are. A Director-equivalent programmer at Google (Principal Engineer) is an objectively strong engineer, and it's competitive as hell to get to that rank. The Director-level managers at Google aren't any better than middle-management at other companies.
The tech world is going flat, which has a lot to do with the experiences of your former employer. In this new (but not really that new) model, the hierarchy is flatter, people managers are fewer and have lots of reports, while experienced/skilled individual contributors (ICs) are expected to provide more of the leadership missing from the fewer managers (who are better at providing that anyways). When each manager has 20 reports, you don't need many of them. Even Microsoft is moving this way, and has always focused on a lot of strong ICs; distinguished engineer is a partner level position (I think).
I would be quite surprised if the real product direction power wasn't held by the principal engineers at Google. I mean, ya, the managers get to manage, and they provide some leadership, but they have those pesky management tasks and politics (all necessary) getting in the way of that. In that situation, there are also probably plenty of managers who have to manage peers (i.e. people who have equal or even more influence in the company), and the concept of "underling who reports back" is a bit of a stretch!
Look at how many distinguished engineers, or other very high level individual contributors who have actual real power there are compared to Directors and VP's who manage large groups of people.
The individual contributor path is exponentially more difficult to climb. I argue that you both have to win the lottery with the right projects and get in early at a company, and have all of the necessary skills.
I believe it is a story that is told to individual contributors by people with real power to keep them motivated.
The only theory that I've heard of where a flat org could be actually beneficial to individual contributors is the parents theory on open allocation. Otherwise it's just management kicking out the ladder once they've climbed it.
I'm not sure that's a totally valid sentiment. For starters, top-notch developers in the US earn salaries that approach CEO-level pay (ok, maybe not quite, but certainly top-5% salaries nationally).
Even as a mid-level developer, my salary matched that of experienced project managers in my wife's previous line of work (large insurance company).
And CEOs generally lead a very different lifestyle than a good developer. On call 24/7, lots of travel, etc. And it's a different set of skills that many developers lack (schmoozing, sales, dealing with other giant egos). Compare that to my 40-45/hour work week, true vacation (with no work interruptions), and limited exposure to clients/sales/etc (which I find the most stressful part of my job - minimizing that is a good thing for me).
I did my mechanical engineering and having a pain in finding a job. I'm planning to get into programming. What do I need to do to become a decent developer who is in demand and can earn decent money?
It's easiest if you start hanging out with people who can program (and best of all, earn good money programming).
There's lots you can learn on your own. Just do some web searches. Pick a language, and start learning. Python is great for a beginners. (I like Haskell, but I'm weird.)
There are a bunch of auxiliary skills that help. Learn how to use irc (freenode is great), get familiar with github.
Drop me a line, if you need more help. My email address is in my profile.
I graduated with a BS in nuclear engineering (which at NCSU is very close to a mechanical engineering degree). I now work the computational engineering angle, working both the CS and engineering model side of things. I can show what I did, but I don't have a singular piece of advice that can act as a silver bullet.
- I was formally educated in FORTRAN up 'til the 95 spec. Many engineering codes still exist in it, so I've since rounded out OO Fortran. It helps me read legacy code, talk to the older engineers, and maintain it if need be.
- I built a computer with a nVidia GPU chip: It helped me appreciate the hardware side of things and enabled me to write and run CUDA (CPU/GPU) programs, which offers a window into high performance computing (HPC).
- I learned as much about the OSI stack as possible (I had the fortunate opportunity to take a week-long CCNA bootcamp training class) so I could have a rough mental model how networking works, which helps in distributed computing or HPC scenarios.
- I already knew C, so I spent time spinning up on C++ and its ecosystem, as it can be popular in engineering contexts.
If you are wanting to go the pure developer route then there are plenty of others who can provide better advice. I have come to enjoy the inter-discipline of CS and engineering.
They definitely required programming, but were understanding of any spin-up time it took to get on board. I did wind up spending large amounts of time outside reading and tinkering along with blog posts, wikipedia, and even good old-fashioned books.
I took some of my class notes on equations and implemented them in a variety of ways as an exercise to get used to the language while keeping the engineering knowledge relevant. For instance, when I was blazing past a variance calculation, I was surprised to learn that catastrophic cancellation could occur in a naive implementation. Not because I "got the answer wrong" per se, but because a computer has limits (in this case: precision), and there's no way (in my mode of learning) for that kind of information to stick unless I have my hands dirty in the code.
To go back to the languages though, I stuck to major ones and played with Python, C/C++, and Fortran. Python and Fortran I used online references to play with and learn, while with C++ I bit the bullet and read C++ Primer which is really hefty but I found to be very thorough (and a great reference).
You're being a little vague. 5% is which markets? A programmer in SF might earn as much as a CXX from North Dakota but the CXX in his market is making a lot more than him. Still, I think at the CXX level the total compensation is a lot more. >$300k? $500k?
Come on.. Maybe you've seen developers at Google or somewhere like that make LameFailingCompanyCEO-level pay, but I highly doubt that "top-notch" developers anywhere earn salaries that approach CEO-level pay IN THE SAME COMPANY. Everywhere I've worked there has been a huge compensation cliff between the senior managers (anyone with the C?O title or their direct reports) and the rest of the peasants. I'm talking orders of magnitude difference. Sure, there are outliers, but I'd guess the typical tech workplace (lets say Bay Area cost of living) is structured, on average:
So when you say "Mary in the cubicle next to me makes more than me," you're probably talking about at most a $50k difference, which is a rounding error for the senior execs. You'll be hard pressed to find a non-senior exec in any line of work (engineering, QA, project management, mid-level management) whose compensation even comes close to what the big shots are making.
Salary seems on the money, but equity is not - at least for a senior engineer, I have been offered around $60k * 4 (standard 4 year vesting - value at offer) typically in my short time around.
CEO's and managers get a lot of shit on HN, but there is a reason they make more money (in general, obviously there are exceptions, especially at tech companies). The main reason is that what they do is more valuable.
At most companies the coding required is easy and doesn't require much thought, low-skill = low-pay. The job of allocating capital and people to the highest ROI areas is much more significant to most companies' success than having the best programmers.
Yeah, I probably should't have said more valuable. It's more accurate to say that there a lots of people who can program poorly and for most jobs that's all that's needed. Far fewer people can manage others well or effectively allocate resources.
but that's not the whole story - a CEO is highly paid, but that's more likely that they've "proven" track-record of doing well in another company, and in order to poach them, a high salary is needed. But, _is_ the CEO responsible for their so-called record? or do they just have really talented employees and the credit for doing well is being rubbed off into the CEO?
Think steven jobs - he is credited with apple's success. May be that's true - he could have ruthless quality requirements. But it couldn't have happened without the engineers that _actually_ created the product. Why is it that the CEO gets exponentially more returns than the soldiers that fight in the trenches, doing the _actual_ work?
Bingo! Only megacorps and people who hire noobs recruit that way. Beyond a couple years its all ... "That guy I worked with who was an expert with statistics (by their standards)" or "That guy with the awesome github repos" or "That guy I contracted with once..."
And looking at his graph, I'm guessing his job description is skewed toward noobs. Something about the company, or the job descript, or working conditions or ...
This concept isn't strange at all, you're simply making the mistake of thinking that the pool of developers shrinks when it gets old, when the opposite is true.
"new" programmers, the ruby devs, the python aficionados and the PHP gods are becoming increasingly common.. we're at a golden age where it seems a large percentage of our generation is doing some kind of dev work- larger than any proportion of people in history.
it shouldn't be surprising that people with 20 years experience aren't common because not many people comparatively were vested in the industry 20 years ago.
To get a programming job that can actually use 10+ years of experience, you need to develop strong interpersonal skills and (to put a darker shade on it) learn some CS 666: Software Politics. At that point, the main obstacle to moving into management (needing to bring your interpersonal skills up to, at least, the 25th percentile) is gone.
In other words, if you're good enough at interpersonal politics to keep improving as a developer past the 5-year mark (which requires working people well enough to get on the best projects) then you're also good enough to move into management.
Moving into management is also just plain easier than protecting a specialty against the anti-intellectualism of business-driven engineering. You're a top-flight developer making $140k with a well-formed specialty (let's say that it's machine learning in Haskell). Your options are: (a) compete for the two jobs that exist in the world, (b) give up your specialty and move to a hedge fund, or (c) move into management, which tends to be specialty-agnostic, and lucrative. If you've decided that you're a manager from here on out, all those damn Java shops become options again.
Startups were supposed to provide an alternative, but these days the VCs act like bosses and being a funded CEO is a middle management position.
For what it's worth, the genuinely interesting fields of programming tend not to have the same age-related attrition. Machine learning researchers, and even serious engineers like Jeff Dean, are just starting up when they're 40. However, the business-driven engineering that 95% of us have to contend with is mind-rotting. Spending a week debugging someone else's VibratorVisitorFactory method, or figuring out what the fuck some ORM is doing, just causes atrophy.
We have age-related attrition (of both kinds; our most talented leave, and our less talented or just less lucky are punted) because we're a badly organized industry. We have a talent for which there's nearly unlimited demand, and yet we refuse to organize around protecting its interests with a union or a professional guild.
Also, organizations that use a "dual track" only underline the problem. Take Google. It's 100 times harder to become a Principal Engineer (Director-equivalent) than to hop on to the management ladder and make Director. It's 10,000 times harder to become a Google Fellow (VP-equivalent) than to make VP. There may be a noble intention behind dual track organizations, but their actual effect is to show how stacked the deck is against lifelong individual contributors in a world that is still "manage or be managed".
"It's 100 times harder to become a Principal Engineer (Director-equivalent) than to hop on to the management ladder and make Director. It's 10,000 times harder to become a Google Fellow (VP-equivalent) than to make VP."
I think it is obvious given total headcount that there aren't 10,000 times as many VPs as Fellows. And given I know of way more people going from IC to Management positions than the other way around, it seems many ICs effectively compete with folks on the Management ladder for Management jobs. Meaning even if equal effort was required to get to Director as to PE, I'd expect many would-be PEs end up as Directors because they decided to switch to the management track for whatever reason (e.g. because they realized they were already informally managing). Sure, one of those reasons /might/ be they thought career advancement was easier on the management track, but what proof of that do you have?
To assert it's 2 orders of magnitude harder to become a PE than a director, and 5 orders of magnitude harder to become a Fellow than a VP, I think you're gonna need more proof than that.
Actually, if I look at tech field as a whole, it seems quite realistic that there are 10000 more VP-level positions across the many companies than the Fellow-level positions, of which 99% of companies don't have any at all. My home city likely has thousands of software-related VP's, but has 0 Fellow-like positions, they're very uncommon globally.
Quite literally. If I want to be a manager of a sizeable bunch of programmers, then that's a popular job that every company (from small tech companies to multinationals selling soap or loans) will have a bunch of and most of them probably have a vacancy right here and now. If I want a Fellow-type role, then my options can be counted on my fingers.
Correct. Also, engineers are promoted "confirmationally" (meaning, after they're performing at level X) and managers are promoted "aspirationally" (when people think they should be able to reach level X). Google prides itself on promoting only confirmationally, and engineers like it that way because it's more meritocratic. The problem is that product people and management still get aspirational promotion, and that's a huge leg up.
Over time, they advance a lot faster than we do. We have to take on above-level responsibilities (which is politically dangerous, because people start to wonder if you're neglecting your at- and below-level job duties) to advance. They don't.
This is a really good point. As someone who wrote software for over a decade, then moved to the business/management side, I can tell you that on the business side (and to a lesser extent, in engineering management), there is far more opportunity to "punch way above your weight class". In fact, many places expect you to.
Product people and management - at least at Google - are still promoted confirmationally - you get formal management responsibilities when you've been a tech lead for a year or two and have exhibited the qualities (concern for other peoples' careers, ability to delegate, humility, emotional stability, ability to see multiple perspectives, commitment to Google and its values) that Google wants to see in its managers.
Confirmational promotion may be true for the first leap into the management ladder, but not after that. Aspirational promotion makes sense for management, since it's really about social status rather than achievement anyway.
concern for other peoples' careers, ability to delegate, humility, emotional stability, ability to see multiple perspectives, commitment to Google and its values
You don't really see these among the people in power. Stack ranking? Secret "calibration scores"? Closed allocation? Blind allocation? People getting PIP'd for having 20% Time projects?
It's interesting how you and I can see the same facts and interpret them completely differently, perhaps because I know the reason for these practices and also don't have an axe to grind about how they've personally affected me.
Stack ranking is there to smooth out mistakes in your manager's judgment. One of the big problems I saw in the promo process is that people who quietly help out a lot of other people but don't work on their manager's pet projects will get overlooked by their manager at promo & calibration time. Stack ranking is there to counteract this: if you have helped out lots of teams, you will appear high on many other peoples' stack ranks, sometimes even higher than your manager, and promo committees take this into account when considering promotions of people who don't have their managers' blessing. And it generally works, too: I was promoted on the strength of peer recommendations (I had quite low calibration scores, largely because I've never really cared what my manager thought of me), and I know several other friends who were as well.
Calibration scores are there to prevent the problem where a manager games the promo system by giving super-awesome assessments to all of his reports. He has every incentive to do this: it raises his own prestige within the organization to have a "super high performing" team (even if it's only high-performing because he set the goalposts low), and engenders loyalty from his reports. Calibration forces him to justify his scores to his peers, all of whom have an incentive to inflate their own reports' scores relative to him.
Closed allocation does suck, but in my experience Google didn't actually have closed allocation. If you had a solid track record and a team willing to accept you it was remarkably easy to transfer to a different department.
Blind allocation is a consequence of Google's "hire for the company, not for the team" practice, which is a way to prevent empire-building and keep the hiring bar high. When teams do their own hiring, every manager has an incentive to take a marginal candidate, because his team is probably overworked, and one mediocre employee is better than zero employees. Over time, this would make the whole company mediocre, which is why Google has instituted a uniform hiring bar across the company. Blind allocation is an unfortunate side-effect of this; most people would rather know which team they're going to (actually, if you're in demand by multiple teams, you can get this - I spoke on the phone with my eventual manager before accepting my offer letter), but that's hard when you're not interviewing with one particular team.
I have never seen anyone get PIP'd for having a 20% time project, and I had like a dozen 20% projects during my time at Google, one of which became a major open-source project (and ultimately consumed like 50% of my time). I have seen people get PIP'd for not doing any useful work on their main project, but that's because you're hired to do a job and you better do it.
It's not just about the number of slots. It's also about the quality of people.
There may be some jokers who are Principal Engineer at Google, but I never met any. In fact, I met plenty of great engineers who were "only" Staff. So my impression is that you have to be a really good engineer to make Principal.
However, Google's management is below-average by the standard of large tech companies (how else do you explain its use of stack ranking?) and its product team isn't especially good either. I never met a Principal Engineer or higher of whom I knew I could do his job better than he could, whereas I met plenty of high-ranking managers and product people for whom that was obviously the case, and not just to me.
The management ladder, at a tech company, is where you go when you get tired of competing against the best in a field, and prioritize high salary and title. And there's absolutely nothing wrong with that. People grow up, have families to feed, and take the big-fish/small-pond route. (At Google, that's product or management-- clearly not engineering, where there are plenty of very big fish.) Good for them. It's probably the right decision. It's hard as hell to justify, say, a $200k salary as an AI researcher when absolute badasses are content with $150k. It's much easier to go into the business mainstream where absolute jokers take $500k, by age 40, for granted.
> the business-driven engineering that 95% of us have to contend with is mind-rotting. Spending a week debugging someone else's VibratorVisitorFactory method, or figuring out what the fuck some ORM is doing, just causes atrophy
This is the dirty little secret of corporate IT departments, that 95% of the workload is cleaning up other people's messes. The "engineers" promote themselves into the work "designing" and "creating" new systems, then use that "experience" to get a job doing the same somewhere else. Then the "programmers" come along and actually make those new systems work, spending 3 months debugging, then 3 years on after-hours standby support.
I'd say it's an interplay between the following issues,
1 - Writing code is a young man's game. Older devs get one too many platform/language iterations behind the curve so can't apply for as many jobs - obviously not true for everyone, but could account for something
2 - Older devs are tempted into management, and so write emails for a living instead of code
3 - Older devs may have more commitments outside of work, so can't take on jobs that demand long hours in the office and long hours at home keeping up with tools and trends
4 - Huge numbers of people are starting to realise you can make good money sitting on your arse all day and writing code, so there are lots of them applying for jobs with low experience - that's not to say many of them will still be trying a few years from now
5 - All the best experienced older devs don't apply to job ads, they just move easily between contracts using their network
A young man's opinion :-) Speaking as someone with 33 years experience writing code at a high level, I have lost nothing over the years except the attitude that only young people can code. What matters is desire to learn and keep ahead of the curve, and continued enjoyment of writing code. I've seen people lose that at every age group.
I knew one young guy in particular who prized indirection over all things. Debugging his code for something relatively simple involved jumping up and down at least 10 rungs of indirection or "abstraction" and was by and large a nightmare to extend or maintain.
But, he always, without exception exuded confidence and delivered new features quickly. He was hired as a senior architect at several startups before he turned 25.
2 - 4 agree with my experience, but you could not be more wrong about #1. The developers that I see with problems adapting to new developments tools and paradigms are younger people who only know 1 framework. Us old timers who are solid in the basics can pick up a new language fast and easy.
I did qualify #1 with "obviously not true for everyone, but could account for something". And I speak from some experience too. I'm 34 and have lived through the platform I was invested in disappearing almost over night and having to quickly get up to speed on some new platforms and languages over the course of about 6 months while I supported myself. It was quite exciting, but also quite stressful and tiring. If I was faced with the same event again I think I might opt for defaulting to a more managerial position rather than try to become expert in a new area again. Everyone's different of course, but I didn't make the point lightly or naively.
Honestly, once you learn 5 or 6 languages/frameworks they get really easy to learn. There is not a lot that is truly new with different frameworks, just different combinations of the same things.
Sure, frameworks are easy to pick up. But becoming expert enough in a new platform and/or language to walk into top global companies and charge exorbitant freelance day rates for highly technical work and consultation? Personally, I don't find that "really easy" - and I don't think anyone should.
This post reminds me of the Oscar Wilde quote, "I am not young enough to know everything."
In reality, there are plenty of excellent older developers around who are still building stuff. They just aren't building it at the kind of company where you reach the most senior recognised development position after as little as five years, you've run out of interesting problems to solve in half that time anyway, the management think productive developers are the ones who work so many hours that they can't have a family and/or social life at the same time, and the junior developers think grandpa can't program with anything invented since COBOL.
Meanwhile, look at the guru everyone turns to in a small-to-medium sized shop, the top-billing freelance/contractor/consultant crowd, the disproportionately successful founder demographics, and the guys who are lecturing everyone else with "Fellow" in their title at the bigger technical firms, and you'll find plenty of places where the very experienced and capable hackers are still plying their trade quite happily.
"In fact, looking at the salary tables, there actually isn’t a level of higher than 5 years."
That seems like it explains the OP's experience right there. Why would honestly senior devs even consider jobs well below their salary range? My shop is almost entirely very senior people with 10-20 years experience, but we pay accordingly.
1. There is just a smaller pool of 20+ year devs because
20 years ago there were less developers, smaller pool of jobs etc. it should be possible to work out the max size of that pool from ONS / job data and get a ratio for today.
2. What is your job criteria? Permanent position? Wage is low compared to say contract or freelance rates? Advertised in the public job forums?
3. Lack of interesting work or autonomy.
I am a Dev with 15+ years - (I dropped out of CTO position to go back to full time Dev work). And I cannot imagine taking a permanent position unless it comes really close to a contractor wage. And I would prefer remote working.
I will be surprised if I ever find a 150k+ remote permanent position. But if I did I would expect to see only 40 year olds on the short list.
And I am pretty unusual in that I still job hunt in the open - actually applying for jobs. This is not an issue for the large majority of people I know who use their "networks" better than I do.
So in short a good Dev (and having lasted 10-20 years they cannot be idiots) is not goin to be looking for a job, if they are, they will not be looking where you advertise, and if they do look there, your rates will be too low, your job conditions off putting and finally you probably tell people what and where and how to work.
If you want old devs, pay more, micro-manage less, and fish in places that are recruiter unfriendly.
59, programming for 42 years, the last 35 professionally. Here on HN for 7.5 years.
I've always been very busy (one of the main reasons I don't post on HN as much any more). I don't have a resume. I'm not on LinkedIn. If I ever ran low on work, it would probably take me a day or two and a few phone calls to find something.
I don't work on anything unless I find it incredibly compelling. I write applications. I've seen tons of different technologies, many old ones I still use. But I also get very jazzed learning new stuff and incorporating it into my toolbox.
I know tons of programmers in my age group. I'd classify them into 2 groups:
25% - just like me. You don't see our resumes because we're very happy building cool stuff and rarely look for work. We've also seen it all and can smell something we're not interested in a mile away. You don't see us at many events because we're so busy with work and life, we only pick the ones with the most promise of bang for the buck. Most of the programmers I know in this group would make phenomenal additions to many startups, but don't recognize this as a compelling alternative to what they're already doing. The best way to engage us is to seek us out, make friends, and share some stories about something cool you're working on.
75% - one year's experience 30 times, not 30 years experience. Unaware of modern technology. Couldn't write Hello World in anything other than BASIC, FORTRAN, or COBOL (and would probably misspell 50% of the words). No imagination. Limited ability to visualize the possibilities. Hiding under the radar in some enterprise. You don't want these people.
"one year's experience 30 times, not 30 years experience." is a fantastic sentence and I'm stealing it. I've seen too many developers to whom it applies, and it's a great way to express that.
An HR manager said this to my mother's face once. Please consider people's feelings before using it. It's likely to be interpreted as "you've wasted your career and/or life".
It's not necessarily a bad thing to hear something that sounds bad. Even after years on this planet people can rediscover themselves and start a kind of life they didn't even know it exists. Not telling people who are bad that they are bad is a concept I have a hard time to understand. Instead of worrying about feelings why not worry about really being this better person people can't complain (as much) about?
> Not telling people who are bad that they are bad is a concept I have a hard time to understand.
You might be wrong, and you should factor that in. Perhaps you're not helping people towards a bright new future of self-realization, just condemning them out-of-hand based on your own limited experience or misconceptions? (Not using "you" to imply you do this, btw.)
I really wish English would develop a pronoun similar to the German man. I guess we used to use "one" in a similar sense, but it sounds really stilted now.
> Perhaps one isn't helping people towards a bright new future...
I myself have the experience of overestimating myself drastically many times. Also there are a few things I got good enough in. Therefore I think, when you get feedback and the person giving the feedback is wrong due to their lack of skill, not yours, then you are not really hurt. The only thing that is harmed is your impression and respect for that person. When you are sincerely hurt, it's often you who's lacking.
Never the less it's important to think carefully before criticising others. You are absolutely right and I'll try to keep that in mind next time I want to tell someone how bad they are.
No it's not a bad thing. Problem is that way too many people use this as an excuse to be an asshole. Remember that no one likes to be criticized. If you need to do that, you owe the person the basic human dignity of considering their feelings and being diplomatic.
Oh I would never use that kind of language to somebody's face. It's blunt, and usable when describing (for example) why you wouldn't hire a candidate after a job interview, but not as a form of criticism. There are better ways to bring up the intention to the people themselves.
It is true though. Some of my friends work for huge corporations, their job title sounds very advanced but in reality, they are repeating very narrow task over and over again for years like a trained monkey.
The worst part is that most people don't recognize this, they live in the bubble, being proud of themselves they know it all. Unless they lose this job and suddenly realize they are basically unqualified for anything outside of their narrow field of expertize.
Either get lucky, never lose that job, so you don't get your feelings hurt when looking for new job. Or get out of the bubble before it's too late and start challenging yourself with new opportunities.
Are you one of the people who use it to describe serial contractors or "job hoppers", or are you one of the people who use it to describe people who've been iterating on the same project/technology system for X years in a single place?
That's the problem with the generalization: it's too general, can be applied to almost any normal career, and isn't really a good heuristic to use when analyzing somebody's work experience in most contexts.
I'd use for people who claim X years of experience, but haven't made any progress in ability in those X years. You can spend 30 years evolving, or you can spend it standing still and only moving when you have no other option. This kind of phrase is for the latter kind, doesn't matter if they're serial contractors or have been working on the same project for 30 years.
I for one would welcome the opportunity to find and learn from people like you. If you guys don't hang out at the latest hot technology meetup and you don't change jobs that much (or that publicly) where does one go to seek you out and make friends?
>>75% - one year's experience 30 times, not 30 years experience. You don't want these people.
You are basically saying 75% of the developers after certain age are useless. I don't agree or disagree with your statement . Just startled. What does it say about software development as a career ? Would you say the same thing for lawyers or doctors with 30 years experience? This is depressing.
Yes and even among the 80% who are useless, they are useful 20% of the time. I work with a few people like that... They either need a challenge, an end date or other creative ways of being motivated.
It's called the Pareto Principle(http://en.wikipedia.org/wiki/Pareto_principle) and it does not need to be a symmetric 80/20 split. 1% of the people own 50% of the wealth is one other application of the same math.
That's a somewhat naive assumption and sentiment. I've known plenty of devs around my age (40-50 yrs) who are really very bloody good at what they do and yes...shock horror...they do it for the money. Otherwise what or who will finish the paying the mortgage, help with paying for your children's further education, top up your pension, etc, etc.
Sure they may not have the "passion" but it also doesn't mean they're grinding away through their days. As I said in another comment, your priorities change and your perception/measure of job satisfaction changes as you get older. Mine certainly has despite being a techy and developer to my core.
Unfortunately, it is real. I've interviewed "senior software engineers" with "12 years of C++ experience" who could not tell me the difference between an int and a char*.
I think that after 30 years you're left with only the very best and the very worst still programming. Everybody in between have probably drifted of towards other responsibilities.
You also could uncharitably argue that 75% of developers of any age are useless. Furthermore programming has a much lower barrier to entry than being a doctor or lawyer and it's much easier for a terrible programmer to hide their terribleness for 30 years than it is for a doctor or lawyer.
> Would you say the same thing for lawyers or doctors with 30 years experience?
I don't have a reference for this, but I remember reading that other than surgeons, doctors' skills decline the further out they get from medical school... of course that's doesn't take into account a lot of the other important parts of being a doctor like how you interact with patients, etc.
I'm 47* and I've been around a bit (dotcom era startups to banking and telecoms) and I'm familiar with the 75% mentioned. There is a type of programmer that works away in blue chips turning up to work on time, doing what's asked of them and then knocking off at half five.
Sure they maybe repeat the same one year's experience year after year perhaps with some technology transitioning years from COBOL to VB to VB.NET or C# or maybe Java, that kinda thing. They'll know Oracle or MS SQL or DB2 well enough to make stuff work, or maybe they call into a message switch (with a pre-wrapped library for their language/framework) to read/write their LOB data.
They work there for years and years collecting their salary and annual (if there are any) bonuses and many will be the last lucky few to hang on to a decent occupational pension, in return to knocking out code to meet business requirements. But they do it well, they know their line of business apps for their organisation's market sector and "how things are done". These are conservative people working in conservative business environments.
The thing is who cares? Many of these folks have interesting lives outside their corporate bunkers which involve travelling the world, renovating houses, flying small aircraft, model trains and enjoying friends and family...and much, much more.
It's just a job and I'm sure these folks will have their own measure of job satisfaction which will be different from ours. It might not be as exciting as the seat of your pants local startup but it pays the mortgage and provides reasonable financial security.
Sure there are no absolute guarantees about job security, but I live in the UK and we're at a lot less risk of being fired for no reason other than "at will". It takes quite a bit of legal effort and cost to make employees redundant, especially in finance where you're fairly likely to be a member of a union (mass redundancies have to be negotiated and consulted on and redundancy payments agreed etc).
It's not depressing, it's just that these folks have different priorities in life.
Scott Hanselman described some of these folks as "Dark Matter Developers"[0].
* To address the Ayende's question, being 47 I'm probably an "older dev" I've worked for the same company since 2003 (ISP/Web Hoster), I like the work, I'm happy there, they treat me well, I work from home, it's (fingers crossed) reasonably secure. It'd take a really seriously good offer to make me change employers. This is not to say that I don't keep abreast of the latest tech and frameworks, the fact that I follow HN should make that abundantly clear; for example we're looking at how we could monetize Docker for our clients - first heard about here.
I can understand this mentality, but cannot sympathize with it. Personally, I refuse to treat my job as "just a job." I want it to mean something. I want to look forward to coming to work everyday. I want to feel like the work I do makes a difference, as opposed to fizzle out and die in the massive corporate bureaucracy. I hate the idea that I'm just spinning my wheels, looking busy, collecting a paycheck. Doing so is just... soul crushing. That's the best way I can describe it.
I'm actually literally 15 minutes away from giving my two-weeks notice. Just waiting for my boss to come in. I'm glad I had the chance to put my feelings in writing somewhere other than my resignation letter because I wanted to get them off my chest but not burn bridges. Thank you teh_klev. :)
> Personally, I refuse to treat my job as "just a job." I want it to mean something.
Well, some people don't build model airplanes after work. They raise families, work at food banks, take care of their elderly parents, sponsor people in AA, and so on. Ideally, every waking minute of your life will make the world a better place, but it's a luxury to expect a career that really means something.
Good luck on your career decision. It sounds like you've already made up your mind, but in general it's a good idea to talk to your boss about the soulcrushingness of work well before you want to quit. It's possible that she would be willing to give you more variety, responsibility, or freedom to keep you around.
I think one way to do this is to get a sense for what are sometimes boring corporate missions that actually do have a huge impact in the world.
I remember when I was early in my career I talked with an older engineer who had done lots of time in the insurance business and I said something like "I don't know if I could ever work in something so boring".
He replied "making sure that claims are paid out correctly can be the different between somebody having a home or going homeless, or somebody being able to feed their family or not having transportation at all. Keeping in mind the lives of the people you're ultimately serving keeps me motivated even if the day-to-day is boring"
It's advice I've always kept at heart and it's been helpful.
Personally, I refuse to treat my job as "just a job." I want it to mean something.
That's fine for you, and quite a laudable position to take.
But the reality is, in a great many environments, across the board -- in blue chips as well as in startups (often quite insidiously so) -- as soon as you start personally investing in your work, you start taking on considerable risks. It means, almost by definition, you're going to start butting heads with people -- or at least take on a heavy risk of appearing to others like you're butting heads with them, even though you're not. Because they'll have to start justifying their own decisions, and exposing their own lack of depth and experience. And that's really, really threatening to a lot of people.
The safest route, by far? Keep your head down, and don't become "personally invested" in your work. Otherwise you risk becoming (per the Japanese proverb) "the stake that sticks up."
Be careful doing this. One of the things I've done to shoot myself in the foot, career-wise, is to repeatedly take more interesting jobs at lower salaries. As a result, I don't have an increasing salary history and expectations. I was blown away when I discovered that the good salary I thought I had was 20% lower than the average in my location for my experience.
I was once like you, and I still am a wee bit. There's a era on my CV where I jumped ship every ~18 months until I landed in my current role. I did this because I wanted to experience working in different market sectors and then when I got bored I moved on.
The present role, where I've been for the past 11 years, is very enjoyable and gets me out of bed in the morning...but paradoxically I do treat it somewhat as "just a job". I have to do that because otherwise I'd just burn out, and that happened once before and it nearly killed my development career.
But anyway, I wish you all the best and hope the future's bright for you.
"It might not be as exciting as the seat of your pants local startup but it pays the mortgage and provides reasonable financial security."
I'm skeptical of the "financial security" claim. Obviously this is not true in the U.S., where there is zero hesitancy to lay people off and very rare to have legal recourse as an employee when laid off.
But even working in the U.K. or other nations with stronger worker protections, you are still vulnerable to your employer hitting hard times. Companies can very quickly go from profitable to out of business or close to it, especially where technology is involved. Not having skills applicable outside of your current job does not seem like a secure strategy.
> I'm skeptical of the "financial security" claim.
I guess it depends on how you define 'reasonable financial security'. As someone in the US, I define financial security as having a couple month's pay in the bank, and a retirement plan of some sort, while making enough money every month to pay the mortgage and the bills and have some left over to spend on entertainment, then it is doable, even in the US.
A mediocre developer who has a bit of experience, making $75k/yr anywhere but San Francisco or New York, could afford to be in the situation I describe.
What does 'reasonable financial security' look like elsewhere?
>"Companies can very quickly go from profitable to out of business or close to it"
Sure, but types of companies I'm talking about where these folks work are big blue chip FTSE 100 companies. It's a very rare event where a company the size of Lloyds or Barclays or BAE snuffs itself out of existence.
Ok sometimes you get a perfect storm such as the 2008 banking crisis but even then the UK government and others stepped in to prop up the likes of RBS, Bank of Scotland and Northern Rock. No-one turned up to discover the doors locked in the IT department and life very quickly went back to business as usual.
Down here in Los Angeles the talent pool is very shallow, now we are starting to see the first companies offering equity down here that is meaningful since 1998, seriously. If I hadn't had to go the last 14 years without equity I wouldn't still be coding pushing 43, I'd be an angel investor, basically making a living helping to fund companies. With no equity life is a kind of living hell, no ability to have the normal human experiences of say starting a family, instead its a twilight world of paycheck haircuts and forced unpaid overtime, that leaves you feeling permanently like a zombie as everywhere you turn, its the same demand, everyone here wants 100-140 hours a week, offers you 40 hours pay then tries to haircut you back to 20 hours pay, management through extortion is common down here, either work 100 hours for free or you don't see your next check.
Sounds like LA is a pretty crappy market for employees. Move someplace with a reasonable cost of living and some big corporations, stick with corporate-friendly technologies, and it's not too hard to pull a six-figure salary in an easy 40 hrs/wk.
Don't overplay the importance of equity. It's like a lottery ticket - you can't win if you don't have it, but the chances of winning big are still remote.
I've seen this stated this as another occurrence of the 80/20 rule, which close enough to 75/25.
It doesn't really have anything to do with after a certain age, either. Some percentage %x of your 5 year experience programmers haven't really moved much past their first year at all.
To be fair, I think of it really as a series of plateaus, not a hard and fast rule. People get stuck at a level of professional development for all sorts of reasons, internal and external.
The thing is, it gets more noticeable the longer time period you are talking about. Comparing two people with 3 years experience where one of them hasn't really progressed past the first year or so, and the other has 3 solid years is a lot different than comparing two people with 30 years experience where one of them hasn't really passed the 10 year mark of development and the other has a solid 30.
And "useless" is the wrong way of looking at it. There is a lot of use for a developer with 5-10 years of experience, so long as you don't expect them to perform like a developer with 20-30 years experience. This is true even if they have 30 years on paper, which can be a bit of sticky point w.r.t compensation, but that's a different issue.
This absolutely happens with lawyers and doctors, by the way. A real difference is that a doctor has been forced into a good 10 years of professional development before they take the training wheels off, so the base level of competence is much higher. Some of them don't progress significantly beyond that for the rest of their careers, but that doesn't mean they aren't productive for that whole time.
As an industry, I do believe that software development is pretty weak on developing talent internally, particularly beyond the entry level.
Lots of employers want to pigeonhole you in the "same year of experience, 30 times" group. You can sometimes tell this during the interview; one warning sign is that they want someone with their exact technology stack experience they are using right now.
But I've always thought a team of generalists beats a team of specialists, which is swimming against the current tide.
I don't think this is as simple as specialization vs. generalization.
Considering nearly any situation your team encounters, junior people, experienced people, and very senior people are likely to take different lessons for it, because they have different perspectives on what happened and what could have/should have happened.
To me, a "same year of experience, 30 times" person is someone who runs into similar situations over and over, but fails to grow in how they understand and react to them. This is true of architectural issues, interpersonal issues, schedule management issues, ... everything really.
Technology stack isn't so important here. If anything I expect the experienced people to pick up a new stack faster, if they've done this before, all else being equal.
I'd expect insight and ideas from a 20+ year developer I'd never dream of asking a junior (< 5 years), and if you don't get them - you're probably looking at someone who has repeated many of those 20 years.
I think no one is like Ed. There maybe be 25% of programmers that have a long standing experience, even with the new tools, but they don't share wisdom like Ed does.
Ed why can't you have your own company? Why can't you be the one who is hiring or at least teach others how to hire. I bet you can smell a talent from 1000 miles away - even if someone did not finish a good school; the world of software engineering would make so much more sense.
[EDIT:] I imagine a job interview; an interviewee says: "I didn't program this but I did program something more difficult"; interviewer makes a frowny face; Ed comes round the corner, puts his hand on the interviewer shoulder and says: "He did not call you stupid; he just said he is ready for the challenge - he has the experience".
1. He doesn't take a job unless it's challenging. They don't post on HN or go to conferences because they are busy with so much work and life (hence no wisdom sharing).
2. If he is a freelancer (which his post makes him sound like), than he does own his own company. It's just not a software startup looking for VC or articles in big magazines.
3. He's not hiring because he wants to program, not do HR. Also, Michael Jordan can't pick players for shit and he's the best BB player in history. Skill in a job doesn't mean you can find talent, and the level that he would jump and say a person has talent is probably the level where said person doesn't need recognition to know their skill.
4. If a team does a good job outlining job requirements and interviewing, they too can smell talent from 1000 miles away. But interviewing every applicant with a 2.0GPA from a bottom tier school takes a lot of time and most often does not reveal a hidden gem. Regardless of what their potential is.
I think it's interesting people would assume so. Good programmers don't always make good managers. Or business owner. The same reason why not every good carpenter runs a business and manages a team of people. Highly skilled experts are probably disciplined enough to freelance or work as a contractor. But the skills necessary to grow an enterprise are often a very different set of experiences outside of what they do for a living.
Or they simply aren't interested. They are happy with what they do.
On the other hand, seasoned programmers do make great interviewers. And a good interview often include them in the process. Their insights are very valuable.
Also as a sidenote, if there is no senior/lead developer during your interview process. Or the people do not appear to have a clue. Run. Unless they are going to hire your as the senior/lead, and they admit they lack the knowledge.
I'm like Ed! Except I do engines, libraries, network and backend code, including embedded stuff. But I don't have a resume; don't apply for jobs; don't need to look for work because it looks for me.
I've owned a company but its lonely, so now I earn less but work as a peer in somebody else's company.
I own my own company too, and the loneliness is a very serious issue. I miss having someone else to bounce ideas off of. And often it feels like I'm the only one that cares whether I'm working during a given 1-day period or not, which is very difficult for me sometimes, particularly when the work isn't very challenging.
one year's experience 30 times, not 30 years experience.
This exactly and it happens at all ages. I interviewed someone not long ago who had 5 years experience. It turned out they learned their job in 3-6 mos. and just repeated that same job for 5 years. I was amazed how little else they knew.
75% or perhaps 85% of programming is CRUD applications. It's very easy to fall into the trap of thinking you're advancing technically when in fact you're just becoming very knowledgeable about a cul-de-sac.
Most programmers don't take this path by choice. They just don't see it as its happening. You have to pro-actively manage your developer career if you want it to grow over the long haul.
Why is this comment getting upvoted? It's pretty insulting and arrogant to paint a massive swathe of our community as stupid, unambitious people who never progressed past hello world.
Let's remember that in those 42 years the number of BASIC, FORTRAN, or COBOL jobs has diminished through to almost nothing. The last person I met who described themselves as a COBOL programmer was about 10 years ago, and even they said they did it for the money as there were so few of them left.
So the programmers edw519's knows have in all probability probably managed to switch from COBOL to to VB6, then Java or PHP and then maybe even C# or Ruby and are probably nowhere near as stagnant or unambitious as he's portraying them.
It's that or he hangs round at COBOL programmer's meetups.
I felt the same, but I've come to realize that the comment you take issue with perfectly encapsulates the tech industry. A no holds barred race to the bottom. That's why work conditions, salary, stability and prestige are nowhere near comparable industries such as finance, heavy engineering, medicine, law, etc.
Something about programmers makes them think they are all the destined one true hero, and as a result, programmers tend to disparage and disrespect their own peers, at great cost to themselves.
My favorite is this guy [1], who was literally adding billions of dollars of revenue for Goldman Sachs, but was getting paid peanuts. When he left to pursue more interesting work (not for salary!), they brought the FBI down on him.
I don't call myself a programmer, computer scientist, or any such low class term anymore. I'm a consultant, and I don't associate with self-deprecating professionals who denigrate their own fields.
Humans are primates, and we form status hierarchies. Proudly exclaiming that your tribe is at the very bottom is the definition of stupidity. Good luck to those that do, I sincerely wish you the best. But when your salary stagnates, you're asked to work 80hr weeks without overtime, and you get no respect from management, maybe its time for a little self-reflection.
There is a reason software dev is such a low status profession, and it's not because we're "nerds". It's because we self-denigrate and self-deprecate like no other profession on earth.
EDIT: It is worth reading this article if you'd like some more details on this problem, from a fellow HN member who has dedicated a lot of time to thinking about it [2].
> That's why work conditions, salary, stability and prestige are nowhere near comparable industries such as finance, heavy engineering, medicine, law, etc.
As a combination or individually? Medicine is about the only one in the list that's strong in all of the listed characteristics. "Heavy engineering", to my knowledge, doesn't pay much more, finance doesn't seem that much more stable, and law certainly has good work conditions for those at the very top, but not for the newbies.
Actually in his case, his worst enemy was himself. He did not accurately value himself within the organization either politically or economically [1]. He thus paid the price.
The programmer types were different from the trader types. The trader types were far more alive to the bigger picture, to their context. They knew their worth in the marketplace down to the last penny. They understood the connection between what they did and how much money was made , and they were good at exaggerating the importance of the link. Serge wasn’t like that. He was a little-picture person, a narrow problem solver. “I think he didn’t know his own value,” says the recruiter. [2]
You should take with a grain of salt any assertions you see that Aleynikov was bringing in billions in revenue. The sub-industry he worked in doesn't see those kinds of numbers from any individual's effort.
Please elucidate exactly to which sub-industry Goldman-Sachs belongs. I'm all ears.
Last time I checked, banks are the most powerful industry, and GS is the most powerful bank[1]. Aleynikov was single handedly building, deploying, maintaining and updating Goldman-Sach's HFT framework.
If you believe that key people like Aleynikov don't make the HFT industry profitable, a certain Medallion Fund and a Dr. James Simons would beg to differ.
I don't know of any big software companies getting government bailouts after gambling with money they scammed from average citizen . Once you can get away with that, and not have a single executive do jail time, come back to me. Every industry is subservient to the whims of banks. They'll tell you otherwise, but actions speak louder than words.
Aleynikov worked for a specific trading desk at Goldman-Sachs, which carries out high frequency strategies in some equity markets. High frequency equity trading is the sub industry I'm referring to. Since you're apparently confused about this: Goldman is a large bank. It has many lines of business, same as Microsoft produces many software products. Some of Goldman's business endeavors fall within the US high frequency equities space, but you'd be making an enormous error of scope if you confused one of their high frequency equities desks with their entire business.
I call shenanigans on the claim that Aleynikov was single handedly running the trading infrastructure for even a single one of their desks. That's complete nonsense.
As for Jim Simons: It's generally believed that the main cause of Renaissance's success is that they have a couple hundred of the world's smartest people all working together. It's not a 'key man' shop at all. (Also: You seem to be suggesting that Simons himself did all the work. The fact is that he spends most of his time smoking cigarettes and handing out wads of cash.)
> Let's remember that in those 42 years the number of BASIC, FORTRAN, or COBOL jobs has diminished through to almost nothing.
That's true, but it's a hockey stick / logarithmic thing. When I started coding, the BASIC and COBOL technologies were waning-- still bringing in paychecks, but it was clear that their peak was a few years in the past.
There are lots of people right here on these forums using technologies today that are in the exact same situation. Citing these examples by name usually erupts into a flame war, but for sake of illustration, a good example might be PHP.
PHP's not there, no-one's been able to replace its ease of use and it will remain until someone does. Also it's had some good face lifts recently. There's plenty of new code being written today in PHP.
Let's remember that in those 42 years the number of BASIC, FORTRAN, or COBOL jobs has diminished through to almost nothing. The last person I met who described themselves as a COBOL programmer was about 10 years ago, and even they said they did it for the money as there were so few of them left.
They haven't really diminished to almost nothing, they have just been outsourced to Indian shops. You'll have a really hard time finding Westerners who still write those languages, but Indian firms are happy to step in and fill that void, maintaining the hundreds of millions of lines of COBOL code still in production at Fortune 500 companies, on a contract basis.
I build cool stuff, I have kept up to date on new technologies, and languages. But I don't have a big network of people who "need a website" and I don't build websites, so I don't have people constantly calling me offering me work. That doesn't make me someone who has "done the same job for 30 years".
My skill is not marketing my skills on a freelance basis. My skill is in engineering.. and a variety of others (like startups, people management, etc.)
I hate 80/20 like splits that are so binary.
Part of the problem here is that it's very difficult for many people under 30 to imagine someone over 40 is not falling into your %75 category. They already think that most people can't do fizz buzz.
I once had an interview with a 20 year old with 2 years of experience. HE was the head of development at one of those startups that raised millions on kickstarter.
He asked me the question: "How would you do feature X in language Y?". I pointed out that you couldn't do it in language Y but that you could do these other things that were similar. He then said " In language Z you do this and that's the answer I was looking for". But language Z is not the same as language Y.
Flubbing a question? No problem. Everyone can get nervous. Giving a BS question and then using the "wrong" answer as a reason to not hire me? Suspicious. So, why would he try to do that? Well, it turns out we were on a video call.
Who wants to hire someone old enough to be their dad? I understand that sentiment.
But the Software Industry hasn't developed a pyramid of job titles you can climb.
I am finding a bit difficult to understand the "I am not good at networking" angle. Assuming a job change every 3 years, and 2 people to vouch for you at each, one would have a 10 people "marketing team" after 15 years. I am not talking about schmoozing with higher ups here; just impressing peers with the quality of work.
There are introverts, and then there are introverts. I can easily see somebody who is particularly introverted not developing a deep network after 10, 20, or even 30 years of experience, simply because they are very introverted (or socially maladjusted; the two are different, but in a world run by extroverts it is arguable that they may as well not be). I'm not that introverted, but I'm introverted enough that it is by sheer luck I have more than two people from my first few jobs I could ask for references or even directly for work. My last couple of jobs, however, have been another matter--I "got over it," as they say, and have put more effort into networking. I even recently developed a connection completely outside of work!
Leavnig that aside, sometimes people move or switch focus or have to take jobs at crappy "body shop" companies to make ends meet during a bust, etc. Hence the quality of the network isn't necessarily good enough to have the kind of "I need a job, whatcha got" connections you mention.
What am I supposed to do exactly? Call up some co-worker from 3+ years ago and say "hi, remember me? Can you get me a job?"
I don't have a network. I have friends and I have colleagues, but I don't really have anyone that could get me job leads (maybe a couple of my friends)
Or you could call them up, ask them how they're doing, meet them for a coffee, then ask if their company is hiring for X and if they could refer you. At the very least this gets your resume put in front of the hiring manager and lets you bypass the HR nonsense. At the very worst, they say no and you go back to talking about his dog or whatever.
Keep in mind that most companies offer referral bonuses and programmers like to work with people they know and trust. I used to avoid doing this like the plague because I thought I was being a burden to people I consider friends. In reality, asking for a referral is mutually beneficial for both parties.
> Or you could call them up, ask them how they're doing, meet them for a coffee, then ask if their company is hiring for X and if they could refer you.
Every single one of my former coworkers, managers, and other people I dealt with on a regular basis is still at my former employer or retired. How do those contacts help me?
Quit overthinking it an go for coffee already! They know people; they hear about projects you don't; pick their brains. They will be glad to help, because they obviously are NOT interested in leaving their current job so you're no competition.
That might work if my former employer was not a defense contractor. Unfortunately, I left in large part because my co-workers seemed to have little clue as to what was going on outside their own little bubble and little interest in correcting that.
That's a perfectly fine reason for leaving, but you're the one who wants/needs help, so it could serve you well to temporarily drop the judgments & assumptions, and just give a few of said ex-coworkers a try.
If it turns out none of them can help you, you're out an hour or two and the cost of coffee.
Fair enough. You could go to meetups, go to conferences, engage other devs on social media. Send thoughtful emails to people who know people. Ramit Sethi has a couple of blog posts showing email scripts for getting busy people to say yes to coffee[1][2].
A longer term alternative is to make cool things and tell people about them. Write some open source or a side project and post it to HN. Lather, rinse, repeat until you get people emailing you asking you if you have time to talk.
Whatever strategy you use, the goal is to make a personal connection with a hiring manager directly.
That is what I am working on, and it is clearly on me that I have not accomplished anything along those lines yet. I have made a few good contacts this way, but nothing has panned out from it.
Hanging out with salespeople is the best way to learn how to network.
Something you notice immediately is that they never feel like they're being used when someone wants to "meet for coffee" as transparent cover for getting something out of them.
They realize that someday they'll need their back scratched, and there's always the possibility that they'll get something (a tip, a lead, etc.) out of an unexpected meeting.
Yes? Assuming your relation with this co-worker was good, why not? Many companies have recruitment bonuses so he would probably also be very happy to refer you.
The problem is you think this is somehow normal. That's not how all engineers work. Maybe you work a job and do good work, but then the team disintegrates, people quit, you lose track of co-workers because they were just co-workers and not friends (even if you had an excellent working relationship). It's not necessarily normal at all to retain close relationships with past co-workers, even less so to routinely network through them let alone retain them as references.
The entire reason LinkedIn exists is because most people, even many very highly skilled people in professional career roles, find it difficult to make effective use of such networks, for example. And if you're an engineer who has experienced a rough patch of employment or worked at a company or in a role or under a boss they hated or experienced a period of burnout or underperformed somewhere due to any of those circumstances the whole thing gets that much more difficult.
There you go. I spent (really too many) years at one small company after moving from a top-5 city to a top-20 city. And some of my contacts have left town.
Also, even if I've got people who can vouch for me, how do I tell them I'm looking for work? (This might sound trivial but I haven't figured it out.)
I suspect no amount of networking would protect against moving away from the centres of industry.
Given the alternative is being stuck in a boring job, or low pay, or unemployment, what is so difficult in shooting an email asking if they know anyone hiring? What would your reaction be if you got such an email from an ex-colleague?
I'm spectacularly bad at keeping up with previous co-workers. I'll certainly admit to that---it's one of my "listen to my advice, what I'd do, and then do something completely different" points.
But then, I spent 8 years at one job and in grad school. Anyone I knew before that would be really hard to find even if they could be a useful network.
And I was really bad at connecting with my committee--I graduated, but without a good network there.
Then I moved across the country.
I've never had any problem finding work, if I shop my resume around to local contractors and "body shops". In fact, I've made a pretty good career out of that. But "exciting" work? Not so much.
At this point, I'm considering getting out of the field. And I love what I do. I just hate what I'm doing, if you can see the difference.
Yes. I"m 48, and I've worked in software for 26 years.
For two companies.
I think I'm probably the last generation that looks at long-term employment as a good thing, and the older I get the less risk I want to take in being "the new kid" who would be the first to go if anything went wrong with the company.
My network consists mostly of people who know I'm a "programmer" and that's about it. I hang out with tabletop gamers, artists and costume designers, video editors, etc. We're more connected by our hobbies than our jobs. Most tech people I've tried to hang out with aren't all that into discussing tech when we're not on the job. Heck, my enthusiasm for tech usually ends at 5pm.
I also don't talk to former co-workers much because I've moved on to different problems.
> Who wants to hire someone old enough to be their dad?
I do. They almost certainly know more than I do about anything of any substance. Maybe they don't know node.js and mongodb as well as some young person, but they can figure that stuff much faster than I can learn any of the stuff they've learned throughout their life. I worry more about the opposite: who wants to work for someone young enough to be their child?
There's nothing magical about any of it. It's all incremental progress. We place way too much value on specific technologies, and not enough on broad experience. If someone has been successfully building software for decades, it is stupid to think they can't figure out rails or play or clojure or {{whatever}}. They may not want to learn, but that's a different issue.
There are plenty of older developers who are interested in the latest thing. Because us older developers get bored with the old stuff, and we are definitely aware of the issue of falling behind. I am 36 and have been doing Node.js for 3 years.
I was just reading a response to this article with someone who was much older, like 50 or 60 or something, also said he was a Node.js programmer.
I've actually been really paying close attention to trends, new programming languages, etc.
Node.js is kind of old news. The coolest new programming language I know of is Nim.
Stuff that I think that matters for the future is higher-level semantic metalanguages for information exchange and information systems factorization, fully distributed computing, connected devices, and custom circuits/electronics.
Right now there is a firehouse of job offers from recruiters on linkedin, and all a good developer has to do to find work is take a drink from that firehose.
While I enjoy the current situation, it's unlikely to last. Sometimes we forget that there's plenty of people who have simply built up a clientele and a repuation through plain old networking. These jobs tend to be more lucrative and probably don't require you to learn the flavor-of-the-month js framework. It's no surprise that we don't see many experienced professionals competing for what are essentially entry-level jobs (despite the use of the word senior in the job title and despite the high salaries inexperienced developers command). Obviously not all experienced professionals have built up that network. Those are the people you see applying for jobs.
Source: I spent a couple years getting to know a network of CTO's and architects who have been doing ecommerce since it's inception. They are in demand, they don't apply for jobs, and they are paid handsomely, and yes some of them are grandfathers or grandmothers.
> Right now there is a [firehose] of job offers from recruiters on linkedin
Interview offers, and they only come to the people who have the right combination of keywords and location. Miss on one or both of those counts, and you are invisible. The second seems to be much more important than the first, too.
I'd agree with that. I'd add that I live in Salt Lake City, Utah and still get a fair amount of offers. I realize it might be quite different in other countries.
I know Texas likes to claim is is "a whole other country", but sometimes living in Dallas it feels like that. It seems like nobody comes looking in Dallas from outside the area.
If you're an older tech worker, for the most part, LinkedIn is just a firehose of crap. At worst, it's:
Hi, I see you're doing [JOB] at [COMPANY]. How would you like to do [JOB minus 4] at [COMPANY minus 2]? We have Beer Thursdays and your fellow employees will all be young enough to be your sons (and yes, they're all male).
And at best it's:
Hi, I see you're doing [JOB] at [COMPANY]. How would you like to do the same job, but at a different, but very similar company, with the same lack of a future career path?
What you never see is:
Hi, I see you're doing [JOB] at [COMPANY]. You probably feel like you're in a rut there, and are ready to advance to [JOB + 1] at [COMPANY + 1].
It's a firehose, not a high class wine tasting room, you are correct. But one is at least unlikely to go thirsty, which is far better than it has been from time to time over the last couple of decades.
All you have to do is sift through that firehose for jobs that match your expertise, at companies you wouldn't hate to work for, at rates and hours you'll accept, and that don't seem like they're just jerking you around. Then after you've expended that effort you can begin the actual process, which may fall through for any one of a billion reasons, not the least of which are that most recruiters are jackasses with little understanding of the actual field of work.
For anyone with a slightly complex set of skills just getting to square 1 of having a recruiter or HR person be able to understand your skillset is damned near impossible. And there's no way they'll actually be able to have a proper appreciation of your competency except in the crudest, most oblique manner possible (e.g. years of experience, "big" projects completed, expected wages, etc.) It's hard enough to have a conversation between talented, highly knowledgeable software devs which actually parses the differentiation between various job roles (like, say, systems engineering and web dev), which can span enormous ranges of differences. Trying to get the human resume regex parsers we know as recruiters and HR personnel to understand such things, good fucking luck. And yet today those people often stand between you and a job.
I could only imagine the state of the industry without word of mouth referrals.
Having tried to drink from the firehose in the past, I can say that I have never once had a recruiter lead actually result in a job offer. It's one gigantic catch-22. The companies themselves aren't great at hiring, or they wouldn't need to use recruiters doing semi-random searches on linkedin. If you yourself were any good at interviewing, you wouldn't need to rely on the recruiters either. You're an unqualified lead that can't get a job on his own, which to a hiring manager screams "high risk hire." So you start the interview process in the negative column and have to really shine to get a job offer. But, if you were any good an shining in an interview, you wouldn't need the recruiter in the first place. The whole thing becomes a high stress waste of time.
I have gotten a few potentially good leads from third-party, but the vast majority don't seem to even read my resume. In-house recruiters generally go better, though Google's seem to misread my experience often and approach me for roles I am not really qualified for.
I think you're very wrong here. In-house recruiters also use Linkedin, I don't know why that would put anybody in the "high risk hire" category. I got my recent job through a recruiter contact on Linkedin and I'm pretty happy about it.
"I have never once had a recruiter lead actually result in a job offer."
I once had a recruiter (he had my resume) contact me for a Novell admin position. And there was nothing related to Novell on my resume. Then I knew not to waste time with 'recruiters'.
I've landed two excellent positions through outside (not in-house) recruiters. Though the first was 20 years ago; the last, 14. They were respectful, didn't waste my time or the company's, knowledgeable, and selected people based upon experience or qualified reference (the first position, they contacted the head of a user group who knew me well and referred me; then experience counted).
The experience I've had with outside recruiters in the past 10 years is atrocious, though. All they're looking for is warm bodies to toss at a company, and hope one of them sticks. No or limited experience--they still want to present you...after modifying the resume you've sent them in Word.
Today's outside recruiters are inexperienced in and ignorant of the field ("Your last job was a fitness trainer??"), and borderline unethical.
I'm still surprised so many of them are in business.
Generally true. But I spend some time now and then in a small/mid-sized Midwestern city where going through a recruiter is a requirement. A very high percentage of the businesses are in the same economic sector, and they use the recruiters as the first line of HR, in order to keep their hands as legally "clean" as possible.
I've observed that Group 2 (your 75%) frequently winds up in "Director of IT" positions where they can productively re-use that year over and over again keeping the ship running. Some of it is a lack of imagination, some just a simple desire for stability. Either way, they get very stuck. Their firms can't afford for them to do anything else, and they have to take a pay cut if anything bad happens.
Now my question.... By keeping a low profile, do you feel you are artificially lower your wages or opportunities? You're in the same boat as the top 3 or 4 developers I know - very talented, well paid, jobs find them, and employable in any market. But sometimes I wonder if they could get paid more if they were more visible, simply from supply/demand. (They have a scarce skill, increasing the demand for it should increase the wages) Or is it that anyone who would properly employ them is by definition outside mainstream hiring and would know them already?
Falsification: around and after age 35 I found it increasingly difficult to find work, until I got a clue and scrubbed my resume of all evidence of exactly how old I was (removed education dates; I'd already been trimming older jobs due to length and lack of relevance). Did that in the midst of one job search and the difference was like night and day.
BIG caveat: my family and I look a lot younger than we are, with no effort at all besides clothing and wearing a backpack I could pass as a 20 something college student through my early '50s. I also had to be careful in talking about my background, in one memorable 2003 interview I let slip that I'd worked on PDP-11s and the technical interviewer who was probably around my age exclaimed "Just how old are you??!?!??!!!"
Which wasn't intentionally an illegal question, just that the mental model he'd been building of me suddenly went TILT. I did get that job, software archaeology where experience made a difference.
And I can attest the Lions' book is great, I read it as samizdat in the very early '80s, found it more useful than the K&R of that time (or at least K&R's chapter on pointers and arrays was awful, and Lions went way beyond teaching you C). Of course it helped that the system I was supporting for pay was a PDP-11/44, and the student run computer center I founded used a surplus 11/45, all running UNIX(TM).
How many years of experience do you keep on your resume? I've been keeping 20, but it seems the bay area startups can smell that I'm old. (I've not met age discrimination outside of the bay area startups run by 22 year old type companies.)
Interesting idea. I had never considered "aging off" experience. It might be doubly useful in my case, because my first and oldest job was almost pure EE.
Indeed. Your resume is just a tool to get your foot in the door, to get that first conversation with a hiring manager or an interview. Extraneous things, like irrelevant experience, get in the way of that.
Note this will depend on such things as having enough experience to show you're a generically good employee. If you were a new graduate I'd look favorably on e.g. in high school starting out at entry level in a fast food restaurant and working your way up to, say, shift manager (if you could make it that far, very favorably).
Roughly a dozen years, under the heading "Recent Relevant Experience".
But I went more by the oldest jobs that looked really good on my resume, like being the VP of tech or being directly or indirectly responsible for most of my company's revenue, and including figures. Even better than developing software that you claim works is having people buying it and proving it works.
My first post-college job I created a piece of security software and I still run into people that say "you wrote that? We use that!"
But I've also noticed the people who love talking with me about that are not hiring me. It seems they bring me in to reminisce about the old days, and then go hire someone else. As nice as it feels for my ego, I might drop it.
> until I got a clue and scrubbed my resume of all evidence of exactly how old I was (removed education dates;
I've done that.
> I'd already been trimming older jobs due to length and lack of relevance)
And will probably try that as well. I agree that removing any indicators of age helped a lot with getting interviews. This would also help with clueless agents contacting me about PHP or Perl jobs when it's been a very long time since I did either of those things.
As I mentioned elsewhere in this subthread, my heading for this section is "Recent Relevant Experience". So I can leave out things like PHP or Perl if I've decided I never want to use them again. Or to indicate I'm a programmer who likes/is willing to do some system administration, but not indicate I'd take a pure sysadmin job.
Or not cluttering it with no longer particularly relevant technologies. E.g. programming Windows at the Petzold level (although some discussions on HN have given the impression that right now that might be the way to go :-( ).
37 years old, studied computer science at university, and have worked in the software industry since graduation. Currently at a mid-size/large, multinational software company.
We have a large number of developers with 20+ years experience. You aren't seeing their resumes because they're here and don't have a reason to leave.
I've been here 12 years now, and if you can't match the 25 days vacation, 10 sick, 12 holidays, plus bump my salary 10% or more, I won't even call you back.
Edit - I'll also note that I'm a project manager by title. I don't have personnel responsibility, so I still get to spend a lot of time on technical issues (and even some coding).
Haha, I see this a lot. Banks who pay mediocre developers $150k a year plus crazy benefits to write entry-level reports because fuck it; the salary for the entire IT department is a rounding error on the bonus pool for the traders so who gives a shit? Good luck getting those guys out of a job like that.
Not saying you're mediocre; but a job like that leads to mediocrity and complacency because the work is often unchallenging. Again, nothing wrong with that since your life priorities shift at some point -- taking care of your family with a stable, high-paying job is often far more important in your late 30s than having a kickass fun job. But developers in their late 30s tend to have jobs that aren't so glamorous to us on HN.
Thankfully, I'm not at a bank. My employer build software and licensing is the primary source of revenue. And I haven't written entry-level reports since, well, never.
work in wall street or the City supporting traders and their ghastly self written excel POS - and expect to get the "I have a pair of shoes that cost more than your entre wardrobe" gibes
The programmers aren't entry level, but the work they're doing is entry level (in difficulty and maybe in quality). I've worked for a bank before and the environment (for this level of work) is stultifying. I just fell into the work, though, and I left after a couple of years. I wouldn't know where to seek it out.
HOWEVER, I can give you a little bit of advice on what skills might be a little bit useful. You want to learn to create reports/data portals for something like Oracle Business Intelligence Suite, SAP's Business Objects, or IBM's Cognos.
Bank of America used to use Oracle's solutions, but as I understand it they're moving over to Business Objects. For the rest, I can't say, but there are a lot of companies that want these skills.
I'm mostly self-trained. That's probably a part of the problem. The utterly broken way that my team decided to build the reports probably doesn't help either.
Sorry, no suggestions for books.
Do you know if you'll be working with Crystal Reports? Or directly with the Business Objects API? Either way they're both very, very poorly designed and implemented. Good luck I hope you're getting paid well.
Honestly, it wouldn't take you long to get the skills if you could get access and were a decent programmer already. One of the problems with these sorts of systems though is that it's not like they're open source and easily available outside of the enterprise.
Want to set up a testing instance and just play around or build something? They're either not available or horribly crippled. If you can get into a company that is doing it already and you can get access, you will have an easy time learning it (but it's not exactly fun).
I did look into SAP modules and thought about learning them but how do I market myself after learning the fundamentals? Don't they require some sort of computer degree? How do I gain professional experience which the job opening might require? That thought made me abandon learning SAP.
I knew a very smart guy who got a job like this. After a couple of years he threw it away and moved to Brazil, after teaching himself Portuguese by hanging out in soccer forums and IRC channels. He teaches English now.
FWIW I know someone who used to work in IT for a bank whose yearly bonus was bigger than my (decent) wage as a programmer at a startup during the Dotcom 1.0 boom. I guess they had to trickle-down some bonuses to the IT guys so they didn't get jealous when the traders were getting their 6 or 7 figure bonuses at the end of the year.
He worked in networking. I guess it was one of the largest private networks in the world, and they had a big budget and got to use tons of interesting gear (make it fast! make it secure!). I don't think his department was mediocre in any way and was probably a rewarding job (providing you can get over the working for an evil corporate kinda thing).
There are two sides of the development coin for companies like banks, though. On one side is your friend who is asked to do the Serious Business. Without a doubt those are the interesting jobs. On the other side is the stupid report development. I've only seen the stupid report development. I've never heard of folks moving from one to the other, though.
I know part of me whished I has switched into TCP/IP from OSI (I was 3rd line support for the uk for X.400) and gone down the multiple CCIE route at BT
Yeah, banks are the epitome of just throwing money all over the place. You're right though; core systems work at banks is often super-interesting because the total amount they spend on IT systems in a year is so small compared to the amount of business that they do, they go all-out.
I'm speaking more of the peripheral IT functions - the one-off business apps and reporting solutions that departments within banks will often use because no commercial product exists to serve a specialized need. I can think of one example at a major international bank that was executing over a trillion dollars in currency trades a day. They had a pretty basic tool that basically amounted to a spreadsheet with some custom logic that pulled data from a bunch of systems and aggregated it so the traders could book a bunch of smaller trades together and get better rates. This tool was super-niche and quite simple from a programming standpoint, but it made the company probably a million dollars a day. So they paid a guy a full salary to maintain it. He had been in the job for 15 years and was pretty well settled in. They probably didn't need someone full time dedicated to this, but it's not hard to justify $100-150k in salary for someone to maintain a system that generates $200 million a year in pure profit.
Big investment banks pay well. Big consumer banks, not so much, at least in Canada. I was shocked at how low some of the laughable salary offers I received were.
It's a different challenge. At a bank, you manage a system based on boring, mature technology, that processes billions worth of transactions every day. Or a server park of 20,000 machines. It's not mobile game development, but on the other hand at least it's not mobile game development.
(I've never worked at a bank, but I've talked with people who do.)
It can also be work with too many grotty doesn't-teach-you-anything-technical challenges. For example, a bank that has acquired multiple companies with incompatible, archaic, poorly maintained systems, and struggles to keep them interoperating while stitching them together under some ill-considered technical policies and bizarre regulatory side constraints. Struggling with medium-scale technical challenges that only exist because larger-scale technical best practices aren't followed isn't as productive as it could be. You do learn things but it's akin to learning how to develop code in a dysfunctional language in the absence of specifications and source code control systems and testing: too many of the things you learn tend to be kinda messed up. And by the Anna Karenina principle they may not generalize well to your next job, even if that job also has more than its share of screwed-up challenges.
All businesses tend to have some proportion of work that is too idiosyncratic and ill-conceived to be satisfying or to be a good long-term career choice, and it's dangerous to overgeneralize from anecdotes. But I don't know any way to sharpen up a claim about the proportion of idiosyncratic ill-conceived work so that we could test the claim with proper statistical sampling. Falling back to anecdotal evidence then because it's all I have, there might really be a tendency for some parts of banking have more than their share of this.
I could tell war stories about bizarre regulatory side constraints (my favorite: on location in a country with very strict banking secrecy laws; having to work in the basement, in case someone might see customer data through the window using a telescope), but if a bank today doesn't have its IT department in order, it won't be able to compete with those who do.
Some banks can be so weirdly huge, that one department may be developing a simple website with last decade's technology, while another has computer scientists working on algorithms for a high frequency trading system with microsecond accuracy, which may never at any point have an unscheduled hiccup of a fraction of a second. As far as challenges are concerned, it's hit or miss, just like in any other sector.
In America, they limit the number of days they'll pay you while out sick. It could be worse. Fast food businesses refuse to pay for even a single day out sick and have been known to fire workers for taking more than one or two unpaid sick days. They actively lobby against laws mandating ANY paid sick days.
America is the only country in the developed world where people tolerate and expect restaurants to pressure workers into preparing food while they're sick and can barely feed their own families. Don't eat fast food if you visit.
Yes, America has pretty horrifying* leave policies. Most professional jobs in the DC area start with 15-18 days of personal leave (vacation and sick are treated the same) and around 10 national holidays. Jobs that pay hourly frequently don't have any leave at all - if you take a day off, you don't get paid anything.
And maternity/paternity leave is almost non-existent.
All of which leads to people coming to work sick, spreading disease, being miserable, burning out, and spending a fortune paying strangers to watch their babies.
They don't GO anywhere, they STAY wherever they are. Older folks tend to have more responsibilities, family, kids, retirement to worry about etc. They are less risk prone, they understand that office politics comes with it and the next job will still have politics and might be worse, so they stay put. At all companies I've worked for, I've noticed that the young folks are quick to go look for a new job after a year or two, they want new exciting things. Of course people claim that it's because they can get a raise faster if they leave, but it's more than that, some of these older folks are in need of a raise too, but they don't leave or have any plans of leaving, they are not even looking.
Everyone who is employed "at will" should always be looking. If your company has merged, been acquired, or acquired another company within the last 2 years, you should be looking. If you do not get at least a 2% raise every year, without fail, you should be looking. If your vacation and sick pay recently went to PTO instead, you should be looking. If your company is pushing "consumer directed" health insurance at you, you should be looking.
If your company has an actual interest in employee retention, you have found a real gem. But the rest of us are getting screwed over too often to ever sit back and pretend to have job security.
What I am finding now is that every place I might want to work has no software developer employees my age (which I find to be very suspicious) and every place that does have developers my age or older is a career dead end, SNAFU, or both.
And having my ear to the ground for so long, I have noticed a steady progression in HR recruiting practices from barely tolerable to downright rude. And the time between first contact and offer (if any) is stretching out longer and longer. (I don't live anywhere near California, if it wasn't obvious.)
So if you want to be an old developer, it appears as though you'll first have to solve the problem of how to find steady work without using a resume. There seems to be an element of chance involved, such that each skill and contact you acquire at your current job gives you another roll or two of the dice for the next. I really crapped out with my last gig, which yielded zero new skills and zero new contacts, for entirely related reasons, but a contact at the previous job helped me land my current job, where I am working with someone I knew from three jobs ago.
I am not a particularly big fan of the good old boy network method of hiring, but if you are both good and old, you still may find it difficult to get hired via the HR process. That process is fundamentally broken, and it is quite unlikely that any company that interviews you will ever give you more than a single bit of feedback, that being OFFER=false. Many won't even explicitly say it, letting their extended silence do all the talking.
So I would venture a guess that older people STAY because the effort of trying to GO has become so excruciating for many of them that it wouldn't even be worth it if it resulted in a 50% pay raise. And for some of them, they know that will never happen.
> If your vacation and sick pay recently went to PTO instead, you should be looking.
Can you explain this one? I don't even come close to using my sick time up. I'd much rather have them give it as one giant PTO bucket (unless you're implying PTO is less in total than vacation + sick).
Depending in the laws of your locale, an employer may be required to pay for an employee's vacation balance. PTO was formulated primarily to evade this restriction and to provide the means to reduce the company's accounting liabilities. While it was sold to you on the basis of flexibility, it really is a significant reduction in your benefits.
Think about how salary works. If you work as an exempt salaried employee even one minute during any given week, you are supposed to be paid for the whole week. That is why vacation time used to be granted as an integral number of weeks. Converting weeks of vacation into hours of paid time off is simply another step on the slippery slope to treating some salaried workers like wage workers, without any of the additional rights or protections.
Also, anecdotally speaking, every time I have experienced the conversion (3 times), new PTO total has been less than old vacation + sick, and it has always resulted in fewer actual days spent on vacation. The PTO conversion is always the company trying to cut benefit costs quietly without triggering a mass exodus.
I see. I was previously at a company with PTO and when I left I was paid the balance. At my new company I have both, but unless I use sick time basically as '2nd vacation pool' (potential ethical issues etc) I actually end up with less time off.
Your company was not legally obligated to pay you the PTO balance. It may be written in to the company handbook that they will, provided that you give sufficient notice, but they did not have to pay. Disposition of PTO is not covered by the same laws as vacation or sick leave benefits, so the company can basically do whatever it wants with it. If it were a mass layoff rather than one guy leaving, they wouldn't pay. In that case, they wouldn't have to worry about the remaining employees complaining or using their PTO as they accumulate it, rather than risk leaving value on the table.
As a corollary, if you have PTO and intend to leave a company, use it up before giving notice.
And we haven't even touched on other issues. People with PTO may be less likely to stay home when they are sick, because it reduces the amount of planned leave they can take. This results in more contagion in the workforce.
There are very good reasons for paid vacation and paid sick leave to be different classes of benefit. But in this case, it is simply a coal miner's canary. A company transitioning to PTO is reducing their labor costs by reducing the benefits of their productive employees. Look carefully to determine whether any effort has been made to reduce overhead. PTO by itself is not an unambiguous signal. If execs are still giving themselves bonuses while your earned leave becomes PTO, they probably just reassigned the value of your benefit to themselves, and it's time to look for a new employer before they come up with another bright idea, like stack ranking.
This criticism also applies to some extent to "we don't worry about leave" companies. I haven't ever worked for one, so I can't say for certain.
That's because programming is an entry level job. No, I'm not trolling: I'm quite serious about that.
Engineering has almost always been an entry level job; computers or not. You start as an engineer; and as you get better, the number of engineering management jobs is pretty limited, so there's nowhere to go for the vast majority of people. But you get pulled into enough internal projects you start to develop a bit of business sense, so many people will often go from engineering up into the business (it doesn't hurt that many engineers are smart with a solid foundation in applied mathematics).
This isn't just the case with development. My father in law started out as a structural engineer. By the time he was 10-15 years into his career, he was managing large construction projects. 30 years in he was running a big portion of the company.
I saw the game for what it was early and got out of engineering before I hit 30. It's a treadmill of skill development where having over 10 years of experience doesn't benefit you, since the technology du jour changes every decade anyway. I still enjoy hacking and coding - but I do it as a hobby.
I agree with this 100%. Good engineers are problem solvers, and as you grow older, you gain the wisdom that relative to the value that you bring to a business, the compensation will never match. It's unfortunate when you see younger software engineers who are incredibly smart technically and dedicated, but don't apply those same problem solving skills to their career. They become exploitable, and wind up making other people rich off their hard work.
Exactly. Once you get older, you start to realize that there are business frameworks that work just like software frameworks!
An MBA and a CS degree are a powerful combination. In fact, if there were more engineers with MBAs, I doubt the MBA would have a reputation for being somewhat clueless about practical matters.
Describing jobs as for a "Javascript Ninja" and offering perks like free Mountain Dew illustrate a distinct targeting of younger people, and are obvious ploys to trade trinkets to engineers in exchange for their work which generates actual value which is skimmed out of their pockets.
I've got an MBA and a HND in CS (slightly lower than a degree) and it makes for an interesting combination.
Some days I'll sit down and work with other devs on code even write them some examples to illustrate what I want, and then the next I might be talking to senior business people from our customers.
I didn't do my MBA until I was in my 30s and had already been a CTO, biggest thing I got from it was the ability to think differently - literally turn an argument around to see it from the other side, and a lot of friends who done various masters degrees say similar things
I think we're both right. He seems to have gone the independent contractor route - which is a perfectly legitimate career path for a rock star developer who wants freedom. It's also incredibly lucrative - independent contractors can easily make double what someone working at a company can while charging half of what contractors from professional services firms do.
But again, there's only so much market demand for that; and I would have trouble believing that more than 10% of his peer group at age 30 went that way.
This is more typical to what I've seen: someone started out as a developer writing back-end code, but noticed that it was more difficult to deploy the code consistently than it was to write. So they started helping out the tech ops team with that, until it became most of their job. Then the tech ops manager quits, and the company needs a replacement. The back-end developer was doing the job anyway; and it's a pay raise, so why not. Now they notice that the real reason it's so hard to deploy back-end code is because the servers are never patched, so they work on a process solution to make sure everything is consistent. The work is still technical in nature, but it's becoming much more process-oriented.
Maintaining a technical skillset is hard. Not many people have the energy to keep it up throughout their 30s when they're having children, taking care of sick parents, etc. So you'll see a lot of people gradually move to the business side - which isn't hard to do when you have an engineering mindset that helps you solve hard problems. It's also often a pay raise anyway.
Couldn't you say this about every industry though? I feel like I could have read the exact same post, with the word engineer literally substituted for any other job name, and it'd still read the same. Is that a fair assessment, or is my experience just limited?
Hm, I don't think it's strictly every job, but it's a common syndrome. Say for example a surgeon - in my mental model he moves from being an assistant during ops to leading op teams or research. I might have a completely wrong model how surgeon careers progress, though :P
But in general it makes sense for experienced people to move into managerial roles where they can leverage their knowledge on a meta level, rather than purely object level work.
Well, that is one of the two branches you can take, and probably the most financially sound one (plus it can be rewarding if you like that kind of thing).
The other is to become a specialist (as in, an expert in something). It's not as common, and most companies don't offer a dual track (and when they do, it can be a trap)
The one thing you don't want to take is to get stuck (the "one year's experience 30 times" edw talks about), and I see lots of people getting stuck. I'm kind of stuck myself but I think I'll be able to transition into business soon.
I went and got an MBA and jumped into consulting. Because I worked for a number of startups before that, my niche started out being helping big companies foster innovation internally. At this point, I'm more on the marketing/product side of the equation, which is extremely interesting in my mind. You really need a tech background to do product for anything but retail goods these days anyway; and in the media products space I work in, it's almost mandatory.
Net result is I took on a bunch of debt to go back to school but my salary is much higher now and I have a lot more control over my destiny. I don't regret it for a second.
> I'm more on the marketing/product side of the equation, which is extremely interesting in my mind. You really need a tech background to do product for
In this context, what would you define as 'product'? I'm curious as I hear it mentioned and it sounds fun, but conjours up mental images of inventing the next Gilette razor.
It can be :) What you're talking about is the typical CPG (consumer packaged goods) model: a product manager would be responsible for selling that product, identifying a market, etc. The work isn't really all that different, but CPGs don't usually require much deep knowledge.
IMO, product in tech companies is a much more exciting role because you get your hands dirty with creating the product. Let's say I'm the product manager for Facebook's News Feed. I would work with designers, developers and marketing folks to determine the features of the product. For example, I could say "Hmm, let's show more ads to people between the ages of 18 and 29 than we show to people between 13 and 18". We would test the hypothesis either through focus groups or A/B testing and determine if users are like/hate/neutral on it, and if they're like/neutral and it provides more money, it's now a feature in the mainline product. The role is slightly different at different companies (product managers at Google are expected to write a little code and lead engineering teams, for example) but the core tenet of the job is answering the question of "What should the product be?"
Product management is the central role at any startup for the first few years. A good product manager is worth their weight in gold. A great product manager can make you billions. For me, it's the perfect mix of creative, technical and business disciplines. You have to have the vision to see what the product can be, the technical chops to know how to get it done, and the business sense to know what levers you should be pulling at any given time.
There is a common trope floating around which says that some developers are 10x more productive than others. This has led to a lot of questioning of whether or not that is actually true in practice, what it means, whether it's possible to become a "10x" developer, and so on. The truth is that it's looking at the problem in the wrong way because it relies on the underlying assumption that development is like factory work, and somehow cranking out more code, or whatever measure you want for productivity, is more valuable.
The truth is actually far more extreme. Some developers are orders of magnitude more productive than others. The work they do is simply that much better and more valuable. This should be unquestionably true as there are several examples of very, very small development teams (sub 5 person sized) who have churned out incredibly valuable products. You can chalk some of that up to luck, especially in the case of games, but not all of it. The fact is, building software well, building software that works, that does something valuable for users, that is free of major defects, that is designed in a way so that it can be maintained and extended easily, and so on, those things are not just about how many lines or function points a developer creates. But those things can add millions or even billions to the value of the end-product, and they can be done just by one person.
Software is not factory work, nor is it strictly just engineering. The most important part of software development is a creative, artistic endeavor. And like all works of creativity the end result has an enormously wide variation in quality and value.
If you're doing very "shallow" software development (e.g. pumping out CRUD apps or CMS backed sites or what-have-you) then years of experience may not do a whole lot for you. If you have the opportunity to take on meatier dev work then experience is more than just learning some tricks and being knowledgeable in the frameworks and toolsets of the day, it's about deep skills. About how build things well, and right. How to communicate effectively. How to write truly self-documenting code. How to wrangle the complexity of the problem space and the implementation space while mediating for the user in a way that makes sense to them. And so on. Some devs in some jobs just keep adding to their skilsets as time goes on.
It's not just about creating work oneself. I'd say there is another aspect of the 10x developer and that is one that can make a team of 10 mediocre developers run at 1x speed each instead of 0.1x
Some unexperienced developer might be stuck with a small issue for days just to complete some bigger task. Here the experienced developer can answer the question in 15 minutes and the unexperienced one can continue with the simpler tasks.
How come no one asks where do old chefs go to? What about old artists? What about old musicians? What about old plumbers? What about old construction people?
I think you are missing a small detail. Older people tend to be more risk averse and more likely to stay in their current position.
More than likely, the answer to the question, "where are the developers with 20 years experience?" The answer is, "the same place they were 10 years ago."
I think this is actually just the fruition of the past growth in our industry. Around 1995-2000 we saw incredible growth. Then we had some industry pitfalls and people left for greener pastures so that might have weeded out a lot of people that weren't committed. Then we had another growth spurt that has slowed but is still growing. So we will be seeing a lot more people with multiple decades of experience. And so on..
325 comments
[ 3.0 ms ] story [ 263 ms ] threadOnce or twice I have met programmers in their 60s who remember the days of punched cards etc. That's really exciting. Generally there's not many of those guys and now they are tucked away in major corps or government systems.
Who would we manage, if per the article their average future employee only has 2 yrs experience and I have about half a century of working life. So the average bottom layer of the pyramid programmer will end up reporting to roughly twenty five ex-programmer managers simultaneously.
Or rephrased, 24 out of 25 programmers "must" find work elsewhere every two years or so, to keep the numbers reasonable.
"tucked away in major corps"
That's where I am. Work to live, not live to work, great benefits, nice working environment, nice coworkers, but if I want a promotion pretty much ten people would have to quit or die of old age first. This "being pushed into management" stuff from coasties sounds really weird to non-coastie ears. Or having a "career" sounds weird, since I've had the same job for decades and have no realistic hope of title advancement, and I'm perfectly OK with that.
The engineering track at AmaGooBookSoft. You'll earn +/- $200k a year mid-career and have roughly zero market or execution risk.
There exist many options if you're willing to take more than a W-2 employee level of risk. (e.g. Found a boutique consultancy. Redirect the conversation when your W-2 friends ask what your weekly rate is.)
Finally, the 0th option: if your local economy doesn't have the job you want, make it for yourself.
Why is it this way? Because there are more programmers who can do your job than there are managers who can manage you. You can argue that's unfair, but it's the way it is. The managers have skills that are in demand, and despite what the general HN attitude towards managers/executives is they are important to the success of most businesses.
1) One explanation is that, often unexperienced people start doing programming, start looking for a job, but after 1 or 2 years, they just know its not their cup of thee.
Lots of people try learning programming themselves. And while it may work out ofr a lot of them. I think there is also a huge dropoff.
During my computerscience study at university there was almost 50% dropoff after 2 years. Only the die-hards survive.
2) A lot more people are learning to program these days. 10 years ago, there were a lot less people doing programming. That's why you are seeing the curve.
3) People with 10+ years experience generally don't go out looking for work and applying for interviews. By then you have enough connections that if you want to change job, you'll find it through old colleagues. Not by shopping around like younger devs. This applies to most all professional occupations, not just Software Engineering. If you look at people applying for positions in economics / law you'll see a similar graph.
Here's something you can try: what do you wish you did 5 years ago (that you could have done with your knowledge at the time)? Now, imagine what you in 5 years will want the you of today to do. Go attend some local conferences or meetups. If you have trouble making connections quickly, prefer repeated events.
I'm actually surprised that I have found so many jobs that way, compared to how easy it was just knowing some people who already work at the company who is hiring. I still had to interview, though--one interview with the hiring manager and her boss that took less than an hour.
The only problem is that very few of my old colleagues have connections to any of the jobs that I might actually want.
So now the standard response I get is "we decided to hire someone that was a better fit for us" or "we decided not to fill the position at this time". If you can't read the subtext, that means "you're too old (and therefore expensive)" or "we were trying to import someone cheaply, and your application screwed that up."
Anyway, my dad has always resisted any push towards management. He did occasionally get the lead of a project thrust upon him, but he was still programming until he retired. However, he comes from an age where people stayed with a single employer for their entire life. You don't get to see his CV because he was never looking for a new job. You see my CV a lot because I'm constantly looking for something new.
Although in that graph, I guess I'm actually in the 10+ segment now... I'm still a young dev, though.
"Fellow, a commonly used synonym for man"
Proving only that it's not only Microsoft that's using highly gendered language for positions of respect. However, last I checked academia as a whole is doing better in the gender diversity department than tech (low bar).
I look at it this way. I've been programming for 10 years and, in a typical "do what I'm told" job, I'm not going to learn anything new. Sure, managers only get 10-15 hours of coding time, but that's more than you'll get in useful coding time as a managed employee anyway.
As a manager, you can have your underlings explore new technologies and report back, keeping you current on the field, and while you'll only get 10-15 hours of coding time (unless you work 40+) you have a lot more freedom in deciding what you code, and power to get your work noticed. I'd rather have 10 hours per week of quality coding experience than 40 hours in the Java mines maintaining someone's VibratorFactoryVisitorSingleton.
Managers are good at complain-bragging and making their track sound more painful than it actually is. The fact is that a manager who keeps his coding skill current is highly valued. Being a manager means you have organizational credibility, and if you want to use that credibility to code because you think it's the right thing for you, then you can.
If I were to take a cynical view of dual-track organizations, I'd say that the real purpose is to convince the programmers that the management-ladder people are better than they actually are. A Director-equivalent programmer at Google (Principal Engineer) is an objectively strong engineer, and it's competitive as hell to get to that rank. The Director-level managers at Google aren't any better than middle-management at other companies.
I would be quite surprised if the real product direction power wasn't held by the principal engineers at Google. I mean, ya, the managers get to manage, and they provide some leadership, but they have those pesky management tasks and politics (all necessary) getting in the way of that. In that situation, there are also probably plenty of managers who have to manage peers (i.e. people who have equal or even more influence in the company), and the concept of "underling who reports back" is a bit of a stretch!
The individual contributor path is exponentially more difficult to climb. I argue that you both have to win the lottery with the right projects and get in early at a company, and have all of the necessary skills.
I believe it is a story that is told to individual contributors by people with real power to keep them motivated.
The only theory that I've heard of where a flat org could be actually beneficial to individual contributors is the parents theory on open allocation. Otherwise it's just management kicking out the ladder once they've climbed it.
"...but i want more pay - how about CEO level pay?"
"nope."
Even as a mid-level developer, my salary matched that of experienced project managers in my wife's previous line of work (large insurance company).
And CEOs generally lead a very different lifestyle than a good developer. On call 24/7, lots of travel, etc. And it's a different set of skills that many developers lack (schmoozing, sales, dealing with other giant egos). Compare that to my 40-45/hour work week, true vacation (with no work interruptions), and limited exposure to clients/sales/etc (which I find the most stressful part of my job - minimizing that is a good thing for me).
There's lots you can learn on your own. Just do some web searches. Pick a language, and start learning. Python is great for a beginners. (I like Haskell, but I'm weird.)
There are a bunch of auxiliary skills that help. Learn how to use irc (freenode is great), get familiar with github.
Drop me a line, if you need more help. My email address is in my profile.
- I was formally educated in FORTRAN up 'til the 95 spec. Many engineering codes still exist in it, so I've since rounded out OO Fortran. It helps me read legacy code, talk to the older engineers, and maintain it if need be.
- I built a computer with a nVidia GPU chip: It helped me appreciate the hardware side of things and enabled me to write and run CUDA (CPU/GPU) programs, which offers a window into high performance computing (HPC).
- I learned as much about the OSI stack as possible (I had the fortunate opportunity to take a week-long CCNA bootcamp training class) so I could have a rough mental model how networking works, which helps in distributed computing or HPC scenarios.
- I already knew C, so I spent time spinning up on C++ and its ecosystem, as it can be popular in engineering contexts.
If you are wanting to go the pure developer route then there are plenty of others who can provide better advice. I have come to enjoy the inter-discipline of CS and engineering.
I took some of my class notes on equations and implemented them in a variety of ways as an exercise to get used to the language while keeping the engineering knowledge relevant. For instance, when I was blazing past a variance calculation, I was surprised to learn that catastrophic cancellation could occur in a naive implementation. Not because I "got the answer wrong" per se, but because a computer has limits (in this case: precision), and there's no way (in my mode of learning) for that kind of information to stick unless I have my hands dirty in the code.
To go back to the languages though, I stuck to major ones and played with Python, C/C++, and Fortran. Python and Fortran I used online references to play with and learn, while with C++ I bit the bullet and read C++ Primer which is really hefty but I found to be very thorough (and a great reference).
Junior developers: $75k-100k + $2-3k equity/bonus
Senior developers: $90k-140k + $4-8k equity/bonus
Engineering manager: $120-160k + $10-15k equity/bonus
Director or Super-smart architect: $140k-$180k + $15k-20k equity/bonus
VP (senior manager): $250k-350k + $200k-1MM equity/bonus
CxO: $300k-$1MM + $5MM-50MM equity/bonus
So when you say "Mary in the cubicle next to me makes more than me," you're probably talking about at most a $50k difference, which is a rounding error for the senior execs. You'll be hard pressed to find a non-senior exec in any line of work (engineering, QA, project management, mid-level management) whose compensation even comes close to what the big shots are making.
Is there where we get to discuss the gross over-compensation granted to CEOs in the US?
[I'm joking, I don't want to discuss that here]
At most companies the coding required is easy and doesn't require much thought, low-skill = low-pay. The job of allocating capital and people to the highest ROI areas is much more significant to most companies' success than having the best programmers.
Personally I would have said a big part of it is that they control payroll.
Think steven jobs - he is credited with apple's success. May be that's true - he could have ruthless quality requirements. But it couldn't have happened without the engineers that _actually_ created the product. Why is it that the CEO gets exponentially more returns than the soldiers that fight in the trenches, doing the _actual_ work?
Bingo! Only megacorps and people who hire noobs recruit that way. Beyond a couple years its all ... "That guy I worked with who was an expert with statistics (by their standards)" or "That guy with the awesome github repos" or "That guy I contracted with once..."
And looking at his graph, I'm guessing his job description is skewed toward noobs. Something about the company, or the job descript, or working conditions or ...
"new" programmers, the ruby devs, the python aficionados and the PHP gods are becoming increasingly common.. we're at a golden age where it seems a large percentage of our generation is doing some kind of dev work- larger than any proportion of people in history.
it shouldn't be surprising that people with 20 years experience aren't common because not many people comparatively were vested in the industry 20 years ago.
In other words, if you're good enough at interpersonal politics to keep improving as a developer past the 5-year mark (which requires working people well enough to get on the best projects) then you're also good enough to move into management.
Moving into management is also just plain easier than protecting a specialty against the anti-intellectualism of business-driven engineering. You're a top-flight developer making $140k with a well-formed specialty (let's say that it's machine learning in Haskell). Your options are: (a) compete for the two jobs that exist in the world, (b) give up your specialty and move to a hedge fund, or (c) move into management, which tends to be specialty-agnostic, and lucrative. If you've decided that you're a manager from here on out, all those damn Java shops become options again.
Startups were supposed to provide an alternative, but these days the VCs act like bosses and being a funded CEO is a middle management position.
For what it's worth, the genuinely interesting fields of programming tend not to have the same age-related attrition. Machine learning researchers, and even serious engineers like Jeff Dean, are just starting up when they're 40. However, the business-driven engineering that 95% of us have to contend with is mind-rotting. Spending a week debugging someone else's VibratorVisitorFactory method, or figuring out what the fuck some ORM is doing, just causes atrophy.
We have age-related attrition (of both kinds; our most talented leave, and our less talented or just less lucky are punted) because we're a badly organized industry. We have a talent for which there's nearly unlimited demand, and yet we refuse to organize around protecting its interests with a union or a professional guild.
Also, organizations that use a "dual track" only underline the problem. Take Google. It's 100 times harder to become a Principal Engineer (Director-equivalent) than to hop on to the management ladder and make Director. It's 10,000 times harder to become a Google Fellow (VP-equivalent) than to make VP. There may be a noble intention behind dual track organizations, but their actual effect is to show how stacked the deck is against lifelong individual contributors in a world that is still "manage or be managed".
I think it is obvious given total headcount that there aren't 10,000 times as many VPs as Fellows. And given I know of way more people going from IC to Management positions than the other way around, it seems many ICs effectively compete with folks on the Management ladder for Management jobs. Meaning even if equal effort was required to get to Director as to PE, I'd expect many would-be PEs end up as Directors because they decided to switch to the management track for whatever reason (e.g. because they realized they were already informally managing). Sure, one of those reasons /might/ be they thought career advancement was easier on the management track, but what proof of that do you have?
To assert it's 2 orders of magnitude harder to become a PE than a director, and 5 orders of magnitude harder to become a Fellow than a VP, I think you're gonna need more proof than that.
Quite literally. If I want to be a manager of a sizeable bunch of programmers, then that's a popular job that every company (from small tech companies to multinationals selling soap or loans) will have a bunch of and most of them probably have a vacancy right here and now. If I want a Fellow-type role, then my options can be counted on my fingers.
Over time, they advance a lot faster than we do. We have to take on above-level responsibilities (which is politically dangerous, because people start to wonder if you're neglecting your at- and below-level job duties) to advance. They don't.
concern for other peoples' careers, ability to delegate, humility, emotional stability, ability to see multiple perspectives, commitment to Google and its values
You don't really see these among the people in power. Stack ranking? Secret "calibration scores"? Closed allocation? Blind allocation? People getting PIP'd for having 20% Time projects?
Stack ranking is there to smooth out mistakes in your manager's judgment. One of the big problems I saw in the promo process is that people who quietly help out a lot of other people but don't work on their manager's pet projects will get overlooked by their manager at promo & calibration time. Stack ranking is there to counteract this: if you have helped out lots of teams, you will appear high on many other peoples' stack ranks, sometimes even higher than your manager, and promo committees take this into account when considering promotions of people who don't have their managers' blessing. And it generally works, too: I was promoted on the strength of peer recommendations (I had quite low calibration scores, largely because I've never really cared what my manager thought of me), and I know several other friends who were as well.
Calibration scores are there to prevent the problem where a manager games the promo system by giving super-awesome assessments to all of his reports. He has every incentive to do this: it raises his own prestige within the organization to have a "super high performing" team (even if it's only high-performing because he set the goalposts low), and engenders loyalty from his reports. Calibration forces him to justify his scores to his peers, all of whom have an incentive to inflate their own reports' scores relative to him.
Closed allocation does suck, but in my experience Google didn't actually have closed allocation. If you had a solid track record and a team willing to accept you it was remarkably easy to transfer to a different department.
Blind allocation is a consequence of Google's "hire for the company, not for the team" practice, which is a way to prevent empire-building and keep the hiring bar high. When teams do their own hiring, every manager has an incentive to take a marginal candidate, because his team is probably overworked, and one mediocre employee is better than zero employees. Over time, this would make the whole company mediocre, which is why Google has instituted a uniform hiring bar across the company. Blind allocation is an unfortunate side-effect of this; most people would rather know which team they're going to (actually, if you're in demand by multiple teams, you can get this - I spoke on the phone with my eventual manager before accepting my offer letter), but that's hard when you're not interviewing with one particular team.
I have never seen anyone get PIP'd for having a 20% time project, and I had like a dozen 20% projects during my time at Google, one of which became a major open-source project (and ultimately consumed like 50% of my time). I have seen people get PIP'd for not doing any useful work on their main project, but that's because you're hired to do a job and you better do it.
There may be some jokers who are Principal Engineer at Google, but I never met any. In fact, I met plenty of great engineers who were "only" Staff. So my impression is that you have to be a really good engineer to make Principal.
However, Google's management is below-average by the standard of large tech companies (how else do you explain its use of stack ranking?) and its product team isn't especially good either. I never met a Principal Engineer or higher of whom I knew I could do his job better than he could, whereas I met plenty of high-ranking managers and product people for whom that was obviously the case, and not just to me.
The management ladder, at a tech company, is where you go when you get tired of competing against the best in a field, and prioritize high salary and title. And there's absolutely nothing wrong with that. People grow up, have families to feed, and take the big-fish/small-pond route. (At Google, that's product or management-- clearly not engineering, where there are plenty of very big fish.) Good for them. It's probably the right decision. It's hard as hell to justify, say, a $200k salary as an AI researcher when absolute badasses are content with $150k. It's much easier to go into the business mainstream where absolute jokers take $500k, by age 40, for granted.
This is the dirty little secret of corporate IT departments, that 95% of the workload is cleaning up other people's messes. The "engineers" promote themselves into the work "designing" and "creating" new systems, then use that "experience" to get a job doing the same somewhere else. Then the "programmers" come along and actually make those new systems work, spending 3 months debugging, then 3 years on after-hours standby support.
1 - Writing code is a young man's game. Older devs get one too many platform/language iterations behind the curve so can't apply for as many jobs - obviously not true for everyone, but could account for something
2 - Older devs are tempted into management, and so write emails for a living instead of code
3 - Older devs may have more commitments outside of work, so can't take on jobs that demand long hours in the office and long hours at home keeping up with tools and trends
4 - Huge numbers of people are starting to realise you can make good money sitting on your arse all day and writing code, so there are lots of them applying for jobs with low experience - that's not to say many of them will still be trying a few years from now
5 - All the best experienced older devs don't apply to job ads, they just move easily between contracts using their network
But, he always, without exception exuded confidence and delivered new features quickly. He was hired as a senior architect at several startups before he turned 25.
In reality, there are plenty of excellent older developers around who are still building stuff. They just aren't building it at the kind of company where you reach the most senior recognised development position after as little as five years, you've run out of interesting problems to solve in half that time anyway, the management think productive developers are the ones who work so many hours that they can't have a family and/or social life at the same time, and the junior developers think grandpa can't program with anything invented since COBOL.
Meanwhile, look at the guru everyone turns to in a small-to-medium sized shop, the top-billing freelance/contractor/consultant crowd, the disproportionately successful founder demographics, and the guys who are lecturing everyone else with "Fellow" in their title at the bigger technical firms, and you'll find plenty of places where the very experienced and capable hackers are still plying their trade quite happily.
That seems like it explains the OP's experience right there. Why would honestly senior devs even consider jobs well below their salary range? My shop is almost entirely very senior people with 10-20 years experience, but we pay accordingly.
1. There is just a smaller pool of 20+ year devs because 20 years ago there were less developers, smaller pool of jobs etc. it should be possible to work out the max size of that pool from ONS / job data and get a ratio for today.
2. What is your job criteria? Permanent position? Wage is low compared to say contract or freelance rates? Advertised in the public job forums?
3. Lack of interesting work or autonomy.
I am a Dev with 15+ years - (I dropped out of CTO position to go back to full time Dev work). And I cannot imagine taking a permanent position unless it comes really close to a contractor wage. And I would prefer remote working.
I will be surprised if I ever find a 150k+ remote permanent position. But if I did I would expect to see only 40 year olds on the short list.
And I am pretty unusual in that I still job hunt in the open - actually applying for jobs. This is not an issue for the large majority of people I know who use their "networks" better than I do.
So in short a good Dev (and having lasted 10-20 years they cannot be idiots) is not goin to be looking for a job, if they are, they will not be looking where you advertise, and if they do look there, your rates will be too low, your job conditions off putting and finally you probably tell people what and where and how to work.
If you want old devs, pay more, micro-manage less, and fish in places that are recruiter unfriendly.
I've always been very busy (one of the main reasons I don't post on HN as much any more). I don't have a resume. I'm not on LinkedIn. If I ever ran low on work, it would probably take me a day or two and a few phone calls to find something.
I don't work on anything unless I find it incredibly compelling. I write applications. I've seen tons of different technologies, many old ones I still use. But I also get very jazzed learning new stuff and incorporating it into my toolbox.
I know tons of programmers in my age group. I'd classify them into 2 groups:
25% - just like me. You don't see our resumes because we're very happy building cool stuff and rarely look for work. We've also seen it all and can smell something we're not interested in a mile away. You don't see us at many events because we're so busy with work and life, we only pick the ones with the most promise of bang for the buck. Most of the programmers I know in this group would make phenomenal additions to many startups, but don't recognize this as a compelling alternative to what they're already doing. The best way to engage us is to seek us out, make friends, and share some stories about something cool you're working on.
75% - one year's experience 30 times, not 30 years experience. Unaware of modern technology. Couldn't write Hello World in anything other than BASIC, FORTRAN, or COBOL (and would probably misspell 50% of the words). No imagination. Limited ability to visualize the possibilities. Hiding under the radar in some enterprise. You don't want these people.
You might be wrong, and you should factor that in. Perhaps you're not helping people towards a bright new future of self-realization, just condemning them out-of-hand based on your own limited experience or misconceptions? (Not using "you" to imply you do this, btw.)
> Perhaps one isn't helping people towards a bright new future...
Never the less it's important to think carefully before criticising others. You are absolutely right and I'll try to keep that in mind next time I want to tell someone how bad they are.
The worst part is that most people don't recognize this, they live in the bubble, being proud of themselves they know it all. Unless they lose this job and suddenly realize they are basically unqualified for anything outside of their narrow field of expertize.
Either get lucky, never lose that job, so you don't get your feelings hurt when looking for new job. Or get out of the bubble before it's too late and start challenging yourself with new opportunities.
I went Googling for its origin and the first link just took me back to HN: https://news.ycombinator.com/item?id=4627373
That's the problem with the generalization: it's too general, can be applied to almost any normal career, and isn't really a good heuristic to use when analyzing somebody's work experience in most contexts.
I find it quite amusing, but in my observation, this 25%/75% split can be found in each age group you'd look at...
You are basically saying 75% of the developers after certain age are useless. I don't agree or disagree with your statement . Just startled. What does it say about software development as a career ? Would you say the same thing for lawyers or doctors with 30 years experience? This is depressing.
Example: The top 20% of a population owns 80% of the wealth.
And yes, this applies to other occupations as well.
If you don't have passion for something you'll never be truly good at it.
Sure they may not have the "passion" but it also doesn't mean they're grinding away through their days. As I said in another comment, your priorities change and your perception/measure of job satisfaction changes as you get older. Mine certainly has despite being a techy and developer to my core.
You also could uncharitably argue that 75% of developers of any age are useless. Furthermore programming has a much lower barrier to entry than being a doctor or lawyer and it's much easier for a terrible programmer to hide their terribleness for 30 years than it is for a doctor or lawyer.
I don't have a reference for this, but I remember reading that other than surgeons, doctors' skills decline the further out they get from medical school... of course that's doesn't take into account a lot of the other important parts of being a doctor like how you interact with patients, etc.
Sure they maybe repeat the same one year's experience year after year perhaps with some technology transitioning years from COBOL to VB to VB.NET or C# or maybe Java, that kinda thing. They'll know Oracle or MS SQL or DB2 well enough to make stuff work, or maybe they call into a message switch (with a pre-wrapped library for their language/framework) to read/write their LOB data.
They work there for years and years collecting their salary and annual (if there are any) bonuses and many will be the last lucky few to hang on to a decent occupational pension, in return to knocking out code to meet business requirements. But they do it well, they know their line of business apps for their organisation's market sector and "how things are done". These are conservative people working in conservative business environments.
The thing is who cares? Many of these folks have interesting lives outside their corporate bunkers which involve travelling the world, renovating houses, flying small aircraft, model trains and enjoying friends and family...and much, much more.
It's just a job and I'm sure these folks will have their own measure of job satisfaction which will be different from ours. It might not be as exciting as the seat of your pants local startup but it pays the mortgage and provides reasonable financial security.
Sure there are no absolute guarantees about job security, but I live in the UK and we're at a lot less risk of being fired for no reason other than "at will". It takes quite a bit of legal effort and cost to make employees redundant, especially in finance where you're fairly likely to be a member of a union (mass redundancies have to be negotiated and consulted on and redundancy payments agreed etc).
It's not depressing, it's just that these folks have different priorities in life.
Scott Hanselman described some of these folks as "Dark Matter Developers"[0].
[0]: http://www.hanselman.com/blog/DarkMatterDevelopersTheUnseen9...
* To address the Ayende's question, being 47 I'm probably an "older dev" I've worked for the same company since 2003 (ISP/Web Hoster), I like the work, I'm happy there, they treat me well, I work from home, it's (fingers crossed) reasonably secure. It'd take a really seriously good offer to make me change employers. This is not to say that I don't keep abreast of the latest tech and frameworks, the fact that I follow HN should make that abundantly clear; for example we're looking at how we could monetize Docker for our clients - first heard about here.
I can understand this mentality, but cannot sympathize with it. Personally, I refuse to treat my job as "just a job." I want it to mean something. I want to look forward to coming to work everyday. I want to feel like the work I do makes a difference, as opposed to fizzle out and die in the massive corporate bureaucracy. I hate the idea that I'm just spinning my wheels, looking busy, collecting a paycheck. Doing so is just... soul crushing. That's the best way I can describe it.
I'm actually literally 15 minutes away from giving my two-weeks notice. Just waiting for my boss to come in. I'm glad I had the chance to put my feelings in writing somewhere other than my resignation letter because I wanted to get them off my chest but not burn bridges. Thank you teh_klev. :)
Well, some people don't build model airplanes after work. They raise families, work at food banks, take care of their elderly parents, sponsor people in AA, and so on. Ideally, every waking minute of your life will make the world a better place, but it's a luxury to expect a career that really means something.
Good luck on your career decision. It sounds like you've already made up your mind, but in general it's a good idea to talk to your boss about the soulcrushingness of work well before you want to quit. It's possible that she would be willing to give you more variety, responsibility, or freedom to keep you around.
I remember when I was early in my career I talked with an older engineer who had done lots of time in the insurance business and I said something like "I don't know if I could ever work in something so boring".
He replied "making sure that claims are paid out correctly can be the different between somebody having a home or going homeless, or somebody being able to feed their family or not having transportation at all. Keeping in mind the lives of the people you're ultimately serving keeps me motivated even if the day-to-day is boring"
It's advice I've always kept at heart and it's been helpful.
That's fine for you, and quite a laudable position to take.
But the reality is, in a great many environments, across the board -- in blue chips as well as in startups (often quite insidiously so) -- as soon as you start personally investing in your work, you start taking on considerable risks. It means, almost by definition, you're going to start butting heads with people -- or at least take on a heavy risk of appearing to others like you're butting heads with them, even though you're not. Because they'll have to start justifying their own decisions, and exposing their own lack of depth and experience. And that's really, really threatening to a lot of people.
The safest route, by far? Keep your head down, and don't become "personally invested" in your work. Otherwise you risk becoming (per the Japanese proverb) "the stake that sticks up."
The present role, where I've been for the past 11 years, is very enjoyable and gets me out of bed in the morning...but paradoxically I do treat it somewhat as "just a job". I have to do that because otherwise I'd just burn out, and that happened once before and it nearly killed my development career.
But anyway, I wish you all the best and hope the future's bright for you.
I'm skeptical of the "financial security" claim. Obviously this is not true in the U.S., where there is zero hesitancy to lay people off and very rare to have legal recourse as an employee when laid off.
But even working in the U.K. or other nations with stronger worker protections, you are still vulnerable to your employer hitting hard times. Companies can very quickly go from profitable to out of business or close to it, especially where technology is involved. Not having skills applicable outside of your current job does not seem like a secure strategy.
I guess it depends on how you define 'reasonable financial security'. As someone in the US, I define financial security as having a couple month's pay in the bank, and a retirement plan of some sort, while making enough money every month to pay the mortgage and the bills and have some left over to spend on entertainment, then it is doable, even in the US.
A mediocre developer who has a bit of experience, making $75k/yr anywhere but San Francisco or New York, could afford to be in the situation I describe.
What does 'reasonable financial security' look like elsewhere?
Sure, but types of companies I'm talking about where these folks work are big blue chip FTSE 100 companies. It's a very rare event where a company the size of Lloyds or Barclays or BAE snuffs itself out of existence.
Ok sometimes you get a perfect storm such as the 2008 banking crisis but even then the UK government and others stepped in to prop up the likes of RBS, Bank of Scotland and Northern Rock. No-one turned up to discover the doors locked in the IT department and life very quickly went back to business as usual.
It doesn't really have anything to do with after a certain age, either. Some percentage %x of your 5 year experience programmers haven't really moved much past their first year at all.
To be fair, I think of it really as a series of plateaus, not a hard and fast rule. People get stuck at a level of professional development for all sorts of reasons, internal and external.
The thing is, it gets more noticeable the longer time period you are talking about. Comparing two people with 3 years experience where one of them hasn't really progressed past the first year or so, and the other has 3 solid years is a lot different than comparing two people with 30 years experience where one of them hasn't really passed the 10 year mark of development and the other has a solid 30.
And "useless" is the wrong way of looking at it. There is a lot of use for a developer with 5-10 years of experience, so long as you don't expect them to perform like a developer with 20-30 years experience. This is true even if they have 30 years on paper, which can be a bit of sticky point w.r.t compensation, but that's a different issue.
This absolutely happens with lawyers and doctors, by the way. A real difference is that a doctor has been forced into a good 10 years of professional development before they take the training wheels off, so the base level of competence is much higher. Some of them don't progress significantly beyond that for the rest of their careers, but that doesn't mean they aren't productive for that whole time.
As an industry, I do believe that software development is pretty weak on developing talent internally, particularly beyond the entry level.
But I've always thought a team of generalists beats a team of specialists, which is swimming against the current tide.
Considering nearly any situation your team encounters, junior people, experienced people, and very senior people are likely to take different lessons for it, because they have different perspectives on what happened and what could have/should have happened.
To me, a "same year of experience, 30 times" person is someone who runs into similar situations over and over, but fails to grow in how they understand and react to them. This is true of architectural issues, interpersonal issues, schedule management issues, ... everything really.
Technology stack isn't so important here. If anything I expect the experienced people to pick up a new stack faster, if they've done this before, all else being equal.
I'd expect insight and ideas from a 20+ year developer I'd never dream of asking a junior (< 5 years), and if you don't get them - you're probably looking at someone who has repeated many of those 20 years.
Ed why can't you have your own company? Why can't you be the one who is hiring or at least teach others how to hire. I bet you can smell a talent from 1000 miles away - even if someone did not finish a good school; the world of software engineering would make so much more sense.
[EDIT:] I imagine a job interview; an interviewee says: "I didn't program this but I did program something more difficult"; interviewer makes a frowny face; Ed comes round the corner, puts his hand on the interviewer shoulder and says: "He did not call you stupid; he just said he is ready for the challenge - he has the experience".
1. He doesn't take a job unless it's challenging. They don't post on HN or go to conferences because they are busy with so much work and life (hence no wisdom sharing).
2. If he is a freelancer (which his post makes him sound like), than he does own his own company. It's just not a software startup looking for VC or articles in big magazines.
3. He's not hiring because he wants to program, not do HR. Also, Michael Jordan can't pick players for shit and he's the best BB player in history. Skill in a job doesn't mean you can find talent, and the level that he would jump and say a person has talent is probably the level where said person doesn't need recognition to know their skill.
4. If a team does a good job outlining job requirements and interviewing, they too can smell talent from 1000 miles away. But interviewing every applicant with a 2.0GPA from a bottom tier school takes a lot of time and most often does not reveal a hidden gem. Regardless of what their potential is.
Or they simply aren't interested. They are happy with what they do.
On the other hand, seasoned programmers do make great interviewers. And a good interview often include them in the process. Their insights are very valuable.
Also as a sidenote, if there is no senior/lead developer during your interview process. Or the people do not appear to have a clue. Run. Unless they are going to hire your as the senior/lead, and they admit they lack the knowledge.
I've owned a company but its lonely, so now I earn less but work as a peer in somebody else's company.
That seems highly unrealistic.
- What are the odds HN would attract and recognize a one-in-seven-billion individual? HN is not THAT special.
- You believe Ed holds great wisdom, and it is Ed himself telling you he is not the only one.
This exactly and it happens at all ages. I interviewed someone not long ago who had 5 years experience. It turned out they learned their job in 3-6 mos. and just repeated that same job for 5 years. I was amazed how little else they knew.
Most programmers don't take this path by choice. They just don't see it as its happening. You have to pro-actively manage your developer career if you want it to grow over the long haul.
Let's remember that in those 42 years the number of BASIC, FORTRAN, or COBOL jobs has diminished through to almost nothing. The last person I met who described themselves as a COBOL programmer was about 10 years ago, and even they said they did it for the money as there were so few of them left.
So the programmers edw519's knows have in all probability probably managed to switch from COBOL to to VB6, then Java or PHP and then maybe even C# or Ruby and are probably nowhere near as stagnant or unambitious as he's portraying them.
It's that or he hangs round at COBOL programmer's meetups.
Something about programmers makes them think they are all the destined one true hero, and as a result, programmers tend to disparage and disrespect their own peers, at great cost to themselves.
My favorite is this guy [1], who was literally adding billions of dollars of revenue for Goldman Sachs, but was getting paid peanuts. When he left to pursue more interesting work (not for salary!), they brought the FBI down on him.
I don't call myself a programmer, computer scientist, or any such low class term anymore. I'm a consultant, and I don't associate with self-deprecating professionals who denigrate their own fields.
Humans are primates, and we form status hierarchies. Proudly exclaiming that your tribe is at the very bottom is the definition of stupidity. Good luck to those that do, I sincerely wish you the best. But when your salary stagnates, you're asked to work 80hr weeks without overtime, and you get no respect from management, maybe its time for a little self-reflection.
There is a reason software dev is such a low status profession, and it's not because we're "nerds". It's because we self-denigrate and self-deprecate like no other profession on earth.
1. http://en.wikipedia.org/wiki/Sergey_Aleynikov
EDIT: It is worth reading this article if you'd like some more details on this problem, from a fellow HN member who has dedicated a lot of time to thinking about it [2].
2. http://michaelochurch.wordpress.com/2014/07/13/how-the-other...
As a combination or individually? Medicine is about the only one in the list that's strong in all of the listed characteristics. "Heavy engineering", to my knowledge, doesn't pay much more, finance doesn't seem that much more stable, and law certainly has good work conditions for those at the very top, but not for the newbies.
The programmer types were different from the trader types. The trader types were far more alive to the bigger picture, to their context. They knew their worth in the marketplace down to the last penny. They understood the connection between what they did and how much money was made , and they were good at exaggerating the importance of the link. Serge wasn’t like that. He was a little-picture person, a narrow problem solver. “I think he didn’t know his own value,” says the recruiter. [2]
1. https://news.ycombinator.com/item?id=7577872
2. http://cryptome.org/2014/04/goldman-sachs-code-thief.htm
Last time I checked, banks are the most powerful industry, and GS is the most powerful bank[1]. Aleynikov was single handedly building, deploying, maintaining and updating Goldman-Sach's HFT framework.
If you believe that key people like Aleynikov don't make the HFT industry profitable, a certain Medallion Fund and a Dr. James Simons would beg to differ.
[1] https://www.youtube.com/watch?v=FzrBurlJUNk
I don't know of any big software companies getting government bailouts after gambling with money they scammed from average citizen . Once you can get away with that, and not have a single executive do jail time, come back to me. Every industry is subservient to the whims of banks. They'll tell you otherwise, but actions speak louder than words.
I call shenanigans on the claim that Aleynikov was single handedly running the trading infrastructure for even a single one of their desks. That's complete nonsense.
As for Jim Simons: It's generally believed that the main cause of Renaissance's success is that they have a couple hundred of the world's smartest people all working together. It's not a 'key man' shop at all. (Also: You seem to be suggesting that Simons himself did all the work. The fact is that he spends most of his time smoking cigarettes and handing out wads of cash.)
That's true, but it's a hockey stick / logarithmic thing. When I started coding, the BASIC and COBOL technologies were waning-- still bringing in paychecks, but it was clear that their peak was a few years in the past.
There are lots of people right here on these forums using technologies today that are in the exact same situation. Citing these examples by name usually erupts into a flame war, but for sake of illustration, a good example might be PHP.
Perl, on the other hand, is.
They haven't really diminished to almost nothing, they have just been outsourced to Indian shops. You'll have a really hard time finding Westerners who still write those languages, but Indian firms are happy to step in and fill that void, maintaining the hundreds of millions of lines of COBOL code still in production at Fortune 500 companies, on a contract basis.
My skill is not marketing my skills on a freelance basis. My skill is in engineering.. and a variety of others (like startups, people management, etc.)
I hate 80/20 like splits that are so binary.
Part of the problem here is that it's very difficult for many people under 30 to imagine someone over 40 is not falling into your %75 category. They already think that most people can't do fizz buzz.
I once had an interview with a 20 year old with 2 years of experience. HE was the head of development at one of those startups that raised millions on kickstarter.
He asked me the question: "How would you do feature X in language Y?". I pointed out that you couldn't do it in language Y but that you could do these other things that were similar. He then said " In language Z you do this and that's the answer I was looking for". But language Z is not the same as language Y.
Flubbing a question? No problem. Everyone can get nervous. Giving a BS question and then using the "wrong" answer as a reason to not hire me? Suspicious. So, why would he try to do that? Well, it turns out we were on a video call.
Who wants to hire someone old enough to be their dad? I understand that sentiment.
But the Software Industry hasn't developed a pyramid of job titles you can climb.
Am I missing something?
Leavnig that aside, sometimes people move or switch focus or have to take jobs at crappy "body shop" companies to make ends meet during a bust, etc. Hence the quality of the network isn't necessarily good enough to have the kind of "I need a job, whatcha got" connections you mention.
I don't have a network. I have friends and I have colleagues, but I don't really have anyone that could get me job leads (maybe a couple of my friends)
Keep in mind that most companies offer referral bonuses and programmers like to work with people they know and trust. I used to avoid doing this like the plague because I thought I was being a burden to people I consider friends. In reality, asking for a referral is mutually beneficial for both parties.
Every single one of my former coworkers, managers, and other people I dealt with on a regular basis is still at my former employer or retired. How do those contacts help me?
If it turns out none of them can help you, you're out an hour or two and the cost of coffee.
A longer term alternative is to make cool things and tell people about them. Write some open source or a side project and post it to HN. Lather, rinse, repeat until you get people emailing you asking you if you have time to talk.
Whatever strategy you use, the goal is to make a personal connection with a hiring manager directly.
[1] http://www.iwillteachyoutoberich.com/blog/ramits-definitive-... [2] http://www.iwillteachyoutoberich.com/blog/video-how-to-use-n...
Something you notice immediately is that they never feel like they're being used when someone wants to "meet for coffee" as transparent cover for getting something out of them.
They realize that someday they'll need their back scratched, and there's always the possibility that they'll get something (a tip, a lead, etc.) out of an unexpected meeting.
The entire reason LinkedIn exists is because most people, even many very highly skilled people in professional career roles, find it difficult to make effective use of such networks, for example. And if you're an engineer who has experienced a rough patch of employment or worked at a company or in a role or under a boss they hated or experienced a period of burnout or underperformed somewhere due to any of those circumstances the whole thing gets that much more difficult.
There you go. I spent (really too many) years at one small company after moving from a top-5 city to a top-20 city. And some of my contacts have left town.
Also, even if I've got people who can vouch for me, how do I tell them I'm looking for work? (This might sound trivial but I haven't figured it out.)
Given the alternative is being stuck in a boring job, or low pay, or unemployment, what is so difficult in shooting an email asking if they know anyone hiring? What would your reaction be if you got such an email from an ex-colleague?
But then, I spent 8 years at one job and in grad school. Anyone I knew before that would be really hard to find even if they could be a useful network.
And I was really bad at connecting with my committee--I graduated, but without a good network there.
Then I moved across the country.
I've never had any problem finding work, if I shop my resume around to local contractors and "body shops". In fact, I've made a pretty good career out of that. But "exciting" work? Not so much.
At this point, I'm considering getting out of the field. And I love what I do. I just hate what I'm doing, if you can see the difference.
For two companies.
I think I'm probably the last generation that looks at long-term employment as a good thing, and the older I get the less risk I want to take in being "the new kid" who would be the first to go if anything went wrong with the company.
I also don't talk to former co-workers much because I've moved on to different problems.
So, yeah, I'm bad at networking.
I do. They almost certainly know more than I do about anything of any substance. Maybe they don't know node.js and mongodb as well as some young person, but they can figure that stuff much faster than I can learn any of the stuff they've learned throughout their life. I worry more about the opposite: who wants to work for someone young enough to be their child?
Exactly, there is nothing magical about implementing the Reactor pattern in a 25-year old language.
I was just reading a response to this article with someone who was much older, like 50 or 60 or something, also said he was a Node.js programmer.
I've actually been really paying close attention to trends, new programming languages, etc.
Node.js is kind of old news. The coolest new programming language I know of is Nim.
Stuff that I think that matters for the future is higher-level semantic metalanguages for information exchange and information systems factorization, fully distributed computing, connected devices, and custom circuits/electronics.
I didn't mean to imply that no "older" developers are interested in newer things, just that it really doesn't matter if they aren't.
While I enjoy the current situation, it's unlikely to last. Sometimes we forget that there's plenty of people who have simply built up a clientele and a repuation through plain old networking. These jobs tend to be more lucrative and probably don't require you to learn the flavor-of-the-month js framework. It's no surprise that we don't see many experienced professionals competing for what are essentially entry-level jobs (despite the use of the word senior in the job title and despite the high salaries inexperienced developers command). Obviously not all experienced professionals have built up that network. Those are the people you see applying for jobs.
Source: I spent a couple years getting to know a network of CTO's and architects who have been doing ecommerce since it's inception. They are in demand, they don't apply for jobs, and they are paid handsomely, and yes some of them are grandfathers or grandmothers.
Interview offers, and they only come to the people who have the right combination of keywords and location. Miss on one or both of those counts, and you are invisible. The second seems to be much more important than the first, too.
Hi, I see you're doing [JOB] at [COMPANY]. How would you like to do [JOB minus 4] at [COMPANY minus 2]? We have Beer Thursdays and your fellow employees will all be young enough to be your sons (and yes, they're all male).
And at best it's:
Hi, I see you're doing [JOB] at [COMPANY]. How would you like to do the same job, but at a different, but very similar company, with the same lack of a future career path?
What you never see is:
Hi, I see you're doing [JOB] at [COMPANY]. You probably feel like you're in a rut there, and are ready to advance to [JOB + 1] at [COMPANY + 1].
All you have to do is sift through that firehose for jobs that match your expertise, at companies you wouldn't hate to work for, at rates and hours you'll accept, and that don't seem like they're just jerking you around. Then after you've expended that effort you can begin the actual process, which may fall through for any one of a billion reasons, not the least of which are that most recruiters are jackasses with little understanding of the actual field of work.
For anyone with a slightly complex set of skills just getting to square 1 of having a recruiter or HR person be able to understand your skillset is damned near impossible. And there's no way they'll actually be able to have a proper appreciation of your competency except in the crudest, most oblique manner possible (e.g. years of experience, "big" projects completed, expected wages, etc.) It's hard enough to have a conversation between talented, highly knowledgeable software devs which actually parses the differentiation between various job roles (like, say, systems engineering and web dev), which can span enormous ranges of differences. Trying to get the human resume regex parsers we know as recruiters and HR personnel to understand such things, good fucking luck. And yet today those people often stand between you and a job.
I could only imagine the state of the industry without word of mouth referrals.
If you need the recruiter in order to get the interview in the first place, it doesn't matter how well you shine in the interview.
I once had a recruiter (he had my resume) contact me for a Novell admin position. And there was nothing related to Novell on my resume. Then I knew not to waste time with 'recruiters'.
The experience I've had with outside recruiters in the past 10 years is atrocious, though. All they're looking for is warm bodies to toss at a company, and hope one of them sticks. No or limited experience--they still want to present you...after modifying the resume you've sent them in Word.
Today's outside recruiters are inexperienced in and ignorant of the field ("Your last job was a fitness trainer??"), and borderline unethical.
I'm still surprised so many of them are in business.
I've observed that Group 2 (your 75%) frequently winds up in "Director of IT" positions where they can productively re-use that year over and over again keeping the ship running. Some of it is a lack of imagination, some just a simple desire for stability. Either way, they get very stuck. Their firms can't afford for them to do anything else, and they have to take a pay cut if anything bad happens.
Now my question.... By keeping a low profile, do you feel you are artificially lower your wages or opportunities? You're in the same boat as the top 3 or 4 developers I know - very talented, well paid, jobs find them, and employable in any market. But sometimes I wonder if they could get paid more if they were more visible, simply from supply/demand. (They have a scarce skill, increasing the demand for it should increase the wages) Or is it that anyone who would properly employ them is by definition outside mainstream hiring and would know them already?
BIG caveat: my family and I look a lot younger than we are, with no effort at all besides clothing and wearing a backpack I could pass as a 20 something college student through my early '50s. I also had to be careful in talking about my background, in one memorable 2003 interview I let slip that I'd worked on PDP-11s and the technical interviewer who was probably around my age exclaimed "Just how old are you??!?!??!!!"
Which wasn't intentionally an illegal question, just that the mental model he'd been building of me suddenly went TILT. I did get that job, software archaeology where experience made a difference.
http://pdos.csail.mit.edu/6.828/2014/xv6.html
Note this will depend on such things as having enough experience to show you're a generically good employee. If you were a new graduate I'd look favorably on e.g. in high school starting out at entry level in a fast food restaurant and working your way up to, say, shift manager (if you could make it that far, very favorably).
But I went more by the oldest jobs that looked really good on my resume, like being the VP of tech or being directly or indirectly responsible for most of my company's revenue, and including figures. Even better than developing software that you claim works is having people buying it and proving it works.
But I've also noticed the people who love talking with me about that are not hiring me. It seems they bring me in to reminisce about the old days, and then go hire someone else. As nice as it feels for my ego, I might drop it.
I've done that.
> I'd already been trimming older jobs due to length and lack of relevance)
And will probably try that as well. I agree that removing any indicators of age helped a lot with getting interviews. This would also help with clueless agents contacting me about PHP or Perl jobs when it's been a very long time since I did either of those things.
Or not cluttering it with no longer particularly relevant technologies. E.g. programming Windows at the Petzold level (although some discussions on HN have given the impression that right now that might be the way to go :-( ).
We have a large number of developers with 20+ years experience. You aren't seeing their resumes because they're here and don't have a reason to leave.
I've been here 12 years now, and if you can't match the 25 days vacation, 10 sick, 12 holidays, plus bump my salary 10% or more, I won't even call you back.
Edit - I'll also note that I'm a project manager by title. I don't have personnel responsibility, so I still get to spend a lot of time on technical issues (and even some coding).
Not saying you're mediocre; but a job like that leads to mediocrity and complacency because the work is often unchallenging. Again, nothing wrong with that since your life priorities shift at some point -- taking care of your family with a stable, high-paying job is often far more important in your late 30s than having a kickass fun job. But developers in their late 30s tend to have jobs that aren't so glamorous to us on HN.
HOWEVER, I can give you a little bit of advice on what skills might be a little bit useful. You want to learn to create reports/data portals for something like Oracle Business Intelligence Suite, SAP's Business Objects, or IBM's Cognos.
Bank of America used to use Oracle's solutions, but as I understand it they're moving over to Business Objects. For the rest, I can't say, but there are a lot of companies that want these skills.
Any suggestions for books on it? They're training me, but the more I can learn on my own, the better.
Sorry, no suggestions for books.
Do you know if you'll be working with Crystal Reports? Or directly with the Business Objects API? Either way they're both very, very poorly designed and implemented. Good luck I hope you're getting paid well.
Want to set up a testing instance and just play around or build something? They're either not available or horribly crippled. If you can get into a company that is doing it already and you can get access, you will have an easy time learning it (but it's not exactly fun).
He worked in networking. I guess it was one of the largest private networks in the world, and they had a big budget and got to use tons of interesting gear (make it fast! make it secure!). I don't think his department was mediocre in any way and was probably a rewarding job (providing you can get over the working for an evil corporate kinda thing).
I'm speaking more of the peripheral IT functions - the one-off business apps and reporting solutions that departments within banks will often use because no commercial product exists to serve a specialized need. I can think of one example at a major international bank that was executing over a trillion dollars in currency trades a day. They had a pretty basic tool that basically amounted to a spreadsheet with some custom logic that pulled data from a bunch of systems and aggregated it so the traders could book a bunch of smaller trades together and get better rates. This tool was super-niche and quite simple from a programming standpoint, but it made the company probably a million dollars a day. So they paid a guy a full salary to maintain it. He had been in the job for 15 years and was pretty well settled in. They probably didn't need someone full time dedicated to this, but it's not hard to justify $100-150k in salary for someone to maintain a system that generates $200 million a year in pure profit.
It's a different challenge. At a bank, you manage a system based on boring, mature technology, that processes billions worth of transactions every day. Or a server park of 20,000 machines. It's not mobile game development, but on the other hand at least it's not mobile game development.
It can also be work with too many grotty doesn't-teach-you-anything-technical challenges. For example, a bank that has acquired multiple companies with incompatible, archaic, poorly maintained systems, and struggles to keep them interoperating while stitching them together under some ill-considered technical policies and bizarre regulatory side constraints. Struggling with medium-scale technical challenges that only exist because larger-scale technical best practices aren't followed isn't as productive as it could be. You do learn things but it's akin to learning how to develop code in a dysfunctional language in the absence of specifications and source code control systems and testing: too many of the things you learn tend to be kinda messed up. And by the Anna Karenina principle they may not generalize well to your next job, even if that job also has more than its share of screwed-up challenges.
All businesses tend to have some proportion of work that is too idiosyncratic and ill-conceived to be satisfying or to be a good long-term career choice, and it's dangerous to overgeneralize from anecdotes. But I don't know any way to sharpen up a claim about the proportion of idiosyncratic ill-conceived work so that we could test the claim with proper statistical sampling. Falling back to anecdotal evidence then because it's all I have, there might really be a tendency for some parts of banking have more than their share of this.
Some banks can be so weirdly huge, that one department may be developing a simple website with last decade's technology, while another has computer scientists working on algorithms for a high frequency trading system with microsecond accuracy, which may never at any point have an unscheduled hiccup of a fraction of a second. As far as challenges are concerned, it's hit or miss, just like in any other sector.
America is the only country in the developed world where people tolerate and expect restaurants to pressure workers into preparing food while they're sick and can barely feed their own families. Don't eat fast food if you visit.
And maternity/paternity leave is almost non-existent.
All of which leads to people coming to work sick, spreading disease, being miserable, burning out, and spending a fortune paying strangers to watch their babies.
* Horrifying by Western European standards.
If your company has an actual interest in employee retention, you have found a real gem. But the rest of us are getting screwed over too often to ever sit back and pretend to have job security.
What I am finding now is that every place I might want to work has no software developer employees my age (which I find to be very suspicious) and every place that does have developers my age or older is a career dead end, SNAFU, or both.
And having my ear to the ground for so long, I have noticed a steady progression in HR recruiting practices from barely tolerable to downright rude. And the time between first contact and offer (if any) is stretching out longer and longer. (I don't live anywhere near California, if it wasn't obvious.)
So if you want to be an old developer, it appears as though you'll first have to solve the problem of how to find steady work without using a resume. There seems to be an element of chance involved, such that each skill and contact you acquire at your current job gives you another roll or two of the dice for the next. I really crapped out with my last gig, which yielded zero new skills and zero new contacts, for entirely related reasons, but a contact at the previous job helped me land my current job, where I am working with someone I knew from three jobs ago.
I am not a particularly big fan of the good old boy network method of hiring, but if you are both good and old, you still may find it difficult to get hired via the HR process. That process is fundamentally broken, and it is quite unlikely that any company that interviews you will ever give you more than a single bit of feedback, that being OFFER=false. Many won't even explicitly say it, letting their extended silence do all the talking.
So I would venture a guess that older people STAY because the effort of trying to GO has become so excruciating for many of them that it wouldn't even be worth it if it resulted in a 50% pay raise. And for some of them, they know that will never happen.
Can you explain this one? I don't even come close to using my sick time up. I'd much rather have them give it as one giant PTO bucket (unless you're implying PTO is less in total than vacation + sick).
Think about how salary works. If you work as an exempt salaried employee even one minute during any given week, you are supposed to be paid for the whole week. That is why vacation time used to be granted as an integral number of weeks. Converting weeks of vacation into hours of paid time off is simply another step on the slippery slope to treating some salaried workers like wage workers, without any of the additional rights or protections.
Also, anecdotally speaking, every time I have experienced the conversion (3 times), new PTO total has been less than old vacation + sick, and it has always resulted in fewer actual days spent on vacation. The PTO conversion is always the company trying to cut benefit costs quietly without triggering a mass exodus.
As a corollary, if you have PTO and intend to leave a company, use it up before giving notice.
And we haven't even touched on other issues. People with PTO may be less likely to stay home when they are sick, because it reduces the amount of planned leave they can take. This results in more contagion in the workforce.
There are very good reasons for paid vacation and paid sick leave to be different classes of benefit. But in this case, it is simply a coal miner's canary. A company transitioning to PTO is reducing their labor costs by reducing the benefits of their productive employees. Look carefully to determine whether any effort has been made to reduce overhead. PTO by itself is not an unambiguous signal. If execs are still giving themselves bonuses while your earned leave becomes PTO, they probably just reassigned the value of your benefit to themselves, and it's time to look for a new employer before they come up with another bright idea, like stack ranking.
This criticism also applies to some extent to "we don't worry about leave" companies. I haven't ever worked for one, so I can't say for certain.
Engineering has almost always been an entry level job; computers or not. You start as an engineer; and as you get better, the number of engineering management jobs is pretty limited, so there's nowhere to go for the vast majority of people. But you get pulled into enough internal projects you start to develop a bit of business sense, so many people will often go from engineering up into the business (it doesn't hurt that many engineers are smart with a solid foundation in applied mathematics).
This isn't just the case with development. My father in law started out as a structural engineer. By the time he was 10-15 years into his career, he was managing large construction projects. 30 years in he was running a big portion of the company.
I saw the game for what it was early and got out of engineering before I hit 30. It's a treadmill of skill development where having over 10 years of experience doesn't benefit you, since the technology du jour changes every decade anyway. I still enjoy hacking and coding - but I do it as a hobby.
An MBA and a CS degree are a powerful combination. In fact, if there were more engineers with MBAs, I doubt the MBA would have a reputation for being somewhat clueless about practical matters.
Some days I'll sit down and work with other devs on code even write them some examples to illustrate what I want, and then the next I might be talking to senior business people from our customers.
I didn't do my MBA until I was in my 30s and had already been a CTO, biggest thing I got from it was the ability to think differently - literally turn an argument around to see it from the other side, and a lot of friends who done various masters degrees say similar things
But again, there's only so much market demand for that; and I would have trouble believing that more than 10% of his peer group at age 30 went that way.
This is more typical to what I've seen: someone started out as a developer writing back-end code, but noticed that it was more difficult to deploy the code consistently than it was to write. So they started helping out the tech ops team with that, until it became most of their job. Then the tech ops manager quits, and the company needs a replacement. The back-end developer was doing the job anyway; and it's a pay raise, so why not. Now they notice that the real reason it's so hard to deploy back-end code is because the servers are never patched, so they work on a process solution to make sure everything is consistent. The work is still technical in nature, but it's becoming much more process-oriented.
Maintaining a technical skillset is hard. Not many people have the energy to keep it up throughout their 30s when they're having children, taking care of sick parents, etc. So you'll see a lot of people gradually move to the business side - which isn't hard to do when you have an engineering mindset that helps you solve hard problems. It's also often a pay raise anyway.
But in general it makes sense for experienced people to move into managerial roles where they can leverage their knowledge on a meta level, rather than purely object level work.
The other is to become a specialist (as in, an expert in something). It's not as common, and most companies don't offer a dual track (and when they do, it can be a trap)
The one thing you don't want to take is to get stuck (the "one year's experience 30 times" edw talks about), and I see lots of people getting stuck. I'm kind of stuck myself but I think I'll be able to transition into business soon.
What did you jump into afterward?
Net result is I took on a bunch of debt to go back to school but my salary is much higher now and I have a lot more control over my destiny. I don't regret it for a second.
In this context, what would you define as 'product'? I'm curious as I hear it mentioned and it sounds fun, but conjours up mental images of inventing the next Gilette razor.
IMO, product in tech companies is a much more exciting role because you get your hands dirty with creating the product. Let's say I'm the product manager for Facebook's News Feed. I would work with designers, developers and marketing folks to determine the features of the product. For example, I could say "Hmm, let's show more ads to people between the ages of 18 and 29 than we show to people between 13 and 18". We would test the hypothesis either through focus groups or A/B testing and determine if users are like/hate/neutral on it, and if they're like/neutral and it provides more money, it's now a feature in the mainline product. The role is slightly different at different companies (product managers at Google are expected to write a little code and lead engineering teams, for example) but the core tenet of the job is answering the question of "What should the product be?"
Product management is the central role at any startup for the first few years. A good product manager is worth their weight in gold. A great product manager can make you billions. For me, it's the perfect mix of creative, technical and business disciplines. You have to have the vision to see what the product can be, the technical chops to know how to get it done, and the business sense to know what levers you should be pulling at any given time.
The truth is actually far more extreme. Some developers are orders of magnitude more productive than others. The work they do is simply that much better and more valuable. This should be unquestionably true as there are several examples of very, very small development teams (sub 5 person sized) who have churned out incredibly valuable products. You can chalk some of that up to luck, especially in the case of games, but not all of it. The fact is, building software well, building software that works, that does something valuable for users, that is free of major defects, that is designed in a way so that it can be maintained and extended easily, and so on, those things are not just about how many lines or function points a developer creates. But those things can add millions or even billions to the value of the end-product, and they can be done just by one person.
Software is not factory work, nor is it strictly just engineering. The most important part of software development is a creative, artistic endeavor. And like all works of creativity the end result has an enormously wide variation in quality and value.
If you're doing very "shallow" software development (e.g. pumping out CRUD apps or CMS backed sites or what-have-you) then years of experience may not do a whole lot for you. If you have the opportunity to take on meatier dev work then experience is more than just learning some tricks and being knowledgeable in the frameworks and toolsets of the day, it's about deep skills. About how build things well, and right. How to communicate effectively. How to write truly self-documenting code. How to wrangle the complexity of the problem space and the implementation space while mediating for the user in a way that makes sense to them. And so on. Some devs in some jobs just keep adding to their skilsets as time goes on.
Some unexperienced developer might be stuck with a small issue for days just to complete some bigger task. Here the experienced developer can answer the question in 15 minutes and the unexperienced one can continue with the simpler tasks.
How come no one asks where do old chefs go to? What about old artists? What about old musicians? What about old plumbers? What about old construction people?
More than likely, the answer to the question, "where are the developers with 20 years experience?" The answer is, "the same place they were 10 years ago."