This post has been a long time coming. It would be nice to say that I’m speaking from a position of supreme confidence. However, I’m not; and this this post offers a menagerie of unpolished, not-fully-formed pieces of advice that I’d proffer to you if you’re just getting into the role of a Technical Lead. The title can be amorphous, and in many workplaces, doesn’t even hold much of a meaning. But, hopefully, thinking along the lines I’ve jotted down here, might give you some food for thought. I will expand on these in future posts, with links to the details.
The Realities of Distributed Development
- Time zones and the resulting time lag between teams.
- Chinese whispers and Information Loss
Distractions will Happen(or, Deal with It)
- Things go Boom all the time.
- If you have to focus, find a safe place.
- Delegation is not an admission of defeat.
You will not Remember Everything (Or, Jot It Down)
- Write, write, write.
- Revise and Discard.
Voices on the Phone (are kinder than they appear)
- Perception and Geography
Go Meta (or, Look at the Product, not the Project)
- Think in terms of business goals and how day-to-day work as features/cards/stories achieve business goals.
- Understand the business functionality from the end user perspective (imagine yourself in the end user’s shoes).
- Know how the business will make money.
Push for Change(and know when not to)
Develop your own Mental Framework (or, Structure your Thought Process)
- Build candidate frameworks
- Different sets of factors for different domains
- Compare things constantly to solidify your thinking.
Be the Translator (or, Expand your Circle)
- Technical and Business
Watch for Opportunities (or, even boring Projects have hidden things for you to learn)
- Offer to help
- Be prepared to invest your own time in Learning/Trying out New Things.
Stay in Touch (or, you’re still a hacker at heart)
- Do code review
- Spike things to try on the project
Don’t Drown (or, Stay Ahead of what is happening Right Now)
- Day-to-day minutae
- Think: What are the Blockers for this Release?
- Think: What other things might expand this account?
Always have multiple options for something
- Never rely on the first option that comes to mind.
- Think of pros and cons of each option.
Keep track of all invariants in the system (both technical and functional)
- Establish invariants
- Identify when the invariants are broken and what will be the impact.