11 ms·
Things I Learned to Become a Senior Software Engineer
- deleted 6y ago[deleted]
- burgerquizz 6y agoWhat is the definition of "Senior/Staff/Principal/No-prefix Software Engineer"? All those titles always confuse me
- pennaMan 6y agoVariations on the perceived value of an engineer in one organization
- tester34 6y agoDo definitions of those even exist? I think it's up to the company whether you're Senior, Ninja, Shaman or Necromant Developer
- deleted 6y ago[deleted]
- BossingAround 6y agoIt's pretty arbitrary, and depends also on what you negotiate when getting hired. I've seen people that got hired as seniors that performed just as well/poorly/... (depending on your perspective) as mid-level folks. I've also seen the title of "senior" in one organization being wildly different to a "senior" in another organization within the same company. For example, for some reason, the "API dev team" had insanely high bar whereas the "submodule X team" had seniors left and right, quality-wise nowhere near seniors from the "API dev team". This all has led me to believe getting promoted is simply about renegotiating your salary with the company, and has very little to do with your actual skill. It has more to do with who's your direct manager, and what is your relationship with him/her. Personal and anecdotal experience only of course.
- marcyb5st 6y agoMy understanding is the following: No-prefix < Senior < Staff < Principal. In details, I see it this way: No-prefix: focuses on the here and now with little responsibilities about long term strategy/cooperation with other teams. Senior: he/she can be/is a TL. Sets the direction for the team and thinks about medium/long term strategy/shape of the code base. Also, they tend to be the liaison between the team they are under and other teams, but in a tactical/ad-hoc way. Staff: Like senior, but more on the strategic side of things (i.e. longer term planning). Principal: Usually the TLM/uber TL for a working group (few teams). Can also be a director for a working group. As pointed out by other replies, It is subjective and also company-dependent. In startups these levels tend to be compressed, in FAANG companies there's a distinct increase of responsibilities with each title.
- josephg 6y agoMy take is that your seniority refers to how much responsibility you can bear. If I give a solid junior a clear spec, wireframes, guidance on tools and mentorship then they should make progress according to the spec. If what I assign to a junior engineer is impossible to implement or useless to the product, that’s on me. A senior should be able to succeed with much higher level / vaguely specified tasks. Like, here’s the client. Here’s the team. Go figure out for yourself how you can add the most value. A good senior should be able to figure out if there’s resources or skills the team is missing, and solve what needs solving in order to make the project successful. Sometimes this is non-technical - like raising issues with the client, organising to hire another UX person, etc. A senior should be resourceful. You can frame the same thing in terms of responsibility scope. A junior is responsible for the assigned task (as the task is described). A senior/principal is responsible for the project being successful or the company’s software meeting the needs of the business. Senior/staff/principal/etc to me mean beyond vague locations on that junior-to-senior+ engineer resourcefulness axis. I don’t think there’s any agreed upon definitions across the industry. (Though google, microsoft, etc all have their own internal working definitions)
- rkunal 6y agoTitles primarily exist to justify higher pay inside a team, and/or lower pay wrt to some other company. In simple terms, Sr. usually is an understanding that you are on your own. Do not expect any one else to tell you how or what to do. Also, the ones without Sr. title may become your responsibililty. Though debatable, it has nothing to do with your technical skill set or experience.
- arnvald 6y agoThere are no strict definitions, different companies do it differently, have different requirements and role descriptions. Usually the path is junior -> no prefix -> senior -> staff/lead -> principal (some companies have only the first 3/4, then only management above). One good source I found is gov.uk site: https://www.gov.uk/guidance/software-developer https://www.gov.uk/guidance/software-developer
- meheleventyone 6y agoJunior/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.
- ecmascript 6y agoIt'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 6y agoIf I start my own company, I’ll be the Supreme and Exalted Overlord. Not something silly like a senior dev.
- deleted 6y ago[deleted]
- ecmascript 6y agoThat is true, I think my title would be "Dream Alchemist" or something like that. ;)
- Aeolun 6y agoWhile it’s not impossible. I find it hard to believe anyone could become senior (in terms of actual skill) in two years.
- vsareto 6y agoNo one knows what the skill threshold is anyway, so it's all made up depending on who you can convince.
- izacus 6y agoIt's kinda hard to be one when you've never had to maintain the monstrosity you've built for more than a few months. All the hard lessons are learned 5 years down the line when the wrong decisions really hurt you.
- geofft 6y agoYou can maintain other people's monstrosities and quickly learn the lessons. There's a couple of folks at work who joined straight out of college a few years back and ended up with ownership of a terribly-designed production system that everyone else depends on, and they've been doing a solid job of switching it over to a reasonable architecture while it's running. I don't know what title they have but I'd certainly trust them with complex systems more than the people who built the original mess. Every poor decision, every overconfident choice of shiny new database, every weird layer on top because they wanted something expedient, every ill-advised API promise, etc. has hurt this new team, and the original builders for the most part have gone on to other employers. Meanwhile, you can also absolutely spend five years not working on anything that needs to scale (by being at a company/team that can't execute, by building prototypes instead of products, etc.) and not have a sense of how to do better.
- croon 6y agoI can't make any judgement on the specific case you're describing, but I've seen this general scenario play out a few cycles in my career. My guess is that they overcorrect on the previous system designers mistakes, because they too have only had that one experience and this is their first time building a new one. And the cycle repeats in another 5 years when a new group of fresh grads have to take over/rebuild the current new system. I hate being ageist in any direction, but experience actually do take time, and only older people have been younger, never the reverse. The hard part is recognizing what is unique to a generation and what is commonality. Or you can tell me I was wrong in 10 years.
- neilkakkar 6y agoI 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.
- meheleventyone 6y agoThere are a bunch of topics on HN that tend to bring out the same debate again and again irregardless of the content of the link.
- neoplatonian 6y agoThat'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.
- christiansakai 6y agoHi Neil. Appreciate the writing. I wonder if everyone is senior at Bloomberg then how does the pay raise work?
- Google234 6y agoThis person has been promote one level up from the new grad level. Not exactly what I would describe as senior
- throwaway5938 6y agoI'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.
- lordnacho 6y agoTo 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).
- bradleyjg 6y agoIt’s not just knowing how to do a bunch of things. No one can do everything. It’s the attitude and meta-skills that enable picking up the next new thing.
- lordnacho 6y agoSame thing, isn't it? At the end of the day the guy who can do anything you ask him to is going to do it by learning, not by knowing already.
- mettamage 6y ago> People I consider senior software engineers have a can-do-anything vibe about them. I feel I can do anything as well, because if I can't then I will simply find a way to learn it, because to me it's not a question of whether I'm capable of learning it but how fast I'm capable of learning it. So I'd be careful with that vibe as a heuristic ;-)
- aronpye 6y agoIt 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.
- geofft 6y agoI don't see what this has to do with millennials. Leaving aside that "achievement medals" were generally made for the sake of the parents and not the child, it certainly wasn't millennials who came up with, say, the idea that banks should have thousands of vice presidents. 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.
- aronpye 6y agoNo, but millennials sure do demand such titles.
- geofft 6y agoOnly in the sense that we demand to be judged by our knowledge and ability and not by our age. If you're going to make a title and say "nobody's eligible for this until they're 40," we'll certainly try to prove you wrong. If you don't make the title, millennials as a group aren't going to care.
- aronpye 6y agoExpertise and experience is broadly correlated. Titles should also be earned, and that requires time in order to deliver work in multiple scenarios that proves your abilities.
- _hao 6y agoI'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)
- jek0 6y agoA 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.
- Ensorceled 6y ago> 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 6y agoTo 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 6y agoI have a draft blog article called "The Almost 10x Developer" because I have seen exactly this soooooo many times.
- ncmncm 6y agoI know a 500x developer. He is not proud, because he knows somebody else who codes 10x faster. This other person wears out several keyboards before his CPU is obsolete. If programming were really engineering, you would need 20 years to be Senior. A Senior Engineer keeps the organization from making disastrous mistakes and unnecessarily complicated designs. Since the title was squatted, actually-senior programmers are being called Principal Engineers. Do not make the mistake of calling yourself a "Principle Engineer".
- tomalpha 6y agoIt'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.
- slumdev 6y agoI 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 6y agoI 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.
- darkerside 6y agoThere 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 6y agoThank 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 6y agoOne 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.
- jasoneckert 6y agoWhile 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.
- jt2190 6y agoThere 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.)
- bryanrasmussen 6y agoI guess the meaning of Senior has changed, that's fine - but what is the level beyond Senior now? Ancient? Graybeard? Hallowed?
- bradleyjg 6y agoAs a serious answer: staff, principal As a cynical answer: many companies seem to think that more that 6-7 years of engineering experience is at best a waste of money and at worst counterproductive
- TheAdamist 6y agoObsolete and let go. If you can make senior in 2, irrelevance should be right about 5 years in.
- lllr_finger 6y agoIn the midwest it's "lead". I've also been on teams where nearly every developer is a lead, which sounds strange, but it's really just a confluence of "could this person lead a team" and pay band. I've seen the following structure at several orgs: engineer -> senior -> lead -> staff/principal -> distinguished
- psyc 6y agoAt 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.
- Schatel 6y agoI'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? :)
- lmilcin 6y agoIt'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.
- scared2 6y agoTo 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.
- bobbydreamer 6y agoHmm. 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.
- ffggvv 6y agotitles 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,Microsoft&track=Software%20Engineer https://www.levels.fyi/?compare=Bloomberg,Google,Facebook,Mi...