Interesting article on the role of higher level langauges in
increasing productivity. http://www.paulgraham.com/lib/paulgraham/sec.txt.
Specifically the use of lisp as a competitive advantage for viaweb
is detailed. Viaweb later became yahoo stores.
If you think assembly is higher level and more productive than machine
langauge, that C is higher level and more productive than assembly,
that smalltalk is higher level and more productive than C, then it
stands reason that there even higher level langauges that are even
more productive.
Often the next level of languages are domain specific. In the not
so distant past there used to be a philospohy of development where
problems were solved by inventing new little languages. For some
reason we don't do that anymore and i don't see anyone suggest it.
Now I don't even try to push it because nobody understands what i'm
talking about.
In fact, we have the opposite trend in XP where a new focus has
been put on the code. The constant human production and transmogrification
of code. Not that there's anything wrong with that. As a means of
producing good working code, XP is excellent.
But if we are always tied to humans how are we going to make
any progress? The bulk of the human genome was sequenced in a year.
Once automation was introduced. Over a decade was spent on sequencing
with very little result.
With nanotechnology we may be able to build things like tables
automatically, in the same way things like humans are made.
Yet, in programming we will still be depending on humans to
produce vast quantities of complex, mostly bug free code. With
XP we have improved the process, but it's like we have perfected
the process of making the buggy whip just before the introduction
of the car. Except in programming there is no invention like that
car on the horizon.
Many are trying to shift development to cheaper areas as a way
to scale and reduce costs. This is the human as programming robot
paradigm. We have lots of people who will work for cheap spread
throughout the world. To the masters of business they are just
human programming robots. As a strategy we don't know if it will
work yet. And even if it does it won't scale into the future.
Even if we could enslave more human robots it's unlikely enough
working code could be produced.
If you are expecting my grand solution, sorry i don't have one.
Software development seems to be intimately tied with thinking.
Thinking has proven tough to automate. And even for machines
capable of thinking, like humans, it has been difficult to
produce reliable reproducable success.
We don't expect to make machines that can duplicate the efforts
of einstien, newton, or da vinci. There are very few world class
singers and musicians. These people are assumed to have talent.
A talent that even very hard work can not hope to match.
Perhaps software development is also a talent. We don't recognize
it as a talent because on the surface programming seems so logical,
so scientific.
What does this mean? Many people play music. But there are few world
class musicians. Many people study physics. But there are very few
newtons. And we don't expect just because someone plays at music
or physics that they will be great.
If you have to be great to make software work then we will have
to be satisfied with a lot of average performances. If you really
want the best then you have to hire the best, the people with the
most talent.
Hopefully we will be smart enough to figure out what we are
doing and how we are doing it. I wonder how the world would
change then?
5:31:42 PM
|