There are several ways to develop software: waterfall, agile, lean or any combination of those. However, it is rare to find an environment that forces developers to work together as a team. Most software developers I know, naturally want to put a headphone on their ear, listen to some music and achieve something they can be proud of. This creates what I will call “cowboys” developers.
Cowboys like to take challenges and work hard to deliver. They usually have a hard time accepting that they don’t yet have the knowledge to deliver a complex feature. However they are addicted to the sensation that they achieved something hard and complex.
It is very common to see management giving the hardest tasks the best developers, expecting them to work alone to solve it. By working alone, I mean without involving other developers. Problems start when cowboys face a problem they cannot solve by themselves. They will work very hard to solve the problem alone. They will isolate themselves as much as they can do it. They will only ask for help when things are out of control: they won’t be able to deliver. Another common situation is when they see something wrong happening. It can be a bad decision or anything in those lines. They are tempted to spend a lot of time and energy to make what they think is right to happen. Even if they manage to get the right thing to happen, some people will wait the first opportunity to culprit them. They will feel angry and loose influence in the long term.
##My 2 cents
I have worked like a cowboy in the past and always burnt myself at some point. Today I always involve other developers in the challenges I face. Doing so, I get other point of view and build trust. I spend more time teaching and helping other developers than working on challenges. In the long term it builds stronger teams with very high skills where everybody like to work together on tough challenges.