The role of a Senior Developer
mattbriggs.net
mattbriggs.net
I know you admit that it's a gross oversimplification but this kind of talk still bothers me a lot. It's a lot like when, to use a (honestly shoddy) metaphor, people talk about rankings in a video game like League of Legends. Some times you'll hear talk like "the difference between a bronze and silver player is game sense!" or "objectives control!" or "mechanics!". The truth is it's all of these things and none of them. A silver player is simply better than a bronze player.
I think the same goes here. There's not some magic thing that a senior developer has that a junior developer is missing. They are simply, overall, better.
It's on our list to make a more sophisticated dupe detector, but I don't know when we'll get to that.
For a specific number (I don't think I implied that), their inner product is higher.
Basic economics dictates that there is only a shortage if prices are increasing, and they are not, certainly not relative to overall price increases.
Secondly, there are plenty of developers -- but like me they go into other job roles. The reality is that a developer salary does not support a family in developer-job-rich areas. You might find junior developers because they are willing to share apartments or live in shacks, but once you start speaking about senior developers you are often also talking about someone married, possibly with children.
The problem is certainly not a lack of developers but a lack of hiring managers paying a living wage for that stage of someone's life.
Cant find senior developers? Quick trick -- raise the salary and see them pour in for interviews!
1) is a sentiment I've seen frequently expressed, but is not really panned out by the number or type of job postings in secondary hubs outside the Bay (e.g. Chicago). 2) makes more sense, but the article doesn't really address how to solve the root issue when hiring managers aren't willing to hire from the previous two buckets.
Think of this analogy, suppose you are looking to fill your car up with gasoline at $1/gallon. You cant find any. Is it a shortage?
I do wonder if most of their value comes not from their brains but from their pliability and capacity to be overworked?
A software consulting firm, after all, is usually a bunch of fresh grads headed by one "architect" with experience. Most of the work is done by, and most of the decisions are made by, the fresh grads, but the work is being billed at a rate that assumes the senior "figurehead" developer, and others like him, are doing the work. (This is also true in law, finance, advertising...)
Or, in other words: http://marginalrevolution.com/marginalrevolution/2012/02/rob...
There is also a huge nebulous gap after that where cost and talent is not that closely connected. You can have two people with similar resumes where one is worth 200+$/hour and the other is barely better than an intern. Worse this can get very project specific. People that do great things for one project can bomb another that's superficially similar.
Recent grads may be of near universally low quality, but it's predictably bad.
There are many paragraphs in that post that I agree with, but this one struck me particularly as my motto of the last 5 years or so has been to "keep it simple".
Edit: grammar
Also, a lot of the points the article makes about the senior engineer seem to be about a 'business sense' - what the actual business problems you're solving are and how your solutions influence the business itself. I really like to know all that - in fact, those are my starter questions as a candidate in any job interview - but I don't know if it's just an innate trait that some people have, if it's something you pick up, or maybe both to a degree...?
And I don't consider myself a senior engineer, not by a long shot...
Nicely put. Good read.
One cannot become a cardiothoracic surgeon simply by being a doctor for 10+ years, or even by taking part in thousands of open heart procedures as an anesthesiologist.
Unfortunately for our profession, looking for a 'solid CS background' or an active github repo haven't proven universally effective as methods for identifying self-sufficient people capable of building reliable systems that solve complex problems. Those people are more easily distinguished by being in exceedingly comfortable positions already, or enjoying early retirement.
I don't think these are descriptions of senior developers per se, but rather of people who have gathered enough experience to both drop the arrogance, realize the uncertainty in even the best projects, and to appreciate the importance of all those parts of our profession that are not Writing Code.
To me, this isn't exactly being a "senior", but is rather the minimum required to count as a professional. It says something about our industry that attaining such a state is worthy of so many words.
That's an ideal statement about servant leadership, a posture that often works wonderfully. But given real-world dev cultures, you also need straight-up power to protect yourself from other devs, if you don't have hiring/firing power. Those juniors/intermediates are often trained/filtered to be unpleasant examples of humanity. I wish it were otherwise (and there must be many exceptions), but all that "cultural fit" stuff generally means something bleak.
I'm a "Lead" Developer without direct firing power, but I know my CTO has my back. If I ever recommended firing someone out of the blue his response would be, "How did you let it get this bad without looping me in sooner?" And he would be correct.
I'm glad I don't have autocratic power and I would never work for a company that handed that much power to one person.
...And senior's decision will unfortunately often be suboptimal as well, but that's what it is. He at least tried to understand the consequences and didn't have access to more information to evaluate it better. But he tried and will reflect on the failure and hopefully do slightly better next time at least in similar context.
I think if an engineer is inclined to leadership, and has grown T-shaped in some way, then a Sr Engineer title after 3 years doesn't concern me. A successful engineer with 3 years experience is vastly more valuable to me on a team than an engineer right out of school. And I'd much rather have "Engineer, Sr. Engineer, Principal Engineer" than "Junior Engineer, Engineer, Sr. Engineer".
Also, many companies have created multi-tier systems: Jr. Eng, Software Engineer, Sr. Engineer, Lead Engineer, Principal Eng, and so on
Sometimes it is just about pay grade and rewarding people with a title. I am not saying you should not speak your true mind to a SVP or ESVP, but you should expect that people with more prominent title have more authority and more say, because ultimately someone has to make a decision on yay or nay.
I feel finding a place where you can truly have impact even as a junior is incredibly important, if not, more than a title. People respect those who work hard, capable and honest, but title still matter.
I much prefer a guild-like system for measuring actual aptitude:
• apprentices know one thing well enough to do it (the average "Java developer");
• journeymen have a good picture of the field, know what "the best tool for the job" is in most cases (even if they don't know that tool), and have the meta-skill required to efficiently pick up a new language/framework/paradigm/whatever else in order to solve a problem that requires it;
• masters have enough experience to flinch away from bad design/architecture. They've been burned by every category of problem it's been possible to be burned by, such that they have a complete high-level picture of all the moment-to-moment considerations involved in "the art." They know what questions to ask about a proposed pull request to determine its quality. To get here, they've likely completed a major "masterpiece" work on their own, and maintained it under heavy use by others.
These aren't categories that match social standing, or seniority, or experience, per se. In fact, they don't even form a tight match to the kind of "skill" people look for in job ads; you can become a "master" at 15 if you accidentally build something really popular, even though you still need a cheat sheet to remind you what's in your language's stdlib.
But these categories are able to be objectively fit to people (it's pretty clear in which one a particular person sits); they can be carried between organizations with no loss of meaning; each category is a strict superset of the skills of the former; and they tell you something that's very useful to know.
Interestingly, it would be fully possible to set up an educational curriculum that could make every graduate a "master" by the criteria above. Right now, though, colleges only make apprentices. Companies sort of make journeymen, though rarely. And no part of "the system" has any chance of making someone into a master; they have to pursue such a trial on their own.
This terrifies me every day. Any ideas how to solve this problem?