Compared with studying, the person setting the task changes: it is now somebody else's code and the people next to you, not a teacher.
Do now
- I build a small service from scratch and hand it over so that it starts up on machines other than mineA colleague brings my project up from the README and does not ask a single question.
- I take every bug of mine down to its cause, not down to the symptom disappearingI can name the place that broke everything and explain why it used to work.
- I ask about what I do not understand at the start of a task, not on the day it is dueMy questions arrive before the code that would have to be thrown away is written.
- I read other people's pull requests and leave at least one question of substance in themI know what happens in the neighbouring parts of the service, not only in my own.
Where next
Sideways out of the role
- SRE and platform engineering sideways
- Data and machine learning sideways
- Architect deeper
- Team lead, tech lead, engineering manager sideways
- Frontend developer sideways
What this step asks of you
I write and run code in my working language without looking up the syntax
I can assemble a small service from scratch: dependencies, running it, formatting, linter.I understand what happens between the browser's request and the service's response
I can explain why a request returned 502, instead of saying the server is broken.I write SQL queries and understand what a transaction is
I put together a query with a join and grouping without googling it, and I know how a transaction differs from separate queries.I work in a shared branch without breaking the history for everyone else
I resolve a conflict, open a meaningful pull request, recover a lost commit.I pin a bug down from logs and a stack trace, not by trial and error
I state a hypothesis and test it instead of changing lines at random.
Common mistakes
- Staying silent until the task is done: the silence ends in a rewrite from scratch.
- Treating a task as finished once the code is written: without tests and a deployment somebody else finishes it off.
- Learning the framework instead of the language and the protocol: on the next project everything starts again from nothing.
What to learn
- First stepsProgramming from scratch
- Languages and paradigmsGo
- Data, ML and AIDatabases
- Infrastructure, tooling and qualityComputer networksGit and teamwork