Home
A Guide for Tech Leaders Navigating Growth and Change
Publié le 3 févr. 2024The three types of managers to avoid :
The following includes my own notes about what I want to remember and the role that I’m interested in.
Whether you are brand new or have 20 yeards into your career, the charge of figuring out what you want to do, what you want to learn and what makes you happy rest on your shoulders.
Mentoring is the first step on the ladder to being a manager. It gives you the opportunity to learn in a fairly safe way about management and being responsible for another person. Mentoring can be about internships or new hires.
When dealing with internships, sit with the person as much as possible on the first day, and try to listen, communicate and adjust responses as much as possible :
As a summary :
New hires are a bit different from interns, as they should have a little more experience. To prepare his start :
Good team have good onboarding documents they provide to newcomers : step-by-step guides, how to set up a ne dev environment, how to familizarize with tools, … These documents should constantly evolve : make new hires to complete these kinds of documents as their first task.
The tech lead should be :
He/she continues to write code, but with the extra responsibilities to represent the team to the management. Altough the tech lead is not managing (at least, directly), he/she is still expected to provide mentorship and guidance to the members of the team :
The objective is to reduce the number of (critical) paging alerts and to double the number of deploys.
As a tech lead, you have to act as :
To manage a project, you have to :
Connections, interfaces and visualizations… It’s almost impossible to lead a project well if you don’t understand the architecture you are changing.
… and do your part on boring parts of the code.
… but do not take them alone, without sollications of the team.
Write design documents, get feedbacks from other speakers and do not forget to listen.
It’s a waste of time to play “rules cop”, as automation can make the rules more obvious.
You should :
Know your people. What are their strenghts and weaknesses, how should they improve ?
Observe them : you can’t give feedback if you are not paying attention. Adopt a habit of positive recognition. Provide light and regular feedback. Provide coaching. Avoid big surprises.
If every case, as much for the interviews as for letting someone leave, you will need “files” : either because the people is boring, either because she is not meeting excpectations or tasks that she is being assigned. In both cases, it will be easier to have an history of feedbacks, than trying to build everything up from your memory.
Start giving feedback as early and often, and keep tracks of records you’ve been delivering.
You should distinguish what matters. A task can be urgent (or not) and important (or not) :
Ask for the agenda upfront meetings. We should have a clean procedure and expected outcomes.
“No by default” ➡️ “Yes, and …” means to respond with positivity, while still articulating the boundaries of reality. If you need to say “no”, say it quickly, and if you say “Not right now”, you will need to be sure that “later” can actually happen.
The frequence of code releases, of code checkins and the infrequence of incidents are signals for a healthy team.
You should standardize releases process, how long does it take, what did go wrong and how to make a roll-back.
The number of incidents should be confronted to the stability and number of features. It is important to have insights about incidents, but trying to prevent everything is just pure loss of time.
Culture is how things get done, without people having to think about it.
– Frédéric Laloux - Reinventing Organizations
Structure and processes are seen as pointless, see harmful. But :
In politics, a “good political idea” is one that works well in half-baked form. It should be the same in engineering : processes should have value even when they are not followed properly.
Processes are necessary. To avoid scaring people, you should rather speak about :
You should see what’s important for your colleagues, how they do manage uncertainty and risks, which kind of solutions they would choose by default (the perfect one, the ideal one or one “that works” ?).
The code review (process) is a fail-safe for something we might have forgotten, that acts as transparency about applied changes, but it’s also a socialization process.
The only problem is that this process takes time, and everyone should not be onboarded right at the beginning.
For the general layout, a simple Linter can be used (pylint, prettier, …).
Linters aren’t in your way. They’re on your side.
– https://stackoverflow.blog/2020/07/20/linters-arent-in-your-way-theyre-on-your-side/
No finger-pointing !
Post-mortem should be a safe process and if someone is responsible for triggering the wrong button, we (as a whole) should be responsible to make that not happen again.
The circomstances of the incident should be analyzed and measures should be taken to avoid the cause to be repeated again. The actual situation should be made better.
In every case : be realistic ! All problems cannot be addressed immediately.
WHat kinds of risks concern our team ? Our institution ? How could we mitigate those risks without adding a lot of new totally useless processes or adding unwanted bureaucraty.
Stay curious !