Search This Blog


Tuesday, April 22, 2008

The Benefits of Modern Software Development

In the article "The cost of modern software development" RickGeek laments the bloatness of modern applications and the plague of.Net and Java and other hosts of languages that run on top of Virtual Machine. According to him, even though .Net and Java are easier to develop with because they take care of all the low level plumbing, but they are slow, and are bloated. Well, users don't care. But Rick argues that this doesn't change the fact that "literally in billions of dollars per year in world-wide energy waste due to software inefficiencies running on every Microsoft OS".

He then calls for "people who are willing to spend the extra few weeks or months it would take to develop and maintain code using something that’s close to the machine".

I beg to differ.

First, downgrading from high level language to low level language is not a pleasant experience. It is so much harder to work with lower level language after you get used to the convenience of high level language. Programming languages are just tools to help us with our jobs. Why need to use a rude one when you have a sophisticated one? The progressive improvement of language is helping the developers to do their job more easily. Why should one reverse the trend? Going backwards is just infeasible. After working with C#, I don't feel like working with its ancestor, C++ because C++ lacks a lot of C# goodies such as strong typing( not to be confused with dynamic typing), safe code (no pointers), array boundary checking, garbage collection, security, standardize framework and assembly's metadata. Once you move up the programming language's level, it's hard for you to come down, much like how the people at the top of the society level have a hard time surviving if their are to stripped off their wealth and status.

Second, a few weeks or even months extra may not be enough time to develop code that is closer to machine language. One of the major benefits of high level language is that it cuts down the development time by handling the low level plumbing and providing a large library so that the developers don't have to reinvent the wheel. So in addition to optimizing your code in low level language and working with a much more inferior IDE, you have to handle all the tedious but important plumbing jobs ( garbage collection is one of them, as well as array overflowing) and at the same time maintaining base libraries that is similar, but different from other libraries written by other developers.

Developing low level code may be easy. But maintaining them is not. Especially when you consider the fact that all the Heisenbugs, BohrBugs, Mandlebugs, Schroehingbugs are more likely to manifest themselve on low level languages. You can spend weeks just to track down the cause a release-only bug in C or C++, whereas in C# or Java such a bug is virtually non-existent. Worse still, your application may be susceptible to buffer overflow attack simply because your programmer forgot to check the length of the input. But one of the purpose of high level languages is to prevent as much accidental bugs as possible. It's easy to estimate the time to develop a feature, it's much harder to estimate the time to test it.

In the age of Internet, the speed of release matters. .Net, or Java, or other modern scripting languages that are slow but powerful are preferred over C or C++. There is a reason to that.

What about the speed?
Well, response time matters too. If you found that your computer cannot run the latest edition of Microsoft Office, then maybe you should upgrade your hardware. I am serious here. But Microsoft Office, or Microsoft Vista or any other application is bloated for a good reason: Moore's Law. Microsoft, along with everyone else, expects that the hardware power rises so fast that it is not worth to optimize the application in order to have it run smoothly on older machines. Instead of optimizing the code, one would be better off spending his time writing features that utilize the fast-rising hardware raw power. It's a strategy that served Microsoft well in the past. There is no reason to expect otherwise.

If you are doing web development, things get easier. You just have to throw in more server power to distribute out the server load to make your web pages more responsive.

Modern software development is considerably easier than early days. And the average developer's IQ are lower today than it was yesterday. But this is a good thing, because it's a sign that the software development is gradually becoming a commodity.

Cars were used exclusively by the powerful in the past, but today they are widely available. This is a progression.

Computers were used to be in the hands of the privilege ones, but today they are ubiquitous, this, too, is a progression.

Computer programming was once confined to the elites, but thanks to the increasing bloatness, hmm, I mean, abstraction of the programming languages, they are now more accessible and safer in the hands of the average people. Is this not a progression?


Bill said...

You are completely wrong at about everything you wrote here.

Users care about speed. Java failed at the desktop because of it's speed. And same goes for .net. Both languages got a second life as server languages, but only because server side is simple logic and processor light. Heavy calculations and desktop rendering is still done by compiled languages.

