Tips for a successful team lead - ISerializable - Roy Osherove's Blog

Tips for a successful team lead

A few days ago I gave a talk in front of a crowd at Intel Israel. It was actually three talks, and the first was about project management and Team System.

I specifically took that talk into a bit of a different direction, and besides showing off VSTS, I also gave some tips for being a successful team and project lead.

Here’s a partial list of those tips. Some of them can be seen in various “Agile” methodologies, but taken as simply tips, they can improve the quality of your project-life without needing to work with any specific methodology.

Heck, just call it “Osherothology”

  • 40 hour weeks

It may sound crazy, but making sure that your team does not overwork itself is one of the simplest things you can do. As a rule people should not have to work over 8-9 hours per day, even if they want to. There are peaks where I find that people do allow themselves to do this, but you have to make sure it’s not the rule, but the exception. Otherwise you’ll find people starting to “burn” themselves, coming to work late, less productive, and taking long vacations. Eventually, you’ll lose them.

  • Lots of automation

One of the keys to a successful project which can keep up with changing realities is the ability to automate almost everything. Have an automated build cycle at least once a day, if not several times per day. Automate deployment to test and staging machines. Automate testing using unit tests and other types of tests, automate code generation for part of the project that could use it. Automation saves you precious time, while making sure you don’t miss any tedious steps in the process. That way you can try out things, see what happens, and revert back if you find a problem.

  • Get lots of feedback
    • Daily meetings

Get info from your team on what’s going on right now. A daily meeting of 5-10 minutes where you ask three questions: “What did you do yesterday, what will you do today, and what problems do you have?” each person on your team answers these.

Weekly meetings are less helpful because as a team lead you might miss out on a problem you could have solved 4 days ago.

Daily meetings also free the team from unneeded meetings about status.

    • Customer Demos

Try to have some kind of demo to your client or client representative (could be the product manager). As simple as a command line or a UI that shows features you managed to finish by now. Get feedback about the direction you’re heading in. You’ll find that you made a mistake, but instead of waiting 6 months to find out about it, you only lost a month.

    • Acceptance tests

If you can manage getting the customer to run acceptance tests on your product, you’re in luck. When they all pass, it means you’re done!

    • Regression tests

Without some form of automated testing, you can’t check if you broke an existing feature in your work on other features(called a ‘regression’). Have as much as you can of these and run them during your automated build.

  • Don’t compromise on the best tools

The difference between a team working with the right tools to do their work and one that doesn’t even know that the “right” tools exist can be as big as the difference between using Notepad to program instead of Visual Studio. Huge.

It can be as simple as buying bigger screens for your team to work in (I once worked at a place that to this day still has some 15” monitors for developers)

As a lead, it’s your job to stay ahead of the game and find out about new tools and addons that can help make your team more productive. Checkout SharpToolbox for a list of tools in many categories.

  • Do code reviews

I can’t stress enough the importance of this. Have at least a weekly code review with each person in your team (or have other people in your team do it). The quality of the code can go miles up , and you can find hidden bugs and non-standard usage of libraries in your code. Most importantly, you’re letting your developers know that you care about what they write, and you’re passionate about teaching them how to do it better.

  • Test Reviews are even better than code reviews

If your developers are writing unit tests, do a “test review” on a weekly or even a daily basis. The thing about reading people’s tests is that it takes considerably less time to go over it and understand it (about 10th of the time it takes to review the actual method being tested). Reviewing people’s tests lets you:

  • understand what feature they were trying to write
  • make sure the tests are high quality and readable
  • allow you to find logical errors in the method under tests due to the declarative nature of unit tests (A test that makes sure a method throws an exception given some value may tell you that the developer did not understand that you meant that method never to throw an exception)
  • Have a whiteboard

And I don’t mean a cork board (they have a nasty habit of being filled up with pictures and non related papers that never get thrown away for years). A whiteboard is a way to have a visual conversation in an ad-hoc manner. To do quick design sessions, or even to have your daily meeting in front of, checking boxes and showing overall progress on this week’s or iteration’s tasks. It’s an “information Radiator”, that radiates information to whoever’s in the room.

Got any tips of your own? I’d love to hear them!

Published Thursday, May 03, 2007 4:03 PM by RoyOsherove

Comments

Thursday, May 03, 2007 4:46 PM by John S.

# re: Tips for a successful team lead

If I give you my boss's phone number can you call him and share this with him?? ;-)

Thursday, May 03, 2007 6:29 PM by Chris

# re: Tips for a successful team lead

In Australia, it's a 37.5hr work week.

So when I originally saw 40hrs, I thought you meant for people to work overtime :-).

Chris

Thursday, May 03, 2007 11:01 PM by Prasanna

