Powered by Twitter Tools.

September 2010
M T W T F S S
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  
Chris Donnan

Create Your Badge

Chris Donnan : Programming – Brooklyn Style

software, trading, family, fun

Managing a development team

Managing a development team is something that takes time to learn. There are a few key components that a team lead should manage to deal with on a daily basis. As a manager of software teams – you should be making sure that your team leads are doing these things.

Basic agenda

  • Deliver working software as rapidly as possible
  • Expect constant changes in:
    • Requirements
    • Dates
    • People
  • Don’t give features the users do not want
  • Prioritize features
  • Deliver iteratively
  • Keep constant communication with all team members and the stakeholders

Team management

  • Check task list progress
  • Consider mentorship goals for team members
  • Check software metrics
    • LOC growth/ shrinkage
    • Code Coverage
    • Test suite status

Communication up the organization

  • Communicate metrics, status
  • Get directives, changes, etc

Communication with the users or user proxies

  • Check in frequently with questions of details etc. Since we should be defering details to the last responsible moment – these chats are key.

Impromptu meetings/ Modeling sessions with dev team

  • This is architecting as a group. Get a few folks to model out part of the software solution.
  • Consider larger refactorings in concert.

Code Review

  • Review developers work
  • Review total solution’s integrity, isolate areas of concern

Pairing/ Solo Coding

  • pull task from list
  • Consider usage, write initial tests
  • Write code to satisfy tests

Pairing Guidelines

  • Alternate driving
  • Switch pairs partners at least 2x per day

Coding guidelines

  • Have a team code standard – enforce it
  • Seperate interface from implementation
  • Practice IoC
  • Write side effect free routines whenever you can
  • Name methods, variables and classes approprate to their tasks
  • Makes classes for 1 purpose
  • Make methods for 1 purpose
  • Refactor code as you go

Unit testing guidelines

  • Test everything – goal is to cover all code
  • Only instantiate your ONE test class as a concrete class.
    • All other classes that the CUT (Class Under Test) depends on should be mocked

Task guidelines

  • Tasks should be less than 1/2 day in length – preferably much shorter
  • Tasks should be detailed
  • Tasks must reference the user story, use case, feature, bug etc that they address.
  • Tasks must be executed in time boxes

Infrastructure/ Tools

  • Make sure the team has the tools required – they are probably cheaper than more developers
  • MUST HAVE INFRASTRUCURE
    • Seperate development, QA/ UAT, Production environments (machines, databases, etc)
    • Continuous integration process
    • Source Control
    • xUnit
    • Wiki for team details
    • Simple Bug/ Feature Tracking
    • At least Simple Static analysis software
    • At least Simple code metrics software
Share and Enjoy:
  • del.icio.us
  • digg
  • blinkbits
  • BlinkList
  • blogmarks
  • YahooMyWeb
  • connotea
  • De.lirio.us
  • Fark
  • Furl
  • Reddit
  • scuttle
  • Shadows
  • Smarking
  • Spurl
  • TailRank
  • Wists

Comment on this post below

You must be logged in to post a comment.


You can leave a response, or trackback from your own site.