Good Software Takes 10 Years?
webword writes: "Joel Spolsky is running an editorial where he claims that writing really good software takes ten years. (Yes, TEN years.) He explains several mistakes that are made by companies that don't understand his ten year principle. The mistakes are backed up with some interesting industry examples, so it isn't just vapor. Unfortunately, he doesn't mention any OSS/FS examples, but I'm sure we can handle that. I am mostly skeptical of his idea because I'm not sure how he thinks a young software company could possibly survive without building really good software in much less time. Spolsky mentions that new companies need to strictly control their cost structures, and that will save them, but that doesn't seem like enough to me."
Personally, I'd put a lot of it down to them nicking the Mosaic source
You're thinking of Netscape, not MS. It was Netscape who had the brilliant idea of make (and eventaully losing) a fortune by nicking freely available source code.
And what about the external things?
Ease of use, feature set, size of userbase?
'Good Software' doesn't just mean its coded tightly.
<flame>
Maybe it is 10 years for closed source and 20 years for open source/free software.
</flame>
Yes. Mozilla has being badly developed. It's the single largest case of reinvent-the-wheel I've seen to date - it clones a component model (and a broken one at that (COM)), when CORBA was available, it is an entire GUI subsystem unto itself, and, most heinous of all, it doesn't play nice with multiuser computer systems. For no good reason, I might add - even though Win95 is single-user-at-a-time, it allows multiple user profiles. Instead, mozilla has it's own half arsed multiuser thingy, that doesn't fit into either Windows 95, WNT, or UNIX. And LiveConnect STILL doesn't work. Liveconnect has/had the potential to make ECMAScript/Java the internet-wide analogue of VB/C++ - but, thanks to mozilla folk screwing around with XUL and such, that opportunity is fast slipping away - in an ideal, you should be able to just drap-n-drop JavaBeans into the Mozilla Composer, and "join the dots" with Javascript, for instant network-transparent component-based programming like the fabled OpenDoc of old...
What the hell happend to Windows?
... he did mean something you can drink. You would have known it if you had clicked on the link.
It's all about job security folks, why build an app in 3 months when you could spend some quality time reading slashdot and drag the project on for ten years.
Those old hippies were smart.
Netscape used key NCSA Mosaic developers, and started their code from scratch.
s .htm
Internet Explorer 1.0 was based on Spyglass Mosaic code, which was the NCSA's commercial distribution of Mosaic. Later versions of IE were, of course, based on IE1.
There's an excellent site devoted to the history of key browsers (though it's missing Konqueror and Lynx) at http://www.blooberry.com/indexdot/history/browser
.
----
----
Open mind, insert foot.
But MS DID license Mosaic, and DID use it as the foundation of IE. It was the talk of the town back when web pages were fighting gopher for popularity! Everybody saw NS and MS grabbing for Mosaic and the speculation was that we'd have a billion different branded, slightly modified, mosaics.
/. ID is lower than the real Bruce Perens'.
The real Threed's
--Threed
You make a very good point. The real standards as produced by w3c are OK, but the de-facto standards created initially by netscape, and then embrace/extended by MS are horrible.
But, did you ever examine the early mozilla code (ie what they started with from netscape) ? That was a poisoned chalice if ever I saw one. It didn't support any of the trickier elements, but it still took a ton of code to do not very much badly.
BTW, how come nobody ever mentions Opera in all this. It is *by far* the best browser around, but nobody ever mentions it. If writing a decent browser is so impossible (unless one is inventing the standards yourself) how did they do it ?
http://rareformnewmedia.com/
nearly...
Marc Andresson was an intern at NCSA. His maths wasn't good enough for him to do what he was hired for, but he did know motif pretty good, so his superior Ping Foo asked him to write a GUI for www. This proved to be a good idea. Then Jim Clarke (founder of SGI) thought it would be a good idea to commercialise the idea, and hired the more commerically minded people from NCSA (not the same as the smartest, for instance - Ping whose idea the project was, and who made some of the smarter design decisions (eg single click to follow link), never joined).
Netscape was the browser tail wagging the internet dog for a while, but they declared MS history too early. The VC money they got from being declared the next MS enabled them to hire 1000s of developers very quickly. This was profoundly stupid, because having 1000 mediocre developers is far worse than having 10 decent ones. These people wrote 100s of 1000s of lines of shitty code. This code was then released to the mozilla effort, and left it with no fucking chance. Writing a browser isn't *that* tough, but if you start with a massive shitty code base, you can lose sight of that.
http://rareformnewmedia.com/
Uh, if you have a logical language that describes what your program is supposed to do, why not just compile it? It sounds like what you're doing is writing the same program twice in two different languages and comparing the output - you would be better off with a code generation tool.
You can easily survive 10 years without releasing "really good software". How many people bought Mechwarrior Mercenaries? Win95? How many installations of sendmail are out there? bind 8? I think we would all agree that the likelyhood of encountering a bug in these is pretty darned high, and yet people bought and installed them anyway.
I use it whenever I am forced to work in one of Bill's lame OS'es. Not as lightweight as Notepad, but not broken either.
--
An esoteric scratched itch:
Homeworld Map Maker Tool
So let's see:
Started college '87 at, say, 19, 1997 maybe 29, so this guy's in maybe his mid thirties...
And how long has *he* been writing software?
Or does he, even?
Who knows.
I don't care...
t_t_b
--
I think not; therefore I ain't®
I'm on PJ's "enemies" list! Are you?
Hmmm. I'm not entirely convinced. I felt Angband peaked at around v2.5.8, and since then, has suffered from the same problems as MS Office -- new features for the sake of new features, not because they're needed. Yes, some of them are quite nice, but they're just candy, and had game development stopped back then, I'd still be playing it today. By that I mean, I am still playing it today, but the The *gameplay* hasn't got significantly better for some time. But then, it's hard to improve when you're that close to perfection in the first place :-) Zangband is intriguing, in that it
does give altered gameplay (I'm still
torn on whether it's an improvement or not, but
there is definitely innovation there).
"The invisible and the non-existent look very much alike." -- Delos B. McKown
Nitpick: GNU tar has an option to pipe files through bunzip2. It doesn't have internal support for either gzip or bzip2.
The point is not how long it takes to get something useful - that can be done rather quickly - but instead something that is mature. A mature piece of software interacts with people and other software in the best ways possible. Figuring out how the best way for software to interact with other software and people takes a long time. Compare Notepad and BBEdit. Notepad is what you get when you throw something together in a month or two. BBEdit is what you get when you take an editor and run with it. Notepad is useful, but BBEdit is useful and mature. I think this is also one of the things that us free software people (myself included) miss when trying to convince others to use free software. Most free software has not had the time to mature. For example, let's take PostgreSQL (which I love) and Oracle (which I can't stand). I have to hand it to the Oracle people - they have added bits and pieces to their platform that make it great for enterprise use. Things like _extremely_ verbose logging, session tracing, the ability to move tables all over the disk and all through files, and all sorts of little administrative things that help the administrator keep things going. All-in-all, PostgreSQL has a much better design, but it will take many years of production use to get all of the little features that Oracle has. Also, if you look at the --help option of most of the UNIX commands, you see a plethora of options. Most likely, the original author had a really, really limited use for the command. However, users said "wouldn't it be cool if it did X", and so that was implemented. Two things are adding to this time frame - the feedback cycle (it takes a long time for users to learn something, and then figure out how they _wish_ it would run) and the development cycle (each feature takes a lot of time). These cycle times are slow. That's why software takes a long time. More programmers won't make the feedback cycle go any faster. Neither will better programmers. Good software takes time.
Engineering and the Ultimate
Actually, Q3A is much older than that. You could say that it is more like Wolfenstein 5.0, in which case the software is about 10 years old. The fact that they changed the name and some graphics doesn't hide the fact that they've been working on this for many, many years.
Engineering and the Ultimate
Even if its completely from scratch, they are still building on what they did earlier.
Engineering and the Ultimate
--
Also, I'd agree with others who have posted that this counts for things like OS's, DBMS's and the like. To create a simple application (eg, a text editor) should take less time.
--
It won't be much help to itself if it's buggy and limited.
You might check out Oangband.
It has some non-candy improvements to the overall system, like better monster AI and the actual use of spells by the monsters.
Well, I guess you could call that candy. But I'd reserve that term for the "big screen" stuff (which it also has), for example.
Well, NeXT actually. Of course, you could say, "How long did it take NeXT to finally market their software well?"
Bah! Everything's just an excuse for our lazy asses not building that Turing machine!
Kids...
If a woodchuck could, would it be too lazy to?
Ding!
Given enough hydrogen, just about anything is possible.
Checking all the return values and catching all the right exceptions takes time, both time initially to write the checks and time later to manage the 3 fold increase in LOC. It isn't always worth it.
Many times, the applications I write have life spans of less than 2 years. Most the time I let high level exception handlers deal with application errors. Most of the time this saves me time. Once in a while I get burned by that long lived program or scope creap that I underestimated and end up with a big program that should of had the checks in place.
In some situations where I've gone into an existing program, the checks were wrong simply because there was so much code that the developers got lost and ended up with crap. I've had to strip the checks out to understand the original intent and replace all the crap with a few high level handlers; later I added back some of the checks for more common errors.
Joe
Joe Batt Solid Design
While I generally agree with you, there are games that have been in continuous development for over 10 years, and are all the better for it. Angband (and its finest variant) is continually improving, and is far in advance of any commercial game in terms of long-term playability. Nethack is another one that has been around for a very, very long time now, and continues to improve. It is amazing how much gameplay can get squeezed into a game over a decade or so, especially when no one cares about the graphics :)
- "I never could learn to drink that blood and call it wine" - Bob Dylan (Tight Connection to my Heart)
Despite all of the bile you are oozing, I think you have a point about Lotus Notes.
First off, network-based document storage is a good idea. To this day it's still far quicker to write up a Notes form than it is to build an HTML form and server-side processing and the associated database insert/update/delete logic. Now transport yourself back 10 years where the DB server ran on the mainframe and nobody had access to it execpt the mission critical folks. Not to mention replication, which was critical when people were operating over 19.2K and 56K links. (Note that Microsoft is just starting to solve some of these problems with SharePoint and other Office bits.)
Second, despite it's ugly looks, having a simple/cheap RAD environment is a godsend to corporations. Look at the "expense report" test: Notes shops have done electronic expense report approval and routing for 10 years now. Most MS/VB shops are still printing out the Excel spreadsheet.
Flash forward to 2001, and we have a product which still does these things well, but tries to manage to do everything else at the same time. Even with a Windows-only client, custom widgets that predate Windows 3.1 are still in use. An absolutely terrible web application environment has been layered on top. 15 years of Lotus-specific UI inventions have to be supported. The client is trying to do so many different things that modern versions are slower on a PII than v3 was on a 486. Tons and tons of legacy code is floating around inside. I've read the release notes, and your change management comment is right on the mark -- touch almost anything and something else breaks.
I think IBM finally took a hard look at the 60 million userbase which, worse, had 60 million custom applications written on this heap and realized that the support costs were going to destroy them in the long run. I heard every new version of Domino comes with WebSphere in the box. That's a big hint to Notes users to start writing applications the "right" way -- although it's going to take some very tricky engineering to keep the good things about Notes while dumping the rest of the baggage.
Meanwhile, I would expect development to slow down or even stop, with the exception of client usablilty fixes. Ironically, the userbase will continue to grow in the short term. To contradict the article, sometime 10 or 15 years is *too much* development.
--
Business. Numbers. Money. People. Computer World.
Lotus Notes is also a bad case because there's several huge factors that affected it's adoption.
1) It was a PC-based client-server program in the 1980s. Way ahead of it's time, but that meant it pretty much had to run on the unpopular OS/2 operating system, and even then 10 concurrent users was a miricle on the hardware people had.
2) It was exclusively marketed to large corporations (read: it was ridiculously expensive) until the early 90s. It still is a lousy product for places without dedicated system admins and developers.
3) Lotus also sold cc:Mail which was the #1 corporate e-mail system from about 1987 to 1997. Cancelling cc:Mail and transitioning users to Notes obviously had a huge effect on the Notes user base.
4) Oh, it's true that the email component wasn't close to being "done" until v5 shipped a couple years ago. (insert link to UI Hall of Shame)
And because it's so old, it does carry tons of legacy baggage, including lots of back- and forward-compatibility features.
--
Business. Numbers. Money. People. Computer World.
Open source does not mean it has to be done in the free time of programmers. This is an extreamely valid idea. I am sure there are other places that will have full time paid programmers working on similar projects. If they all got together there could be an open source version of this software.
Paying taxes to buy civilization is like paying a hooker to buy love.
If you look at the "selected release sizes" table, there was a big jump in "core + lib + ext" from 4.036 (798K) to 5.000 (1504K), and a big jump in the documentation size from 5.003_07 (976K) to 5.004 (1587K).
Does anyone have the Camel Book sales figures from 1991 (when it was first published) to the present?
--
send all spam to theotherwhitemeat@ropine.com
--
send all spam to theotherwhitemeat@ropine.com
You're assuming that the reason software takes so long is because of the time needed to get the bugs out. Joel's point is that it takes this long to put the features in -- to find out, based on experience and customer feedback, what features you need and where you need to optimize.
--
send all spam to theotherwhitemeat@ropine.com
Just installed Mozilla (Linux and Win 0.92) a few days ago, and whilst I am impressed with the new features against Netscape 4.7x, I'm not impressed with the speed and responsiveness of it. Window redrawing and general GUI response appears to be excruciatingly slow.
I'm not exactly running on leading edge equipment (Linux K6-2 366, Windows K6-2 500) but both have adequate memory, and Konqueror (KDE) and KMail appear to have no such problems. I just hope it doesn't take Mozilla 7 years to get fast enough.
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
Why post previous comment as an AC?
I prefer to use Linux in general but I'm perfectly happy to admit IE5+ is an excellent browser.
However, even if Netscape dies, I think Mozilla will go on. At present Moz appears to be nice and fairly well featured, but the downside is that it is slow and unresponsive running on either Linux and NT. I hope this is corrected by the time Moz gets to 1.0....
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
Nope, sorry. Moz has lots of nice features, but I think the KDE integrated browser (Konqueror) is streets ahead in terms of useability [I will concede IE5 is at least on level pegging with Konqueror].
Moz appears to be very unresponsive at times (on both Windows and Linux), and I hope the development team devote some effort to sorting this out.
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
The word "good" in the authors article is a very imprecise word. Does good software have lots of features, is it free of bugs, or is it an innovative 'I never knew I needed it till I saw it' type of package.
Software need only fall into one or possibly two of the above categories in order to reach the accolade of 'good'. There are even packages in use today that are in mainstream use that are not necessarily good but have just become ubiquitous by default. [Windows Notepad springs to mind -its minimally featured, you can't edit large files with it, yet everyone uses it at some point or other].
There are other packages (e.g. games) which take nowhere near 10 years to develop (Minesweeper is incredibly simple but is a great game and is virtually unchanged since Windows 3.0/1).
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
1. All CompSci degrees are not created equal. What some lower-rung schools call CS makes me cry. No theory, no math, no algorithms, just programming languages and trendy topics.
2. Software Engineering != CompSci. They are very different disciplines, and there are very few schools teaching Software Engineering right now. CMU and RIT are the two I know of (based on previous /. posters). You don't hire a physicist to design a car, you hire a mechanical engineer. The same should be true in software.
-jon
Remember Amalek.
David
I could be wrong about the comp-sci bit. Maybe it's the lack of comp-sci that does it. When I think of the 10 worst programmers I've known, 7 of them had comp sci degrees, though. On the other hand, to be fair, of the 10 best I personally know, 6 have comp sci degrees (and the top three all have them). So it's probably just laziness in general, and has nothing to do with comp sci.
I also overspoke. Good programs require more than good code (as someone else pointed out). They also require correct design and the correct feature set. I guess I subscribe to the preferences of "as few features as possible". But still, I think bugs are worse, and more prevalent, than feature sets that are too small, and that blame lies squarely with the programmers.
You're right. I'm never specific enough when I mouth off. I think bugs are more common (and thus worse) than malformed feature sets, and bugs are clearly the fault of the programmers. That's what I meant, and tried to keep it so short I wound up not actually saying so.
Yeah, I probably shouldn't have generically insulted comp-sci like that; it's probably more because of personal laziness in programmers. It's actual work to test all parameters, provide traps for all exception points, and then remove everything unneccesary and test like hell. It doesn't feel like part of solving the problem, and isn't fun. That's where the bugs come from, imho.
However, I still agree with you on the curricula probably being still experimental by neccesity of the comparitive newness of the subject. I'd love to see a class on quality coding practices in general though.
The book you linked is *fantastic*. I've read it twice.
If programmers wrote solid code and tested it thoroughly, it would not take ten years to produce truly good software. I see more unchecked parameters, non-tested failure conditions, and badly designed function interfaces now in the work of the average programmer than ever before. I'm not sure who or what to blame for the problem (dare I say comp-sci curricula?), but I suspect part of it lies with the fact that "safe" languages are the first most programmers gain mastery on.
It's probably nearly as low. Consider how many dead projects there are at sourceforge. (It's always frustrating to find something that looks promising, only to discover that it's at .002 and has been inactive since early 1999.) Lots of people have great ideas, but there simply isn't enough nosphere (actually quite a good term that) for everyone to build his own text editor or IRC client.
Now, of course, there's nothing wrong with that. I'm not aware of many open source projects that really haven't lived up to their potential - I've never heard anyone say "Gee, it's too bad that AIRC never got off the ground."
Also note that I don't really know how few projects ever make it, but would like to too!
--
You're a suburbanite.
You're wasting keystrokes. You can shave 0.3 seconds from your development cycle with echo ;)
+++++
+++++
The harder you look the less you see. That's what we're up against.
All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite
Releases is copyrighted by The Regents of the University of California.
Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
---
-
ping -f 255.255.255.255 # if only
I am working for a research group that develops a tool for checking software *automatically*.
[...much deleted...]
Our tool is still very very buggy and limited.
Doesn't that basically sum up what happens when new 'silver bullet' software technologies hit the real world? I don't mean to knock valuable research, because I know there's much room for improvement in software development tools and techniques, but when you have to apply them to the fuzzy requirements and deadlines of the real world, the results aren't as revolutionary as one would hope.
I bet this will be a great software development tool in about 10 years.
Ender Ryan. Dude, you're in time-out.
Read your posts. You have a bit of growing up to do as far as your social skills go. You are replying to real people that put serious thought and effort into their messages and articles. Respect the fact that they are posting their ideas for you to learn from.
Mozilla as a product based on Netscape 5.0 which was based on previous versions of Netscape which were based on Mosaic which was first released in 1993. Give it 10 years. Judge the quality of Mozilla in 2003.
Q3A is definitely based on older versions of Quake, Doom & Wolfenstein.
The fact is that if you are a programmer for a commercial product, you should not expect any of your code to last more than 3-4 years in that product. The product will continue to improve. Those improvements entail replacing older code, eventually replacing all older code.
Think about it.
it is expensive, but it's a solid product. On win2k it's the only way to go. About 4 times faster than PCAnywhere (must be nice to have source code) and is pretty stable. For GUI Win adminin' it's the best I've found. Not much different than remote X sessions, just more expensive.
--
+&x
For those of you who think this is interesting, you can also check out meta-level compilation, implemented as an extension to gcc.
And for those of you wondering how useful stuff like this is, it's already caught bugs in the Linux kernel, among other things. So that low-level, tricky race condition that was fixed in the newest version? It might have been pointed out by this tool.
-sugarescent
OTOH, if you were implying that it took Apple 10 versions to get the MacOS right, it was actually ~16 years from the release of the first Mac to the first OS X release. But since OS X isn't the same MacOS, it's not really meaningful to include the original OS in an analysis of X's development cycle. FWIW, I would say the original MacOS became "good" somewhere between OS 6.5 and System 7.5, as little as 6 years after the initial release. (That's a relative sense of "good", of course; none of the pre-X MacOSes were really that good compared to what's available now.)
In an earlier avatar in grad school, I used to do research in software testing and reliability, and my professors were early pioneers in the field. In the days when they were in grad school (mid-seventies) the first questions they were trying to answer is "What kind of bugs do programmers make ?" - the reason being they were trying to come up with effective strategies to test programs that eliminate the more common and more serious defects first. These guys used to stand outside undergrad computing labs and grab printouts from students who left to analyze for errors !!
Later on in his career, my advisor spent six months with Knuth at Stanford to come up with a categorization of the various kinds of errors in programs.
My theory behind why it takes such packages such a long time to develop into useable tools for a large user base is related to the difficulty in getting requirements.
People just don't know what they need software to do. It's hard for anyone to be objective and accurate about just what it is that they do from second to second during their daily processes. It's even harder for people to go up a level from that point and envision how they can improve what they're doing. Most people take the software they're given and just use it, silently cursing the flaws without thinking about what they could do to work better.
Read "Contextual Design" -- the authors make these arguments much more convincingly and completely than I can, and give a potential solution to the problem as well. The only problem (from the perspective of most programmers) is that you have to spend more time with the users, get to know the users, learn their culture and activities.
You're trolling, right?
TeX is tau epsilon chi, a typesetting system developed by Donald Knuth in the 80s.
For more info... TeX Users Group.
Frankly, a five-minute idiot document produced in TeX will look fifteen times as professional as a five-minute idiot document produced in Word.
And TeX still has better line-breaking and hyphenation. Thppt.
And it's still used by every academic journal in the world. (Well, every one that deals in hard science, not the squishy stuff.)
-grendel drago
Laws do not persuade just because they threaten. --Seneca
XML is a stripped-down version of SGML that has an "ooh, it has the letter X in it!" acronym. SGML was in the works for quite some time before it was widely used...
-grendel drago
Laws do not persuade just because they threaten. --Seneca
Actually, it means that software that ran on the machines of ten years ago is very, very, very fast today (if it's still relevant.) Witness on-the-fly METAFONT font generation built into TeX. You used to have to plan ahead because it took a significant amount of time to generate them. No more. Not to mention that layout for an eight-hundred-page book takes about fifteen seconds...
See how fast everything would be if we didn't have such evil feature creep? GUIs *are* fast, if you can resist the urge to theme them and load them up with KDE/GNOME...
-grendel drago
Laws do not persuade just because they threaten. --Seneca
Yeah, Doom and Quake run really smooth on my Athlon 750... not to mention how blazingly fast Snes9x and VirtualGB are.
-grendel drago
Laws do not persuade just because they threaten. --Seneca
What about TeX? Started work in 1977, but the final version was written in 1982, and was mostly-bug-free by 1985. Last known bug found in 1995.
Err... I have no idea how you count that, but remember, it was (almost) all done by one man, who was also writing METAFONT at the same time.
True, Donald Knuth isn't your average developer, but -- see? It can be done.
-grendel drago
Laws do not persuade just because they threaten. --Seneca
Exactly right. Does this guy actually think that grip or cdparanoia won't be stable for another five to eight years?
Maybe KDE or GNOME in general will take ten years to mature into a 'final' state. Maybe Apache too... but when I think 'software', I think 'XMMS' or 'konsole'. Little stuff.
-grendel drago
Laws do not persuade just because they threaten. --Seneca
You mean the
<tag attribute="value">data</tag>
idea? Something like this is so basic you don't really think about where it came from...
-grendel drago
Laws do not persuade just because they threaten. --Seneca
Could it track guns and laptops for the FBI? I hear they need a new system.
They did. --use-compress-program PROGRAM.
-_Quinn
Reality Maintenance Group, Silver City Construction Co., Ltd.
Hey, if they're only at 4 years, they've still got 6 years to go. Maybe by then the textarea won't suck :)
(having said that, I've been using mozilla for over a year now.)
"Good stuff takes 10 years"
This guy must be talking about red wine, not software.
-- Pure FTP server - Upgrade your FTP server to something simple and secure.
{{.sig}}
Quake 3 is basically version 4 of the DOOM engine.
------
Seriously, as others have noted, correctness checking usually involves checking against a spec. Now, instead of writing bug free software, you have to write a bug free spec. You've really just moved the problem, and I've never seen any evidence that writing a bug free spec is any easier than writing a bug free program. If it was, we'd have developed spec->program translators already.
To really get this right, I think you have to solve the halting problem, which is, of course, provably unsolvable.
Not neccessarily true. There are one-way property checks such as:
.. think of doing something with assembler, when correct operation is verified simply by walking through some memory and doing a few checks like 'not everything is null', and other trivial possible outputs you know you won't EVER want. His program almost sounds to me like high-level asserts, where the app goes through all the possible inputs you specify to check against the asserts.
Input: request for door to open
Output: door opens or error reported IF (this or that or that)
While this logic may be complex (lets say the API to the door is a nightmare), verifying that the output matches a set of desired conditions can be far simpler in certain cases than the actual logic to implement the desired behaviour? Especially depending on the language you are using to implement
"Old man yells at systemd"
Hang on to that HP3300C scanner...you're gonna get a really good linux driver for it in 2011.
If its a project with government involvement, he's being far too optimistic...
http://thechubbyferret.net - Ferret pictures and informative links.
Slashdot posts aren't about social skills.
Everyone is entitled to his oppinion, and an oppinion of a more famous guy, is not necessarily more viable than of a less famous person. He is totally entitled to judge that piece about 10 years as total rubbish, as would I.
I believe both Netscape and Mozilla are crap. However, the much newer Konqueror, is already great software, and without 10 years.
I think that generalizing an arbitrary number like '10 years' for *any* piece of software, is more foolish than anything Ender Ryan wrote here.
Also, I doubt that Quake includes a single line from Doom, let alone Wolfenstein. The 3d architectures were totally changed since, as well as game programming methods.
He doesn't attack OSS/FS. He attacks the lack of a definitive release schedule. Mozilla development is a failure, no matter how good the software is when finally released.
Other people have slammed Mozilla for taking so long and, more importantly, adding so many unnecessary bells and whistles (the same thing we slam M$ for.) If they had planned an IE-3.0 equivalent browser by the end of year 1, and an IE-4.0ish for year 2, They'd have released an IE-5.5 equiv browser by now and IE might not have won the browser war, which is the real reason that the Mozilla project has failed.
The point Joel is trying to make is that you need to build in increments. Get a working version of your vision out there. The problem a lot of internet companies make, besides mismanaging their venture capital, is that the first version tries to do too much. If you have a novel idea, get the vision working and get it out there. Generate interest. The faster you generate interest the easier it will be to grow.
And to respond to another post, Mozilla could be considered the 3rd rewrite, if you include the point where Mozilla started over (maybe only on a couple parts but it seemed pretty involved at the time).
"The area of penetration will no doubt be sensitive." ~ Spock
The semantic content of XML is equivalent to S-expressions, the core data structure of Lisp, which was invented by John McCarthy in 1959.
To a Lisp hacker, XML is S-expressions in drag.
To a Lisp hacker, XML is S-expressions in drag.
When you (gu)estimate how long development might take for a project, the gut-feeling you get will give you the time for the FIRST ITERATION. You need AT LEAST two iterations (since the first is the process of learning what your software actually amounts to). So it's at least something like double your expectations. In reality, 5 or 6 iterations are likely to be necessary - that's 4 or more years for anything substantial. But people don't do it this way usually - they just hack and re-hack until bugs are suppressed to a reasonable usable level. This method takes rather longer so 10 years for a bugless efficient functional solution to a non-trivial requirement doesn't surprise me.
Why do you need to remember the extra command-line option just to use tar'ed bz2 files? Isn't bz2 part of the filename (eg arcname.tar.bz2)?
The shareholder is always right.
I never slagged Microsoft in this post. I simply explained why idiotic statements like the one this guy made are... idiotic.
Learn to read!
Sticking feathers up your butt does not make you a chicken - Tyler Durden
From quake 1 to 2, there's supposedly little code reused.
Then from 2 to 3 there is again little code reused.
So, maybe, it could be considered at MOST 6 years old if you count Q2.
Doom 3 is in the works now and should be released in the not too distant future, and they have said that the new engine will be completely from scratch.
Sticking feathers up your butt does not make you a chicken - Tyler Durden
You are an idiot, _I_ AM NOT THE SLASHDOT CROWD.
And, quite often my opinion is different than that of the majority of the slashdot crowd.
My opinion of the current article is that the guy is an idiot for the reasons I stated, and that has NOT ONE DAMN THING to do with Microsoft, Slashdot, or with anything you've said.
So STFU and leave me alone.
Sticking feathers up your butt does not make you a chicken - Tyler Durden
about social skills. This is not a party, when someone is spouting a bunch of nonsense, I'm not going to hold anything back, except maybe some excessive swearing and insulting if necessary.
Mozilla is almost entirely new code, and a complete redesign. It is not really in any way similar to the crud that was Netscape. Maybe that still doesn't count, I don't know.
As for Q3A, it is based on entirely different principles than Doom and Wolfenstein. It is as much the same program as Doom and Wolfenstein as Mozilla is the same program as Opera, it just plain isn't. It's the same type of program, but is in no other way similar at all.
Dude, like, stick your time-out.
Sticking feathers up your butt does not make you a chicken - Tyler Durden
Yes, that is the perfect example, I should have used that.
Simply put, Konqueror is amazing. It is nearly as good as Mozilla(IMHO), but it's SO NEW.
While I don't use Konqueror as my primary browser, sometimes I load it up just because it's an absolutely amazing project and it amazes me...
Everything said, stupid, insulting, etc. or not, arbitrary numbers are just plain dumb. That's my opinion, and I feel that generalizing things in such manners is potentially damaging, so, sorry to anyone if I seem insulting, deal with it.
Sticking feathers up your butt does not make you a chicken - Tyler Durden
Simply put, software takes... as long as it takes. Some software is incredibly great after only 2 or 3 years, other software takes 10 or even 15 years before it is great. And then there is tons and tons of software that is NEVER great.
Just take a look at Netscape. It was a very widely used piece of software that has NEVER been fully stabilized, and there are countless bugs in that POS. It is a bad piece of software.
Then there is Mozilla (WTF is he laughing about?). It's only 3 years old, 100% new code, and while it's not even to 1.0 yet, I'd say it's good. It is well on it's way to becoming great software well before 10 years.
Another example of a great piece of software, which happens to be one of my favorites, Q3A! ; ) I'm not kidding though, it is a fantastic piece of software. It is almost perfectly stable, I can't even remember the last time I saw Q3A crash. I've played Q3A for countless hours over the last year, and it hasn't crashed in that whole time. And, there is only 1 bug I can think of off the top of my head. Q3A is only (3? 4?...) years old and it is a complicated piece of software.
Sticking feathers up your butt does not make you a chicken - Tyler Durden
..obviously a type, he meant to say good slashdot story takes 10 years.
I assume you meant tar -j instead of -zI (apparantly there were a couple of different patched versions using -y or -I and so they picked -j in the newest versions intead).
OT? Yes. Many apologies. I am bored.
- Personally, I like the ability to launch a text editor for 'small' documents without waiting for 300 DLLs to load, or a splash screen, or 50 million freakin options that I'll never have a use for.
I think what you're looking for is vim under linux. Unless you are addicted to point-n-click, in which case I will sipmly sympathize and move on...Cool. Does most gtk software port over to windows easily? I know gimp is ported. Maybe we can subvert MS on their own operating system. Interesting.
I'm not a Java programmer (IANAJP), but how is Bandera different than Java Pathfinder?
From the Java Pathfinder page: "In keeping with this philosophy we have developed a verification and testing environment for Java which integrates model checking, program analysis and testing. Part of this work has consisted of building a new Java Virtual Machine that interprets Java bytecode. JPF is the second Java Model Checker developed by the Automated Software Engineering group at NASA Ames - JPF1 used a translation from Java to PROMELA in order to do model checking with the SPIN model checker."
While your enthusiam is great, I do not think it will revolutionize software development. The tool would have to be amazing. And yes, I do mean amazing. If it was amazing right now, which it is not, you'd have a chance to change the software development world. It also seems very academic and not truly practical. I could be totally wrong about this -- remember, IANAJP!
Bottom line: It is a good idea and sounds interesting so keep your chin up. But, try to be a bit more realistic.
How to Download YouTube Videos
Just because it changes on the surface doesn't mean the whole program gets scrapped and everyone starts over. Unless we encounter a serious technological bottleneck in our current engines, it is quite likely they will still be in use in another five years.
-------------------------
-------------------------
"After Careful Consideration, Bush Recommends Oil Drilling" - The Onion
Agreed, in the OSS development model, the fact that you don't have a 1.0 version does not mean that you don't have a usable product. Mozilla is definetly usable at its present stage. Perhaps in OSS when a piece of software reaches version 1.0, since its developers have received massive user feedback, it is actually complete?
Expert Java EE Consulting
I think Mozilla is doing the right thing. They are telling people to hold onto their hats until the finished version comes along. They could alternatively release version 5.0, then patch it multiple times with Service Packs and eventually get to 5.50.4xxx - but that is what MS does.
For those daring people (that would include myself) it's all class to download a new Mozilla every two months and use it daily. I'm doing that right now. It's stable, it's good.
BTW, I haven't got any complains about Mozilla 0.9.2. I've been using it since its release, and it's all class. I don't know why they don't bump the version number up. :-) Must be all my Bugzilla reports ...
...XML is simple, simple stuff. XSL/XSLT/XSD/etc., etc. are the schemas that do all the actual work. Not only did they take longer to make than they should have, but they even feel like (especially XSLT) they were slapped together by a bunch of people who had no idea what the other guys were up to.
Easy does it!
This comment has been submitted already, 276865 hours , 59 minutes ago. No need to try again.
That answer your question?
${YEAR+1} is going to be the year of Linux on the desktop!
These three points are excellent arguments for a development methodology that prioritizes known requirements by business value, emphasizes getting working code in front of the users and has a rigorously defined QA/enhancement process. My understanding of XP is that it does all of this, presumably other "Agile" methodologies do as well. Unfortunately none of the projects I have worked on for a large three letter consulting firm have approached this sort of an iterative approach. All of them have been first release and then leave it to the clients in house staff to live with type projects. I'm trying to change the place I work, but I may just end up changing the place I work. (to paraphrase Martin Fowler).
No kidding...
Actually, we may make a pitch to them.
I've been apart of software projects that produced "Good" software. Really good software, in my opinion. Really good, large systems that were reliable and the users loved them. One took roughly 3 years to be ready for market and had another 2 years of additional development.
Another is one that we're nearing completion on. It has taken 1 year for four developers, and it's a large distributed system. It's very stable and it's good software. We've also taken on the idea of "plugins" and exposed a great deal of our system's internal data and functionality so that we can add almost all of our new features via the "plugins" and not have to worry about mucking with the base system and messing it up.
Now, as my old boss used to say: "We're not sending rockets to Pluto," but these are fairly large complex system.
The first was a multi-user engineering system for developping cell phone networks (base station locations, traffic analysis, propagation prediction, interference prediction, etc...) The second is an enterprise wide tracking system, used to track everything from bugs in the software itself, to evidence in police stations, to prisoners in prisons, to assets for a company.
So, I don't really buy into the 10 year thing. Not to mention the speed of technology changes, hell, you can't design for what's going to be there 10 years from now. Who knows what's going to be on your desktop?
A lot of this article makes sense, but banging on Mozilla for not being released in 3 years? HELLO! They release daily, and release development milestones on a ~3-6month schedule.
Granted they haven't hit a 1.0 release yet, but on the other hand, it hasn't been 10 years yet...
rant off...
DOS is dead, and no one cares...
DOS is dead, and no one cares...
If there's a Bourne Shell, I'll see you there
what side of your ass your talking out of?
here's a little history for ya.
the browser is an idea.
the browser gets it's first implementation developed on NeXT (of all things)
Mark Anderson helps make the first Mosaic at NCSA (I believe he was an intern)
NCSA Mosaic gets some attention, so Mark A. gets the bright idea to start a new company, mainly by grabbing all the good people from NCSA (much how Unisys did with MIT AI lab when RMS worked there, which also started GNU)
Around v2 of "Netscape" Microsoft realizes they are WAY BEHIND in the future of software. So they bought/licenced Spyglass mosaic browser, re-packaged it as IE 1, and 2.
MS around v3 of Netscape MS has ditched the old source and was working on a new code base for IE3, which is was pretty decent.
Netscape 4 and IE 4 came around the same time, but you know what? IE4 is a total re-write of IE3, and the beginning of what was also IE4. They got about half way done with IE4 then decided they really needed to change stuff around, so in the middle of development they re-started it and made the IE4 that shipped!
Netscape roles over and dies (for various reasons, mainly for never scraping there code, and having a crappy product I imagine).
So no, IE is not a hack off older stuff, the idea of a graphical www is ripped from NCSA Mosaic (which really was pretty obvious development from previous work).
-Jon
this is my sig.
duh, Mac OS Ten, how long did it take apple to come out with good software?
I have independently come to much the same conclusion.
I remember the days when the X server used to crash a couple of times a week and take all your apps out with it, or when Emacs would get itself into a bit of a state.
Once these packages have hed more than about 10 years of development work done on them they reached the stage of becoming rock solid pieces of software.
Of course Linux was started in 1991...
#exclude <ms/windows.h>
The final line of the article is...
(Okay, so I changed the link).
#exclude <ms/windows.h>
He may have a point, but the "number of lotus users" graph might have some correlation to "the number of PCs in use" graph. The size of the market has increased so much it doesn't really prove much. I know Joel tends to think older software is better, hence this article entitled "Things you should never do, part 1" where he chastises anyone who has ever re-written anything from scratch, saying that it is a waste of a huge investment. I don't know. I certainly think refactoring code is often necessary. When does it stop being refactoring and start being a re-write?
I forgot to mention...Has anyone else noticed how much of a Philip Greenspun devotee Joel is? All those photos were flashbacks to "Travels With Samantha", and he praises Philip in a few places on his site. He's also about as oppinionated as Phil G. too....
Lotus Notes.....not many people would actually consider this good software. For a product that is mostly about end users to get a whole chapter in the "User interface Hall Of Shame" to itself is quite an acheivment.
Oracle......was basically finished in about 1989 since then its been mostly window dressing and interfaces to new stuff that came along. It should be noted that the definitve and original relational database "DB2" reached a usable, stable and pretty much final form in about 1988 after about five years development, this includes Codd thinking up the origonal idea and developing a subset of set theory for use by computers.
And what about XML from a gleam in a devlopers eye to stable, standard used software in three years,the BSD tcp/ip stack about 1 week, "vi" editor 36 hours and lots of coffee!
It reall all depends on the scope of the problem, the quality of your thinking, and, the "Hacker Quotent" (TM) of your programmers.
Old COBOL programmers never die. They just code in C.
Notice that some of the best projects, although usable, are not "mature" software until at least 3-4 years.
Linux has been around about that long, and in the last 2-3 years has really picked up speed (and dollars) from corporations.
Microsofts OS picked up speed around Windows 3.1 & 3.11 (early 90's) and had matured for aproximately 10 years prior to that (DOS 1.0 - DOS 6.22) You get the idea. Now that Windows is aproaching 10 years (Windows 2000) is finally an almost dare I say it "Good" OS.
Although 10 years might not hold true for all applications, it will hold for a large number.
AF-Design, web development.
yeah
so what's diakatana's excuse?
~zero
sig?
Thank you for pointing this out. _Most_ games released today would be laughed into the bargain bin if they used the quake engine.
Will there ever be a new commercially viable operating system (not saing Linux is bad, but just that it's market share is far too low to consider it at this point)? Can suchan effort exist if the company producing it needs seed capital for 10 years of operation before a quality product can be produced?
This makes linux a perfect example, actually. Linux has been around for close to 10 years, and only now is it TRULY the "product" it should be (meaning, in the last couple of years...).
Really kind of agreeing with your post, just subclassing it and overriding your claims about how there "can't" be commercially viable, new, massive programs like OS's and db's, etc.
--
"I think there is a world market for, maybe, five computers." __ IBM Chairman, 1943 __
It's quite possible to use formal methods, and tools that check them, to produce bug-free programs. But the formalism is too much for most programmers. That's the real problem. Using a verifier means writing code that you can explain in a formal notation. This is a huge pain. It is, though, quite straightforward to check for low-level problems like possible numeric overflow and subscript errors by formal methods. More recent work has extended this to race conditions and deadlocks.
Back when we were working on this, a major problem was that it took 45 minutes on a 1 MIPS VAX 11/780 to verify about 1000 lines of code. Today, that would take 2 seconds. You can be too early with a technology.
Incidentally, undecidability isn't a problem. It's possible to construct programs whose halting is formally undecidable, but they're not very useful.
Although program verification hasn't done much for software, formal techniques are widely used in IC design, where people are serious about engineering and stuff is expected to work.
Yep. And the differences become larger on the server side. (SQL Server is way more expensive than NT Server, as is Exchange, as is ...). True, you have to buy license packs for the OS to add on users, but that's just them designing a razor where you have to replace two blades at once. ;-)
--
News for geeks in Austin: www.geekaustin.org
News for Geeks in Austin, TX
I am mostly skeptical of his idea because I'm not sure how he thinks a young software company could possibly survive without building really good software in much less time.
Well, young software companies would obviously find it difficult to create software that competes immediatly (so forget about mentioning Linux & any other FS packages) and aggressively with existing players. Providing the project being worked on is relatively disruptive or innovative (think web browser at the time, AI software, etc), small companies will drive the growth and eventually become the 10 year old software project company.
kill_9_1
What about the whole Rapid Application Development philosophy?
/cheat/ the example given since you have so much time invested into your platform that you can get a good boost having such a strong underlying development platform?
I think it still applies that in a month I can write a very useful application using something such as Visual Basic or Delphi (Kylix)
The time in development does not have to fall soley on MY shoulders. The Delphi people have spent many years coding the base libraries and IDE for Delphi. How does this entire development philosophy fit into this guys plan?
What about 4Gl's where many years have been spent refining these languages. Many years have been spent thinking of how to make programming flexible (to a degree) and easier. Does this not
I am not implying any such a platform exists I am just stating that it seems to me this is quite feasible with the right tools. Maybe they are not out there yet but they will be some day.
I just think that in software development you will find many rules and philosiphies spring up only to be later invalidated as the nature of the beast changes.
Anyhow, laters.
Jeremy
Anyway, getting good software over the course of 10 years assumes that for at least 8 of those years, you're getting good feedback from your customers, and good innovations from your competitors that you can copy, and good ideas from all the people that come to work for you because they believe that your version 1.0 is promising.
Agreed. If I want to edit a webpage, I use Notepad. A webpage that is too big to load in Notepad is too big. Period.
If I want to view or edit a really large plain-text, I open it in MSVC. MSVC whips the pants off Wordpad for large plaintexts. Wordpad is only useful for viewing documents from people who insist on sending you .doc files. As long as there isn't any crap embedded in a word file, you can view it. If people send me word files with crap in them, it usually doesn't matter. 99% of the time the graphics are just that--crap with no information that can't be deduced from the accompanying text.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
EDIT.COM : 413 bytes for the version included in WinNT 4.0, and still rocks!
Beats the piss out of "edlin", at any rate.
-mpb
man tunefs | grep fish
Ok, not the best example of a game that took many years to "perfect". I guess Daikatana isn't either... ;-) Games are probably not a good example of "more dev time == better app" because gamers want the latest, bleeding-edge thing more than a "workhorse" (Half-Life is a workhorse, but its persistence is probably dependant on a steady supply of new mods/Counterstrike updates).
Freedom: "I won't!"
The catch is you have to specify the expected properties of your program in terms of
logical language
Oh, so all we have to do is write a bug-free program to check our first program for bugs? Brilliant! (Seriously, I'm all for correctness checking, but if you think it is a solution and not a tool, you're smoking too much of that there crack cocaine.)
"Beware of bugs in the above code - I have only proved it correct, not tested it."
- Knuth
This was previously intractable and infeasible task as the scientist proves that nobody ever breaks the Turing machine. But, we've got a way to get around with it.
You might want to take a few more math classes, and then then get back to us. I'd tell you to suggest to your professor to do the same, but incompetent professors are often extremely vindictive.
There's often nothing useful you can do with a computer science professor who has refused to learn any computer science, except nod and smile and stay the hell out of their way.
Slashdot is jumping the shark. I'm just driving the boat.
---
It's kind of amusing that you can do the same thing in UNIX with X without all the hassle. Who says UNIX is harder to use than Windows??
---
---
Prolog *cough* Prolog
But the calculator *still* can't do squares.
View Menu > Scientific
Enter your number, and click the "x^2" button
It's been this way since at least Windows 3.1
NO CARRIER
Yes, I know this is off topic, sorry :)
:)
Wordpad is their major text/rtf/unicode editor now. Notepad is meant to be really light. Wordpad has a decent amount of features, but I really don't like the feel of it.
For a great text editor under windows try UltraEdit32. It does text, hex, large files, UNIX DOS/CPM conversions, and a bunch of other cool stuff, including syntax highlighting for c, c++, java, html, etc. Check it out at www.ultraedit.com. It's the only shareware I've ever paid for
- Requirements will always fluctuate throughout the development cycle, because users cannot entirely formulate what they want until they have seen something close. For the same reason, requirements can never be fully formalized--the more explicitly complex behavior is described, the more likely it is not exactly what the user wants.
- It is nearly impossible to get a complex design right the first time, even if you are among the very best. Design and build functionality slowly and incrementally, and expect to revise aspects of the design and code you didn't anticipate revisiting.
- All non-trivial software has defects--you should accept this and spend time and effort developing an effective QA process, rather than treating QA as an afterthought or feeling guilty that your software has bugs. The development process lasts months, but the QA process lasts for the lifetime of the software. Concentrate on making the software better, not just fixing the bug at hand.
These are just a few points, acceptance of which will lead to more effective development. A big barrier to acceptance of the real difficulty of software is that we spent our formative years developing trivial, batch-oriented programs that our professors could run easily and grade objectively. With these programs, the requirements were known upfront (any ambiguities having been flushed out by repetition of the assignment), the program was known to be doable by most developers in the alloted time, and it could be completed bug-free. None of those things is certain in the real world. Yet we treat complex software as if it can be done this way. It doesn't work--"Zaro Boogs", anyone?Madness? You bet. http://www.nethack.org
How can we continue to believe in a just universe and freedom to eat crackers if we have no ale?
I don't know about you, but it doesn't take most programmers ten years to write a REALLY good HELLO, WORLD script. Of course, there's always the chance it can be used as a buffer-overflow denial-of-service Trojan!
Honorary Member of Jackie Chan's Kung Fu Process Servers
There's a lot of really good articles on this site, and I recommend anyone who's involved in software development to take the time to go along and have a read through. You might not agree with it all, but there's plenty of useful tips and heaps of common sense, which is so often lost in the corporate world. Start in the archives here.
He doesn't attack OSS/FS.
Not directly; perhaps not even deliberately. He does, however, attack ideas that are commonly associated with OSS/FS. His "Mistake number 1" derides releasing too soon, and #6 warns against releasing too often. His fourth point blames Microsoft not for going to subscriptions, but for waiting too long to get around to it.
He attacks the lack of a definitive release schedule.
Another OSS/FS staple. Is the Linux kernel a failure because 2.4 was behind schedule?
Mozilla development is a failure, no matter how good the software is when finally released.
First, using Mozilla as a punching bag is cheap and easy (I'll concede this is partly due to overhype, Joel's second point). Second, Mozilla has been released, and is re-released nightly! You cannot make a meaningful qualitative judgement of the code based solely on the version number. I use Mozilla 0.8 for day-to-day browsing, and have found it to be perfectly adequate for my needs.
Other people have slammed Mozilla for... adding so many unnecessary bells and whistles.
If you think anything beyond an HTML renderer is bloat, you're free to use Lynx. Believe it or not, there are users out there that actually want an all-in-one system. Take my S.O.: I can't seem to convey that documents aren't long-term stored in the application that displays them, and that icons aren't the actual programs. For people like this, the fewer interfaces, the better. A do-everything-from-one-place program is made for them, not us.
Nonsense. The browser war was won because MS tied IE to Windows; product quality never entered into the equation.
The point Joel is trying to make is that you need to build in increments.
That wasn't what I took from it at all. To me, he seems to say, "Unless your product has been in development for a decade:
And finally: get people used to the idea that the software isn't theirs." A lot of this is just a lengthy way of saying, "don't be a dot-com", which was good advice a year or two ago, but today looks like "I told you so."
Sounds like he's fairly anti-OSS/FS to me. He advises against "release-early, release-often" and "it'll ship when it's ready"; he takes a poke at Mozilla because they're not stamping "1.0" on a buggy release; and seems to believe that software rental is the only way to go.
When that guy uses Lotus Notes, Oracle, or Windows NT, which is apparently only ready after 10plus years, this is a bunch of crock.
First, those are inherently bad example for his theory. OK, let's look at them seperately:
Lotus (IBM) intended to develop the everything-encompassing-can-do-it-all groupware solution. This, I believe, is a flawed concept for software in general. The more you create a monster, the worse it gets to maintain it. Probably far more energy was invested into wondering how this part of the software could be affected by a change in a completely different part, then actually improving it.
NT, nowadays has 35, or so, million lines of code. Isn't it? It was based on the VMS kernel, after Micro$haft hired Dave Cutler and the entire VMS core crew? Well, from what I gather Dave and his team are (where) quite brilliant guys. But wasn't it, that Digital actually was an engineering driven company, while M$ doesn't really care about technology and fine engineering, but more about marketing and killing of the competition. So, I wouldn't argue that it takes long to write 35million lines of complex code. But how much of that code was really written to actually improve the OS kernel and how much of it is snake oil, dictated by M$ marketing ?
Oracle, now don't even get me started on that. Compared to other more modern databases Oracle appears to be a big chunk of files scattered around various disks. From what I know about Oracle (granted, I know far more about other databases), it's a rotten design, they always tried to improve upon. So, how much energy was wasted, just to keep this whole bad blob somewhat functional, within the development cycle ? Oh yes, and those remembering Oracle 6 realize, that this keeping up wasn't always successful.
So, in essence; what this guy is doing is taking the worst examples to prove an entirely flawed theory. Sort of, as if I state that every cop is a corrupt crook and take isolated incidents from the LAPD and the NYPD as shining example.
ich bin der musikant
mit taschenrechner in der hand
kraftwerk
Since the support is external (stuff is just piped through the bzip2 command), one could argue that tar could've been properly designed from the start to handle an arbitrary compression program (just as 'tin' works with arbitrary text editors and 'rsync' works with an arbitrary rsh-like program [though in the rsync case, I'm not sure when that was added -- but should ssh ever get supplanted by a new rsh-like program, rsync's already ready to support it]).
Furthermore, one could argue that the existence of both 'compress' and 'gzip' should've clued the tar developers in on the idea of supporting arbitrary compression programs.
However, I don't think the people who make tar particularly dropped the ball or anything. It's just that the software could've been made flexible enough before-hand.
What do you think I'm doing right now? :)
Maybe you should educate the morons of tomorrow so they'll stop believing the leaders of tomorrow. - Dogbert
Mistake nr 1. get big.
Linux started small. Ok there. how much people got linux V 0.23? 10? 100?Mistake number 2. the Overhype syndrome.
A lot of people will say linux is overhyped. If it is so i did this not in the beginning, but long after Release 4 (something like V1.01 in linux version numbers)Mistake number 3. Believing in Internet Time
I Do not really understand what joel is saying here. According to joel software does not get written faster because of the internet. And he makes an exception for internet explorer at the same time. (He just made mistake number 3?)Mistake number 4. Running out of upgrade revenues when your software is done
This is clearly not about linux. simply put: what revenues. form this -> linux is not a good example!
Mistake number 5. The "We'll Ship It When It's Ready" syndrome.
linux does just fine there. You can get all kind of beta and alpha versions you want. (Joel goes wrong there: Mozilla was released, namely netscape 6.0 ).
Mistake number 6. Too-frequent upgrades.
Linux goes wrong here. A lot of people will want to use 2.2 kernels because they are not convinced that 2.4 is stable yet. But since there are still a lot of features wanted (run it on platform x , use File system Y ) it will keep changing. If you take Red Hat instead of linux you will hear, "don't use theTo sum it up:
-joes story is not about open source software.
-linux has not reached "cannot think of any REAL new features".
(Feel free to press reply)
True, Java is getting closer, but I for one am pleased that MS is removing it from XP. Take a look at Java support under 2k: it was outdated and full of MS'isms. It was the MS VM that had all those proprietary extensions that made J++ such a loser from the 100% pure Java community (flamebait: the real Java community is the one concerned with portability. A person who programs in the Java language is not necessarily a member of the Java community)
Finally MS changes to reflect Java reality. Java2 has been around for a while and is vastly superior to Java 1.1. Java2 1.3 is about to be old news as the beta of Java2 1.4 nears completion (finally with non-blocking IO - a boon for scalability on servers). Why saddle an OS with something that a user wanting to run current apps will have to immediately upgrade anyway? We've had to download the new JRE from Sun even on Win2k for a while now. This really changes nothing.
Yes, of course some developers may want to work their darndest to support old or incompatible platforms (like the MS JVM). However, you miss the point. Flash 5 is the most current version of Macromedia's "tool" available, and if you are using a stock install of Win2K or Win98, you will still have to install the Flash5 plugin. What sets this scenario apart from the Java one you described is that this is painless and fast. The Flash plugin installs nearly transparently and works immediately.
Does this mean that Flash 5 is better? Do some people make annoying plugins (the infamous comet cursor)? Obviously the decision to go with Java is often the best one (but not always).
So we, the development community, should not put up with our platform (Java) being made irrelevant by what you describe as nightmarish installs of browser plugins. Even though J2 has yet to crater a machine for me, 5mb is a little ridiculous right now.
Macromedia knows how to make a plugin work right and be seamless - don't bash them. Microsoft unloads painfully out-of-date software from XP (making it less of an embarrassment in the process) - about time. Maybe now someone will actually make really good and transparent Java plugins.
Remember: deprecated software should be allowed to die. Only Slackware includes XView (their choice, not the choice of the industry).
If I remember correctly OS/2 was a IBM-Microsoft partnership project. Microsoft was ready to throw everything into OS/2, however fate stepped in apparently. Microsoft was half-assedly working on Win3.0 when two software engineers got all of Win3.0 to run in protected mode. They showed this to BillG, and he said fine ship it. Microsoft "said" that Win3.0 was a development enviroment for OS/2. When Win3.0 took off IBM got pissed off and IBM-Microsoft seperated ways on OS/2. IBM continued developemnt on it and released it as OS/2. Microsoft continued its developement and called it WinNT.
I/O, I/O, its off to disk I go, with a read and a write, and a bit and a byte, I/O, I/O, I/O, I/O
I'd agree in prinicle. To write Notes, or an OS, or a DBMS, certainly, 10 years is probably a fair amount of time to get something of reasonable quality. But..
Not all software has even close to thelifespan of the big applications this guy is talking about. Most user applications, games, web technologies, they are all projects that get used for a few years and then get replaced. To develop a single game for 10 years would be madness. The amount of time a project has is usually linearly related to the lifespan of the outcome. If you're writing soemthing thats going to be used in 20 years time, then its probably not an afternoons work.
http://twitter.com/onion2k
Hey, Have you tried running your tool against your own tool ? Maybe that could get rid of some of those bugs. charmer
I'd have to agree with this. Though 5-10 years does seem logically necessary to develop mature software. It takes quite a while, not only in development, but in use for software to become, not only what the developers intended it to be, but what the users want it to be.
Of course, with the increasing use of modular software design, and distributed open source development I think the cycle can be shorter. Programs can benefit from the past development in mature libraries (like libc, etc.), and Open software certainly benefits from its users' being able to make the changes they want.
credo quia absurdum
Actually I believe that he's really refering to what software revision codes actually mean.
credo quia absurdum
Aparently you've never used Windows Terminal Server on Win2K. It rocks. PC Anywhere sucks.
- Spryguy
- Spryguy
There are three kinds of people in this world: those that can count and those that can't
I've used VNC. And it sucks. Updates are slow and spotty. Use Terminal Services on Win2K. Very fast, and never any screen artifacts...
- Spryguy
- Spryguy
There are three kinds of people in this world: those that can count and those that can't
It's worth the money, actually. You can control your PC remotely anywhere from within a browser, or using a client. And it's JUST like being on the remote computer. I understand the next version (in WindowsXP) even sends sounds through.
- Spryguy
- Spryguy
There are three kinds of people in this world: those that can count and those that can't
Linux anyone? started in 1991, really taking off in 2000/2001. Sounds like ten years to me...
He did mention Wine at the end. But i guess it'll take longer than 10 years for this wine to come of age ;)
This sig is intentionally left blank
What the hell is going on with Mozilla? I made fun of them more than a year ago because three years had passed and the damn thing was still not out the door. [...] But I'm getting off topic. Yes, software takes 10 years to write.
Is it just me or is that just a tiny bit contradictory?-Håkan
Will there ever be a new commercially viable operating system (not saing Linux is bad, but just that it's market share is far too low to consider it at this point)? Can suchan effort exist if the company producing it needs seed capital for 10 years of operation before a quality product can be produced?
This seems actually to be a great opening for Open Source. OSS has the advantage of not requiring large capital outlays to continue development. Look at the number of OSS projects started in the past 5 years, and at the number of corporate software startups from the past 5 years. How many of the corporate software startups are still around? How many OSS projects are still around?
I recall a statistic someware that only 2% of companies ever really succeed, beyond 3 years. I wonder whatr that percentage is for OSS projects...
Based on the above comment, it seems to me that the only major competition in large scale software such as Operating Ststems, Enterprise quality databases and Perhaps Wordprocessor software will come from OSS, which is the only development model that could survive for the decvade nessecery for the products to reach maturity.
The alternative is to say that the only major software companies that will ever exist have already been established and that the bariers to entry into these markets are too high for any new startup. This is not something I would ever want to have to admit.
--CTH
--
--Got Lists? | Top 95 Star Wars Line
See, unlike most opensource developers out there, Microsoft realize that there is a goal for each piece of software they develop. Notepad was designed to be a simple text viewing program.. i.e. a "notepad". It reached that goal long ago. I have to congratulate Microsoft on avoiding bloat on at least one of their products. OSS developers better learn the same ideas soon, because I have yet to find a text editor as simple as notepad for those simple editing and reading tasks I do so often.
Yeah, it is trivial... I've been doing so much experimenting with gnome/gtk I haven't even bothered with any kde/qt apps yet... though I hope kde is better than gnome, gnome is not as great as it is made out to be =/
And to indulge in a little Microsoft bashing: products that last ten years usually suck compared to the competition, but come out earlier and have better marketing. Once they're the last ones standing, they finally turn their attention to making the product work like it says on the box. I think the reason it takes ten years to write good software is you have to spend the first 8 beating your competition.
I didn't read your stuff, so maybe I'm wrong, but... Wouldn't the logical specification be just as hard to write as the program?
Computers got faster, and that enabled better software. As opposed to software getting better with each version, which was the author's opinion.
I think a software is only good iff it takes forever. As software *approach* perfection, changes are made less often. New features are still being added, but they are few and far in between. Eg old warhorse like tar now has support for .bz2 files (tar -zI). It is impossible to say something is perfect and cannot be improved anymore. Anyone remember that quote about "all the inventions had already been invented"?
Of course this probably don't apply to the commercial environment (which is what the article is aimed at I think). Imagine starting a business selling tar: buy tarXP because... okay lets go to a subscription model ;-)
====
Codeala - Just another mindless drone
There is also VNC, just like PC-Anywhere, 'cept its free, and works on many platforms.
Took 4 years of development, 2 years of user-level beta-testing and 1 year of stolen-source-code-editing and bug fixing. And now, it's being worked on again for Falcon 5.0. And I'm not counting Falcon 3.0 before that.
Also, Microsoft flight Simulator has pretty long development cycle.
Well, Miyamoto spent four years on Super Mario World before the SNES ever came out . . . so it's possible.
I agree -- in theory. But I think that it depends (and this is not a Clintonism) on your definition of "good." Good software means what: software which is compelling, interesting and useful, or software which is full-featured, robust, stable and secure? I'd argue the first is good for having fun, proving a point, making a name for yourself, which is why I'm using a beta OS (OS-X) and a hobby OS (Cobalt Linux), and the second is good for making money and building a company (which is why my work machine runs Windows 2000 (ten years after 3.0) and not some loser's linux). Basically, what this guy's talking about isn't just good software, as in "good beer," but great software, as in "how the hell did we ever get around without this great effing software package???" Good software can be written in an afternoon, but it'll take years of writing, reviewing and revising code to make it great (just like writing literature, i might add).
After all, what we're talking about is the difference between building a framework and building an application. Anybody can say:
MimeMessage msg = Session.getInstance("mailserver");
msg.setTo("somebozo");
Transport.send(msg);
but it takes a long time to turn that into a full featured, easy to use mail package. Good programmers won't speed that up...we'll just make each step a smoother transition. All the good garbage collection and subtle, elegant, efficient algorithms in the world can't save your software if you don't take the time to think about what you REALLY want it to do and what your customers need it to do. It's taken Microsoft 10 years of windows to realize people want everything from a unified OS -- speed, stability, ease of use and customizability -- and with XP, they're getting closer. Shame they had to go and pull that no-Java prank...after all, Java's only 4 years away from becoming great software itself.
Hey freaks: now you're ju
On the other hand, will this detect whether or not the programmer put anything in place to catch a buffer overflow? Considering that Microsoft has issued six patches since December, each because an unchecked buffer allowed a security exploit, ...
Um, maybe, just maybe: The guys who are doing it right now? There is nothing that says open source has to be made in somebody's parents garage. I'm positive that this is not the only clinic with a programer onhand working on keeping their crusty old custom software working.
Now if two or more of these guys working on these custom apps for clinics get together and work on something together then they all can enjoy the work done by the others.(After auditing it themselves of course). You don't have at least a periferal grasp of how OSS work, right?
- RustyTaco
...spelling of it, either."
I am for the complete Trantorization of Earth.
I never took a course in bug prevention (or detection -- that would be a nice course!) I don't even remember a course that offered that even as a unit. Of course, I took comp sci in the mid 80's.
The question is: Is the degree to turn you into a programmer or just someone who understands computer theory?
I am for the complete Trantorization of Earth.
I have read elsewhere that most technology in general takes about 20 years to reach mainstream usage
But writing software isn't like following a recipe. The software doesn't mature on its own -- timing is NOT everything -- its not even like making up a batch of wort.
We all know about the mythical man-month.....but perhaps if more TESTERS were thrown at the software, commercialware would benefit from the same "release early, release often" strategy that FS/OSS has been enjoying.
Software isn't about engineering either. We do not build software the same way we build cars, bridges, and skyscrapers.
A much better analogy is writing a symphony and performing it with an orchestra -- it takes many many iterations to write it so it sounds good, and then practice practice practice putting the people together to make them play well.
It can be done, but again, imagine 'engineering' a building the same way a muscian composes.
And that is why, IMHO, software is more about an ART form, a creative expression, than it is about laying down a circuit board.
CPU's only have to detect the overrun error -- only software can give you the Blue Screen of Death!
Old age and treachery almost always overcome youth and skill.
But the calculator *still* can't do squares.
--
Two witches watched two watches.
--
Two witches watched two watches.
Which witch watched which watch?
Actually, I think that KDE's text editor is similar to notepad.
Just a shell around the text box widget.
It's really trivial to make a notepad clone.
--
Two witches watched two watches.
--
Two witches watched two watches.
Which witch watched which watch?
One of the biggest reasons I don't often use Word outside the office, is that it's basically gone from being a very useful word processor, to this incredibly huge, complex, 16-functions in one program.
Then again, I still miss edit.com :)
Endless arguments over trivial contradictions in books written by ignorant savages to explain thunder in the dark.
Endless arguments over trivial contradictions in books written by ignorant savages to explain thunder in the dark.
Beause Windows is the razor and Office is the razor blades. Notepad and Wordpad are in there to annoy you into buying Office. Check the retail price of Office($580) vs the retail price of Windows ($310). Micrsoft doesn't announce its profits by division or product, but I bet Applications makes more money than Operating Systems.
www.lucernesys.comHorizon: Calendar-based personal finance
Sorry, but who is going to be interested in coding a boring, routine, business application like that. Certainly not me. I do shit like that all day at work. I imagine it's exactly the same for most open source guys.
"If Stupidity got us into this mess, then why can't it get us out?" - Will Rogers
That's all
"If Stupidity got us into this mess, then why can't it get us out?" - Will Rogers
Sharing source code with other developers is not the same as opening the source code to the whole world and relinquishing your copyright.I know how _most_ OSS works.However, from your post I guess you must have meant some other kind of OSS.
"If Stupidity got us into this mess, then why can't it get us out?" - Will Rogers
We use JPF for the backend, but we do some optimization stuff like code slicing and abstraction. Throwing out the whole Java program will jam out JPF, since it will take a lot of memory. Check out our publications.
This is still academic research and is amazing since you can reduce the state space dramatically (from four billions to two or four states) and weed out the irrelevant code to the properties (like printing out results).
--
Error 500: Internal sig error
No, it's not the case. The problem is that during specification phase, you usually pin out the purpose of certain methods -- which can be _robustly_ expressed in terms of logical language. And then, you translate it into the code. Often times, the intended translation is wrong, and thus bugs occur.
Note that the code generation tools *cannot* generate the code out of a specification. For example:
pre: arr != null
post: for (i = 1; i
This example states out the requirements for a sorting method. How can code generation tool produce a code to satisfy that constraints? Meanwhile, you have the freedom to implement the sorting code with *any* algorithm as long as it satisfy the constraints: whether it be bubble sort or quick sort, or whatever. Thus, this specification language provides a good way of abstraction.
Not only that: Our tool can detect deadlock automatically. How can code generation tool do that?
--
Error 500: Internal sig error
I am working for a research group that develops a tool for checking software *automatically*. Yes, you read it right. It's not only against syntactical error, but also logical error. This was previously intractable and infeasible task as the scientist proves that nobody ever breaks the Turing machine. But, we've got a way to get around with it.
The catch is you have to specify the expected properties of your program in terms of logical language (yes, and this is very hard sometimes). If you stated the properties correctly, then our tool is able to detect violations against the properties. And, no, it's not those lousy tools that you've heard about ten years ago (maybe from Compaq or ISU), but this is a ground breaking new tool. Check it out. You can even download the tool too (but read this message thoroughly first).
About the properties, our research group has successfully identify 92% of all patterns of all logic in programming. Thus, rather than inventing the logic language your own, you can rather use our template. Click here for the patterns.
Our tool is still very very buggy and limited. It currently checks a subset of Java. Syntactically correct Java can be fed in, but there are (a lot of) features we won't consider yet as this will require more research, like: Object relations, array abstractions, exceptions, and so on.
When our research is mature enough, the whole software development world will be revolutionized.
--
Error 500: Internal sig error
ConTEXT is also a very good editor for Windoze. Has support for most of the popular languages (C++, Java, Perl, Python, Fortran) has macros, and other nice options. And its FREE! Check their web site
It seems the hero is misunderstood again - Marillion
Software is not a machined product that can be scheduled and delivered in a patternistic way. Software can range from an enterprise resources manager to a digital media editor to a word processor to a web page. It's ridiculous to say that "good software takes 10 years to write." Wouldn't that be overkill for Solitaire II? I agree that time is important in the development process, that throwing huge numbers of people on an assignment is not necessarily the best way to approach things, but there is no number that can be applied to all software on how long it should take to develop. Companies should (probably never will, but should) release software packages when they are ready, not when they are due. That may not sound economical, but it would boost consumer confidence, and it would make for less cost in the realm of going back and fixing things overlooked.
One other thing, computers supposedly are out-dated in what, 18, 24 months? That means that in 10 years, you will go through 5 to 7 cycles of computers going obsolete. How in the world could a 10 year development process be viable then?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ now you know
SoF2, Return to Wolfenstein, and Medal of Honor use the Quake 3 engine. Don't insult anyone's intelligence by expecting us to think it's the same as the original.
For Onion2k: MoH is not a port of the Playstation game, it just has the same setting and brand name.
My IP is 192.168.1.100 Hack it if you want.
Things you should never do, part 1
Thank you for that link. I wish I had a nickel for every me-too GPL app that boasted a complete rewrite. How is this supposed to impress me? Rewrites only make it easier for programmers who are too lazy to understand someone else's code, and too proud to believe that their own code might be missing something important. These are not the same as Larry Wall's virtues of Laziness and Hubris. Patchy old apps like sendmail, bind, and wu-ftpd persist because they are mature. If they seem buggy, it is partly because they've had lots of users finding bugs for several years. The software matures through widespread use, and the cycle continues.
When does it stop being refactoring and start being a re-write?
I think it's when programmers abandon the goal of keeping the existing code working. Refactoring extends the life of code by altering its internals incrementally. A rewrite rejects the old code and hopes that the new code will be better. It's like the difference between working things out with one's partner and breaking up.
I worked on a project for a client who had an inventory database which they allowed public web users to search. The original code was buggy and butt-ugly, written in Oracle Pro*C by someone who seemed more comfortable with VB. Its second maintainer courageously but carefully replaced a too-clever finite state machine with a simpler way to build the SQL where-clause. This move alone extended the life of that code by three years. Other maintainers continued the cleanup and enhancement process.
Another programmer decided that the only way to add a certain feature was a ground-up rewrite. He constructed a masterpiece of orthogonality based on embedded systems tweak idioms and the Blob antipattern. It had the new feature, but it also had new bugs. When the author left, no one else could understand it, so it got very few new features after that.
Guess what? Both programs are still in use.
Don't forget that in the Win98 version of Notepad you can't search for text.
What idiocy.
Ackk... I meant "Search and Replace".
Sure you can search, but you can't replace. It's in the WinNT notepad, and I swear it was in the Win95/3.1 notepad. But not Win98.
A quote (on program desings) from P.Brooks: There is no silver bullet :
Whereas the difference between poor conceptual designs and good ones may lie in the soundness of design method, the difference between good designs and great ones surely does not. Great designs come from great designers.I wonder of which kind of software products they made their conclusions... ;)
please proff read !
yes, notepad has been around for 10 years and it still sucks. Hell I still can't open large text files with it. No shortcut keys? What is with that??? And yes Microsoft still does spend the time with each new windows release to update the "About" dialog and change the copy right info. Well admittedly notepad had a MAJOR upgrade with windows 98 when they allowed you to do something as revolutionary as change the freaking font.
This from the company that is supposed to innovate so much...
Indeed too bad he didn't say much about OSS, because it has quite a different developement strategy, owing to it not costing anything while being developed. There are more releases and thus more user feedback.
;-), submitting talkback reports and bug reports now and then, and with version 0.9.2 Mozilla is really becoming a serious alternative for, well, any other browser I know of, and is, in my opinion, only second to (and that only slightly) Explorer. So what's he laughing about?
...
In that light, I don't understand his comments about Mozilla. For one, he says he's making fun of them because they haven't released after four years of development, for another he's saying that of the ten years you supposedly need to develop good software, eight should be with user feedback.
So? I've been crashing with the mozilla team for over a year now
---
Living is a way of life
---
"The chances of a demonic possession spreading are remote -- relax."
I believe that the Linux kernel itself is just entering its tenth year of development plus or minus a few months. I suppose that that would finally make it "good" software to this guy.
Of course the GNU utilities that are packaged with virtually every distribution of Linux have been under development for far longer, as I understand.
Since just over ten years have passed we should use this (ex?) Microsoft employee's justifications to point out that Linux would thus be good software. We can then use something that came from the mindset of Microsoft's culture against itself.
Of course the whole thing would probably back-fire. Since us open source software people aint smart enough to know that most Microsoft products have been along longer than ten years.
Microsoft would still be on top claiming, "While it is true that Linux, the virus, has been developed by crackers for over ten years. We have had teams of professional coders working on our products for more than 10 years. Some products have even been under development since the early 80's!"
--
.sig seperator
--
If you ignore the other uses of a tool, does that make the tool less useful, or you less useful?
I work in the medical practice management business. A group of Docs that I consult with have their own PM app suite that they had written in house. Its 14 years old, and has gone through 2 major re-writes. It ddn't take 10 years to produce good workable software, but it continues to take development to refine it and add features that the staff need to transition to an office model that uses less paper. It started as a DOS program and evolved into several DOS sessions that could be task switched under Windows 3.1, then 95. Now the current version is all Windows (on the desktop, we run extensive Linux support on all the servers). They have had a full time programmer on staff for 14 years with no end in sight. The current thrust is to make the medical records available to the Docs on the web through a browser interface. The cost to develop it has all been paid by 1 clinic, and I estimate that they have ~$1 million tied up in the coding over the life of the project.
... Visual Basic itself is now 10 years old!
I went to USC, and remember talking to some CS friends from UCLA. Appearantly, they are only required to take 1 EE class as part of the curriculum. I had to take 2 years worth of EE classes at SC for my CS degree. U of Oregon doesn't even have an engineering school, so their CS program is all fscked up... (wierd, since at SC, the CS program is in the School of Engineering). I was helping a CS friend register in Oregon State, and I remember how shocked I was, that the classes they are required to take as juniors, were the same classes I took as a freshmen. (They have to take far more "liberal arts" classes then I did. They didn't really get into core classes till junior year. I only had to take a handful of "Liberal Arts" courses, and so had to take Core CS classes from day 1. I even looked at the syllabus, and was dissapointed in the simplicity of much of the stuff. And about two months back, my boss wanted me to interview a possible candidate from a school around here with a CS degree, and he didn't even know the 7 layer OSI model, and couldn't tell me the different threading models... Jeez, what are they teaching there? Anyways, back to our regularly scheduled program.... (Hope I didn't offend anyone out there...)
What does Moore's Law have to do with software? Moore's law just says that about every year, the number of transistors you can fit in a chip will double. He changed it in 1995, to say about every two years. 18 months to be exact. And he originally said this in 1965. And I do believe the software industry existed before microsoft entered the picture. See his bio here
Thanks, I get it now.... However: Would this make sense too: Computers got faster, and thus software became more bloated and innefficient due to lazy coding practices, since the performance of the computer will make up for it, so the end-user won't notice. A few revisions later, and the software is realized to be a POS and must be rewritten, faster processor or no.... :)
Hardware...We didn't care much about plug n play in DOS because all we had was ISA and ISA PnP sucked anyways, (setting jumpers rules). We didn't care about USB support in Linux until we had USB devices. We couldn't have all those features in Excel 10 years ago because it would have taken up too much RAM/cpu time/disk space. There are many more limiting factors than just how long it takes to write and debug the code. In 5 more years we'll be saying, "Do you remember when we ran 2.4.6 with no support for [insert new peripheral bus here], wow we've come a long way, it really takes 15 years to write good software!"
"Karma can only be portioned out by the cosmos." -Homer Simpson
So THAT'S why the graphics in SNOOD appear so outdated. I guess the creator had worked on it for 10 years getting it just right. Can't wait for Snood 2, coming July, 2011.
A course in quality coding...god, I would love that. I had a course a year or two ago that taught programming language concepts. Basically it taught you how to develop your own programming language. It was really usefull in understanding the optimization and the like. The professor even went into programming ethics...really cool. That's about as close as they got though.
--
"I strongly urge both the faint of heart and the faint of butt to leave the room at this time."
- Strong Bad
Well, if you look at what ID produced, they got it right with Wolfenstein, Doom & Quake.
3 times people loved it , 3 times it never crashed on me. 3 Times they did it in less then 10 years.
My other sig is Funny.