As a developer you will often have clients approach you to redo a project done by another developer. Which means you can either fix it or start from scratch.
If you decide to fix the code then you cannot avoid going through the code. Therein lies the nightmare. If you are lucky the code will be well structured and commented. But let’s be real that rarely happens. 90% of the time you will have to deal with poorly structured,tightly coupled with terrible documentation if any and zero tests. I once had the pleasure of losing my mind trying to understand a project where method names were something like ‘function boomShakalaka’. WTH!And spaghetti code.
First thing you’d ask yourself is ‘which moron wrote this?’
So you redo the project and meet the client for briefing. They nod their head in approval and say ‘Ah! Nice. Everything is perfect but..’ Once you hear that ‘but' you know its about to go to the twilight zone.
The but comes with some seriously outrageous suggestions. Take for example this time i was taking the client through the stock taking form. He begins ‘Its great but can you make the form somersault. I kid you not. I think to myself ‘Why would anyone want the form somersaulting while they are filling it?’.Conclusion is I ignored that one.
A few briefings and the demands become more sporadic ,unreasonable and outrageous. Sure enough your code too starts to evolve with the clients demands and after a while you notice something. Your code begins to look similar to that code you called ‘spaghetti!’.With the 100 changes per hour you stop documenting your code. You become lazy naming your functions and git commits. You become what you hate and you never saw it coming.
At that point you begin to understand the other developer more than the client. You can relate to that single comment that made on code that says ‘Fudge this shit!’.
Painfully you learn that you should never criticize anyone if you were not in their shoes.