# re: Tips for a successful team lead

I moved to this new team (I can say I was invited :)) where it was a total Chaos, people worked 50+ hrs and that was the first thing I got fixed; when people were little relaxed after the break I started introducing rest of the stuff (things listed above by Roy) and believe me it worked like a charm

I truly believe in Agile/Scrum & have been practicing it for past 4 years & I have proven success in multiple projects

Agile Rocks :)

Thanks

Prasanna

Thursday, May 03, 2007 11:58 PM by wiredb

# re: Tips for a successful team lead

Really interesting, down to earth tips. I try to apply them all, even before read this post, not it's not easy. Way too many people don't follow these simple rules.

Friday, May 04, 2007 6:46 AM by Adi

# re: Tips for a successful team lead

37.5 hours work week?!

Chris, are they looking for more developers down there? :)

Friday, May 04, 2007 7:28 AM by Adi

# re: Tips for a successful team lead

Saturday, May 05, 2007 9:13 AM by Gil Zilberfeld

# re: Tips for a successful team lead

I think the Demo is also great to create a constraint for the team. Everyone focuses more on the things that need to go into the demo, rather on other development.

Saturday, May 05, 2007 4:40 PM by Manish Agrawal

# re: Tips for a successful team lead

Everything you mentioned is perfectly fine and I have experienced it. Using exactly these techniques, we were able to complete our projects On-time & On-budget everytime.

But I would like to mention about Issue Tracking System. I really feel it plays very important role in complete delivery of projects like automated builds & releases, Daily meetings, automated testing, acceptance tests, Customer Demos etc.

By using Issue Tracking System, right from starting, every Team Member can log small small issues whenever it comes into notice during project development stages, these issues can be assigned to right persons and will remain open untill fixed or resolved, this will ensure proper tracking and closure of issues which many times go unnoticed and comes in the form of surprises during final stages of the project.

This will also help the Team Lead to evaluate quality of work done by developers.

Wednesday, May 09, 2007 10:53 PM by Don

# re: Tips for a successful team lead

Re: code reviews. I've heard about them but i'm not sure how it would be run so as to be useful and not just people staring at a projector. the idea of including the tests to show the interfaces/business logic steps is good.

Thursday, May 10, 2007 6:04 AM by Gil Zilberfeld

# re: Tips for a successful team lead

Don:

We do code reviews like in pairs. We review live code (fresh in the developer's mind). After selecting the code to review, the writer walks through the code verbally, and the pair tries go through a short list of items to see it's ok - find bugs, performance or memory issues, readability, etc. The sessions are not long, and focused. Affectivity of founding bugs is high. I would do more, but at least we have this.

Saturday, May 12, 2007 12:21 AM by Eugenez

# re: Tips for a successful team lead

Roy,

Very concise and to the point! But I have yet to see the company where all these principles are sufficient to qualify for a team lead :(

Saturday, May 12, 2007 11:39 PM by Mitch Wheat

# re: Tips for a successful team lead

"In Australia, it's a 37.5hr work week."

Since when? I've always worked 40 hrs as standard!

Great set of tips, which I agree with 100%

Nice one Roy.

Monday, May 14, 2007 3:15 PM by SlcOleg

# re: Tips for a successful team lead

I want to add:

Develop and establish the coding standards and naming convention. Make sure your team follows.

Nice idea to collect a "best practice" for team leads.

Wednesday, May 16, 2007 5:41 AM by Robbie

# re: Tips for a successful team lead

We practice most of the above, not code reviews though. We have two weekly interations where at the end of the iteration the lead engineer will do acceptance on the work completed over the iteration. This may include test/code review, design dicussions etc.
Thursday, May 17, 2007 11:19 AM by Jon Rowett’s Workblog » Links for 17 May 2007

# Jon Rowett’s Workblog » Links for 17 May 2007

Pingback from  Jon Rowett’s Workblog    » Links for 17 May 2007

Thursday, May 17, 2007 11:29 AM by JonR

# re: Tips for a successful team lead

WTF happened to my pingback? yuk!
Thursday, May 17, 2007 4:54 PM by dirtyDogStink

# A few tips...how to be a successful team lead

Friday, May 18, 2007 9:15 AM by Govind

# re: Tips for a successful team lead

It's gr8 to read and hope will helpful for me.
Saturday, May 19, 2007 6:40 PM by Pawel Pabich's blog

# Working long hours

Working long hours

Saturday, May 19, 2007 6:40 PM by Blog

# Working long hours

Working long hours
Thursday, June 07, 2007 3:43 PM by Chris Breisch

# Roy Osherove's Tips for a Successful Team Lead

Roy Osherove's Tips for a Successful Team Lead