Ming the Mechanic:
Why software stinks

The NewsLog of Flemming Funch
 Why software stinks2004-03-23 06:08
14 comments
by Flemming Funch

Brief article in Salon.com (requires looking at an annoying commercial to read it) about some software luminaries' ideas about what programming is about, and how it can be done better. Hardware seems to keep following Moore's Law: it gets twice as fast, or half as expensive, every 18 months or so. But software does at best improve linearly. So most of the increased potential in hardware is wasted by messy and inefficient programming. The software is the bottleneck.

Programming is still mostly an art, not a science. I guess that's part of what I like about it. You pretty much have free hands to implement a requirement any way you feel like, as long as it ends up working. But it also means it is extremely hard to manage the complexity and to make good predictions about how long a certain task will take. And most solutions are extremely wasteful and often sloppy.
[Charles] Simonyi believes the answer is to unshackle the design of software from the details of implementation in code. "There are two meanings to software design," he explained on Tuesday. "One is, designing the artifact we're trying to implement. The other is the sheer software engineering to make that artifact come into being. I believe these are two separate roles -- the subject matter expert and the software engineer."

Giving the former group tools to shape software will transform the landscape, according to Simonyi. Otherwise, you're stuck in the unsatisfactory present, where the people who know the most about what the software is supposed to accomplish can't directly shape the software itself: All they can do is "make a humble request to the programmer." Simonyi left Microsoft in 2002 to start a new company, Intentional Software, aimed at turning this vision into something concrete.
Well, it can certainly make sense to separate the two - defining the solution and actually implementing it. Although not very well when we're talking systems analysts who decide what to do and programmers who do it. But maybe if the second part could be more or less automatic and directly driven by the representation of the design.

But everybody doesn't agree that it just takes a better way of writing the software. Rather a fundamental re-thinking of many things. But even in the energetic open-source scene, where people really are free to do whatever they'd actually want, we aren't particularly seeing fundamental changes in how things are done.
"There's this wonderful outpouring of creativity in the open-source world," [Jaron] Lanier said. "So what do they make -- another version of Unix?"

Jef Raskin jumped in. "And what do they put on top of it? Another Windows!"

"What are they thinking?" Lanier continued. "Why is the idealism just about how the code is shared -- what about idealism about the code itself?"
Yeah, how about a more fundamental revolution? Why am I stuck with a desktop metaphor on my screen, when my own desktop already had too few dimensions to it. We could do so much more with computers. But it is not easy to invent something totally different. I haven't, even though I'd love to. Those smart folks in the article have invented amazing new things in their time, but even they know it doesn't really add up to much compared to what is possible. We're limited by a tendency to define the next thing based on what we already know. That can even be a rather viable business strategy, as this funny quote from Bill Gates years ago illustrates:"The best way to prepare is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating systems."Yeah, and it still shows, Bill. Imagine he instead had invented something fundamentally new.



[< Back] [Ming the Mechanic]

Category:  

14 comments

23 Jun 2004 @ 11:22 by bob @213.122.126.198 : open source
Agreed on open source. Having worked on a large web project in Britain, I soon saw the damage done by open source idealists grabbing control of the project: suddenly the momentum stopped, the vision and focus destroyed and the time-wasting and money-wasting shot up. Who do open source people think they are? and what has given them the inherent right to march around with such arrogance? They go on about the inadequacies of Microsoft yet fail to offer anything with better functionality and reliability. Talk about make work for nerds.  


23 Jun 2004 @ 14:28 by ming : Open source
Not sure how you got that out of it. Yes, of course it doesn't inherently solve any production issu to make something open source. Somebody still has to make a good program. But the point in not necessarily whether a given project will happen faster as open source or as a proprietary commercial project. Sure, most often programmers would get it done faster if they were paid a full time wage. But the magic of open source happens on the bigger level. When the code then can be shared, and others can build on it. And there's both real competition and real collaboration towards doing it the best possible way. Then even a well-organized 100 billion dollar company doesn't really have much chance in the long run.  


15 Nov 2004 @ 04:41 by Lion Kimbro @216.254.10.144 : Do you Program?
The problem is infrastructure, platform, distribution, security.

"Those things are all boring," I hear you say. "Show me some sexy UI and easy to program in language where you can just ask a thing what it is, what it can do, and then let me tell it what to do."

Very nice, very commendable.

Okay, then. But to build those things, we're going to need...

...infrastructure, platform, distribution, security,...

"Yes, yes, that's very nice! But, I want this sexy UI dohicky here where,..."

