home
text

Bottom up/Top down

I’ve found quite interesting articles recently. First made me think more seriously about Agile approach to software development (although I still can’t adjust it to processes of hardware development and/or highly dependent on hardware - firmware development):

A good software development process should optimize experimentation and improve feedback >from reality. This is what I mean by reality-driven development. And in software the most important realities are user experience and technical quality, while the primary experiments are working software and code. This isn’t a formal model (heh), it’s simply my favorite analogy for software development. I like the name “reality-driven” because when you mention reality people think of users. And I like the model because it helps me focus on important stuff and on effective ideas, like Paul Graham’s advice to release early and let the market design the product. It also has good explanatory power. Firefox is such a great browser due to intense experimentation in the form of add-ons. Waterfall is so awful because reality is ignored: when the time for feedback comes, the project is over.

Link to full article

Second is Linus post on LKML (mentioned in article of Gustavo), even if Linus’ argumentation is a little over the top it is hardly to completely disagree.

_On Fri, 30 Nov 2001, Rik van Riel wrote:

I’m very interested too, though I’ll have to agree with Larry that Linux really isn’t going anywhere in particular and seems to be making progress through sheer luck.

Hey, that’s not a bug, that’s a FEATURE! You know what the most complex piece of engineering known to man in the whole solar system is?

Guess what - it’s not Linux, it’s not Solaris, and it’s not your car.

It’s you. And me. And think about how you and me actually came about - not through any complex design.

Right. “sheer luck”. Well, sheer luck, AND:

  • free availability and crosspollination through sharing of “source code”, although biologists call it DNA.

  • a rather unforgiving user environment, that happily replaces bad versions of us with better working versions and thus culls the herd (biologists often call this “survival of the fittest”)

  • massive undirected parallel development (“trial and error”)

I’m deadly serious: we humans have never been able to replicate something more complicated than what we ourselves are, yet natural selection did it without even thinking.

Don’t underestimate the power of survival of the fittest. And don’t EVER make the mistake that you can design something better than what you get from ruthless massively parallel trial-and-error with a feedback cycle. That’s giving your intelligence much too much credit. Quite frankly, Sun is doomed. And it has nothing to do with their engineering practices or their coding style.

Linus

Link to the post

1 year ago

March 6, 2010