And there is no advantage to be gained from interpreted languages. Anything you mentioned, like strong typed, safe code, array checking, garbage collection was already possible 10-15 years ago in compiled languages such as Visual Basic, Delphi and countless others.

Development isn't easier now than a decade ago. Instead of improving already existing visual tools and languages, c++ got reinvented into multiple languages, extended with silly little quirks, and a 25000 command library. And still development in it must suck, otherwise everyone wouldn't recommend programming on top of frameworks. A single non programmer then could do over a weekend the same as what takes an entire team now a couple of months.

Vista, Office and .net aren't so bloated because they are better or safer. It's a marketing scheme you have to buy under threat, otherwise you cannot make or use new software anymore. Not that the new software can do things it couldn't do before, it just cannot run on older systems anymore.

Mdiezb said...

I think you must choose the tool depends of product you want make.

The problem today, in my opinion, is that we want to use Modern language for every thing (Desktop, Comunications, ERP, ...). It can be because today, at learning level, is tecahing only "Modern Software Development"

sunitha said...

Modernization is one of the booming sector all over the world. Benefits of this modern software development.......Software Development Company

Onur Gümüş said...

"Users care about speed. Java failed at the desktop because of it's speed"

No: Java failed on desktop because Sun ignored swing for a long time. It has llittle to do with performance. For .net there are plenty of CLR/CLI now. If you install any gnome based distro , you will have C# applications on desktop by DEFAULT.(e.g TomBoy). For windows, there are zillions of desktop applications written in C#. (even visual studio's vast majority code is written with C#)

"Development isn't easier now than a decade ago."
Oh yeah ? I think this is very incorrect. Consider things like, web forms, windows forms, ORM, Linq , Flex , rails, GTK#. IDE's like Eclipse , Visual Studio NetBeans. Software developer is still a very complex business. The difference is now 1 developer can do 5 times work than a decade ago. Because common needs are abstracted

Anonymous said...

I have to completely agree with ONUR. The fact is that modern famework based programming is much more productive. Although it isn't entirely obvious since the demands on the modern developer are higher. You are expected to provide a full end-to-end solution versus just handing off at a tier. E.g. For a webdeveloper, you are required to know HTML, AJAX, C#, SQl at a minimum. Last thing you need is mess about with pointers all day.

SharePoint Development - Softweb Solutions said...

Thanks for the nice information.

Best Regards
Arpit Kothari

Offshore Software Development

Jessica Jewel Joyce said...

The limp phase that the IT sector and the software industry is going through in the present times can be gauged from the fact that the pay of the employees in these two fields all over the world no longer remain lucrative. In many countries, software companies are also chucking out employees, especially those employees who have been “sitting on the bench”. This was an unheard of concept a few years back. There are chances that the software companies take more such radical steps to fight the damp phase.

ecommercewebmaster12 said...

As a top-rated company in the world of ecommerce, Infyecommercesolution has carved out a niche for itself and with the ecommerce solution provided by the company receiving accolades from clients all over the world, it has, in the true sense of the word, grown up to be a top-notch outsourcing software development company. For details on all the services provided by the company, visit

Anonymous said...

Maybe bloated software relies on Moore's Law, maybe not, but Wirth's Law states that "software is getting slower faster than hardware is getting faster" and you can see this in action everywhere.

steeleweed said...

Good Assembler coding is fastest and most effecient. It also requires more time and effort, better documentation, is harder to maintain and needs constant changes as hardware changes. And - dare I say it? - it needs a competence that is in short supply. Among the tens of thousands of programmers out there, few can program Assembler well. One of the problems is that to code Assembler properly, you MUST know EXACTLY how the hardware functions. Totally. And as hardware changes and gets added capabiilities, you must stay current.

Sri Ramachandran said...

Wirth Law is slowly proving its weight. No doubt software is getting slower.
Phonegap Developer

Mahesh Trellis said...

Media Trellis is the largest network of Digital Marketing Consultants around the world and one of the Digital Marketing Companies in India. Get in touch with one of our experts for your Digital Business Analysis.
Digital Marketing Agencies in Hyderabad
SEO Outsourcing Company India