X
Tech

TalkBack Central: Programming simplification is a good thing

COMMENTARY--I've often stated in ZDNN TalkBack forums that one of the key benefits of Microsoft products is the degree to which they have made it easy to program for Windows. A common response was that it's dangerous to make it too easy.
Written by John Carroll, Contributor
COMMENTARY--I've often stated in ZDNN TalkBack forums that one of the key benefits of Microsoft products is the degree to which they have made it easy to program for Windows. A common response was that it's dangerous to make it too easy. It permits inexperienced developers to make badly designed solutions which need to be fixed by more experienced developers. The implication is that it is better to keep a certain level of technical complexity in order to ensure high quality programmers.

This is similar to an argument made by Karl Marx in an attack on the "division of labor" theory. The division of labor is the name used to describe the notion that participants in a market economy specialize in a narrow discipline, preferring to trade for the things they don't know how to build or do themselves. Marx's argument was, in essence, that such specialization leads to ignorant brutes that perform repetitive tasks, making them ill suited to doing anything else.

Marx was wrong in his attack on the division of labor, just as claims as to the dangers of simplified programming are wrong. Division of labor is what makes a market economy so efficient. It allows participants in an economy to become experts in a particular domain, freeing them from wasting time learning to do things, which are better provided by other, specialized experts.

Similarly, programming simplification allows programmers to become domain experts. They are freed of the responsibility of learning to program areas, which are not relevant to their particular discipline.

This leaves them more time to expand their knowledge of that discipline; making them more proficient at the types of programming they do the most.

The history of programming is aimed towards simplification. In the stone ages, when IT workers cracked flint together to make fire, hunted big game and wrote assembler for large, water-cooled mainframes, you had to be knowledgeable about kernel issues even if you were writing accounting reports. This was because computers provided very little in the way of making programming easier for developers.

Move forward a bit to the arrival of modern operating systems. Operating systems hide the intricacies of kernel programming, exposing easy to use APIs to access higher-level abstractions of these services. No longer did programmers have to be experts in thread scheduling, or disk access, or video manipulation. Programmers could rely on the operating system to provide these services, allowing them to spend more time on areas unique to their application.

This is why I like the fact that Microsoft adds non-traditional programming features to the Windows OS. I want HTML rendering, but I don't want to go through the trouble of writing my own parser and renderer. I would like to expose my applications securely to users on the Internet, but don't want to become a security expert to do so. HailStorm would permit me to do this. I want the ability to efficiently share access and use the services of a voice modem, but don't want to master the idiosyncrasies of Caller ID standards around the world. TAPI permits me to do this.

This is not to say there is no value in "looking under the covers". Learning how something works can make you a better programmer, as it makes it easier to predict how a component will respond in different situations. However, in a world of simplified programming, I can choose to study areas that matter most to me while still benefiting from useful but complicated features made simple through reusable components. I might tease out the inner workings of Microsoft's COM architecture, as an example, but not study the entire HTML specification, preferring instead to use the rendering and manipulation components provided by Windows.

Programming simplification makes better programmers just as the division of labor makes more efficient workers. It allows programmers to become experts in a particular domain, leaving the heavy lifting involved in other domains to experts in that domain. Programming by teams of domain experts is much better than programming by teams of less-proficient generalists. That's why I support Microsoft's efforts to provide non-traditional services to Windows. Let Microsoft with their billions of dollars hire the experts required to build component architectures, or telephony frameworks, or word processing packages. As sure as Linux fanatics will make conspiracy theories about anything related to Windows, Microsoft will make sure that I can reuse the results of that investment. That makes programming simpler, which is a VERY good thing.

John Carroll specializes in the design and development of networked applications. John programs on a variety of platforms using a variety of languages, in particular C++ and Java. John currently resides in Switzerland, where he finds mastering French much more difficult than any programming language.

Disclaimer: 'Your Turn' is a commentary column written by a ZDNet News reader. The opinions expressed herein are those of the author, not those of ZDNet, ZDNet News nor its editors.

We want to feature "you" as a guest columnist on TalkBack Central -- The page dedicated to you and your views! Got a column for Your Turn or Reader TalkBack? Submit it here.

Editorial standards