Skip to content

Latest commit

 

History

History
719 lines (488 loc) · 20.9 KB

slides.md

File metadata and controls

719 lines (488 loc) · 20.9 KB
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)
persist
The senior dev
cover

The senior dev

An opinionated take

Luciano Mammino (@loige)

loige.link/senior

2023-06-17

layout: image-right image: /images/alexander-milo-HwxVLhLyg2s-unsplash.jpg

Photo by Alexander Milo on Unsplash

Agenda

  • 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

Meta slide

These slides are already online if you want to grab them! 👇

loige.link/senior


layout: image-left image: /images/node-js-design-patterns.png

Hello

👋 I'm Luciano

Let's connect


layout: image-right image: /images/duck-superman.png

Photo by Rudolfo Spott on Unsplash

A senior engineer

  • 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.)

layout: image-right image: /images/elena-koycheva-VmcIMhuWCac-unsplash.jpg

Photo by Elena Koycheva on Unsplash

It's not just about time or age

  • 5 years of experience
  • At least 28 years old
  • More time ?== more senior...

clicks: 3

Skills

Tech skills (hard skills)

Soft skills

🤗 Somewhat important!

🔥 Very important!

Photo by Icons8 Team on Unsplash

Tech skills


layout: image-right image: /images/lucas-van-oort-C3A8xQq-mAc-unsplash.jpg

Photo by Lucas van Oort on Unsplash

T-shaped profile

  • 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

layout: image-right image: /images/jen-theodore-C6LzqZakyp4-unsplash.jpg

Photo by Jen Theodore on Unsplash

Broad understanding

  • Understand the platform
    • Architecture
    • Code Structure
    • Testing
    • Deployment process
    • Scalability model

layout: image-right image: /images/pickled-stardust-xBYsohNqXs0-unsplash.jpg

Understand tradeoffs

  • 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

layout: image-right image: /images/wesley-tingey-fKQhd4rtFww-unsplash.jpg

Photo by Wesley Tingey on Unsplash

Flexible

  • 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

layout: image-right image: /images/benjamin-balazs-fc_tWL1W3TI-unsplash.jpg

Bug catcher

  • 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

layout: image-right image: /images/diego-ph-fIq0tET6llw-unsplash.jpg

Photo by Diego PH on Unsplash

Good advisor

  • 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

Soft skills


layout: image-right image: /images/florian-olivo-ca7tJ48YD64-unsplash.jpg

Photo by Florian Olivo on Unsplash

Active lever

  • 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

layout: image-right image: /images/stephen-dawson-qwtCeJ5cLYs-unsplash.jpg

Photo by Stephen Dawson on Unsplash

Understand the business

  • 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?

layout: image-right image: /images/hugo-jehanne-LOHVrTsdvzY-unsplash.jpg

Photo by Hugo Jehanne on Unsplash

Communication!

  • 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

layout: image-right image: /images/jason-goodman-Oalh2MojUuk-unsplash.jpg

Photo by Jason Goodman on Unsplash

Supports management

  • 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

layout: image-right image: /images/taelynn-christopher-Z_CQ5VQcpCo-unsplash.jpg

Autonomy

  • 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

layout: image-right image: /images/annie-spratt-t3IYuQZRDNE-unsplash.jpg

Photo by Annie Spratt on Unsplash

Focus on delivery

  • 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

How to grow


layout: image-right image: /images/oleksandr-horbach-xMNZrl1HM24-unsplash.jpg

Go 1 level deeper

  • 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

layout: image-right image: /images/nathan-dumlao-eUbNeGQEh2U-unsplash.jpg

Photo by Nathan Dumlao on Unsplash

Have fun

  • 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

layout: image-right image: /images/geran-de-klerk-ADUiP4nJwds-unsplash.jpg

Photo by Geran de Klerk on Unsplash

Pair programming

  • 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

layout: image-right image: /images/florian-klauer-mk7D-4UCfmg-unsplash.jpg

Photo by Florian Klauer on Unsplash

Create content

  • 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

layout: image-right image: /images/nathan-dumlao-zi5vRoAP3WY-unsplash.jpg

Photo by Nathan Dumlao on Unsplash

Keep a positive attitude

  • 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)

layout: image-right image: /images/jess-zoerb-wsh1zrAhgOY-unsplash.jpg

Photo by Jess Zoerb on Unsplash

Do the hard work

  • 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!

layout: image-right image: /images/sharon-mccutcheon-tn57JI3CewI-unsplash.jpg

Additional resources


layout: cover background: /images/marek-szturc-2s3fI3M1lO0-unsplash.jpg

Photo by Marek Szturc on Unsplash

We cannot excel at everything


layout: cover background: /images/marek-szturc-2s3fI3M1lO0-unsplash.jpg

Photo by Marek Szturc on Unsplash

But we should know our strengths and weaknesses


layout: cover background: /images/marek-szturc-2s3fI3M1lO0-unsplash.jpg

Photo by Marek Szturc on Unsplash

Work with our team to amplify strenghts and compensate weaknesses


layout: cover background: /images/marek-szturc-2s3fI3M1lO0-unsplash.jpg

Photo by Marek Szturc on Unsplash

...and strive to get better every day!


layout: cover background: /images/cover.jpg

Thanks!

loige.link/senior

Luciano Mammino (@loige)

Cover photo by TK on Unsplash