I first heard about Graham Glass after his company was bought over by webMethods.Graham Glass, whom I met in webMethods integrationworld last year is the CTO of webMethods currently.Graham in his blog writes about steps involved in software product development leading to producing good software.In four parts graham covers quite comprehensively various aspects of software product development tha he was involved in before joining webMethods.
In Part IV he describes the activities that took place in the first few months of development. For each product,he says he had a good idea of the differentiators that would allow it to gain popularity in the marketplace. In every case, ease of use was always the main differentiator, but there were generally one or two other things that were almost as important, such as performance or portability. Before staffing a team and incurring the associated expense, prototype of a skeleton version of the product that proved that the main differentiators could be achieved. The prototype phase generally lasted between one and three weeks and was always incredibly good fun; it is hard to beat the feeling of building something quickly.
In Part III, he lists the criteria used for deciding which products to create - One factor was that each company was founded with a small amount of cash and we wanted to avoid having to raise early angel or VC money. This meant that the products had to be prototyped quickly by just one developer and brought to market quickly by a small team (1-6) of ace developers. In addition, we wanted each product to act as a natural springboard to something bigger and better. Last but not least, the interest has always been in software that is general purpose, high volume, and fundamental in nature
In Part II he lists all the products that were developed using this outline - most of which has been systems-level software targeted at the developer community.
-Compuclinic: medical analysis
-COMAL Compiler: a compiler for the COMAL language
-Pascal Environment: interactive Pascal system
-ObjectSystems: C++ toolkit for systems programmers
-STL, portable C++ collections library
-Systems: portable C++ systems library
-JGL: Java collections library
-Voyager: Multi-protocol Java object request broker
-Electric XML: Toolkit for parsing and manipulating XML
-Glue: Web services platform for Java developers
-Gaia: Grid services platform
In Part I he begins his experience of developing software products covering:-methodology
-building a team