When you work with other people, “office politics” will always be a factor. I have heard people say that they did not like office politics as if it were something that they could avoid. I am not talking about the sort of “Office politics” resulting in the metaphorical stabbing of fellow co-workers in the back. It is true that office psychopaths definitely attempt to manipulate co-workers for their own purposes, but a lot of daily interactions can also be seen as a form of “office politics”.
Internal restructuring has seen my role change recently. I was working on a framework team, providing code (and various other infrastructure) to various teams in my company. My “customers” were the teams that wrote the applications that sold to the real customers… That is, the ones that paid money!
Since the restructure, I have been moved onto one of these teams as a senior developer. Former “customers” are now team-mates. When I was working on the framework, I had a certain perception of how our code was being used to create the end-product. Now that I have become exposed to their code base, I have discovered the truth behind how they use the framework code! The fact that there are differences indicates some degree of a breakdown in communications. There is nothing catastrophic about what they have done, but it shows a disparity between the directions the framework and end-products were heading. This difference was due largely to the difference in motivations between the two teams.
The framework was responsible for the core of twelve different applications. As such, consistency and flexibility in the architecture were highly valuable commodities. I would not be presumptuous enough to claim that we succeeded in providing the perfect architecture every time, but those were primary goals of the code we wrote.
The end-products have a far more tangible goal: To make money. I am not in product management, but having developed commercial software for a long time now, “making money” tends to be about writing software that adds features that customers want and alleviates the worst of the bugs that have been reported. In terms of priority, “adding wanted features” are more important. Trade shows never focus on showing customers how the software no longer crashes when you do steps X,Y and Z!
In terms of how this affects code in the long-run, there is a natural tendency to leave “good enough” code alone. Short term deadlines enforce short-term thinking. Commercial reality allows code to deteriorate in rather the same way that an untended garden becomes an overgrown jungle. Active pruning and weeding would avoid the problem, if only it were seen as an important goal.
Given that the software still sells and still provides real value to the customers, it can be seen as an unimportant goal. The fact that new features become difficult to shoe-horn in to the existing code base is seldom given consideration when writing code. Which brings me back to my original point on office politics.
Now that I am on a new team, I see the “weeds in the garden”. No individual issue is worthy of much attention, and so the existing team members simply ignore such issues for more important work. I would highly doubt there is a piece of commercial software being sold that did not have some degree of this occurring in their own code base. I have worked alongside my new team members for many years. They know how important code quality is to me and I know that they will expect me to try and improve their code’s overall quality. Here is where the “office politics” lie. I could just blunder in and make changes which I believe are for the better. I have known programmers who would. Different cultures in different parts of the world would probably react differently to such an “intrusion”. In Australian culture, this would not go down well and so it will not be the approach I will take! I’m also someone who is only too painfully aware of their own short-comings as a programmer. So, tact and and a measured approach, remembering one’s own shortcomings will definitely be the order of the day. See, even in the most ordinary of jobs, “office politics” will play a role!