
Things I Learned to Become a Senior Software Engineer - janvdberg
https://neilkakkar.com/things-I-learned-to-become-a-senior-software-engineer.html
======
aronpye
It seems millennial achievement medals have now become job titles. Two years
to become a senior engineer out of college is a joke. You only just know how
to work in a general sense in that time frame, domain expertise comes much
later. After a University degree, you only really know what page in your
textbook to turn to when you recognise a problem. I come from a mechanical
engineering background and it probably takes between 6-8 years to become a
senior engineer, and it genuinely takes that long to learn enough so that you
don’t harm someone with your shitty design.

~~~
switch11
I agree 100% with you

Have worked as both PM and developer and now run my own very small software
company

A) two years senior engineer is like one of those consulting companies where
everyone in 2 years becomes DIRECTOR

B) In two years most new programmers have not even gotten their heads out of
their asses

C) You should refer to Outliers

10,000 hours to master a task

And to that add

10,000 hours to make your first masterpiece

D) Even if you have managed to get 10,000+ hours of coding experience in high
school and college and somehow become a very good programmer (which less than
3% of CS grads do)

it will still take you 6 to 10 years to get another 10,000 hours of working on
masterpieces and making really good software that you can ship and make money
from

E) a title like 'Senior Software Engineer' should be reserved for someone who
has MADE and SHIPPED and GENERATED MONEY from a very good piece of software or
some software product

F) Personally, I would think any company handing out Senior Software Engineer
titles after 2 years is a joke

Between all the places my friends and college mates and I have worked
(Microsoft, Google, Amazon, Facebook, Oracle, etc. etc) I can't think of any
place that handed out Senior Software Engineer like it was candy

Even very, very good programmers had to EARN IT

~~~
mellosouls
_E) a title like 'Senior Software Engineer' should be reserved for someone who
has MADE and SHIPPED and GENERATED MONEY_

Not all software is made to make money.

There is a more convincing argument that saving time is a motivator in a
significant proportion of software either directly or indirectly; but honestly
that ugly assumption of monetary motivation in everything of value is quite
alienating to some of us - even in something as benign (?) as a discussion
here.

~~~
bauerd
Time is money

~~~
mellosouls
That saying is why I suggested time as a more useful (but still limited)
alternative.

------
lordnacho
To start with, "Senior" and related titles basically mean a person who doesn't
need much hand-holding. This might be related to time spent, but often you
find there's a lot of variation.

People I consider senior software engineers have a can-do-anything vibe about
them. They have a wide range of skills in the field, and have that T-shaped
experience profile: there's some area they seem to know everything about, and
then they somehow are able to say something sensible about a whole lot of
other areas. For instance I worked with a guy who wrote financial exchanges
but could also write a modern front-end, understood how kubernetes worked, and
knew a fair bit about databases. You couldn't throw out a term that he
couldn't place (X is a language / framework / pattern / OSS project), and you
couldn't come up with a problem that he didn't know the closest well-known
adjacency for.

That's a vague outline of what I think a senior dev is.

To get there is a long story. I think you need the good fortune of not being
siloed in something very specific or superficial. That might even include
having the "good fortune" of being forced to change jobs a few times. You also
need some luck in your personal life to be able to explore a bunch of stuff in
your own time, plus some funds (probably less relevant today where everything
is an online service).

~~~
greggman3
My experience is people in "senior" roles are more often than not people who
pushed to be put in those roles regardless of how much experience they may or
may not have. I know people placed in "senior" roles at 19-21yrs old. I'm not
saying age is a qualifier but in this case it was clear they didn't have any
special skills. But once they were given the role it carried them through
their career. With the title on their resume they continually got hired and
higher and higher levels.

------
Aeolun
While it’s not impossible. I find it hard to believe anyone could become
_senior_ (in terms of actual skill) in two years.

