Recently I got a chance to attend a 2 days architecture conference in Bangalore organized by iCMG. Some very experienced and renowned figures in software world took sessions on architecture and software development. It sounded like a conference on just software architecture but it catered various other topics which could be grouped under Software development in general. If we leave the question of whether the conference should have focused on architecture only, other topics were also quite good and relevant to software development.
In the entire conference there was a lot of focus on Outside-In thinking instead of Inside-Out thinking. It's no more sufficient just to think about customer satisfaction. It has more to do with customer delight and in true sense, participating towards customer success. So instead of thinking what you think will be good for a customer, it's important to figure out what a customer actually need. So a thinking from an end-user perspective is very important for software development.
There was an interesting talk from Manoj Shrivastava in which along with stressing on the usability principle "Don't make me think", he stressed on the need of "Don't make me state" being more explicit to software vendors. It's about some basic fundamentals of software development which you as a customer wouldn't like to state while defining requirements. For instance, as a vendor you definitely won't say at the end of a project that you didn't care about foreign key constraints as part of database design because design document was signed off and customer should have pointed it out earlier.
This highlighted two key facts. One - a lot of organizations still follow traditional methodologies for software development. As a result, there is no scope of early feedback and adapting to the changes. That's one of the reasons why Agile has become and growing very fast as the mainstream software development methodology.
Second fact is even more serious. Simply, don't make me state!!! From software development point of view, some of the things should be quite understood and shouldn't required to be told.
There was a very good presentation from David S. Frankel on the challenges involved in Model Driven Systems. Sometimes the cost involved in integrating various systems based for different financial networks can be too high (for instance one billion dollar if you think of changing small details in credit card transaction integration). He mentioned ISO 20022 as an emerging standard for financial messaging but at the same time highlighted its limitations as it solves some problems but creates even more. His focus of presentation was go to the next level and provide semantic interoperability in data integration path.
At the end of the day, there was a very good panel discussion on a very important topic - why we lack focus and drive on software product development and innovation in India. It was a great debate and here are some important points discussed.
- The entrepreneur culture: David S. Frankel asked a question - how easy it is to start and how easy it is fail as a business in India. For instance, it's very easy to start a company in USA. The red tape and bureaucracy involved are very minimal. At the same time, it's very easy to fail too. If you fail in one venture, you start another. Most of the successful entrepreneurs in the world did not taste success in their very first venture. They failed, learned from mistakes and started a new one again. The culture of easy to start and easy to fail creates a very healthy environment in setting up business ventures based on new ideas which is the basic premise of product development. At the same time in some countries, if you fail and go bankrupt, it may become very tough to start a new company again. In India, it's very easy to start but not that easy to fail. Not because from legal point of view but from attached social stigma as Indian culture is a society based culture.
- Another point discussed was about the proximity of the market with India. Software market is still in western countries. Computer penetration in India is increasing but still hasn't reached at that level. As market is in other countries, it's difficult to think the need of new products from a thousands of miles distance. I personally feel it not a valid case as India is a very big market in itself. There can be many business ideas which suits to Indian consumer need.
- Some people attributed the culture of being followers instead of being leader in terms of innovation. Also it has a lot to do with the education system which hasn't changed since colonial times and was created to produce clerks to aid British colonial system but definitely not creative thinkers. Current education system has a lot of focus on cramming books for getting good marks instead of focusing on new innovative ideas.
Personally I also feel, education and culture has a lot to do with it. At the same time, it's also important to understand how easy or difficult it is to survive in India. India has absolutely no concept of social security. From the very beginning you strive for survival and in case you fail, you are on your own. Most of the people who are just living for survival don't want to take chances and play safe. Entrepreneurship in product innovation is a risky game which makes it very difficult to fail in India. That's one of the main reasons why people don't try to experiment.
A session from Grady Booch was thought provoking in context of current grim economic environment. He gave several examples on how software world has transformed the world we know in recent years. In the face of economic scarcity, the tradition reaction is to retreat, shrink, slash, and/or panic. Very natural considering the tough situations it creates for corporates to survive. The thing about software, however, is that it is perhaps the most fungible and liquid of resources. The supply of software is limited only by human imagination and labor. Grady argued, software-intensive systems are an inescapable and necessary element in helping us operate, innovate, and even thrive in the face of lean economic times.
In all, it was a very informative conference and included participation from around 300-400 software professionals. However time and again, during discussions, I observed a fact that people from software services industry in India and also in other parts of world still follow traditional software development approaches. It creates a lot of issues in outsourcing world. You don't show your kitchen anymore, how you build software and the progress on periodic basis. At the end of project, it leads to requirements not met, low quality product and not getting the required features in time. I think Agile Distributed Delivery Model brings a lot of proximity with customer with periodic delivery, always visible (open kitchen approach) quality dashboards and delivering prioritized business goals instead of delivering everything but half baked product.