"Working in the industry for a long time doesn’t automatically bring seniority either"
I can't emphasize this point enough. Most engineers, who are doing the same basic tasks every day over and over again for years, identify themselves as senior engineers. I understand that people like to stay in comfort zone when there is no need to get out, really. This is something I do too. However, this bothers me when these kind of engineers block and mock their colleagues(especially juniors) by convincing them he/she knows better, when they try to get out of their comfort zone and learn/do something new.
Several of my favorite coworkers are in the few fucks given category. They don’t want to be in charge. It’s too much work and too little return.
I’m not sure they’re wrong. If most of our problems come in the requirements phase, and we don’t have all that much control over those (some businesses the sale people sell things before we have a chance to veto) then you can be as efficient as you want and still be ineffective as hell.
And there’s always bad luck.
Probably they’ve figured out that tying your ego to your job means every bad turn becomes an existential crisis and that’s often a lot of wasted energy.
I spend a lot of time trying to put people in a place to solve their own problems. To me that’s always been the role of the lead, but some people think it’s all about them.
Indeed. As I've had to remind many people over the years, "doing the same basic work you learned in your first year repeatedly for 10 years is not 10 years of experience... it's 10 of the same one year."
I disagree a little. 10 years after you start painting you’re still doing the same thing mechanically: putting paint on the brush on the canvas. But you are in a whole new game.
Too many programmers measure themselves by whether they’re leveling up in the tools they’re using and the kinds of problems they’re solving. In some cases I think they’re deluding themselves. They’re on easy mode, creating a sensation of movement for themselves without ever getting into the hard stuff, which is not glamorous, it’s things like naming and restraint and kindness and caching patterns.
I have kind of spent my whole career learning how to solve the same problems better. It’s still the same DIVs and HTTP requests I was manipulating 20 years ago. But the game I am playing within an organization and within a platform is fundamentally new.
I can see how from the outside it might not look like I have “leveled up” but I think I have leveled up in my methodology.
I'd agree with your criticism of tool/new hotness as a bad metric for measuring leveling up. It's too easy to get the dopamine hit from novelty or being busy rather than putting in the real work that provides value.
We learn to solve the same problems better because we're exposed to the limitations of our initial naive understanding of those problems and the methods we choose, which may be sufficient in the first year, but over time that understanding becomes deeper and the methods become more elegant, reliable, and maintainable.
The wisdom and methodology improvements are necessary components of achieving 10 years of experience, but the 10 years of the same year approach literally is staying at the same level of understanding no matter the number of projects.
yes, and tomorrow you'll be extolling the virtues of software development where every new project is unique and you learn something new from it, yet somehow this senior person you disagree with just had 30 years of the same experience.
Will I, especially since I'm actually the engineer with 30 years of experience?
Jumping from new hotness to new hotness isn't a means to achieving real experience, it's often a quick way to 10 of the same one year since you never gain depth of understanding by flitting from one thing to the next.
Nowhere did I claim that you must have new projects/tools/stacks/toys/whatever to gain real experience.
This is the key, or should be. Where I work it is often repeated that what you’ve done to get “here” isn’t going to get you “there” so doing more of it isn’t going to help.
A senior engineer is someone 3 years into their career no longer willing to work for paltry wages. Stop glorifying something every mid 20s in the profession deserves. It only serves to keep the power in the hands of the corporate elites and the wage pressure down on an already meek, mostly economically illiterate and unconfident group of otherwise intelligent and productive individuals. If you want to write an article worshipping your ideal of a nerdy super-hero, make it about senior architects at FAANG earning 1 million+ per year instead.
I kind of agree with your sentiment about trying to upend the narrative.
but as someone who has spent more than 10 times your 3 year engineer in the trenches, never made closure to 1M a year, and tries to ascribe to the qualities expressed in the post...I can't help but feel a little undervalued by your representation
One of the details I remember from middle school is that the “ball hog” invariably looks down on the team player. I think perhaps one of the big lessons from junior sports is that this person isn’t all that great in the scheme of things.
But a lot of us didn’t pay too much attention to sports so I’m not sure how widely that lesson spreads.
My sport of choice was cycling. And one of the peculiar things about club cycling is that either everyone crosses the finish line or nobody does. I couldn’t tell you for sure if that molded how I approach group dynamics or if the way they handle group dynamics is what drew me in. I think there are enough other moments in my childhood to say it was both.
The absolute worst person to put in charge, in my experience, is the person who writes the most baroque code. The person who has to fix problems because nobody else knows wtf is going on is not a hero and shouldn’t be celebrated. They’re a ball hog. And hogging just leads to more hogging.
I'm struggling to understand who the audience of this post is.
At the end of the day, "Senior Software Engineer" is a job role, not some ideology. Pretty much every where I've worked, Senior means someone who knows the why. Most companies review the engineers already on multiple axes, not just technical merit. There is little value in baking these non-engineering skills into the definition.
Articles like these certainly don't help much with the impostor syndrome.
What aspect of the project are you referring to when you say "someone who knows why". I would imagine everyone on the team should know the "why".
How about, a Sr. Software Engineer is someone who can work on, whatever technical problem your team is trying to solve, with little to no supervision. They can also be expected to occasionally provide technical direction/assistance to others on their team.
Within that title you can always set grades to allow for progression in salary and experience. Sr. Software Engineer II or III and so on.
After all, business wants to make money and solve their problems. And the more independent and effective you can do it, the higher your role will be. Businesses can be different and the roles have different requirements as well.
And the top skill of the engineer is not the list of known programming languages, not the ability to close tasks, not knowledge of the bazillion algorithms, not certificates of the scrum master. Namely, the ability to take a real problem and solve it yourself is the main skill of a professional. Solve it yourself does not mean alone. By yourself means to be able to find the necessary resources, people, set tasks, control the result and bear responsibility for this.
so someone that spent 12 years writing brilliant APIs and implementations, advanced the state of their field and their company's business, but they are fairly mediocre at being team players (not going to name names and get into flamewars but I can certainly come up with a half dozen famous names off the top of my head), they're ...junior engineers?
Anytime I see someone signal that they freight the "senior" in "senior engineer" with a ton of significance (self-import?), they fall in my estimation a bit.
That move says something about their frame of reference, and what it says doesn't do them any favors.
Leaving aside its intimation of a possible inferiority complex being overcompensated for, here are some observations:
1. "Senior engineer" is a mid-level title at high-prestige tech companies.
2. Organizations with flat teams (a model that typically only functions well when everyone is relatively senior) have no reason to load the title with a ton of significance.
So when you pontificate about the importance of the senior engineer, you suggest that you (1) are not at a high-prestige company, (2) work in a more hierarchical team structure. Neither possibility is flattering.
FWIW, I would consider every point outlined in this medium post to be a desideratum for any engineer, regardless of seniority level.
> A senior engineer should have T-shaped knowledge. It is expected from a senior engineer to have broad knowledge about various topics and deep knowledge about some topics.
More than that. A senior^Wgood engineer should be a generalist who can specialize as needed.
I think the article has some good points regarding the expectations of a senior engineer but also seems to conflate the duties of a team lead with senior engineer, but in my experience those are two different roles (and usually titles).
Maybe "A senior engineer should support their peers" and "A senior engineer should empower their peers through their career track"? and I think those should be mandatory for a good team lead, but they don't really hurt in a senior either. I think the article focuses a lot of one definition of senior who is a good team player as well and not the star coder/hero of the team who pulls all-nighters and whose code no one understands. There are some areas where you need these people, but I'd rather go with the team players most of the time
I think "A senior engineer should be a motivator for the rest of the team" is a bit odd, but maybe rephrasing it to "A senior engineer shouldn't be the one complaining all the time.", if I was hypothetically speaking about myself :P
Yeah, a senior engineer role is most assuredly is NOT "all-nighters and unreadable code." But neither is it necessarily the mentor style of role that the author advocated, which is more appropriate as the job duties of a team lead.
A senior engineer most assuredly should be the one that thinks about the problem at hand in a deep way, preferably understanding the business needs and such, and provides solutions that not only solve the immediate need but also has the flexibility to anticipate future demands. It would also be nice if they proactively tried to improve less-senior engineers via mentoring and contributed leadership to team building but those are, in my opinion, bonus attributes rather than fundamental necessities.
‘Senior’ doesn’t mean anything except within a single company. My very first job was as a ‘senior’. See it as just level X within some company and don’t worry about the word itself and don’t try to compare.
"Senior" at my company evaluates to "indispensable." If you aren't senior, then your performance is at a level that your employment can be terminated for cause. "Senior" means you are on the bus in the bus factor.
Good points, LinkedIn asks this question in behavioral interview “whats the difference between junior and senior engineer”..I had similar points but you have articulated it very well.
Tech Lead here, 20yrs or so experience I guess it is now, I don't know what counts and what doesn't.
That's a good list, but I find it's very difficult for any one person to live up to all of that. It's asking a lot. How is my role going? They're asking a lot of an introvert who is fun to work with but not great at motivating others or being empathic. I'm a decent leader, but not a great leader, nor will I ever be. It's just not my gift and while I try to improve those skills, I know that I will only get so far because I'm not a corporate person at heart. I have no great respect for how US companies are managed, no great respect for managers, especially the MBA variety, whom I compare to parasites--blood sucking, unethical scoundrels. I don't wish to be "the worst of us." I get that many of them didn't set out to be that way, but something about corporate culture germinates profound psychopathy in people.
Not going to lie to you, being a "software engineer" (an extremely loaded term these days, and I argue, one that isn't a correct labeling of anything we do--there is no "engineering" whatsoever) and the role is not worth the money they pay you. "Information Sharecropper" has a more honest ring to it.