...yes, but first we need: infrastructure, platform, distribution, security...

"Well look, I think that if I programmed for 2 years, I could make it."

And I'm sure you could. It'd be working beautifully. For you. On your home computer.

But you'd like other people to be able to use it, no? And you'd like other people to be able to program with it, no? And you'd like other people to be able to put their data into it, and take their data out of it, and receive live events as it's used, no?

So we find ourselves back at: Infrstructure, platform, distribution, security...

Yes.

Boring things. We know.

Please don't waste your local programmer's time with requests for the sexy things you want.

Please don't imagine that they haven't thought of all the wonderful things you would like- we are literally kept awake at night, seeing all the possibilities. Yes, yes, We Know.

If you would like to help us along, join us in building:

Infrastructure, distribution, platforms, security, protocols, whatever,...  



15 Nov 2004 @ 05:14 by ov : Lion
I recognize you from wiki work with DeJoe. Have you seen {link:tikiwiki.org/tiki-index.php|tikiwiki.org} yet? I've just been introduced to it, don't know anything about it, it is supposed to be an open source development.

More general question, how small do you think a bomb proof kernal could be, if it didn't have bells and whistles added on for marketing purposes?  



15 Nov 2004 @ 11:35 by ming : Programming
Yeah, I'm a programmer. And I agree, the best thing to do for the people who have the smarts, the vision, the skills and the patience to do it is to work on such things. Build the protocols, the infrastructure and the security mechanisms that makes lots of things possible.

But many people merely want to solve a particular problem, but they unnecessarily get stuck in programming problems. People who maybe wouldn't be capable of solving hard protocol issues. In many situations they're trying to solve problems that could have been solved fairly universally in advance. Take a spreadsheet. Many people just need to see how some numbers behave if we pass them through certain formulas. Setting up those formulas in a spreadsheet program is programming to a sense. But the easy kind where you just concentrate on what you want. If they actually had to do the same thing in C++, most people would waste a lot of time and quite likely not get what they wanted. But somebody has given them easy-to-use universal tools for solving that kind of problems.

When somebody has invented xml-rpc or soap, I might get a tool that makes me do a soap call in a one-liner. Whereas, if I had to program all that from scratch, I might never get off the ground.

So, yes, certain things can not be done with some slick, generic user interface. Somebody actually has to figure out how to do it efficiently and reliably. But they might do that once, and the result might be used many times.

It takes many man-years to design and build a certain model of automobile. But once it is there, I can just get in and drive. And I might even be an expert at it. Even though I might be incapable of participating in the construction process.  



19 Dec 2014 @ 10:39 by Cleo @84.193.210.60 : IzHyHnrqAeNEXnMl
I was wondering if you ever cosnidered changing the page layout of your website? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having one or two pictures. Maybe you could space it out better?  


23 Dec 2014 @ 07:53 by Matias @190.75.32.168 : cHJibgFxXZYaolVZL
שלום.הייתי שמח לדעת מהי מסגרת הזמן לשאלה כזו ובאיזו שפה כותבים את הקוד.בכל מקרה הנה הפתרון שלי בפייתון (לקח כשעה לתכנת)****** אזהרת ספויילר *******class Shape: def __init__(self, params): self.params = prcamsalass Circle(Shape): def get(self): x,y,r = self.params return (x+r, y+r), (x-r, y-r)class Line(Shape): def get(self): x1, y1, x2, y2 = self.params return (max(x1,x2), max(y1,y2)), (min(x1,x2), min(y1,y2))class Point(Shape): def get(self): x,y = self.params return (x,y),(x,y)def parse(): f = open(r'c:\temp\input', 'r') t = int(f.readline()) res = [] for _ in range(t): prob = [] n = int(f.readline()) for _ in range(n): arr = f.readline().split(' ') typ = arr[0] params = [int(x) for x in arr[1:]] if typ == 'c': prob.append(Circle(params)) elif typ == 'p': prob.append(Point(params)) elif typ == 'l': prob.append(Line(params)) res.append(prob) f.readline() f.close() return resdef printmax(points): x = [p[0] for p in points] y = [p[1] for p in points] print min(x), min(y), max(x), max(y)if __name__ == '__main__': probs = parse() for prob in probs: ps = [] for shape in prob: ps += shape.get() printmax(ps)  


4 Jan 2015 @ 11:05 by Lorin @159.253.111.123 : bNmHjmsggUntVgBLkBE
We've arrvied at the end of the line and I have what I need! http://ygmakpe.com [url=http://ppahjwwrutk.com]ppahjwwrutk[/url] [link=http://qyokyol.com]qyokyol[/link]  


