Dreambook

Just adding this little work of art to my wishlist would not have done justice to it !!!

Indian Services Companies and Open Source

An interesting thought on Why Indian Services companies do not seem excited or interested in investing in open-source? IMO this is due to the following reasons:
  • Being services companies, they have always been reacting to customer demands and industry trends, rather than proactively being thought leaders. (This is specifically about technology trends & thought leaders, rather than outsourcing leadership). This is also a reason why the services companies are not hugely succesful in Technology Consulting and traditionally focused just on Application Development.
  • Indian services companies usually have no clue about product management, and creating innovative products. After-all how many Indian software products do you see in the market. The entrepreneurship skill and courage is usually not encouraged or cultivated in Indian services companies esp at the techonology developer level, and that skill is definitely required to be able to bring a product idea to life. If Indian services cannot come up with commercial products, why should we expect them to come up with open source ones
while these are the core reasons, there will be host of other reasons especially the fact that very minuscule percentage of technology thought leaders in the world today are from India inspite of India being Software development workshop of the world for quite some time now.

Design : Changing Definitions

When I started working, software design used to be a phase where all senior ppl in team worked on trying to define what needs to be coded. The idea of this phase was to create an artifact which detailed the design to such a level that it could be given to the developer, who in turn would just code as per the design and everything will be great.
This process & steps are exactly how things would happen in any other engineering domain like construction, electrical engineering with the architects and engineers deciding on the design & workers creating the product from the blueprint.
BUT what promoters of such design phase and distinction forgot was that software industry is different. Here we dont have dumb workers in software, infact this distinction is not necessary as all are knowledge workers. Thus came the problems of changing design or code being different than the design. Secondly what the above approach forgets is that software development is not yet a defined or a predictive process but rather an empirical one and thus cannot be approached in the same way.

What I feel is that design should be evolutionary rather than planned and thus should be taken as part of coding and refactoring phase done by the developers. I am not totally declaring the design as a dead and redundant phase.. but only trying to change its definition and scope. As a phase, there should be design in each iteration where we identify the contracts (UI, interfaces with external applications, Business Interfaces) with their Api and its behavior. Also we should have robust coding and architecture guidelines specific to the project besides the generic ones.

The contract - behavior information along with project specific development guidelines are sufficient for the developer to create a code-base meeting the needs and infact there are high chances that they will discover a new Api or a need to modify one to address the needs better. That is the time they should help evolve the design in consultation with the design authority rather than avoiding following the design which is the usual stance. Infact the design should be expected to evolve over time & iterations and the code-base expected to become more robust with refactorings during the iterations. Also the development guidelines should keep getting evolved.

Infact one of the better ways to ensure a living development guideline is having it on the wiki instead of word document :). Infact same holds true for the design also ... it should be an artifact which is available in developers IDE itself allowing him to evolve it rather than as a separate UML diagram :)

If this appears greek mumbo-jumbo .. some of my thoughts are better explained by Martin Fowler in his article - Is Design Dead?

Software Entrepreneurs

Jotspot's Joe Kraus blogs about why everyone is so excited about being an Entrepreneur these days and why do we see so many new Start-ups. So my blogging series about Starting an start-up in India seems to be very nicely timed. Sometime I plan to blog about the Infrastructure Software that is now available Open Source and can form the basis of any Start-up