Saturday, July 13, 2013

The substance in REUSABILITY

Reusability is much talked about in the world of software engineering and principles. This blog post intends to, define the term and refine the approach with fresh perspective, hopefully!



Heuristic Rules:
1.  At a technical dimension, applications that make an attempt to delineate pieces of code /classes/modules/packages in that order, whose usability overlap across multiple systems, and there by eliminate duplication of code across the systems and subsystems, can be described as proponent of reusability.
2.    Reusable systems should contain the spread/surface of impact and be cohesive or decoupled. The reason is, this will punctuate the changes within the reusable subsystems down the line and avoid unnecessary changes in dependent systems.
3.   Taking this one notch up, at a business dimension, one needs to identify the common aspect of the functional requirements that will overlap with future systems and that recurs through various stages of the evolution of products. Dividing the abstract top layers into downstream sub structures or modules is the pivotal step. As Bertrand Meyer mentions (paraphrased) “The idea is to build modules and subsequent components into brick or box like fundamental atomic units and give life to larger structure using the same” [1]. The goal is in practicality unachievable but that’s the sublime intention.
4.   The cardinal rule is decomposition of systems to the point that allows one to extract reusable subsystems.
5.    Convenience methods or Utility pattern, allow one to reuse pieces of code across modules and applications.
Reference

[1] Object Oriented Software Construction by Bertrand Meyer. – “This criterion reflects an old dream: transforming the software design process into a construction box activity, so that we would build programs by combining standard prefabricated elements”

Friday, July 5, 2013

Justifying the need for Innovation



I could have conveniently put the title as “What is innovation?” and given an abstract definition, which would be non-concrete and non-germane to daily routine of corporate ritual and culture. Hence, I wanted to stress more on the necessity for innovation in companies of all sizes. I believe giving a justification would sink in deeper into the minds of blog reader.

That said, my twelve years of experience in corporate world has taught me that, one cannot rest on past glories and honors. If one does, you are bound to perish and be penalized. Companies and employees need to constantly rekindle the passionate search for meaning that’s beyond the present and past. They need to pursue with undying spirit and unquenchable thirst that can cut through all the haziness of present success and evaporate the mist of initial victories through a blazing torch. I also believe that, a corporate leader needs to create an ambiance of impending disaster (e.g.: business competitor who is scheming to overtake, which is very much a real threat in this competitive era) in the minds and actions of its employees. This discomfort has to be lodged not in the daily mundane activities but rather, should be nudged in the deepest corrugation of mind. I don’t want to make this gloomy anymore, but if companies year after year could succeed, it’s only because of this deep seated unjustified disquiet that gives impetus to perform like start-ups.

According to me Innovation is when companies can redefine, reinvent, evolve, and search for solutions for everyday problems that add a business value and as a consequence that affects the bottom line. We reach this not by basking ourselves , rather persistently working our way every day, year after year, aligning our actions against the company’s strategy (both near term and long term) through incessant search for truth.