4

My current team is not following the working model I'd expect they follow.

They're programming on their own, without much interaction with other members and they are not interested into testing their code as it was expected to be. In sum, I have a team formed by Cowboy coders.

How such a team could be get back on track?

  • 3
    What is your role? Can you clarify how this is a project management issue, rather than a workplace issue? – Todd A. Jacobs May 28 '14 at 3:55
  • You never stated an actual problem. What is it about what they are doing that is impeding the flow of value to your customers? Is their velocity too slow? Are customers complaining about bugs/quality issues? You described a symptom, not a problem. – Andrew Clear Jun 10 '14 at 19:08
7

Cowboy coders generally come from one of two places, either an organization that has promoted quick development (usually start ups) or from lack of experience. Coming from an organization that transitioned from a start up and moved on where a large organization bought the company and then hired a consultant to kick our butt, I have experience with a group of cowboy coders. Generally cowboy coders like to code and create. Cowboy coders like the freedom to create what they want and may not want to interact with their team. Generally that means lack of testing, organization and belief they are doing what is best.

To combat this you just need some interaction and training. This is something that will take time but a little structure will go a long way. Spend some time making team activities. We play basketball on regular (manager and team), but it can be anything. Something that gets the team to like to interact with each other. If you can set aside project that requires a team to work together and collaborate perhaps start with a new technology nobody knows and require team time to come up with ideas to create the product but only allow work on this project during meetings only. Play the devils advocate and try to make every person discuss why they want to do something.

Also scrum meetings are very helpful. Getting people to interact and own their meetings will make them feel empowered and get the group interacting. This has multiple benefits, I won't explain but you can look into them.

Next start training them on how a tested software can be better. Train them on techniques that will make testing easier and can be rewarding. Show them and explain. Bring up references that show how a well developed software will produce better. Break their software and use a technique they are not using to show how it can help them more then help you. Also keep sending their work back until tests are completed to your satisfaction. They will eventually get tired of bringing bad work to you. You then will have to praise well when they do well too.

You may want to introduce code reviews as well. If the team is reviewing each others work they will get an understanding of what else is happening and people happen to start to interact more when they know someone else is looking at their work. Also you won't have to spend all your time looking at their code.

There is more you can do this is a start. Don't try to do it all at once but definitely start layering it in there.

2

They're programming on their own,

Why is this a problem? Are you wanting them to pair program? If so, please rethink ;).

without much interaction with other members

Why is this a problem? If their current programming efforts don't overlap, they don't need to collaborate much.

and they are not interested into testing their code as it was expected to be.

Ah, finally, a concrete problem, and an easy solution.

Add a new step to your process where you code review (as in you specifically). Reject all code that is not tested properly. If this doesn't solve your problem (i.e. stubborn programmers), make it clear that they will be coding to your standards, and if they can't, they need to seek employment elsewhere. Professional software engineering requires professional software engineers.

Seek to engage their sense of pride and professionalism as a psychological ploy if you meet resistance. Most developers long to be taken more seriously and more professionally: show them you want them to be professional, and treat them like professionals, and rapid attitude shifts are possible.

1

Use your project management techniques to reign in the cowboys. Create iterative deliverables which not only help you keep track of what the coders are doing, it presents them with clear targets to meet and with specific deadlines.

Provide regular feedback with the team. If you need to talk to a developer whose work is causing project delays, explain the risks to the overall project and how it is affecting everyone. If that does not seem to work, explain how their performance will affect them directly (annual reviews, chances for promotions and raises, etc).

You can try team building exercises, but I would start small since you may not know ahead of time how well the team gets along with each other.

If you encounter team members who simply refuse to follow plans and continue in their renegade ways, then you will need to do your best to replace them on the team. If they are on loan from a functional manager, reach out to that person to apprise them of the situation. If replacing the team member is not an option, then all you can do is put them in a position where they will have minimal negative impact on the project.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.