Today, I had a strange felling at work. I was discussing and fighting with a colleague about how to make things better for our project and I though: “I wish my colleagues were computer programs”

I work for a mobile game service company. The mobile business is an emerging business and we’ve to develop our own software to deliver this new genre of service to customers. Despite the experience of the developer team we’re facing severe but classic development problems: lack of communication between projects, lack of documentation, short deadlines, planning issues, late releases, test problems, deployment problems, lack of focus, hysteria, demotivation and so on.

As a software engineer, I tried to solve some problems by guiding the guys for using tools for a better cooperation (CVS, project mailing-lists, Wiki) and ask for more methodology. This seems to work fine but for the overall development process to really work smooth, you have to inevitably deal with humans.

The objective of a company is often clear: gain market share, make profit. But employees see it in a different way because they have different goals and motivation in life and that impacts their job. A company is like a big box where live humans, it’s a little town. So, expect the full spectrum of human “natures”. All disposition. All strengths an weaknesses. Heroes and traitors, soldiers and poets, leaders and followers. This is no different than the real world, it is the real world! To do your job, you’ll have to deal with these “natures”. It’s really hard to inforce a new process and you’ll have to learn the art of politic and negociation because people who masterizes it will win even if you’re right.

When I program a computer, I have the opposite feeling. The computer won’t negociate to run your program, and if you made it right, it will run flawlessly and as expected. Thanks God, Computers don’t do politic. If my colleagues were computer programs and happens to bug, I could do a “kill -9″ and restart them!