
At most technology companies, you'll reach Senior Software Engineer, the career level for software engineers, in five to eight years. At that career level, you'll no longer be required to work towards the next pro? motion, and being promoted beyond it is exceptional rather than ex? pected. At that point your career path will branch, and you have to decide between remaining at your current level, continuing down the path of technical excellence to become a Staff Engineer, or switching into engineering management. Of course, the specific titles vary by company, and you can replace "Senior Engineer" and "Staff Engineer" with whatever titles your company prefers.Over the past few years we've seen a flurry of books unlocking the en? gineering management career path, like Camille Fournier's The Man? ager's Path, Julie Zhuo's The Making of a Manager, Lara Hogan's Re? silient Management and my own, An Elegant Puzzle. The manage? ment career isn't an easy one, but increasingly there are maps avail? able for navigating it.On the other hand, the transition into Staff Engineer, and its further evolutions like Principal and Distinguished Engineer, remains chal? lenging and undocumented. What are the skills you need to develop to reach Staff Engineer? Are technical abilities alone sufficient to reach and succeed in that role? How do most folks reach this role? What is your manager's role in helping you along the way?
- Structure and Interpretation of Computer Programs: this helped me understand the different types of recursion; how a problem can be modeled for the code to solve and how those designs can evolve and how the paradigm I'm using (functional or OOP) can help me
- Refactoring: this book helped me understand the different patterns we can use to alter code. Giving them a name and symptoms is a great way to apply and communicate with other coders. I recommend this book to everyone.
- The little Lisper: this really helped me get recursion. Like really. Although I could use a refresher.
- Clean code: look... this book is bad. Like, really bad. But, at the time I read it, and in the languages I used (Python, C, R) we didn't have many rules on how to write and organize our programs. And I wanted to improve on that skill. And this book gave me pointers and made me think about those ideas. I don't recommend it around, because for many people Clean Code can become a dogma really easily. But if you can question and critique and reach out to other resources and is an advanced beginner to coding, I can see this book bringing value.
- An Elegant Puzzle and Staff Engineer by Will Larson: those helped me get clarity on the role of the technical team in an organization. A team that produces code as the main driver of impact in a product/service. I lump them both because I read them back to back and don't remember, exactly, which is which. But une is more focus on a tech leader and the other a tech specialist.
- Unix and Linux System Administration Handbook: whenever I need to interact with some unix technology, this book delivers in terms of giving me a nice historical view and presenting the common tooling around the tool. This helps me interact with stuff programmatically much better. Be it GRUB, X, SAMBA, this book gave me the necessary introduction I needed, much more organized and thought out and with useful references than the average blog post you will find in the wild.
And I'd like to recommend this Ask HN on problem solving books
That said I'd recommend, Staff Engineer, by Will Larson. https://lethain.gumroad.com/l/staff-engineer
1. Read the book Staff Engineer: Leadership Beyond the Management Track by Will Larson and identify which archetype you are - Tech Lead, Solver, Architect, The Right Hand (Details are in the book)
2. Find an organization which has the career track for your chosen archetype, find a mentor who has gone through that path.
Peopleware
As an aside, Staff Engineers have to ride this strange line of being tech leads, managers, architects, and ICs. In my experience, one part or all parts will suffer. Will Larson's book[1] dances well around the ambiguity, but basically when you take a Staff Engineer job, it'll be unclear what you're signing up for.
Others on my list that I think are good books:
* Empowered
* Soft Skills
* Pragmatic Programmer
* Clean Architecture
* Staff Engineer by Will Larson
