The Customer, The Manager, The Developer and the Hack
In this post I am going to release my anger and rant about how hard it can be for a Developer, We are well known most of the time for taking pride in our work. Seen as these people glued to a computer screen in the early hours of the morning.
We like to write clean, readable and might I say beautiful code. In every company I have previously worked for I take pride in writing beautiful code. However there was one company I had previously worked for that made me do everything but write beautiful code.
The customer to any business is king. The problem with this analogy is that the customer is then seen to be always in the right and most sales people become 'Yes' men. In my previous experience as a Freelancer I found that customers although correct sometimes needed their hot air ideas shot down.
Some would ask for features that were pointless, out of date or would confuse the consumer of the system. Such a scenario is Integrating a full eCommerce solution to sell 3 products when 3 PayPal buttons would be suffice.
The company I worked for took price in being what they coined : The Customers Advocate.
I still am not entirely sure what this meant but from observation I found it meant that the Company agreed with the customer on everything, If a manager says this is Illeagil the customer would respond I want it. The company would then go and do it for them.
In the software development arena this produces software known as Bloatware. To the team it leads to Dis-Harmony and disloyalty to both the customer and the manager.
Why I hear you ask?.... Because when the manager tells the developer to produce a solution, The developer will agree. However then the manager speaks to the customer upon the solution being complete and the manager and the customer then pick holes in it. They then blame the developer for these holes when it was the lack of Scoping / no Scoping from the manager with regards to what the customer actually wanted.
When the Manager of the Project sides completely with the Customer and Ignores advice from the Developers on the team the project is destined to collapse.
In one project I worked in the manager stood on the side of the Customer so much that the Customer took advantage of this. They started asking for unreasonable requirements going so far as to request entirely new features all while screaming saying they want it on the Budget Original and On Time.
This approach meant this forced developers into a really tight position asking themselves two questions:
- How can the team write Good quality code when we don't have the time to ensure the quality.
- How can the team keep the Project under budget when new requirements are added but are not being charged for.
The approach of Managers in regards to these problems is (Hack It)
The developer is the one who knows their skills, they generally know how long it will take them to do a specific task and with more understanding of requirements the Developer can ensure they get the work right first time round.
I was the developer in this company I found it difficult to add a feature to a code page when the code for that page contains 2000+ LOC with of largely redundant or repeated code.
An example of what I seen was this:
- No Page Design Patterns
- Vague Function Names that Often did something different to what was said on the tin.
- Over Use of Sessions instead of other methods of persisting data.
- Absolutely no validation.
- Incorrect naming of Controls (e.g. this.TextBox1.text in place of this.txtAmount.text)
- Repeated code blocks
- In once case over 20 lines of 'IF' statements. (I reduced this to 5.)
- Incorrect Code Placement of Logic (PageInit/PageLoad/CreateChildControls) were not used properly.
I took to the task of compressing the code in each page I worked on. I don't know if this helped or not but I remember being told 'Less LOC less Bugs' so I at least attempt to practice this as best I can.
On one project for this company the customer set a Deadline for the following week. This would be reasonable however, The customer did not provide us with the layouts, images or other information we needed.
Again as a developer I thought tell you manager that this is unreasonable for the customer to demand such a request when we don't have the tools to do it from them. The approach of the manager was to bury their head in the sand saying. 'Just do it as best you can'.
This leads to the collapse of many software projects. A manager who keeps saying yes is responsible for the demise of the project. However they can only be responsible when the developers themselves have proven and alerted the manager time and time again of problems.
In this project I suggested to the Manager we need a re-write or at least a major re-factoring I was told no to both of these and as I said above the manager said 'Hack It'.
I think all developers know what I am talking about here. When a Manager / Customer says to do something and the developer then tries to say Its not possible.
I do not take keen to hacking in any extent its a bad way to be. I can understand why hacking is relevant to projects that are Legacy but this project was both UnComplete and Brand new. I told the manager the code base left by others needed re-written and the customer needs to be told NO both requests were denied.
Hacking both brings down the Integrity of the code and greatly increases the chances of Bugs and makes it a nightmare to manage. I only use this approach if all other avenues are blocked and after reasonable debate.
The previous company I worked for practised this approach for every project. This lead to the company to have severe problems retaining staff in the Development Team (e.g. Many wrote crap and left).
It also put everyone on the team under un-reasonable amounts of stress and pressure and also made Developers loose faith in their Manager, The Customer and also at times other members of the team.
I don't know what ever happened with this project that I worked on I can only imagine the company got stung once again by the tail of the customer and that the Project Collapsed.
Help I'm in this position? What do I do?
If any developer sees themselves in this position my advice is to run for the hills as fast as you can. It will hurt more when the company collapses when you were part of it than leaving because you wanted to do things right.