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."
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.
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.
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.
--
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)
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.
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
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.
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.
No. Every time you haven't been bitten, you haven't notice.
You're 100% right of course.
You may also be right about the environments (I work for a shop that creates and sells products, not customer-specific). I have worked in an IT-type shop, but even there speed was a factor, but not to the minute. I also suspect we're talking about differing degrees of bad code. I've worked with web designers cum javascripters, vb guys writing transactional queue systems, java people pretending they're not just building web applets, x86 ASM people reinventing the wheel (and the road), and c++ people coding to Win32. You can bet your ass their levels of checks and errors were vastly different. I've worked with lots and lots of new programmers, too. I'll say this though: If you can write an app in 1 day and fix its problems a month later in 20 minutes, the code must either be trivial or use very high-quality tested existing chunks (which reinforces my point).
You're doing precisely what I'm talking about. I don't mean checking every damn variable on every use. I'm talking about checking the parameters as they come in, making sure you haven't overflowed your buffers, and making sure you haven't wrapped your integers. You're at least providing the high-level trap. I'm talking about programmers that don't do that :) We're not in as much disagreement as you think.
It isn't always worth it.
It is to me. That one thing or other I've skipped in the past always comes back to bite me. I've never had a boss that pressured me on time once they saw that my code didn't break the thing 6 months later when we were all struggling to fix a few pages that the coder didn't take the time to do it right. Also, that occassional wundercode I've pulled off pretty much buys me whatever time I ask for. I guess it's the old saying : Fast, Good, Cheap; pick any two. My way certainly isn't the only way, but I can never pick the check to leave out, because I can't always conceive what the person that uses my code will do with it.
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.
And that's why i always build the checks in first. The time saved up front has never, ever, been worth it.
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.
And thus one of my points. They weren't doing quality work. If they were, the burn would have been much smaller or non-existent.
I understand what you're saying, though. Throw-away code can be written with throw-away techniques. I'm just particularly bad at knowing in advance what's going to be throw-away code.
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.
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.
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
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
"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.
------
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.
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.
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
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
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?
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....
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.
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.
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
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"?
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??
---
---
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
- 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
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.
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
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
Actually I believe that he's really refering to what software revision codes actually mean.
credo quia absurdum
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
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
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.
Well, that's an interesting misinterpretation, but the fact is that Java in a browser cannot be expected to be up to date, anyway. Java is a portable virtual machine that used to pack an incredible punch and have a lot of power, even in its most compact version. I've written programs for Java 1.0 that look gangbusters and run fast enough that older machines can keep up with their HotSpot JIT brethern. It took a lot of effort, and required a lot of care, but you COULD make Java run everywhere (no matter what the naysayers, like our braindead IT department, will tell you). But now that MS isn't including Java with their browser, Java's just another plug-in that consumers visiting your site might not have. And the java plugin is currently only available as part of a 5 meg J2RE download that is decidededly not for the average joe. Hell, our QA department has fscked up installs on three boxes! At the same time, I can't get rid of this damn Comet Cursor, the most idiotic, useless and proprietary software around. In fact, unless something is done to ease the Java gap that will begin to widen when XP hits the CompUSAs and Warez Servers of the world, we, the development community, will have to consign ourselves to a world where the most powerful cross browser, cross platform control is Flash 4.
*Shudder*.
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
NT's kernel is actually quite tiny.
Most of the code is *not* on the kernel, you know.
Put Linux, X, KDE/GNOME, Bonobo, J2EE implementation, TCP/IP, Apache, sendmail, together, how many LOC does this come out?
That is (very roughly) what NT has.
--
Two witches watched two watches.
--
Two witches watched two watches.
Which witch watched which watch?
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
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
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.
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 !
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 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.
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.