My worst programming mistake

Some months ago i become member of a small organization working on the development of a new product and i was charged with the responsibility of developing the front end Web site for that with some degree of freedom to chose the technology to use for that purpose. The biggest challenge on the product development effort was the use by the first time (for everyone on the team) of a Big Data store to address a project requirement. I start working on the low level user management features (authentication and authorization services, etc.) and once i have a functional prototype (backed by a SQL database because user related data will never be Big Data in our case) the general project manager make me change the SQL store by the Big Data store selected to be used on the project (Cassandra) based on the idea of speed the adoption of the last.
That was my first days as member of the organization and not fighting that decision of the manager is the worst mistake i have done on my time as developer. Today, more than six month latter, we are still fighting problems related to that decision, we have more than 4 bugs related with this decision.
The general project manager has change his mind about this and now i am thinking if it will be possible for me to prevent this from happening and the answer is yes: back at the time this have been prevented if i have been able to demonstrate the manager the issues associated to the decision we are facing right now. But lack of experience working with Big Data stores (particularly Cassandra) prevent me from been able to do that.
The lessons i take about this:

  • Always consider your job situation not now but on the long run when you make a decision you will have to live with or someone else.
  • Never use a Big Data store for things that are not Big Data, you will lose things you take for granted and you will have to work around that. Distributed databases work different to Relational databases.  


Popular posts from this blog

Mi aproximación al diseño de APIs RESTful

Concurrent Alarms Processing