My first software development projects were solo efforts. I wrote what were then called "adventure games" for the Sinclair ZX Sprectrum. I was the project sponsor, project manager, chief architect, development team, testor, and also the target profile for the end use of the product. It was actually all fairly straigtforward. Software was shipped on cassette tapes and pre-Internet distribution channel was the local computer shops in my home town, Dublin. It was not about making money anyway. I just liked, and still like, the whole concept of software products.
My first professional software development projects were with Ericsson. We produced telecommunications software that ran on telephone switches called Service Control Points. The management software for administration of the software on the switches was client-server based with Solaris servers and Windows clients. The architecture was always the same regardless of the actually application (see Java Software Factories defintion). The development process was highly controlled and the quality of the software was, in retrospect, flawless. There were similar software development centers in several other parts of the world and I'm fairly confident that they all produced equally high quality products. However, there was a price. The projects were very slow, process driven, and documentation heavy. The financial cost was huge and even a minor change request could take months.
I left Ericsson to join Logica's Mobile Products Division. I only lasted 6 months. The person I was working for, Joe Cunningham, was an amazing visionary. As the product manager for 3 products, I had 3 program managers and 3 technical architects. All of them were excellent. The team of product managers that I worked with was first class. The marketing department run by Norbert Sangard was also excellent. And I resigned after 6 months, the week my probation period was due to end. The reason was the software development process was broken, conflict ridden, highly political, and unable to deliver on the business requirements.
Why is it so difficult to develop software applications? I have only ever worked with one group of developers that could consistently deliver projects on time, on budget, and with the required quality. It was a team lead by Lars Stavholm, Brendan Phelan, and Ove Rosenlund and the minimum requirement to join the team was 10 years experience. They were the exception that almost proves the rule, because very few development teams have the luxury of having a "superstars only" rule.
I have been thinking about this issue for several years, and describing a solution to CodeFutures customers for the past 18 months.
The aim of Java Software Factories is to deliver predictable results.
I'm borrowing the term "predictable results" from Lars Stavholm.
Not every team can be composed of Lars Stavholm and his band of superstars, so that's where Java Software Factories are neeeded.
Java Software Factories are about reliable and predictable application development through automation, design patterns, consistent technological and architecture choices, sensible development processes, and of course, appropriate software development tools.