They might be called an Architect or a Tech Lead or just “Bob” but I always work closely with a senior technical person.
Here are a few of the guys I’ve worked with:
- Pedro who is always open to ideas, even those he has seen fail before.
- Steve who reserved cracking the hard problems for himself. When it stopped being hard he handed it to other folk.
- Peter who knocked up a multi-million dollar product over the weekend.
- John who always did the boring bits so other folk wouldn’t have to.
- Robin who managed to get eight bickering technical teams to collaborate and build a world leading website together
- Mike who has a habit of “just saying” that my latest idea is crazy and also has more brilliant, innovative, world shattering ideas than anyone else I’ve met.
- Phil who architected a multi-year, multi-million pound, award winning system in his head.
- Andres who never argues, and never has to, because he is SOLID
These guys are all brilliant and a joy to work with. And I couldn’t have done what I’ve done without them.
Why do I need these people? It is all in the title “Technical Lead”. Somebody who leads the technical aspects of the project or programme.
This is not about the presence or absence of Collective Code Ownership. Collective Code Ownership is the right for any developer to change any part of the code. That practice is compatible with the presence of a Tech Lead.
A Tech Lead provides technical direction and approach. A strong technical figure pointing the way for the technical folk, in the same way I point the way from a programme/project perspective. The role ensures the technical team works in a consistent way, and that the product is technically coherent and sound overall. The role provides the glue that holds the product together while advising on technical decisions and innovations. Micromanagement of the technical team is implicit, but micromanagement as attention to detail without the excessive aspect.
Specific responsibilities of a Tech Lead are:
- Design and architect the system, including the software solution and data architecture, to ensure the system can support the business objectives
- Ensure the system meets the non-functional objectives, in particular maintainability, performance, and scalability
- Ensure the development team adhere to best practice on design, development, code management and Testing
- Advise on the application of organisational standards to the system
- Define, implement and manage appropriate strategies for:
- Source code configuration
- Build and release management
- Advise on and help co-ordinate the development team’s technical activities, particularly in terms of cross team interfaces and database usage
- Identify and exploit opportunities for code and application reuse
- Provide development estimates as required
- Build stuff
[These responsibilities are based on Technical Co-ordinator from DSDM.]
Of course, being good people, Tech Leads don’t restrict themselves to the activities on that list. They pitch in where they need to – go where the risk is just like I do – and that is where their real contribution comes. Fighting fires when they flare up. Or just ensuring there is nothing on fire.