~~~
chriszhang
This is a very subjective question. I think a senior engineer is an engineer
who can develop features without hand-holding. The technical leader should be
able to say, "Develop feature X. These are the requirements." and then not
worry.

But what "senior engineer" means varies from company to company. So it becomes
a loose term.

~~~
izacus
> This is a very subjective question. I think a senior engineer is an engineer
> who can develop features without hand-holding. The technical leader should
> be able to say, "Develop feature X. These are the requirements." and then
> not worry.

In pretty much all companies those were just called "software engineers".
Seniority requires decision making and longterm leadership skills, not just
implementation work.

------
jek0
A manager gave him the "senior" title. Where I am, "senior" means
"experienced". When you need a senior developer in a team, means you need
someone that went through many projects and know the errors and mistakes a
team can make.

Building mental models is great, but you need to have used a few times in
different context, to really appreciate when and how they were the most
appropriate.

The experience of handling multi-years projects (and getting back to them
after a few years too) has no equivalent.

You can read as much as you like, nothing beats experience, which you will get
after years and years in the job.

------
jt2190
There are a number of commenters here getting hung up on what is or is not
expected of a “senior” employee, which ignores the likely explanation that
“senior” is something that costs a company exactly as much or as little money
as they want it to. Think of it like “air miles” or “rewards points”. The
hiring market has been extremely tight in recent years, and so it’s natural to
see companies leverage job titles as part of competing for employees. (You
might hear managers say “we’re just not getting a high enough _quality_ of
candidates for this role”, and an easy thing to do is to increase the job
title. Increasing the salary and benefits is much harder since it requires
justifying more budget.)

True, the employee can now leverage the job title for more compensation, with
their current and potential employers, but _the onus is on the employee_ to
negotiate, and in the meantime the employer gets the benefits. (Note that
“benefits” does _not_ mean that the employee suddenly becomes better than they
are, it means that a known-quantity employee continues to do satisfactory work
for the company for a time, at an acceptable price.)

------
darkerside
There is a shocking amount of ad hominem and focus on the years of experience
in this article. Are people actually reading the article? Perhaps
surprisingly, it's really fucking good. I'm absolutely planning to share this
with junior devs that I work with.

Author may not realize how much more there is to learn than he already knows,
but we all kind of have that problem, just at different scales, am I right?
He's doing all the right things, learning the right lessons, and is on track
to be senior whether he has that title at work or not.

~~~
neilkakkar
Thank you, darkerside!

One meta-goal of the post was to figure out how I can grow further. Are there
things on top of your mind which I should be exploring next?

~~~
darkerside
One thing I'd expect to see more of in this type of article would be
understanding the business domain. It sounds like you understand the value of
doing so from your section on leaning what others around you are doing. But I
think over time, you'll see that learning those specific business nuances is
what separates the promising engineer from the seasoned veteran who hears a
business problem and already knows the 4 ways it's been attempted to be solved
and why they didn't work. And importantly, still has the optimism to try again
in a different way! I recognize every organization is different so YMMV.

Rereading my post it may have came off as a bit of a backhanded compliment and
wasn't intended as such. Terrific post. I think it will help a lot of people.

------
Google234
This person has been promote one level up from the new grad level. Not exactly
what I would describe as senior

------
lmilcin
It's a good start but still some way to "Senior". Keep up the good work.

Now, it is easy to start giving "tips", but I think nothing replace good old
learning on your own mistakes. Thus, the only tip I can give is to be
reflective and honest with yourself to be able to learn and grow.

------
throwaway5938
I'll be honest, these kind of "thinkpieces" are usually full of generic
bullshit but this one was actually interesting. So if you're like me, don't
let the title put you off and read it.

------
slumdev
I live in flyover country, so adjust these numbers for your locale.

There are "seniors" who make $60,000 per year. No joke. And there are seniors
who make $140,000 per year (in a rather low cost area.)

The PHBs have figured out that we are vain and can be lured by shiny titles.
We shouldn't go out of our way to make it easier on them.