9 Jan 2015 @ 04:38 by Marsue @190.202.209.25 : vKnEJNUEHWsBDwJLb
http://cheapestcarinsurancecc.com  


19 Feb 2015 @ 00:51 by Puss @66.184.252.115 : iPXsCmBoxJ
reasons http://bestdrugustore.com erectile dysfunction never http://toppharamacy.com flow into ruin http://drugssonline.com penis causing huge right http://edtriallpacks.com doppler techniques  


21 Feb 2015 @ 11:56 by Jody @185.44.215.78 : BIVjcsLOPqDljCzaK
somebody help http://autoinsuranceny.club put course http://autoinsurancequotesil.com pay car must http://autoinsquotesnj.website flood last coverage http://autoinsurancequotesfl.pw worst minimum http://autoinsurancequotesga.com steering wheel  


18 Mar 2015 @ 07:40 by Mikel @195.46.211.51 : uMpWrrqAZhvVSVdrp
give http://autoinsurancequotesinusa.net leap expensive libido http://treatedissues.net remains effective increase http://edtabsoffers.net often keep actually work http://edmeddeals.com sexology accumulation bloom http://cheapcarinsuranceinusa.net coverage erections during http://medicationmarkt.com must consult erection http://greatedmeds.com executive  


30 Apr 2016 @ 01:10 by Kory @188.143.232.32 : BMYQMBMZCerus
Random comment. Will you change the new layout of the frontpage (July 2012 revision) or decrease the remtemcndaoions in the mid pane? The recommendation channels in the right pane is enough. Now I can hardly find the video updates in the mid pane of the channels I subscribed too as a recommendation is shown after every subscription video update. Ridiculous how this ever got implemented.  


5 Oct 2016 @ 11:32 by snapchat download @117.207.103.144 : rvsc
hi http://www.mobogenieforpcc.com
good http://www.snapchatforpcdownload.com
post http://www.ucbrowserforpcc.com
snapchat windows http://www.snapchatforpcdownload.com/2016/06/snapchat-pc-free-download-windows-xp788-110/
snapchat for linux http://www.snapchatforpcdownload.com/2016/06/snapchat-for-linux-free-download/
snapchatdownload http://www.snapchatforpcdownload.com/2016/06/snapchat-download/
snapchat app http://www.snapchatforpcdownload.com/2016/06/snapchat-app-free-download/
mac http://www.snapchatforpcdownload.com/2016/06/snapchat-for-mac-pc-free-download/
ios http://www.snapchatforpcdownload.com/2016/06/snapchat-app-for-ios-free-download/
android http://www.snapchatforpcdownload.com/2016/06/snapchat-for-android-free-download/
windows http://www.mobogenieforpcc.com/2016/06/mobogenie-for-pc-windows-xp788-110-html/
app http://www.mobogenieforpcc.com/2016/06/mobogenie-app-free-download/
ios http://www.mobogenieforpcc.com/2016/06/mobogenie-for-ios-free-download/
android http://www.mobogenieforpcc.com/2016/06/mobogenie-for-android-free-download/
windows http://www.ucbrowserforpcc.com/2016/06/uc-browser-for-pc-free-download-windows-xp-7-8-10/
ios http://www.ucbrowserforpcc.com/2016/06/uc-browser-for-ios-free-download/
mac http://www.ucbrowserforpcc.com/2016/06/uc-browser-for-mac-pc-free-download/
android phone http://www.ucbrowserforpcc.com/2015/12/uc-browser-apk-for-android-phone-free-download/
windows phone http://www.ucbrowserforpcc.com/2015/12/uc-browser-for-windows-phone-free-download/  



Your Name:
Your URL: (or email)
Subject:       
Comment:
For verification, please type the word you see on the left:


Other stories in
2014-11-01 17:33: The conversation of work
2007-02-24 14:20: Writing books in HTML/CSS
2007-02-05 15:21: Software is hard
2006-11-19 21:30: Thingamy
2005-12-14 15:15: Ruby on Rails
2005-03-19 16:04: Comment and Refererrer Spam
2005-02-23 21:34: Wikipedia
2005-02-22 17:32: Mail
2005-02-10 16:00: More Google wizardry
2005-02-04 15:14: The Six Laws of the New Software



[< Back] [Ming the Mechanic] [PermaLink]? 


Link to this article as: http://ming.tv/flemming2.php/__show_article/_a000010-001159.htm
Main Page: ming.tv