Software Engineering weblog

I came across an interesting lecture on professional software development by Robert Martin, a promotion part of video lecture series on clean code. I would recommend every software developer, and aspiring ones, to listen to. I believe that you will find this as quite thought provoking, and inspiring, just as his many other lectures are. You would find it gently nudging you out of comfort zone into challenges of evolving into a true professional

Head count of manpower involved in software development has multiplied manifold from the time I started my career in software development more than two and a half decades back. Technology involved has changed, and software development environment has changed as well. World of software, and its role in the world, too has changed quite a lot since then…. and, as software reached out to every walk of life, complexity and expectations too has increased manifold.

As we have reiterated many times over, software is essentially a construction in mind in first before it is executed in computer. It gets created in the minds of users, customers, developers, testers, … and often these do not connect breaking dynamic equilibrium of balance as software evolve. Making it still harder, complexity and disconnect increases exponentially with increase in the number of minds involved. It does not make any sense to wish these complexities away. These are here to stay. It can only get more complex and challenging, as we depend more and more on software.

Key to being a professional is to get on top of these. That is, a true professional would stand up for what he believe in, what he likes to do, take up the initiative, own up the commitment and deliver to the commitment. A true professional will see commitments as extremely important, not a casual word. We work as we work as a team, and a whole chain of commitments depends on your commitment. Many business, and many lives, depends on it and if commitments are not honored all of them are affected. It is your responsibility to see that commitments made by you are honored within time, budget and quality expectations. That is, you are absolutely in charge of the situation, rather than its victim.

Note: Video of interviews with a super star from Indian film industry and another one with a master batsman from Indian cricket embedded here, both worked their way up fighting many odds. Both are involved in a profession which calls for individual excellence and team work for success. Both are professional who made indelible in their space, and are reflecting back on their rich experience. I believe spirit of professionalism cuts across many disciplines. It may differ on details but fundamentals remain the same. It is about conviction, self belief, working hard for what you believe in, working as a team and and winning against many odds, in the right spirit

I believe, technologies, processes, methodologies and tools have evolved to a great extent by now and these can help us address the key challenges, if we can put these together in the right way, as people/team enabler. Well, it is important to get it right.

Also, it is important to stay clear of dogmas, and realize that when we direct attention towards moon by pointing in that direction, the pointing finger is not moon. It might sound trivial but it is common to see finger being confused as moon. What do I mean by that?

I have seen process quality standards like CMMI degenerating into a compliance ritual. Insistence (by whom? It is interesting to know) on excessive documentation leads to outdated, and even lack of (gets postponed as it is time consuming), documentation. Later documentation is done purely to satisfy auditing needs. That is, an initiative intended to help you manage collapse on its own weight. The real problem is not with CMMI but in its adoption

Automation initiative, that starts with purchase of a commercial software for software development, get stuck in learning some esoteric aspects of the tool rather than addressing true automation needs. Again, problem is not automation rather how automation is approached and implemented

It is curious to see the patterns of wrong adoption repeating itself. While technologies, processes, methodologies and tools can help us in addressing key challenges, often, it is the related technical details grab attention through advocacy of vociferous loyalists and marketing machinery, rather than applying them right. The fact that these are enablers in the first place is conveniently forgotten

Looking around, it look forward to a phase in software development, a phase that physics had gone through between Galileo Galilei and Isaac Newton … a phase of consolidation, period of drastic and intense changes with far reaching impact. We have seen some of these continuing even into early 20th century through Albert Einstein, Werner Heisenberg , et al…. and as an industry, we continue to deal with more unknown factors than known ones, till the dust settle

A new dream was born, in second half of 2009; a dream of new horizons in collaboration! It was born as Google Wave, amidst a lot of fanfare. Much was written about its virtues but unfortunately, Google Wave as a product is now slated for a mercy killing. Is this not too early?

What went wrong? It has more to do with business reasoning than social or technical.

As I had observed earlier, there is more to success in the market than just realization of need and a good product. Critical mass, financial muscle, marketing push, competition and many other factors too play a major role. In the final analysis, I tend to agree with ReadWriteWeb. It was accessible to too few people and fewer could see the context and need; a product being denied of its oxygen

Use of Google Wave integrated with other software and services still remain a possibility. I am glad to see the promise of code and protocol being available in open source, especially given that much of goodies in the presented software world are nurtured by open source community

So I hope as Google Wave as a product is buried its grave, its spirit resurrects itself to become part of every collaborative software

Web has been around for long as a platform for social interaction, and it is time to recognize it as part of social infrastructure very much like healthcare, transportation etc. But while potential benefits of web are discussed widely, related risks are not. With its root in research and open source community, it operates still largely on trust.

Many layers are added on as it is evolving into a platform for social interaction across the world but those were after predators catching their gullible victims. This may be fair from the point of evolution theory (struggle for existence and survival of the fittest) but as a way of evolution of infrastructure for social interaction, it sound barbaric and, therefore, not acceptable for for a civilized society.

I am glad to see that Government of India is wide awake to this concern. I am also concerned about potential intrusion into privacy given that corruption still looms large in the corridors of power. Balance between security of society and privacy of individual is very delicate. I hope they get it right!

