In the last decade of my career, I’ve been extremely fortunate to have worked with some of the best people I’ve ever known. A big contributing factor to this is the tech-savvy, expatriate culture that exists here in Munich as well as the type of people you typically find abroad who have left their home countries to pursue their dreams. It’s a dynamic that provides an immediate and powerful bond: we have to learn an a lot of things in a short timeframe and sometimes we’re terribly homesick, but we’re not alone. When we combine our strengths and help each other, we achieve something great.
For as many teams as I’ve had the privilege of leading, I’ve often been asked how I did it? How did I take six or seven individuals from different countries and turn them into a team? The question always catches me a bit off-guard because I don’t consciously do this – and I think that’s key. You can’t force anyone to work together as a real team and the harder you try the faster you’ll push them apart. Plus, it’s currently a developers’ market. They can work wherever they want to and they know it! How do you walk this tight-rope and successfully lead a team of rockstar developers?
Clear and simplistic vision
Here’s where agile excels as a process guide – don’t bog the team down in year long strategies! Give them a compelling, short-term goal that’s achievable within a week or two:
- Work with the business manager to get a simple, customer oriented backlog prioritized
- Release latest at the end of every sprint
- Rinse and repeat: your team will thank you for this predictable and stable environment
Trust the team and delegate responsibilities
Now that you’ve given your team the mission, stand back and get the hell out of their way. Make sure they know they’re empowered to take every decision necessary as a team to achieve the goal you’ve set. As a scrum master, I took part in every daily standup, my mouth held firmly shut. I encouraged them to work directly together to solve their blockers, and, only when they couldn’t, did I step in to lend a hand.
Never become a “rubber stamp” and get dragged in to approve every minor decision. If you’re ever asked something that you know another team member has better knowledge of, defer the question to them. “You should discuss that with Mike and let me know if you can’t resolve it.”
Ask for feedback and correct the course
Sprint retrospectives are the most important scrum artifact you probably never use. After every release, circle the wagons and reflect on how things went, how they are going and how they should be. Be honest and frank with your team about your impressions and ensure they are comfortable in giving a candid appraisal about their work and your role.
How you handle these feedback rounds will make or break you as a team lead. This is where you earn your teams’ trust. Bend but don’t break (especially on strategic visions where you probably have a lot more insider knowledge). Explain your reasoning openly and do your damnedest to improve their work environment.
I find that using the customers’ voice during these sessions helps the team understand difficult decisions. “Yes, we all think it’s a cool idea but what value does it bring our users?”
Technical integration platform for early development feedback
As a technical manager, the most powerful tool for teamwork is the responsibility for creating and maintaining the continuous integration system.
- instant build system for developers (each commit runs through all test cases)
- daily test system for QA and business (midnight update if build system is green)
- automated database imports for better testing (esp. performance)
- any build longer than 10 minutes is too long (add slaves, refactor, etc.)
Keeping one eye on this system and constantly evolving it to match a rapidly progressing application environment is a tough job. Your team may wonder at the effort you spend in running it, but, after a year, it will become the most critical system you have. “Can we do a release? I don’t know – what does the build say?”
Leading a modern development team is mainly about trust – your trust in the team and your team’s trust of you. To back up this “gut feeling”, get an automated CI system up and running as soon as possible. How do you instill trust in your team? Share in the comments below or tweet @danackerson if you’d like more details!