Friday, August 26, 2011

Being agile and technical masturbation

I suggest a great term for those who cannot do without making it more complex than it should be: "technical masturbation". Some people may choose to call it "Over engineering"; however I choose technical masturbation since what they do is satisfy themselves.

This occurs most when people try to make a software too flexible then it should be. Those keep saying they may need to serve in an another format; serve in a different platform/technology; but these never happen.

Requirements and technology changes rapidly; it is our job to be synchronized with them. Business wants development teams to be agile. For this reason, we have been populated our code base with:

  •  interfaces (that has only one implementation and will never change),
  •  design patterns where we do not need them actually (strategy pattern with one strategy)
  •  aspects where actually a simple web filter was enough (debug became harder; great)
  •  targeting high unit test ratios caused unit tests testing only order of method calls with mock objects
  •  useless documents
  •  too many configuration files (that never change)
  •  pages of spring beans; every developer will debug again and again

In order to be agile for business requirements; we should not forget two things:

  •  the language should be agile in nature (see few words on ruby)
  •  the team should be agile which is more important. To make team agile we need to be sure that the code is easily read; understandable by new joiners (where in IT world; recruitment occur more). Sometime it is better to do copy&paste code then a series of design patterns if team says replace all is easier. (and I doubt if it will ever needed.)

Requirements and technology changes rapidly; perhaps a design / software done five years ago is nearly dead and you think it is time to build it again with different technologies. Follow technology and use it; but do not lost yourself inside it; do not be obsess with being too flexible, technology and patterns. Check your old projects; don't you have a great new plan/design for those?


  1. change ur blog theme...makes me puke !! n difficult to read too dude !

    1. Big data is a term that describes the large volume of data – both structured and unstructured – that inundates a business on a day-to-day basis. big data projects for students But it’s not the amount of data that’s important.Project Center in Chennai

      Spring Framework has already made serious inroads as an integrated technology stack for building user-facing applications. Corporate TRaining Spring Framework the authors explore the idea of using Java in Big Data platforms.

      Spring Training in Chennai

      The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training

  2. This is one of the finest article with good information
    Websphere Training In Hyderabad

  3. being agile and technical masturbation nice posts../.
    Hadoop training in hyderabad.All the basic and get the full knowledge of hadoop.
    hadoop training in hyderabad

  4. Big data and data warehousing related information is always updated to me at hadoop online training in hyderabad. Nice insight on the topic refer the details at
    hadoop online training


  5. Thank you for sharing the article. The data that you provided in the blog is informative and effective.
    Best Devops Training Institute

  6. after reading this web site I am very satisfied simply because this site is providing comprehensive knowledge for you to audience.
    AWS training in chennai | AWS training in annanagar | AWS training in omr | AWS training in porur | AWS training in tambaram | AWS training in velachery