I had an interesting discussion with a good friend of mine on the state of programming and programmers yesterday. The discussion started with him showing me his new Android phone, and then the applications on Android. This friend of mine is a seasoned software engineer, he develops code for communication systems (stuff that is expected to run correctly always), he believes in thinking deeply first and then coding. He started by lamenting on the code quality being churned out now, by stating that quite a few applications on his Android phone shutdown midway. He was critical, that now anyone is able to write applications and able to deploy this on open platforms like Android, fostering mediocrity.
The last decade has seen a sea change in technology, languages and application development platforms. The languages and technology allows us to do more and powerful things now, and the development platforms seems to make this easier. This is allowing more people to develop applications individually. The flip side is that the rigor of good code is being lost, as we have anybody with a smattering knowledge of programming, churning out an application. My friend was wondering what would happen if these kind of people get to program large scale non-stop programs like telecom switches. My comment was "Intent of good technology is to make stuff simple i.e. allow ordinary people to do more". This is happening. Now the question is "Where is the boundary - How far can this 'ordinary' person be allowed to go?' . My take is that we need to careful here.
Think about this: Long ago, long distance transportation was by ships and required skilled sea-farers to steer the ship. Then came the personal transportation - automobiles. This allowed anybody to go anywhere (on land!). Also, air planes allowed us to get a distant place quickly, but this requires skillful pilots. What am I hinting? As transportation technology evolved, it allowed ordinary people to drive and transport themselves, but they cannot "drive" the airplanes or ships.
We understand philosophically that scale and quality are more often inversely related i.e with scale, quality degrades. Of course, one can argue otherwise. What is important to note is that our expectations on quality of a product has changed over the years. If a product is cheap, we do not expect much them and therefore are tolerant to crap. In the past however, quality was a "intrinsic" notion and not necessarily linked to the price of the product. Guess the producers had pride in producing the product, which I believe now is not very common.
"Pride of work", "Passion for excellence" are key ingredients for producing good stuff. No technology can compensate for this. We live interesting times, new stuff happens everyday. Our expectations are shifting from "intrinsic goodness" to "economically acceptable good-enough" . This scares me, will we accept mediocrity as a way of life? - More features and stuff, it is OK if some do not work!
Have a great day.