I'd guess at the poster not quite realising this themselves. It certainly used to be the case that the many fresh new graduates we recruited annually took quite some time to learn how much they didn't know.
On the other hand, that was the dotcom era. The number of people writing software simply exploded, as did the available technologies. The entire traditional way of doing things was simply obsoleted, multiple times over. A 21 year old Finnish student had released an operating system that contravened the textbooks and went on to change the world. A 21 year old dropout invented the entire genre of 3D video games. The largest software company in the world was run by a Harvard dropout. It was really impossible to overstate the extent to which credentials were meaningless and results were everything in the dotcom era. And that still affects the culture today.
> between 6-8 years to become a senior engineer
If you follow that timeline, there would be plenty of people who were millionaires and on their second or third startup board before reaching "senior".
Now, not everybody is a Gates or a Carmack or a Torvalds, although the industry has not quite adapted to this fact and still tries to hire as if they were. But we have to recognise that the timescales are simply very different from mechanical engineering, and that the industry is still very much being disrupted from below.
Oh, and none of those prodigies are millenials.
What does being a successful entrepreneur have to do with being a senior engineer?
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
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.
Your description of a senior engineer is not a job one person should be doing. If you’re trying to get a senior engineer to figure out how to make something, support it, deploy it, and monetize it, you’re going to get half assed work on every front.
Beyond all that, the ranking of senior should be more company scale specific. A senior engineer at FAANG needs to be able to scale infinity and build things that never break. A senior engineer at a 30 person company needs to build quickly and AB test features rapidly. Ultimately, “software engineer” is far too broad. It doesn’t really embed much knowledge beyond “knows how to code”.
Easy - until some other metric comes along to reliably replace it
It's a useful rule-of-thumb
It's not an absolute, and, had you bothered to read Outliers, you'd know that
But it's more fun to sit back and armchair quarterback others via anecdote, right?
Someone with 2 years experience in web development has been working in the industry for 10% of the entire time the industry has existed. If they've got a 3 year degree and a few years building things before that as a kid, they might have been making web stuff for 50% of the time anyone in the industry has been working in it.
"Time served" as a measure of experience doesn't really work in an industry that's as new as the web, nor does it work in an industry where the barrier to making a website is knowing how to open Notepad.exe.
Really good people could definitely make senior level by the time they've been working professionally for 2 years.
However, there are aspects of a senior engineer role that are not commonly learned in school or by hacking on hobby projects. How do you effectively lead a project? How do you balance requirements? How do you say no to stakeholders? How do you balance time vs quality?
All engineers need to be good at the technical side of the job. But as you rise in seniority, the job includes more and more judgement calls. Those judgement calls require years of experience.
Moving someone up to a senior role is giving them the opportunity to take on more responsibility and develop their skills. Very few people are promoted to a senior role already knowing how to manage a team well or how to balance requirements. The expectation is that they've shown an aptitude and potential in a mid-level role, and that they'll learn those skills after they're promoted in to the new role.
Promoting someone to senior isn't a reward for already doing everything a senior does. If you treat people that way, and give mid-level people the responsibilities of senior roles without the pay or title, then they will leave very quickly to get jobs where they do the work of a senior with the pay and title of a senior.
There’s more to it than that. If you’ve had a chance to work under someone who knows how to do the job (or someone who doesn’t, but you can see other groups that work well) then you have some idea how to do the job.
It’s similar to programming, or any other job: you write good code and bad, and learn which causes more problems; you read good code and bad and learn from it which of your own practices are good and which are not.
You don’t understand what was in your textbook until you see it in the real world. All that takes time.
A "senior" doesn't have to be able to lead a team (though they should probably learn)
If they're going the team-lead path, that's great
But it's not (and never should be) a "requirement" to be "senior"
A 10x junior engineer should be paid a lot - more than most senior engineers if everything is fair. But the rockstar junior engineer would still benefit from mentorship and someone to help them avoid some of the mistakes that we have all made.
If you look at Google, there are terminal levels that employees can reach and stay. That doesn't mean that there is a mass exodus of talent because employees want an inflated level somewhere else. They are well compensated for their work - they just don't get a new level every couple years.
In any case, it is absolutely possible to have significant domain expertise in software engineering two years out of school. When you're seeing results of the things you build within minutes, you can pick up experience quickly. I agree that you still have a lot to learn, and I did, but I was meaningfully capable of providing technical leadership two years out of school.
Is there an online test or something where you can "gauge" what tier you'd end up in a bigger company that has tiers like that? I'm not convinced I'd end up anywhere at the top because I lack things like knowledge about compilers or algorithms, things I just don't need to know in my day job.
[EDIT] Here's a slightly more detailed example from Thumbtack: https://docs.google.com/spreadsheets/d/15ACBs-crUHnqf1wANUQw... They can get much more complex than this though at the really big tech companies.
Being a senior engineer at Facebook where your responsible for making sure Cat memes load more quickly, and a senior engineer for an industrial control systems company making weapons guidance systems are totally different levels of responsibility. But, job titles are often transferable and should be better regulated across the industry.
this strikes me as an unnecessarily rude dismissal of the difficulty of engineering at scale
this might sound crazy, but some people are actually just good at their jobs and will, naturally, progress quicker than others.
If FB goes down, people waste less time online[0], if a guidance system fails people may die.
[0] yes, of course there are people whose livelihood depends on cat memes, but I'm making a generic example.
Goes down yes, but what about a data breach? What if, for example, the location of a woman is mistakenly exposed to a abusive partner?
In my view the distinction between a senior software engineer and not is the ability to see how both human and software systems interact and find failure modes that others may miss.
by definition it's not true, and any sequence of thoughts that lead you to that conclusion are wrong, period.
Hey now, don’t underestimate the technical challenges inherent in weaponizing misinformation at scale.
There is so much that you can't learn from books. Reading Mythical Man Month does not make you Fred Brooks, reading Shoe Dog does not make you Phil Knight, nor does reading a medium article on event driven systems make you ready to implement one.
Imagine that the college of surgery acted in the same way, a surgical trainee who has worked for a few years and reads a lot may feel comfortable taking the lead in a surgery, but will be out of their depth the moment things deviate from normal. I spoke to a surgeon about this once, and he described how he taught a particular procedure. At one point he has his student reach in to the body, with the explaination that 'it should feel like this'. No book can substitute that experience.
> I think for someone who dedicates the time towards mastery, 2 years will take him/her very far.
You might get very good at a particular niche in 2 years. You will not have learned the lessons you learn when you go back to a five year old project yet and make changes. You will not have the breadth of experience from having worked intimately with dozens of teams in different languages, cultural expectations, and business domains.
Honestly, the more I learn, the more I know I don’t know. As an example, last year I had an opportunity to work on robotic control systems. I dusted off my calculus and linear algebra skills from way back, implemented calculations that ran in under 1ms, and has a ton of fun doing it. Could I have explained a Jacobian before starting that project? Not likely! Do I use it in other stuff now too? Definitely.
Sure
> After a University degree, you only really know what page in your textbook to turn to when you recognise a problem.
No.
My first job during college was to create an iOS app for a researcher (an extensive multimedia questionnaire). What I did: take Hegarthy's course, and understand it. After that, I simply could create the app by thinking logically. I didn't refer back to the course while I created the app.
My first job out of college was upgrading some Java CRUD app. I had the fortune of teaching at a coding bootcamp (as I self-taught NodeJS and then taught it). That NodeJS experience, including with having familiarity with the Java syntax was enough to edit files for a Spring Boot application. Simply by reading the code, I understood what happened and how they wanted me to design things.
No textbook required.
> don’t harm someone with your shitty design.
It's possible that might've happened.
On a side note, I don’t agree with bootcamps as they don’t teach the core principles of computer engineering and software design. Coding is just a skill, and you need some fundamental knowledge behind it in order to execute it safely and robustly.
> On a side note, I don’t agree with bootcamps as they don’t teach the core principles of computer engineering and software design.
I did both. I studied CS and happened to work as a teacher at a coding bootcamp while studying CS.
> Coding is just a skill, and you need some fundamental knowledge behind it in order to execute it safely and robustly.
Emphasis mine.
I disagree with this. I've seen many experienced software engineers knowing nothing about how to hack (important for safe code execution), I've had a couple of courses in it and did some hackthebox.eu after that. So I know as much about hacking as I know about software engineering, I'm a junior in both cases. Nevertheless, I am the one that finds major security vulnerabilities in the code of the company I work for.
A lot of security issues isn't fundamental as the "fundamentals" are things like: "look for configuration errors" or "look for hardware bugs that hardware vendors haven't looked deeply enough yet" or "look for a place where humans are careless" (e.g. the suidbash vulnerability is an example of the last one). That's a lot fuzzier and vague than CS fundamentals.