Software engineer is a working class profession. Lusting after title plumage
hurts us.

~~~
bobbylcraig
I like this take. Personally, I know that I'd _for sure_ take a job with a
greater amount of pay, benefits, and work-life balance if I was going to be
"down-leveled". Heck, if I'm down-leveled and being paid more, that likely
means I'm working with more skilled engineers.

------
Schatel
I'm disagreeing with this statement while liking the general direction and
content of it!

"There was only so much I could do to improve my coding skills. Most blogs
epousing techniques to write cleaner code, repeating yourself, not repeating
yourself, etc. are micro-optimisations. Almost none of them would make me
instantly impactful."

I do expect a Senior Software Engineer to be good in programming. Because
mastering programming is, what you do due working with it every day. The
basics should just be.

Doesn't matter how impactful those are. Your role is to sure look left and
right, but the road you are on is becoming an expert in what you are doing.

And generally speaking about the Senior title: I think from reading it, he
does look in the right directions and it could be that he is already there but
for me, Seniority become a thing not after understanding all of that stuff but
actually incorporating it in a way that it became second nature and honestly,
it took me years and a handful of core experiences along the way. But who am i
to determine his seniority through a blog? :)

------
_hao
I'm curious what's it like to work for Bloomberg in London? Can anyone share
some info or experience? (I know Glassdoor exists, I'm asking for a more
personal overview)

------
tomalpha
It's been a while since I worked at Bloomberg, but certainly back then, anyone
with 2+ years experience was designated a "Senior" hire.

It was (is?) more about distinguishing fresh grads from other hires, and much
less about significant experience or seniority within the tech ("R&D")
organisation.

------
Ensorceled
> Figuring out how to become a force multiplier sounds more valuable to me
> than a 10x developer.

I'm always astounded by what people imagine a 10x developer is, especially
some one who calls themselves a senior developer.

Hint, they aren't a lone wolf who writes 10 times as much code as the rest of
the team, doesn't deign to sit in scrum planning sessions and creates chaos
with every pull request they self approve. Maybe those people CALL themselves
a 10x developer ...

A 10x developer IS a force multiplier. Every 10x developer I've worked with
wrote easy to use APIs and Frameworks that made every other developer on the
team much more productive. A 10x developer is a senior developer on steroids;
they do everything this author thinks a senior developer does and more.

~~~
zo1
To add to your point: the "lone wolf that writes 10x more code" is _not_
someone you want on your team because they're not a multiplier in any sense
other than simply "writing 10x more code". They're actively detrimental.

~~~
Ensorceled
I have a draft blog article called "The Almost 10x Developer" because I have
seen exactly this soooooo many times.

------
burgerquizz
What is the definition of "Senior/Staff/Principal/No-prefix Software
Engineer"? All those titles always confuse me

~~~
meheleventyone
Junior/No-prefix: In their first job. You will routinely get promoted from
junior to "normal" whilst remaining at the company.

Senior: Second or third job change.

Staff: That one person who has been at the company forever.

Principal: We're an enormous engineering org and need to have a treadmill so
we don't lose our people but can't just give them payrises. Most titles also
have multiple levels.

------
neilkakkar
I was a bit worried about the title saying "Senior Software Engineer" because
this may trigger people.

But, surprised that _all_ the discussions are about this, instead of the
content.

~~~
neoplatonian
That's probably because the content in this post is more about "soft skills"
or what many would consider fluff.

"habits of mind", "tools of thought", "force multiplier", "superpowers"
"embrace fear" etc. reads straight out from a Tim Ferris-like self-help book
targetting millennials than anything a senior engineer would write.

I read your last year's post - that one was much more useful and insightful.
So +1 (upvote) to more of those.

------
jasoneckert
While there is much sage advice in this blog post, the topic that I
appreciated most was the gotcha about neophilia.

