Software engineers shouldn’t be like “cogs in the machinery”

Even with the agile “revolution” taking place in these few last years in the software development industry it’s still common to find companies developing software where the importance is more focused on the processes than on people working every day to develop the software. Even when companies declare that people are important they don’t really perceive the situation in which many software engineers work today. This situation is however well described in the literature and used also as motivation for a transition to agile.

Unfortunately I find the metaphor of software engineers like “cogs in the machinery” of Mike Cohn in “Agile Estimating and Planning” well describing the reality here:

“Agile teams value individuals and interactions over processes and tools because they know that a well-functioning team of great individuals with mediocre tools will always outperform a dysfunctional team of mediocre individuals with great tools and processes. Great software is made by great individuals, and as an industry we have tried too long with too little success to define a development process that relegates individuals to replaceable cogs in the machinery. Agile processes acknowledge the unique strengths (and weaknesses) of individuals and capitalize on these rather than attempting to make everyone homogeneous.”

I agree also when David J.Anderson in “Kanban. Successful Evolutionary Change for Your Technology Business” tells that like Ford assembly-line workers in the second decade of the twentieth century no one cared about the monotony of the work or the well-being of the workers. Again “It’s hard to imagine the emergence of organized labor in knowledge-work fields like software development, mainly because it’s hard to imagine anyone addressing the root causes of the physical and psychological ills developers routinely experience”

A further step in considering individuals and interactions over processes and tools is to have people acting as a team. This is a completely different thing than having a group of people together for administrative convenience.  As Douglas McGregor told:  Most teams aren’t teams at all but merely collection of individual relationships with the boss.  Each individual vying with the others for power, prestige and position”.

For a software engineer the feeling to be part of a real team is exactly the opposite as feeling to be a “cog in the machinery”, this is what software engineers should search to feel more motivation and appeasement in their daily work. Managers should consider the problem.

Hope this can help reflection