On Being a Senior Engineer
The article outlines senior engineers' expectations, emphasizing maturity, effective communication, collaboration, and self-awareness. It critiques the culture of immediate gratification among younger engineers, advocating for constructive feedback and teamwork.
Read original articleThe article discusses the characteristics and expectations of senior engineers, particularly in the field of web operations. It emphasizes that being labeled as "senior" is not merely a title but reflects a spectrum of maturity and experience. The author critiques the culture of immediate gratification prevalent among younger engineers, who often expect rapid advancement without the requisite experience. Senior engineers are expected to seek constructive criticism, understand their non-technical impact, and communicate effectively with their peers. They should be self-aware, capable of making reliable estimates, and anticipate the long-term implications of their work. The article also highlights the importance of collaboration and lifting the skills of others, suggesting that true engineering success is achieved through teamwork rather than individual brilliance. The author references "The Unwritten Laws of Engineering" to underline the non-technical responsibilities of engineers and advocates for a culture of constructive feedback and professional growth.
- Senior engineers should seek constructive criticism and be open to peer reviews.
- Effective communication and self-awareness are crucial for career success in engineering.
- Making reliable estimates and understanding project implications are key responsibilities.
- Collaboration and lifting the skills of others are essential for engineering success.
- The culture of immediate gratification can hinder the growth of young engineers.
Related
No Matter What They Tell You, It's a People Problem (2008)
The article emphasizes the crucial role of people in software development, citing teamwork, communication, and problem-solving skills as key factors for project success. It highlights the importance of job satisfaction and team cohesion, underlining the significance of positive personal relationships within development teams.
Bad habits that stop engineering teams from high-performance
Engineering teams face hindering bad habits affecting performance. Importance of observability in software development stressed, including Elastic's OpenTelemetry role. CI/CD practices, cloud-native tech updates, data management solutions, mobile testing advancements, API tools, DevSecOps, and team culture discussed.
Re-Imagining Technical Interviews: Valuing Experience over Exam Skills
The blog criticizes traditional technical interviews, emphasizing flaws in live coding assessments like time pressure and bias. It suggests prioritizing real-world skills and team qualities to enhance candidate evaluation.
Fear of over-engineering has killed engineering altogether
The article critiques the tech industry's focus on speed over engineering rigor, advocating for "Napkin Math" and Fermi problems to improve decision-making and project outcomes through basic calculations.
Weak Soft Skills: Why you are stuck at the Senior engineer level
Weak soft skills can prevent engineers from advancing to Staff Engineer. Mastery of communication, adaptability, and management of challenging situations is essential for career progression and effective collaboration.
- There is skepticism about the traditional definitions of seniority, with some arguing that titles often reflect the ability to convince others rather than actual competence.
- Concerns about title inflation and the perception of senior engineers as merely competent enough to avoid termination are prevalent.
- Many commenters highlight the unique challenges of software engineering, emphasizing the uncertainty and complexity involved in the field.
- Some express frustration with the expectation that senior engineers should transition to non-coding roles, advocating for the value of individual contributors.
- Overall, there is a call for a more nuanced understanding of what it means to be a senior engineer, beyond just titles and superficial metrics.
I also have a definition of what I think level should ideally represent: the marginal contribution of a person’s influence on the outcome of a company, relative to the counterfactual situation where that person never worked there, adjusted for a specific threshold of risk tolerance.
In other words, you can consider two hypothetical futures for a company: one with a specific person and one without that person. You then have a probability distribution defined over the difference in outcomes. For someone at a very high level, the absolute area under this curve is large—they have a big impact on the company (whether positive or negative). For someone at a lower level, their impact is small.
Someone who is good at their job should hopefully lead to positive impact, but you can certainly adjust this for risk. Perhaps you bring in a CEO who has a 90% chance of tripling the company’s revenue/growth and a 10% chance of leading the company to failure. That might be acceptable for a hypergrowth startup. For a larger and more mature company, you might have a different risk profile.
Just to take that sentence as a snapshot. I find the opposite is more relevant in the software field. Essentially, being solicited for an estimate on something where the certainty and predictability on what is being built is approaching zero.
There is no doubt the "softness" of software engineering as opposed to other forms of engineering is very distinct. To the point where there is an overarching question on whether it is engineering at all. This has resulted in the iterative Agile development process competing with, if not overtaking, the Waterfall development process that exists in other engineering disciplines.
And in software "engineering" the practical steps of construction are as intellectual an activity as the design. Where in other disciplines the design is considered an intellectual activity and the implementation is not.
I'm not going anywhere particular with this train of thought - other than surfacing the risks in comparing software development to traditional engineering.
There's potential for significant nuance in such a scenario and to reduce it to this silly quote hurts the piece, IMO.
Anyway, I have my own definition and it's "a person who realized that they've already forgotten stuff they used to know by heart in their junior years and approach every problem with appropriate humility stemming from said realization".
My "knowledge window" is, as I discovered, 9 years the skill that I've lost which established this was the ability to write an SQL statement - even a simple one.
Skill - Do you have the raw skills to do the task at hand.
Scope - What scope are you doing that task at.
Example:
- Setting up a single file server for your team, pretty easy, low effort.
- Setting up a file server / SAN to hold corporate data.
- Designing file servers for the core of your business operations.
- Doing that for a vendor, where your software and architecture choices will impact possibly impact N companies.
(Ironically the last two are closer than you think.)
But it isn't about setting up the file server software, it is about the scope, the size of the team you are likely leading, the impact of the decisions etc. Automation, repeatability, etc... Actually architect the thing instead of winging it...
The bigger the numbers get... the bigger the title, and the better, you better be, both as an engineer and as a human, willing to accept that you are wrong, and find that better answer... People are relying on you to deliver.
The problem is nobody bothers to define competency and very few people can actually program for the web. I mean almost nobody. Countless times here on HN I have had hiring managers tell these people don’t exist.
The way I would define competence in web development is super simple:
* Can you program in JavaScript. I do not mean React, Vue, jquery, or other abstraction bullshit. I actually mean can you program in that language, as in writing original software. This eliminates about 95% of developers.
* Can you program outside the browser in any language? This can still be JavaScript via Node or Deno but it could also be Go, Python, or Java.
* Do you understand transmission debugging for HTTP, WebSockets, session management, and messaging as an event?
The problem is most developers can at least half way accomplish the second bullet point and then attempt to fake the rest. It’s like toddlers playing pretend, which is why everything in both the startup world and corporate world are generally the same copy/paste spa app. Copy/paste is about all the developers can do.
There are many developers that can do much more, but work culture often seems hostile to originality and so they keep it to themselves for side projects.
And if you are that "mature" engineer, you need to remember and realize that many relatively junior engineers and non-engineer stakeholders won't always understand why you're saying X, Y, and Z.
So you'll have to figure out how to get sufficient shared understanding, or at least a lot of blind trust in your judgment.
Related
No Matter What They Tell You, It's a People Problem (2008)
The article emphasizes the crucial role of people in software development, citing teamwork, communication, and problem-solving skills as key factors for project success. It highlights the importance of job satisfaction and team cohesion, underlining the significance of positive personal relationships within development teams.
Bad habits that stop engineering teams from high-performance
Engineering teams face hindering bad habits affecting performance. Importance of observability in software development stressed, including Elastic's OpenTelemetry role. CI/CD practices, cloud-native tech updates, data management solutions, mobile testing advancements, API tools, DevSecOps, and team culture discussed.
Re-Imagining Technical Interviews: Valuing Experience over Exam Skills
The blog criticizes traditional technical interviews, emphasizing flaws in live coding assessments like time pressure and bias. It suggests prioritizing real-world skills and team qualities to enhance candidate evaluation.
Fear of over-engineering has killed engineering altogether
The article critiques the tech industry's focus on speed over engineering rigor, advocating for "Napkin Math" and Fermi problems to improve decision-making and project outcomes through basic calculations.
Weak Soft Skills: Why you are stuck at the Senior engineer level
Weak soft skills can prevent engineers from advancing to Staff Engineer. Mastery of communication, adaptability, and management of challenging situations is essential for career progression and effective collaboration.