The challenge which software for SMEs faces is as follows:
- Create a business process definition and modeling system
- Enable mass customisable building blocks for SMEs to be put together not by software developers but by business owners/managers
- Allow for evolution as the SME grows, which means changing building in change for business logic
The software challenge in putting the SME system in place is not small. The SME wants an e-business suite, which combined management of customers, suppliers and employees at a very low price (hundreds of dollars). No such integrated software system for SMEs exists today, with the result that most use only bits and pieces of what they should actually be using (or in many cases, no solution at all). This is a challenge and opportunity for software.
Before we go ahead, it is interesting to put the current state of the software industry in perspective. A recent article by Grady Booch in Software Development magazine [http://www.sdmagazine.com] outlines the three basic assumptions of software:
First, software is arguably the world’s most important economy. While I acknowledge and accept that software neither feeds the hungry nor comforts the afflicted directly, it is undeniably the fuel that has driven global markets to their current levels of efficiency. It’s the catalyst that has made new ways of doing business and connecting people possible. Thus, indirectly, its existence has changed the human condition.
Second, building interesting software-intensive systems is still terribly hard. Contemporary tools, languages and methods have made it possible for us to build simple systems easily and, for that matter, have lowered the bar as to what we mean by simple. In other words, what we may have considered complex a few years ago looks much simpler today.
However, market and technology pressures lead us to build systems of increasing complexity, and it becomes exponentially hard to master that complexity. Most interesting systems can’t be built by a single person, and thus you have the added complexity of managing a team of developers. Additionally, most interesting systems are built upon intrinsically difficult technology-meaning complexity has been heaped upon complexity. Despite advances in contemporary tools, languages and methods, developing complex software systems will likely remain a very labor-intensive business.
Third, there are no imminent breakthroughs in software engineering that will radically ease the lives of software developers. Some things have offered incremental relief (for example, UML, RUP, the phenomenon of open source and the emergence of extreme programming). And there are other developments that will likely help over time as they mature, such as Web-based software engineering. But ultimately, there is an intrinsic intellectual complexity in software development that can’t be overcome easily.
In the presence of this complexity, the best we can do is reduce the friction in software development. Whereas the presence of software has reduced the friction in business interactions, we still have a long way to go to increase the efficiency of software development processes.
The SME software stack needs to have Lego-like simplicity for assembly of the various modules. There also needs to be standardization in the software blocks that are used to enable easier integration. One model is to combine the “Lego-software” approach with open-source, so that a large number of independent software developers can also build on it, much the way Linux was developed.
Software development is not the only front on which innovation is required – the question is can an SME provided a one-stop solution which takes care of all e-business and communication requirements? What are these needs?