Not only have I seen my own natural tendency to overvalue new technologies
irrationally, I've seen it in most of my colleagues as well. Stepping back and
carefully weighing the pros and cons of new technologies is an excellent way
of preventing neophilia from moving a project in the wrong direction.

------
bobbydreamer
Hmm. Good read. Then I think everyone should write something about their
accomplishments in their own blog like an article on how I became a tech lead
and it would be mostly like, it's not fun. Being a team member was easy, you
know taking up few projects which others considered hard and you know it's
simple just too much action everyday. And always start a presentation saying,
"it's a simple project having n,n,n,n,n things" and go slow so others would go
and review all the things you did in the call itself.

But now you are working on 1 project namesake and hearing about all projects,
resolving issues getting into sudden meetings and knowing requirement was
understood differently and thinking about what sort of risk should be raised
for this project. Then you get to a discussion with a architect on whats a
microservice, he tells you a microservice can process bulk data(millions) and
can run up to 20-30 mins and discussion ends like oh I was thinking
microservice is like a simple unit of work and finishes off in few
milliseconds to less than few seconds. Sorry I am a mainframer we caught this
as it crossed our thresholds in UAT and you need to raise risk if you want
this go live. (Level of risk that has good visibility to management).

Wrote an automation tool 6-7 years back for myself and let others know of it
and prepared good documentation and made it part KT and now present time,
saying to people not to use my tool as I am going to decommission it as there
are other standard tools available to do the same thing and people pinging
"please don't decom it, can you rename it and let it run, as it's easier and
proven repeatedly it's error free".

Suddemly a dev contact, pings you saying I have a problem with this REXX code.
You look at the code and sort of gives you thought, this comment looks like I
wrote it. But I never wrote something for this application or person before
and asking few more questions, you come to know that my code was used as a
model in lot many places as it was easier to generate test data with it.
Credit for initial work was never given few years back but looking at how many
people are using gives a feeling wow.

Always seeing celebrities talking about their movies on TV. Given me the
thought, how come nobody is interviewing programmers and asking what was hard
for them to program and state of mind they had when programming a piece of
code. What gets them to the flow state.... It would be fun to know.

------
scared2
To be honest what he achieved doesn't need any special tricks. You just be
there do your job, and you will get it. Well actually depends on how hostile
and competitive your work place is.

------
bryanrasmussen
I guess the meaning of Senior has changed, that's fine - but what is the level
beyond Senior now?

Ancient? Graybeard? Hallowed?

~~~
psyc
At Microsoft there is a guy named Peter Spiro who I really looked up to, in
SQL Server. His official title is Technical Fellow but he called himself
Village Elder, because he worked on it since 1.0. In his own words, his job is
to float around and be available to everyone in the group.

------
ffggvv
titles are arbitrary. let's not put too much stock into them.

At google and FB, senior is considered L5/E5 which requires atleast 5 yoe.

but it looks like bloomberg doesn't have a mid level and only have
junior/senior.

[https://www.levels.fyi/?compare=Bloomberg,Google,Facebook,Mi...](https://www.levels.fyi/?compare=Bloomberg,Google,Facebook,Microsoft&track=Software%20Engineer)

------
ecmascript
It's easy to become a senior software engineer, anyone can do it with these
simple steps:

1\. Open an index.html, include a javascript file and write an alert or
console log.

2\. Create your own company.

3\. Title yourself as a senior software engineer.

Joke aside, during my career I've met several senior software engineers that
are anything but and several "normal devs" that are a lot better than most
people who have the senior title, even in the same organisation.

I don't think titles has anything to do with knowledge, rather it does have a
lot more to do with whatever position you're given and that position could be
given to you for a number of reasons. This is what has lead me to my belief
that titles are unnecessary cruft that takes focus away from other more
meaningful endeavors.

~~~
Aeolun
If I start my own company, I’ll be the _Supreme and Exalted Overlord_. Not
something silly like a senior dev.

~~~
ecmascript
That is true, I think my title would be "Dream Alchemist" or something like
that. ;)

