I remember watching a talk on infoq by Michael Feathers. He said something about growing your software teams organically like a garden. An example he gave is, you don’t yell at the lettuce for not growing, you have to nurture it and help it, try different things so that it grows better.

If you have a co-worker in your team not doing very well, you need to help them to become stronger, guide them, try different things, show them different ideas, pair with them.

The reality is every software project will have weeds (bad code), you need to pull the weeds out as the garden grows, clean it up, so that overall the software is growing more organically. By having a stronger team you will have less weeds.

For your process rather than just focusing on task base feature, one should also focus on code quality features. Don’t just focus on hammering the new feature out, have the time to go over items that need care. Refactor the code that you see lots of bug and write test in those areas.

From my experience, I have seen when a coworker tries to explain their problem to you they already have a solution in their mind and when they try to verbally explain to you they have in the back of their mind solved the issue already. And if its not the case give them ideas of how you perceive the problem and show them your take on it.

But by yelling and not helping the lettuce, the lettuce is not going to grow any better.