Java.net published a well-written article by Markus Karg titled “Release late, release rarely“. The author doesn’t like that the quality of the software goes down the drain. He blames outsourcing and suggests hiring a small group of well-paid experts, which would be placed in a quiet room and once a year they would release quality software.
I also like quality software, but don’t agree with most of the author’s conclusions and recommendations.
First, I’d like to make a statement that proliferation of free and open source software is one of the main reasons of the low-quality software. The premise that the software has to be free means that there is no funding for these expert developers working hard in a sound-cancelling place. In reality, a number of contributors work on pieces of software whenever they have a minute after spending most of the day earning a living. What quality can you demand from them?
Of course, one may say that some projects started from donation of a large code base of a professionally written software (e.g. IBM/Eclipse). There are companies like SpringSource that charge you an arm and a leg for other professional services so they can fund R&D of open source framework. Can they afford rare and quality releases? I doubt it. Everyone has to survive in a very competitive world and pushing the software out the door asap is a way to show that the product is alive and being worked on.
Let’s take the big guys. The last major release of Java is four years old. How good it is for the quality and the reputation of the product called Java? It’s bad.
It took Adobe 2 years to release version 4 of their flagship RIA framework called Flex. Was this beneficial for the quality of the product? Not at all. It still has bugs and Adobe engineers were able to complete transition to the new Spark architecture of only 20 out of 50 UI components. During the same period of time Microsoft released versions 2, 3,and 4 of Silverlight – direct competitor of Flex, which seriously improved their positioning in the RIA space.
Markus Karg suggests to release late and rarely assuming that a small of smart guys know exactly what the customer needs. I don’t believe this is the case. IMO, it’s much more beneficial for the quality of the product to release a product that has some bugs and 90% of the planned functionality so the users can play with it sooner shaping out the final features of the product.
Then, the author explains why many companies produce crappy software: “The reason is simple and let’s tell it clearly: Off-Shoring.” I can’t agree with this conclusion either. I keep insisting that the reason of failing off-shore projects is the legion of mediocre American enterprise project managers that run these projects. They don’t have balls to fire ballast offshore workers and keep dragging the project along extending the lifespan of low-quality applications by applying sort of chemo-therapy and radiation.
Mr. Karg believes that American and German engineers would produce quality software, while we’re getting “pure crap from Bangalore”. If you get crap from Bangalore, you deserve to get crap from Bangalore. I don’t know about Germans, but let me say loud and clear: “American engineers are not smarter than the Indian ones”. They happened to live in better and more creative environment, that’s all. I’ve been working with lots of great Indian engineers here in the USA. The quality of the Indian engineers who spent 3-4 years in the USA is substantially higher than of their peers who work from India.
The ecosystem makes a huge difference. Attend Google, Oracle, Adobe, Microsoft conferences – you’ll meet brilliant engineers of Indian descent. Important: they all live and work in the USA for years. No, it’s not about food. Indians continue eating curry and don’t like hamburgers and the yellow liquid called Bud Light.
In addition to consulting business, our company develops open source software. I’m always fighting for fast releases otherwise we’d never release anything useful. We’d be just enjoying the process of developing software. Sure, it’s our baby. Let’s add the feature #273 and then…No, wouldn’t be nice to squeeze #274, 275, 276, and 277 into 1.0?
Some Flex developers like using frameworks. One of the popular ones is Mate. After about 4 years of development it reached the version… 0.9. I’m not even talking about the quality here – most of the enterprises simply won’t accept the project that was not officially released!
Anyway, I don’t agree with rare releases. The bird should leave the nest as soon as possible. So release fast and then fix the bugs and adjust the product based on the user’s feedback.