Developer progression as a function of navigating complexity
siddharthsarda.com
siddharthsarda.com
It's very hard to kill your darlings as a developer, you have the whole edifice of software engineering best practice right there on people's blogs, there are infinite frameworks, libraries and languages at your fingertips. An appreciation for what's theoretically possible is always useful, but I will hire, promote, and throw money at people who can deliver a 75% solution to a problem with 90% confidence. I will struggle with people who aim for 100% solutions that never materialise.
I don't think that I (as a younger programmer or if I'm honest even quite recently) would want to hear this, from my future self or anyone else, but I would have been happier accepting it early in my career.
As a side note, I shared this article with Jessica as a draft and she shared it with her followers before I could add a few more things. Still my most successful post yet and comments such as these make me understand there is a lot of material for new blog posts.
Given clear requirements, can you be left alone for a reasonable amount of time and not come up with a monumental mess? If you can, you are a senior engineer.
And as a corollary, if you need constant supervision, you are not as senior as you think.
Don't assume a meritocracy, even if it had seemed that way initially, because managers change, and things often don't work like that.
Some performance management systems are poorly designed to handle scenarios like this, admittedly.
I find it even harder to produce clear requirements that don't precipitate such questions.
I guess it depends on your org but if you're required to do BA work, I find that the most challenging.
And, perhaps, the most valued skill a senior developer acquires is enough business analysis (which I assume you reference as "BA work") ability such that the stakeholders feel comfortable in what they have conveyed is, in fact, what the development team will set out to deliver.
I could not agree with you more. Learning how to clearly communicate to stakeholders is an invaluable skill. One I have yet to master but deeply long to.
* Associate Engineer
* Engineer
* Senior Engineer
* Principal Engineer
* Solutions Engineer
* Architects, Sr Architects, Enterprise Architects
And my interpretation here for Senior is probably around Solutions Engineer, bordering on, if not completely in an Architect's domain. But the thousands of Principal Engineers and downwards all have a wide range of agency for implementing the four tiers demonstrated in the article.
No way a junior would be able to do that. Seniors have deep knowledge of the systems/technologies that they work in and are able to articulate that to more senior management on why using that particular thing is the way to go.
Obviously you want seniors to have more than just one (for both their sake and the organization) but it’s a mark that they’ve attained at least one technology that they’ve “leveled up” so to speak.
Ever heard of the term "architecture astronaut"?
> Your typical architecture astronaut will take a fact like “Napster is a peer-to-peer service for downloading music” and ignore everything but the architecture, thinking it’s interesting because it’s peer to peer, completely missing the point that it’s interesting because you can type the name of a song and listen to it right away.
I mean, I guess it's true that once one understands a certain problem area better than most peers, they will be able to find better alternative tech to solve the problem at hand. But, the other side of that coin is embracing or evangelizing a technology that is not appropriate to the problem (and thus possibly harmful to the business). "Hype driven development" and/or "resume driven development" are some instances of this.
BTW, I stumbled upon a relatively recent and relatively unknown development in CS (with potential real-world applications in parsing formal languages) some time ago, and evangelizing the technology is on my todo list since then. How to do this without seeming like an architecture astronaut? The fields of parsing and formal languages are actually quite unloved in both industry and academia in recent decades, so a more general question is also pertinent: how to get people interested in something that is widely considered boring, or even a solved problem? I guess starting a blog would be a good idea?