Extortion via Code Obfuscation
I was going through some articles on the web the other night, and I saw once again, an article about securing your job forever by obfuscating your code. I have heard all of the arguments, and while it seems that most programmers agree that writing clear, concise, well-documented code is the way to approach creating software, some programmers keep doing it.
This isn't like the blog I posted some time ago about over-engineering. That is something that can happen by either letting a project go too far without refactoring, or just overthinking what the business problem is. This is actually malicious, and many consultants design and build software so hopelessly complex that there is no chance for any other developer to pick-up where they left off. They think that they are ensuring that they will have a job, and unfortunately they are right.
I still remember when I was managing a project to build some-such application. I was talking to the programmers, and while I understood a lot of what they were saying, I didn't understand everything. Looking back I know now that the contractors that I had been managing were milking the contract, but at the time, the dot com boom, it didn't really matter, and what they were doing was like voodoo magic to me. I would have some idea and these web developers would make it happen. I never stopped to think about how they were doing it, it was just that when it was done it worked. Now it is a point of personal integrity to try to build things to my personal standard. I wouldn't obfuscate code to myself so I wouldn't do it to a customer.
The real issue here is how you want to be remembered as a programmer. The company that you are working for will remember you as the person who gave them some code that was so messed up that they had to hire two contractors just to add a simple feature. They will never recommend you, and you can forget about using them as a case study. I will never understand trying to make yourself indespensible by making your code impossible to work with. I mean, wouldn't it be better to make yourself indespensible by solving the client's problems quickly and cleanly?