The Art of Building Modern Software
 Have You Ever Wondered...?
Have you ever considered yourself an artist when coding? Do you think programming is kind of art? Have you noticed the difference in developing software systems today and twenty years ago? Do you know why people consider ugly solutions wrong? If you ever asked questions like this, this chapter gives you answers that I found after many years of oscillating between feeling like an artist and behaving as an engineer.
Have you ever hopelessly searched for new programmers? We do it all the time and it looks like we are constantly running out of good programmers. But how good does a programmer have to be to produce good software? Maybe it is enough if one can code HTML.
 History of Computer Languages
A short look at history can quickly explain all our sufferings. I did such excursion in Chapter 1. The need for Cluelessness is shown there by describing history of computer languages and their oscillation between Rationalism and Empiricism resulting in more easy to use languages (e.g. for dummies) that produce programs requiring gigabytes of memory, tons of CPU time and sometimes enormous amount of virtualization to execute.
I believed my explanation was at least a bit entertaining, but it is definitely nothing compared to A Brief, Incomplete, and Mostly Wrong History of Programming Languages. Give it a try and read it! Very entertaining and in my opinion showing the incorrigible mankind's desire for cluelessness too.
 Current or Certain?
- p. 13, para 2 - should "at its certain revision" be "at its current revision"?
- --David Biesack 20:25, 5 February 2009 (TC)
Thanks for your comment David. Current is not bad choice and I was considering it too, but its meaning is not clear. What it means to use current version of a library? For the library author, current means the development version. For the library user, it is the version that the user is using. Obviously not every user is working on the same schedule. There are always more important things to do than to upgrade to the latest version of a library and as such there is many subjective current versions.
That is why I used certain - it expresses a bit of uncertainty - and points out that the library in use is just at some version, one of many. That there is is nothing special or privileged on it.
I am always surprised when I meet with users of the NetBeans platform and I find out that they are not using the latest development version. Why? We keep BackwardCompatibility. Migrating to new version is easy. Still, if this is not a priority, then it is OK to stick with some older version, released few years ago before migrating. Very likely this is the so infamous Fear of Upgrades. Why change something that is known to work?
Of course, I am not native English speaker and as such my expressing abilities are little bit limited. As such I am glad to accept improvements like the following one:
- Here's another possible phrasing that I think removes the confusion over this particular word choice: "we'll explore various ways to help people... use a specific version of your library immediately, in a way that will continue to work in subsequent releases".
- BTW, thank you very much for providing the nice wiki resource for discussing API Design (the book and the practice).
- --David Biesack 22:10, 6 February 2009 (UTC)