The book Peopleware summarize some of my believes and experience in software development.
The key point is that the most important aspect of software development is actually human, and not technical. If there is a lesson I learnt at work is that the people you work with really makes the difference. How they make you feel, how they support each others, how they foster a spirit of community is what makes great teams great. The book highlight how this is important. Companies should be proactive in keeping their personnel for as long as possible, by fostering a sense of community among workers and investing in them over the long term. They also should foster community activities unrelated to work, to further create a shared sense of community. I love this.
The two biggest mistakes made by managers is not focusing on teamwork, developer productivity and group dynamics and not leaving enough room for employees to make mistakes. This is so true. I often see too much emphasis on “delivering” and less and less emphasis on pairing, experimenting, collaborating, and knowledge sharing that are all amazing activities to grow a team and be happy and productive at work.
A shared sense of eliteness is an amazing force that binds teams together. This is why if programmers are constantly pressured to build lower-quality products quickly, they’ll become unhappy and eventually quite their job. Great computer programmers want to create programs they can take pride in. I definitely notice this effect appending on me. I do care about quality and I want to be proud of the code I produce and if I am not because I don’t know how, I want to learn from others how to write better code.
Finally, bigger and quieter workplaces make a difference in productivity because it increase the opportunities of flow. A study revealed that 30% of a product’s production costs is bureaucracy so cutting it is usually a great idea. This is also why agile development practices emerged.