While I was pretty happy about collaborative capabilities of Google Wave, I was apprehensive of free-for-all approach that it started with. That is, any one can do anything with a wave that he/she is participating.

From what I see in Google Wave, it looks like Google has been working on it, and has come out with some solution; not enough but fine as a beginning

Internet has simplified computing manifold, in 1990s, and thereby taking technology to every walk of life. First decade of the new millennium has seen it evolving increasingly into a platform for social collaboration. By and large, collective human endeavor has been behind this success with open and free interaction.

Popularity and adoption has also led to burgeoning trends in attack of malicious intent on this wonderland, and sometimes with political undertones. This runs counter to spirit of largely trust based interaction of professionals and volunteers. But, then, it is a natural consequence of social adoption of technology and cannot be wished away.

As is made out sometimes, problem is neither with technology nor with social adoption but the recklessness of its adoption. Technology is often adoption without adequate cost-benefit analysis; obviously, cost-benefit mentioned here is not just from economic perspectives

I think it is time for sociologist take a serious look at unprecedented social changes triggered by evolving technology, to contain its negative impacts, before it turns out to be a frankenstein

I was surprised by the haste in which obituary for innovative service like Google Wave were writen. Was it SEO back hat at work, or result of tunnel vision? Fortunately, it seems that Google Wave has outlived going by quality and quantity of waves

I believe, future of Google Wave having gathered so much momentum during within less than a year after first beta release should be good. Looking ahead, I am foresee possibilities of not just using Google Wave in isolation but rather integrating with other collaborative software and services as web evolve into a social platform

Particularly interesting, looking at it from India, is the prediction that ‘India-centric IT services companies will represent 20 percent of the leading cloud aggregators in the market by 2012’ is interesting.

Prediction that ‘mobile phones will overtake PCs as the most common Web access device worldwide by 2013’ indicates a changing landscape of computing. Computing was once a terrain for techno-geeks; it is now an irreplaceable aspect for everyday life, tool for business and platform for collaboration. Is it not yet time we get serious about it?

If one were to hibernate for about five years, world of software that you see would be quite a lot different. Changes may not be fundamental but there are significant changes. Well, as always, devil is in the details.

Let me elaborate going a little more specific now. Let us look at from two perspectives.

i) Analysis and design: Object Oriented Analysis and Design was quite in the hype early 1990s. I too joined the bandwagon, going around with the hammer looking for nails. Books on object orientation from those days talked at length about finding abstractions (identifying nouns etc) from requirements but these provided no scope for working with technical solutions. This was largely left to the discretion of individual practitioners. Experience of these practitioners were absorbed into standard Object Oriented Analysis and Design methodology taking it to its present bloated form. This happened in a span of 5-10 years

ii) Software Testing and Software Test Automation: Way back in 1990s, when popular testing tools like IBM Rational Robot (then called SQA Robot) and HP (Mercury) WinRunner came into being, popular success of web could hardly be envisaged. What was started off as tool to testing Windows GUI application had to extend itself into test web based application. These challenges continue as web 2.0, SoA, SaaS and mobile applications emerge. Point here is, when projects are undertaken in respective technologies, necessary tool support is not yet in place often. It is left to the individual teams to create custom solutions, which subsequently get into available tool sets.

These details are rarely look into, at decision making levels. Management of software development business are still desperately looking for mythical silver bullet solutions. Tool vendors still continue to promise magic wand solutions without looking into details before making such promises; well, it is again business! Developers are caught between …

I am not proposing a miracle solution. No such solution exists. My effort all along my consulting practice has been, and will be, to get business into sufficient level of details in decision making and helping them implement the same. With the scope for factoring in “Success Critical Stakeholders”, I find Value Based Software Engineering to hold potential as framework for such a deliberation.

I am neither an expert nor a student of sociology. But I believe what is happening on web 2.0 has a lot to do with sociology and many related subjects.

Social networking enabled by web 2.0 is only a few years old but it is catching up for sure going by popularity for services like orkut, facebook, linkedin, twitter, second life etc. It is almost evolving into a virtual society parallel to the real world that we have been living in.

Many of us are hooked into that already, and many of us are getting into it. Each of us have got into it with different expectations. Social interaction are a combination of give and take, staying within the rules and norms of the society.

Rules of the real world are formed over centuries from experience and thoughts of visionaries and thought leaders from the past. It is time for norms of real world to be adapted to suit virtual world. Having said that, we need to admit that it comes with unique challenges.

Norms of society are evolved over centuries based on local culture and values, forming a foundation like tectonic plates. As virtual world is set to integrate heterogeneous social groups across the globe, it holds potential for significant friction along underlying fault lines.

About

Software engineer referred here is not a person with designation “software engineer” or similar but a practitioner in perpetual quest in balancing academic interest with business priorities.

This is blog of my forays into software engineering!! Indeed, software engineering is not new; it is there for decades now… to be precise, since NATO conference 1968. But does it make sense? does it have practical relevance? in the context of business imperatives? what does practical adoption involve? … and many more questions follow

In my business, my endeavor to deliver business success to my customers leveraging software engineering principles, best practices, tools, technology and so on… and my learning and experiences are what I seek to share here