theme | background | download | highlighter | lineNumbers | info | drawings | title | layout | |
---|---|---|---|---|---|---|---|---|---|
./theme |
/images/cover.jpg |
false |
shiki |
false |
## Slidev Starter Template
Presentation slides for developers.
Learn more at [Sli.dev](https://sli.dev)
|
|
The senior dev |
cover |
Luciano Mammino (@loige)
2023-06-17
Photo by Alexander Milo on Unsplash
- Discuss what is expected from a senior software engineer (skills, mindset, duties)
- Packed with opinions* (my own and m o re)
- For devs to be inspired
- For managers to hire, set expectations, support, and evaluate
* opinions are subjective
These slides are already online if you want to grab them! 👇
- 14 years in the industry
- Senior Architect at fourTheorem
- Co-author of Node.js design Patterns
- ❤️ Node.js, AWS & learning Rust 🦀
Photo by Rudolfo Spott on Unsplash
- The definition changes in every company
- There are many levels of seniority: senior, staff engineer, principal, etc.
- My definition: moves projects & people forward ("Force multiplier")
- Team player, not a hero (or rockstar, superstar, magician, unicorn, etc.)
Photo by Elena Koycheva on Unsplash
5 years of experienceAt least 28 years old- More time ?== more senior...
🤗 Somewhat important!
🔥 Very important!
Photo by Moritz Mentges on Unsplash
Photo by Icons8 Team on Unsplash
layout: cover background: https://media.giphy.com/media/YQitE4YNQNahy/giphy-downsized.gif
Photo by Lucas van Oort on Unsplash
- Master at 1 thing
- Proficient at many other things
- Example:
- Master at backend & API development
- Can do some frontend
- Can do some IaaC
- Understands cloud architectures
Photo by Jen Theodore on Unsplash
- Understand the platform
- Architecture
- Code Structure
- Testing
- Deployment process
- Scalability model
Photo by Pickled Stardust on Unsplash
- Eg.
- Monolith vs Microservices
- Memory vs CPU
- Highly Scalable vs low latency
- Reusable vs bespoke
- Complex (but powerful) vs Simple (but limited)
- Optimizes for the most relevant ones
- Understands the short vs long term impact of these tradeoffs
Photo by Wesley Tingey on Unsplash
- Comfortable with different programming languages
- ...and paradigms:
- OOP vs Functional
- Declarative vs Imperative
- Compiled vs Interpreted
- Can solve the same problem in different ways and with different tools
Photo by Benjamin Balázs on Unsplash
- Understands and refines user stories
- Can write different types of test:
- Unit
- Integration
- E2E
- Can find and discuss edge cases
- Keeps track of technical debt and helps to pay it back
- Understand patterns and best practices
- Can suggest patterns that have good long term effects
- ...and avoids other that might lead to problems
- Suggests but does not mandate
layout: cover background: https://media.giphy.com/media/tRuIpxbqV6MEM/giphy.gif
Photo by Florian Olivo on Unsplash
- Ask hard questions
- Takes leadership to find what they don't know
- Is a bridge between product and technology
- Know when (and how) to say NO
Photo by Stephen Dawson on Unsplash
- What's the purpose?
- What's the long term vision?
- What's the strategy?
- What are the unique strenghts?
- What are the main weaknesses?
- How can technology help?
Photo by Hugo Jehanne on Unsplash
- Can talk with all the stakeholders
- Can explain uncertainties and propose ideas on how to address them
- Can talk about failures and learnings
- Can write docs & deliver presentations
- Can make complex topics digestable
Photo by Jason Goodman on Unsplash
- Planning
- Drive cerimonies
- Keep in track priorities and technical debt
- Can split complex tasks into manageable parts
- Understands and leverages team strengths
- Pulls in the right people at the right time
Photo by Taelynn Christopher on Unsplash
- Can drive projects that require research and grind
- But aware of avoiding silos
- Knows how to get unstuck
- Ask for help
- Research and experiment
- Read the docs
- Read and understand existing code
Photo by Annie Spratt on Unsplash
- Negotiates expectations
- What does it mean to be successful in the current environment
- Positive attitude:
- Don't blame the system
- Propose solutions
- Facilitate conversations
- Help to find compromises
- Confidence that hard problems can be solved even if we don't know how yet
layout: cover background: https://media.giphy.com/media/E6B4aFk4akYRW/giphy.gif
Photo by Oleksandr Horbach on Unsplash
- Don't stop at the layer you are familiar with
- What happens in the underlying layers?
- E.g.
- How does the HTTP protocol work?
- How does TCP work?
- UTF-8, SHA512, DNS, etc.
- 🎥 The computer science iceberg
- Discend one level at the time
- Build prototypes to test your understanding
Photo by Nathan Dumlao on Unsplash
- Learning new stuff can be fun
- You can build utilities and side projects
- Showcase what you learned to your peers
- Can you apply these learnings at work?
- Hackaton and free study days are a great way to spend work time for engineering growth
Photo by Geran de Klerk on Unsplash
- Try to pair with as many people as possible within the org
- You can probably learn something from everyone (even from the most junior)
- You can probably teach something to everyone (even to the most senior)
- Not everyone loves pair programming, so try alternatives:
- Interactive code reviews
- Show and tell sessions
Photo by Florian Klauer on Unsplash
- Articles, Talks, Videos, Twitter threads, Etc.
- You don't need to be an expert to share something new you learned
- Make it a habit
- Creating content will massively improve your communication skills
- ⚛️ Atomic essays
Photo by Nathan Dumlao on Unsplash
- With enough time and money the team can probably solve everything
- With sligthly less money and time you can find decent compromises 😅
- Don't be picky about technology or style
- Support other people's ideas (even if you would have done it differently)
Photo by Jess Zoerb on Unsplash
- Volunteer for that refactoring that no one wants to do
- Get involved in parts that people generally avoid because they are hard or messy
- Try to make things a little bit better!
Photo by Sharon McCutcheon on Unsplash
- Progression.fyi
- Career Ladders
- 20 Micro-Habits Of High-Impact Software Engineers
- Engineering levels at Carta
Photo by Marek Szturc on Unsplash
Photo by Marek Szturc on Unsplash
Photo by Marek Szturc on Unsplash
Photo by Marek Szturc on Unsplash
Luciano Mammino (@loige)