Monday, 12 August 2013

How software developers rip off their employers

Every now and then I stop my daily work as a programmer to look around and see why we do things the way we do them, and most importantly, how things have evolved in my 15 years of software development experience.
I must say that I come from an old school of programming, where performance, accuracy and a high dose of pragmatism were key to success (and to keep your job too).
In today's hot software development market, many people with little expertise saw the opportunity to make good cash easily.
Let's see what developers do to hide their lack of experience:

- Using ORM's

Not so long ago, software had to be fast, performant, and easy to use. This required very solid knowledge on writing database SQL, when to create and use indices, and database structures.
I must say that SQL is a very hard skill to master, and it doesn't come easy. It takes years of experience to write well performant SQL.
Many developers now a days don't even know how to write basic queries. This is why ORM's are in so much use. Even though this mappers's performance can not even be compared to straight SQL, developers refuse to go back to the origins of writing queries. The argument that developers make is that ORM's give you the ability to forget about the persistence layer. But, do you know of many systems that don't store any data? Not many.. So, developers, software includes persistence and data... deal with it. Stop ripping off your employers.


- Using Test Driven Development

In the times were applications had no unit, integration or automated acceptance tests, developers were forced to learn the code before they could make a change. That means, spending time learning the system, how each piece interacts with each other before they can make a change, and most importantly, what all developers hate: reading someone else's code.
Now, developers rely solely on pre-existing tests to do their work. If no tests are written, developers simply throw the towel and force companies to spend time and money re-writing the system.
It's amazing how developers were able to work 20 years ago with no tests, but now they seem impaired to do it.
Another observation on TDD is that it's used as a good way to cover people's asses.. in case an application fails, a developer simple responds with "all my tests passed".
Needless to say, TDD is big load of BS. Everything takes 3 times as long, since for every new feature you have to:
   - Change the existing code
   - Fix the broken tests caused by the new feature
   - Write new tests to cover the new functionality.
In the last 3 years that my company started to use TDD, it only served me to realize that I was unknowingly breaking existing code 3 times. For all the other times that a test breaks it's because I am intentionally changing the code. Seems like the theory that it would serve as a safety net is far from being real.


- Using unproven technology

All developers love experimenting with new technologies. That's a fact. We think we are smart, a kind on its own, higher-than-average brained beings on the planet who are entitled to leave something for posterity, and if that "something" implies recognition from other colleagues, you can't ask for anything better. We don't want to do menial work and simply get things done for your boss to take pride of, right? We want to set the stage.. and if that comes at the expense of delaying projects, that's something companies will have to live with.
I could have an endless list of frameworks, databases and applications that are so amateur and flaky, but developers still insist using them, when they could use more traditional tools that are already proven, that have been in the market for decades. and do exactly the same.
Using unproven technology will inevitably lead to project delays, unforeseen events, bigger costs, code re-writes... but, it might lead to some new knowledge to add to our resume... and that's all that developers care about.

Agile Project Managers deserve a whole new article... they are by far the ultimate waste for company's money. Read it here

To summarize, in a market where developers are in high demand, we have managed to use our employers as our guinea pigs. Of course, this will have to change when market conditions change, and the power goes back to who are paying our salaries.





No comments:

Post a Comment