Spolsky Stands Firm on Linux on the Desktop
erlando writes: "SoftwareMarketSolution is running an interview with Joel Spolsky (from JoelOnSoftware) in which he responds to this earlier thread here on Slashdot. In short: He defends his position and makes some interesting remarks on Linux and the desktop."
I really impresses me how slashdot is able to change at least some parts of the only world. not only with slashdotting other servers ;), but although no big know firm is behind slashdot people from the whole IT listen on slashdot, as it's their own voice.
...
really impressive what's done here
b4n
why are newer posts modded up, while older with same content are classified as redundant?
JOEL:It may be true for the software that Eick evaluated. It's not true for the software that I've written, because I tend to refactor and clean things up regularly.
His argument is that code doesn't rust however he argues it by saying that he "refactors and cleans things up regularly". Perhaps he needs to think about that one a little more.
This article was not too bad, but to me he almost bites his one tail a couple of times.
In the discussion on software decay he talks about the way he is always tweaking things. If the code was good to begin with, why play with it?
The one thing I do like is how the article brings up the point that you HAVE got to have a good medium between sales and techies or else you either get bogged down by feature creap from the sales department or else you can't sale jack because the customer was bored out of their skull with the too detailed presentation! Been there and done that... The sales department would drag me out (on the phone or otherwise) when they needed to know if we could produce it, but other than that I stayed in my cave.
BWP
I found this quote (from a Slashdotter) quite funny:
I was in a company that was run by technical people, but when the company ran into financial trouble, decided to become more "market oriented".
They hired a bunch of professional executives, marketing people, etc. Marketing was put in charge of determining product direction, as they knew what the customer wanted.
Well it turned out that the technical people were in fact smarter than the marketing and PR guys, who seemed to think that software could be created by committees and meetings and lots of vision. The company sank like a rock."
(S)He blames the downfall of the company on the marketing people, and yet had stated earlier that they were already in trouble anyway. Sounds to me like the company was doomed irrespective of the marketdroids.
slashdotters are not exactly famous for reading the things they are commenting on
Oh well...
free the mallocs!
I doubt that it will be enough for WINE developers to catch up with Win95. No one uses the out-of-the-box version of Win95 anymore, do they? There's all sorts of updates you need to get your software running and, yes, those updates include additions/changes to the API.
News and bla for computer musicians: http://lomechanik.net/
From the article:
"Too many of my execs (except, for some reason, the VP of Development) are engineers. This leads to a whole host of problems: Many of them tend think they're smarter than people in non-engineering roles. Pursuant to this, they don't think PR and marketing and sales are "hard" or really even "important". Again after #1, they're always right when in disagreement with marketing or sales guys. Most of them haven't developed in a decade+, so now they know just enough to be dangerous -- make micromanaging decisions about detailed subjects things they don't understand well enough, chase unnecessarily after bleeding edge tech, etc. Fail to understand that not everyone wants to always work 14 hours a day. Laugh off meetings, so that eventually nobody in the company knows what's going on.
As a result, nobody's heard of us (no marketing budget, no trade shows, no nothing) and nobody's buying our products (engineers tend to make lousy sales guys; despite what they might believe, nobody wants to listen to a 3-hour ridiculously detailed presentation on your product)."
Dude, lets paint the whole frigging "army" of engineers that have moved into management with one broad paint stroke. How about MANAGING them, rather than bitching like this. Don't like what they are doing? Get rid of them. Bring in someone who gets the whole picture. Don't bitch, you make the situation no better, AND you are publicly critizing them. You go boy.
Sent from your iPad.
Joel says he's been programming for 20 years. Is any of his code available for public review? I looked at his web page briefly but nothing jumped out at me.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries.
free the mallocs!
Most software projects are made by teams and as in any team activity, its the weakest and strongest links that will determine the success of the team.
Take any game like hockey or basketball, many teams have exceptional players but they don't win championships. Those that do play with teamwork on their minds that's why whey get to win.
Blaming marketing or second-rate programmers is not the way to go it should be a team effort wo win because not many games are played solo like tennis or golf. Even those games require seconds that provide valuable support to the player.
Return the bells of Balangiga.
"Bloatware isn't actually costing you anything"!? How about more time to load your application and a significantly higher probability of it crashing as the code becomes more bloated and less maintainable?
There is a gigantic chasm of a difference between "bloatware" of information, and bloatware of software features.
Joel seems to admire himself for doing just that, as when he talks about why his own code doesn't decay (he keeps freshening it up, you see. In other words, rewriting it over time).
This is easier to do when it's just his code, versus a large set that more than one person maintaining it over a decade (like the evaluated software that was foudn to 'decay').
Also, Joel stated that the problems with Outlook were with "1%" of the code, but that is not the point. The slashdot comment was not commenting on the quality of Outlook's code, but on the flaws inherent in the design of the application (such as executing untrusted software and not following mime type information when passing data to the OS). I think that the post was talking about a redesign, which would mean a rewrite, and Joel dodged that one (or just didn't understand it). Fixing bugs in good features is different from tossing bad features.
I know this may come as a shocker, but Joel may not necessary be right all the time. But I have followed some of his work for a few years, and he defiently is qualified to say the things he says. So don't blow him off.
We have discovered the screams and yells of people whose favorite little fillip is now gone from their favorite product or service can make a mighty clamor that belies their 1% status. But that's real world thinking.
If they feel
In short: He defends his position and makes some interesting remarks on Linux and the desktop.
WHAT IS HIS POSITION?
I realize links are provided that can be scrutinized to determine this, but there is a reason a space for 'story summary' is provided...
"And like that
"Half the time when I go into a function to fix a little bug, I figure out a cleaner way to rewrite the whole function, so over time it gets better and better. "
So it's not that his code rots with time
Sounds like he could save quite a bit of time and maintanence nightmare if he just invested the effort to write it well the first time. It may sound negative, but this guy is a constant wealth of contradictions. He doesn't advocate re-writes of the product, but 'half the time' re-writes functions? Doesn't he know that the function *is* a product?
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
I mean, really. It's not like slashdot prevents him from responding to these comments directly! But, no instead, he responds in a nice controlled environment of a follup interview! C'mon, Joel. Don't trust your point of view enough to defend it in person?
Key to financial independence: Spend less than you earn. Save and invest the difference. Do it for a long time.
True, scrapping and re-creating Outlook is certainly not cost-effective for the Microsoft.
Unfortunately the current Outlook mess is not very cost effective for their customers, just hit by the worm-du-jour.
So I guess it just depends from whose perspective you define "cost-effectiveness".
ich bin der musikant
mit taschenrechner in der hand
kraftwerk
Once every open-sourcer has seen their marriage break up by installing Linux on their non-technical spouse's computer, they'll finally understand that, no, most people don't prefer command lines.
Non-technical Spouse: "No, honey, the reason I had an affair with the baby-sitter was because you installed Slackware."
Joel Spolsky makes good points and his articles are usually excellent reading, regardless if you agree with him or not --I usually do. However, I think he over-generalizes his conclusions based on his own experience --selling consumer-oriented, "shrink-wrap" software. He leaves the entire enterprise software world out of his viewpoint and some of his conclusions don't make sense in that sphere.
For example, I tend to agree that "software doesn't rust". But that holds if your customer is Joe Q Public; it doesn't (usually) hold for enterprises. E.g. his Net Present Value calculation in the article doesn't take into account opportunity cost, i.e. the competitive advantage a company would gain if it upgraded their old F77 program into a faster one, with more mindshare (easier to lure/train IT staff) and more features that would increase productivity and lower costs.
Again, I do usually agree with Joel and read his essays religiously, but I wish he opened his worldview to the rest of the software industry.
Or, here's an argument that even the youngest slashdotters will understand. The WWW is bloatware. Finding things is impossible because there's so much stuff out there. Think how much hard drive space is wasted on all kinds of web pages that only .00000000001% of the world ever reads. Since the vast majority of people only go to Yahoo, Ebay, and MSN, wouldn't the WWW be better if it only had Yahoo, Ebay, and MSN? It would be much more "optimized."
One difference is I don't run the entire WWW on my computer.
"And like that
so in the first 2 questions we have:
a) My code doesn't decay because I rewrite it (duh, code decay happens to un-maintaned code. same as unmaintained steel rusts)
b) even though I rewrite my functions from the ground up, software doesn't need to be rewritten from the ground up
then in the question on bloatware he moves from talking about code to talking about content -- different subjects! adding 10,000 articles to an encylopedia makes it heavier -- it doesn't make the encyclopedia go up in flames because they were written poorly. or give you the flu because of poor security.
can you name any of those API changes?
-c
I have discovered a truly remarkable proof which this margin is too small to contain.
Often the marketing and sales guys really are stupid, and any engineer with half a clue could do a better job. The problem is that people with half a clue don't want to do a job that's a brain dead as that of marketing and sales. So most companies are stuck with morons doing that job.
People rise to their level of incometence.
Hmm...There's nothing preventing any company out there using slashdot comments as interview material for the entire content of their site, right?
It feels weird unknowingly providing content for a for-profit site I don't (often) visit or care about, but I suppose my comments are public-domain once I've posted them here?
I know it doesn't fit in with the copyleft thing, but shouldn't they at least have to ask before using slashdot content for their own means?
You have what I would call a superiority complex. I would say that is completely normal for a technically inclined or computer competant person. One thing you dont have, which is quite evident in your last statement, is a simple respect for your peers.
Now, I may not directly consider you a peer, for the simple fact that we differ on a number of simple comparitive issues. You are stuck in the past. Since you will most definitely ask for some type of proof of this, allow me to explain.
In your responce to the question regarding the recode of a fortran program, you responded:
Do you hold on to an old 286, even though it could easily crash purely because of its old-hardware, just because it works? Do you hold on to a 1982 Toyota Corolla, just because it works? No. For the safety of you data, and for the safty of your family, you go and get new stuff.
Of course, your responce will be well, programs dont degrade with time. I say they do. Allow me to elaborate once again.
I've worked on a number of programming projects. One of which works perfectly, but we are still planning a complete rewrite of. For a matter of context, I'll involve the name. The Bahamut IRCd happens to be presently supporting over 130,000 simultanious connections between about 30 servers. It will probably be quite good until well over 200,000 connections. But we're rewriting it anyway. Because we've learned one thing the hard way. Dont wait for problems to come to you. Just because your software works fine with 10,000 users, doesnt mean its going to scale to 11,000 users.
Programming in *any* arena is not cut and dry. Programs are *never* "perfect", as you as a software developer should know. If you've worked on any project of any reasonable size, then you realize that there is a point where picking through old code to improve software isnt worth your time, and you can simply rewrite the whole damn thing to do what you want and accually have spent less time doing it.
.
Spolsky asserts that Linux won't be a player in the desktop market until it can run Windows applications. I find this a very puzzling assertion--one I've seen elsewhere. Certainly the case of OS/2 clearly refutes this notion: OS/2 could run Windows applications, could even run them better than Windows itself, but then, why run OS/2 when you could just run Windows, and (more importantly) why _develop_ for OS/2 when by developing for Windows you could cover both bases.
I spot a flaw in my analogy, which is that OS/2 was a commercial competitor, while Linux is "free" and therefore more attractive.
hyacinthus.
That almost all new apps are *tested* on the plain vanilla Windows95. So if WINE gets to that level, all of those tested apps will work fine on WINE.
He's not saying that there are a ton of people out there using unmodified Win95, just that the vast majority of Windows programmers program with that possibility in mind.
Joel: First of all, yes, you should hold onto a program in FORTRAN "just because it works."
So since you have no fortran programers, and probably can't find a good one, what happens when your pay-roll program breaks, not have payroll for 4 months until you can get another written?
"The secret of success is to know something nobody else knows." -Aristotle Onassis
Still same old Jole debating a poitn and proving that his argument is groundless in the same paragraph...
It slike the Certification of winNT as secure by goveernment standards
winNT coudl not pass the test due to its weird unsecure DLL version behavior (ie all dlld versions have same name and file path)
So governemtn decided to change the test to allow winNT to pass..
Joel is good exampel of Why MS's current Security Initiative will FAIL!
Don't Tread on OpenSource
Once every open-sourcer has seen their marriage break up by installing Linux on their non-technical spouse's computer, they'll finally understand that, no, most people don't prefer command lines.
My S.O. is not a computer geek, but is fairly good with computers. She likes working at home on Linux, and complains regularly about MS-Win2k at work. She says, "It won't let me do anything."
Installing Linux hasn't destroyed my marriage. In fact, since I've installed Linux, she's agreed to marry me.
Microsoft is to software what Budweiser is to beer.
Optimization is not merely about reducing run times or footprint, it also is about choosing the right design and architecture. If you have a program where a given feature is used >1% of the time by >1% of the users and you keep it in new version, you have "non-optimized" code. If that was a key function that some people use sometimes, then it is a good feature, no one is going to pay 200$ for MS Word unless it does something that notepad doesn't which is free, if you go cutting features out of your program to make it Optimized then you could end up with completely optimized version of ms word, that looks alot like Notepad
"The secret of success is to know something nobody else knows." -Aristotle Onassis
That you didn't seem to perceive. He was saying that removing or denying even some of the smallest features is not a good thing.
I don't see how your argument can counter-attack his. Sure, you don't run the www on your computer. But still, you 'run' the www when you browse the internet. Doesn't matter where the features are located, the point is somewhere, somehow, someone might need.
Buy a Nintendo DS Lite
I also think that Win95 compatibility - but 100% - would be enough for most non-games.
Some programmers still do write closed source software, remember?
honestly think that Sun's Solaris platform does not have much of a future. They will see their market share shrinking to the rarefied world of mainframe-class machines while Linux steadily erodes from below. And if Sun abandons Solaris to start selling Linux boxes, they're just making commodity boxes, which doesn't justify Sun's current cost structure.
I thought sun was stoping the i386 version of solaris to only make it for sparc, not make i386 workstations with linux installed.
"The secret of success is to know something nobody else knows." -Aristotle Onassis
Regarding rewriting software from the ground up. I agree there are circumstances where keeping old code and updaying it is best. But I can't agree that it always is the best solution. If you build on a bad foundation then your code will not naturally be able to handle innovations of the future, and so adding new portions will be slow and painful. Redesigning at a certain point when the end goal is in mind may reduce the total programming time since a good architecture should lend itself to speedy programming.
>Or, here's an argument that even the youngest slashdotters will understand. .00000000001% of the world ever reads. Since the vast
>The WWW is bloatware. Finding things is impossible because there's so much
>stuff out there. Think how much hard drive space is wasted on all kinds of
>web pages that only
>majority of people only go to Yahoo, Ebay, and MSN, wouldn't the WWW be better
>if it only had Yahoo, Ebay, and MSN? It would be much more "optimized."
This is a terrible example. The internet is a portal to web pages, it is not the webpages itself. Yahoo is a portal by which people connect to webpages. As for Ebay and MSN, if we just had them the internet would be extremely boring. I doubt that they account for the 99.99999999999% webhits that he's talking about. This argument is like saying Microsoft should only offer Windows XP, Microsoft Office, and a file browser (but without the hard disk or the files to browse). Anything else is bloatware. He missed the point. The argument of extra features that are used by 0.1% is the equivalent of a mouse inverter for the desktop, or some other trivial feature that you don't include in the OS, but a rare few might find useful. Removing such features, or making them available for download as extra features, is closer to the argument. I don't enjoy the way he patronises us with this example when it is completely irrelevant.
>The good news is that a lot of stuff I write about UI is starting to have an
>impact on the Gnome and KDE people. There's a lot more appreciation for the
>value of good UI than there used to be in the Linux community. Once every
>open-sourcer has seen their marriage break up by installing Linux on their
>non-technical spouse's computer, they'll finally understand that, no, most
>people don't prefer command lines.
Yeah, that's why we hear so many stories of Grandma's, parent's and wives who have linux installed on their computer and exclaim "This is so much easier to use!". Does he have any evidence of this, or is he just presuming that Linux is hopeless on the desktop? Oh wait, he's talking about the commandline. I guess you'd have to be pretty confident in your Grandparent's computing abilities to install linux without X+KDE/Gnome.
> SMS: Another interesting point was raised in reference to bloatware... Do you ...The WWW is bloatware. Finding things is impossible because there's so .00000000001% of the world ever reads. Since the vast majority of
> think a product like Microsoft Word would benefit by having every feature that is
> used by 1% or less of the installed base removed from the product?
>
> Joel:
> much stuff out there. Think how much hard drive space is wasted on all kinds of web
> pages that only
> people only go to Yahoo, Ebay, and MSN, wouldn't the WWW be better if it only had
> Yahoo, Ebay, and MSN? It would be much more "optimized."
With Joel from Microsoft at the helm the entire contents of the Internet would reside on a single loooooong web page.
The oposite of MS-Bloatware (TM) is not lack of features. The opposite is UN*X's lean tool approach. Use tools for one function or a small set of tightly related functions. Create a screwdriver to screw screws, a hammer to nail nails. You do not create a Rube Goldberg machine with a flight simulator.
___
Anonymity is freedom!
Win95 is the common denominator(sp?) for the windows API, in other words the following versions are merely an extension of the seven year old spec. Respectivley, once WINE is fit with the 95 API, it should be able to run almost all Windows applications as they all are tested to work with Win95.
you can pick your friends,
you can pick your nose,
you can't however,
pick your friends' nose.
"Sounds like he could save quite a bit of time and maintanence nightmare if he just invested the effort to write it well the first time."
You people seem to be going out of your way to miss Joel's point on this.
Routine code maintenance (ie, refactoring code, adding small improvements, etc.) is a standard part of the development cycle that every good software team follows. Doing so does not mean that the product wasn't written well the first time. (You Linux people should know that better than any of us, but I digress...)
Code maintenance is not the same thing as a complete code rewrite, which is what Joel is arguing against. Incidentally, lack of proper code maintenance over time will likely result in the unwieldy mess that Stephen Eick describes.
So does code rust? Of course not. Does poorly-developed, unmaintained code rust? Maybe, but that still doesn't mean that everything should be rewritten from scratch.
Joel's says that there's never a reason to rewrite something that works... What a load of crap. There are reasons to redo things that work, and that involves a little foresight. If a system becomes difficult to manage, expensive, slow, etc are all reasons to replace it. As a system ages it starts to cost more money to maintain it. Sure, it costs a lot of money to implement and develop a new system but in the long run it's gonna last many more years with out the high maintence costs that you have to support a 'legacy' system. You will also be able to add new features that add productivity to the system that wasn't possible before all the while saving money. Let's say that I have a order processing system that while still can do the job, is slow, unreliable at best, and often needs manpower to keep things running smoothly. This is an ideal system to replace because you will be able to add reliability, reduce manpower, increase system performance, and add new features such as checking system status via the web or sending a email/page to a cellphone when something goes wrong. Technology changes for a reason, we shouldn't limit ourselves to staying inside the rut of the last truck.
Joel thinks that rewriting things is a bad idea because it loses information embedded in the old code (original anti-rewrite essay, search for "Nancy" to find a good example) and then says in the interview:
This is the same guy who wrote Yet Another Bug Tracking System while observing that such things were a dime a dozen, and then went on to write Yet Another Content Management System without defining its target market, even as he criticized others for such undirected development. Apparently, Joel's quite comfortable stating commandments for others while living by different rules himself. His articles are unfailingly interesting, but should by no means be accepted as authoritative (as is true for anyone who spends more time on the pundit circuit than actually programming)
Slashdot - News for Herds. Stuff that Splatters.
Yes, Slashdot is a public forum, but posters still retain copyright on their comments, and if they're excerpted and posted in another public publication, attribution, or at least a hyperlink to the original comment in context strikes me as the proper (and legal) thing to do.
Perhaps it was felt that a single link to the thread holding all the comments was sufficient, but I tend to disagree.
You could've hired me.
Well, I guess that puts my reply to the "don't blow him off" guy in a new perspective.
I need to first state my bias: I'm with Joel on this one for 90% of the time. However for that mission critical, people's lives are at stake, other 10% I am with you. But let me generalize it and say you should have a back up plan. There is a risk that your system will fail in someway. How have you mitigated that risk? If you don't have a plan B you fail. Your company has chosen to re-write as part of plan B. That's great!
Now if your initial code design is modular enough, you don't have to re-write the whole thing. Yes, I understand that sometimes people code for performance and that involves highly hacked kernel c involving pointers to pointers to function pointers. But as long as you have a clear design methodology there is no reason to completey re-write.
The new version of an operating system doesn't have the queue device you relied on previously? (happened to me) Rewrite the queueing functionality, but leave the rest alone.
Now on to the comment of your software not scaling. Rewrite or no rewrite, if you software isn't DESIGNED to perform from the start, then no amount of rewriting/rebasing is going to help you out! You know what kind of performance a processor/os pairing will give you (becuase YOU baselined it yourself!), so you design around that.
If your first version wasn't designed with performance in mind, then you better be re-writing it!
In the future, I would want to not be isolated from my friends in the Space Station.
Sounds like he could save quite a bit of time and maintanence nightmare if he just invested the effort to write it well the first time.
Yes, software development would be a breeze if we could write perfect code the first time.
Joel was commenting about a study that indicates that software does "decay." In one old project, a lot files had to be touched for a simple change; then, after what amounts to a "refactoring," changes were more localized. after time, the old situation recurred, in which a lot of files had to be modified for a change.
Joel's reply (paraphrased) consisted of, "Well, perhaps for *that* study. But *my* code doesn't rot. I'm constantly refactoring it!" So he claims the study doesn't apply to his software, because he's constantly refactoring his code.
He needs either to read the questions before answering them, or get struck repeatedly with a Very Large Cluestick.
Microsoft is to software what Budweiser is to beer.
I could rant a bit about how wrong (or right) Joel is about lots of topics, but that would be a little redundant.
Instead, I would like to say thank you. Thanks, Joel, for writing about your opinions and experiences, the lessons you learned, what you did wrong. Thanks for taking the time to tell us. It doesn't matter if we agree with you or not. Thanks for trying to help, you centainly help me a lot.
I was going to respond with the same open-minded ness I had on the last article.. but after reading his comments... He leaves no doubt...
He has no clue and just likes to hear himself talk... another name for me to add to my wanna-be from microsoft list.
Please Joel, you make yourself sound less credible with the way you talk.. and please stop interjecting things you make up for shock value, this isn't morning radio.. sane people don't leave their spouse over linux, so stop the shock-jock act.. it just makes more of the community write you off as hack.
Do not look at laser with remaining good eye.
He reads Slashdot. What more proof do you need?
love is just extroverted narcissism
Greenspun Lite.
Or maybe heavy. Joel could stand to lose a few.
What he's saying is 'If I'm working on Foo.bar, and it's got 10 functions, if I'm in function 1, I might notice a better way to do what function 1 does, so I implement it. Better program.' What he's railing against is the huge mass of programmers who would say 'Because function 1 is broken, lets rewrite ALL 10 FUNCTIONS because we can.'
Vintage computer games and RPG books available. Email me if you're interested.
It's not true for the software that I've written, because I tend to refactor and clean things up regularly. Half the time when I go into a function to fix a little bug, I figure out a cleaner way to rewrite the whole function, so over time it gets better and better.
In other words, his code decays MUCH faster than anyone elses. Glad he doesn't work for me. At "half the time", that means he's costing any project 50% more in his time/dollar worth. Ouch!
Don't even talk to me about spending money replacing something that works.
No, he doesn't replace an application at one time, it does it over a period of time, one function at a time. LOL!
Well, most people with encyclopedias only look up 0.01% of the topics in the encyclopedia. But would you rather have the Encyclopedia Britannica or would you rather have a lightweight brochure containing the top 100 topics?
What? I thought they were asking about optimization and maintaining code that no one used?!?! Perhaps he answered a different question for Reader's Digest and was confused.
The good news is that a lot of stuff I write about UI is starting to have an impact on the Gnome and KDE people. There's a lot more appreciation for the value of good UI than there used to be in the Linux community. Once every open-sourcer has seen their marriage break up by installing Linux on their non-technical spouse's computer, they'll finally understand that, no, most people don't prefer command lines.
Hmmm....and I thought this was a process of evolution simply because neither KDE or GNOME can snap their fingers and have everything under the sky that makes everyone happy. Gosh, it's taken MS how many years and they still don't have it right. Suddenly this is all about you Joe? Ya, I'm sure the face of UI is changed because you're the only one that can understand how computers are used. Oh ya...I forgot...you're the only one with parents that use computers...
Well, I write code every day, and have done so for most of the last 20 years. I think this is pretty self evident if you read what I write on my site, but slashdotters are not exactly famous for reading the things they are commenting on!
Seems I read what you said and I must say, aside from your high opinion of your self, you don't seem to understand much else.
I liken the 'never rewrite' issue to MySQL. Yeah yeah, MySQL is cool and all and we all like it for interesting tasks and whatnot, but there are several glaring, fundamental problems with the database engine (filesystem buffered writes, inability to use more than one index on a query, no clustered indexes, crappy query optimizer etc.). In the spirit of object-oriented design, they said, "Well heck, we'll just allow different table types to be complied in and then we can avoid doing the hard work". In theory, this is interesting, but in practice, it is far less than they had hoped.
InnoDB doesn't store a count of rows, so select count( * ) from table now takes far, far longer to return a result. Most RDBMs' operate this way, but to a developer who hasn't experienced that before (since MyISAM/Gemini store a count in the table) it would be confusing and not entirely intuitive why this happens. Not only that, but since text/blob/etc. information is stored on the row (instead of off-row like, again, other RDBMs') users of textual data now may find the hard row-size limit of InnoDB a problem when working with large amounts of text data (like it used to be in PostGRES).
Gemini has their own sets of problems, some of which are due to MySQL's horrendous lock-manager (if such a thing exists). When you perform a table scan on a Gemini table, it appears that it will not escalate the table scan to a full table lock but instead dutifully lock each and every row (and it appears that it does not release the lock after it 'passes' the row either, only when the entire result set is dumped). In these sorts of cases, a table lock is far more efficient since you'll save the lock manager of maintaining count( * ) locks for your table. Also, since it is difficult to manage (if at all) the transaction log, deletions or modifications of many rows can cause it to choke on the massive amount of data in order to roll-back the transaction.
Now, I don't want to make this a "I Hate MySQL" post, but I think it illustrates the "Well we can just make these little incremental changes here or there, or maybe make it modular so that we can simply 'hack in' new features whenever we think them up!" fallacy that Joel seems to love to stick by. It hasn't worked for MySQL, and for sufficiently complex applications I don't think it would work there either. There comes a time in which you must say "Well shit, we did it wrong. And all our core functions are locked in the old, broken way of thinking. If we re-do the core functionality, then we can be more competitive, have a better product, etc." Are we asking them to start over from scratch? In most cases I think that would be a bad idea. Obviously the MySQL parsing engine (which determines if SQL statements are valid) is 'good enough'; there's no reason to reinvent the wheel. However their lock manger could use a good overhaul.
Or as Brooks said in The Mythical Man-Month "Plan to throw one away, you will anyway."
Thanks,
--
Matt
From the Article:
"Our interview was reported on at www.slashdot.org, a lively location on the web dedicated to expounding the joys of Open Source programming, Linux, UNIX, and anarchy (among other things)."
Open Source, Linux and Anarchy? Oh come on! I think we should "kill -9" anyone who believes that. Please share this post with all of your friends.
He is definitely a self-appointed 'elite' hacker. If you didn't graduate from an ivy league school, don't bother even talking to him, you don't exist.
Correct me if I'm wrong, but when I install, say, Office 2000 on my Win95 machine, doesn't it update many dll's that were part of the original OS installation? That being the case, is it really true to say that new software runs on Win95, or is it more accurate to say that each new app provides an incremental OS upgrade?
Nope, no sig
I guess you don't take his costumers are reviewers. Sure they don't look directly into code lines, but once they bought, if they are happy and recommend the product to friends, what better peer review do you want?
You can't look at this from just one perspective.
Buy a Nintendo DS Lite
Once every open-sourcer has seen their marriage break up by installing Linux on their non-technical spouse's computer, they'll finally understand that, no, most people don't prefer command lines.
/.'ers not reading the article they write about, while he's obviously guilty of exactly the same thing.
He's writing about Linux, but (obviously) has never used it (or, at least hasn't used it in the past 4 years.)
I installed Linux on my (non-technical) wife's computer.
She's able to work with it just fine - she can check her email, update her resume, surf the web, and balance our checkbook. She has never used the command line.
I installed Linux on my (non-technical) mother's computer.
She's able to work it just fine - she does email, works on the book she's writing, and comments about how much less it crashes now. She's never seen the command line either.
Joel is obviously an idiot. He complains about
command line != linux
Having apparently never worked on a team in the Real World and had a piece of code delivered that was so hideous that the only thing you could really do with it is have it taken out and shot. XP Practices can help you avoid having such a hideous piece of code delivered in the first place, but you'll have a had time convincing small shops to do pair programming.
I agree that what he suggests is XP-like, but it doesn't require pair programming. You can't make a 3 story house of cards into a full-sized brick house, no matter how hard you try - design is paramount to refactoring.
I think people get confused when they read about XP and think design is ignored and everything is done "as you go". It's definitely not! You still have to keep in mind where you are going, even though you are only implementing for the present. Not only does that enable you to refactor, but also cuts down the refactoring time itself.
Joel's code is inherently refactorable because he's used to writing like that - and used to refactoring. What Joel hasn't said is that you have to purposely make your code easily refactorable from the outset, otherwise you'll spend your whole life refactoring from one feature to another.
So take your hideous house of cards into the middle of the street and shoot it if you have to. Refactoring may just be a waste of your time if the design is not easily refactorable.
----- rL
I can edit my comment.
Buy a Nintendo DS Lite
I really have to disagree with that. Just because something works is not a good reason to continue using it. Especially with the circumstances he was commenting on.
Money is not the only factor here! Sure, spending money on replacing software that works might seem like a waste, but when you compare it to the benefits of the replacement, it doesn't seem so bad at all.
Benefits of a rewrite can include getting out of a code freeze, having a piece of software that is easily & readily maintainable, being able to offer better support or more functionality, I could go on. All these things need to be factored into replacing/rewriting a piece of software, and in my experience, usually those factors outweigh the cost of new development/product purchasing.
No one uses the out-of-the-box version of Win95 anymore, do they?
Two things about Win95:
1. Microsoft no longer supports Windows 95.
2. USB is not natively supported in the early versions of Win95 (and later versions are spotty, they get it right by Win98).
So on that level, Joel's arguments are flawed. Less and less people will be testing on Win95 because MS doesn't support it any more. The WIN baseline now starts at Win98.
Another thing: if you DO use Win95, do you test the off-the-CD version or the highly patched (practically Windows 98) version? Grey grey grey area, Joel.
----- rL
Sounds like he could save quite a bit of time and maintanence nightmare if he just invested the effort to write it well the first time.
r k thinking. If you only need your function to do one thing right now, only implement the one thing right now. No use making the function more complicated - you'll only 1) take more time to implement it and 2) make it more complex which adds opportunity for bugs and increased testing cases to handle.
This is counter to the XP get-it-out-the-door-with-the-minimum-amount-of-wo
Having minimally implemented functions also lets you have an almost-always exectuable codebase, which is important to XP.
When you see that the functionality NEEDS to be extended, you extend it. Not before. You can still make the design before you write in that code for the other 4 features, but holding off from coding and then refactoring them in later incrementally will make your testing and maintaining life a lot easier. Just keep in mind you are going to refactor if you want to make it easier to incorporate them in.
----- rL
You dance near to the issues, but what really needs to happen is for several OSS alternatives to Micro$soft wares to become popular on Windows. Once that happens, switching to Linux, *BSD, or whatever else might come down the pike becomes easy and logical (ie: 'We already use X, Y, and Z software, which run on this 'Linux' too, may as well have a more stable environment at a lower cost too').
MS does not have a monopoly because of Windows, they have a monopoly in spite of it.
-={(Astynax)}=-
"Darkness beyond Twilight"
I havent read the first article they refer to, but the linked-interview give you a pretty good idea about what it was about.
.00000000000000000000001% people that have a craving to read about fishing in nothern norway(or some other wierd thing), the WWW will have a page for u(and btw. what the freak would be the purpose of having yahoo if they only could index ebay and msn? doooh!).
- with-overinflated-egos can understand it:
An I must say, it baffels me anybody want to argue with that guy. He one big contradiction,but i wont even comment on this since i saw a few comments on that subject
already and this really talk for it self:
that once a piece of a program has been debugged and various workarounds added, it represents a repository of stored knowledge and should be left alone
a bit furter down the text we see(as a counter to a argument from a slashdotter):
It's not true for the software that I've written, because I tend to refactor and clean things up regularly.
But why not argue his point with him?Conversation/discussion is a be good, and people tend to learn from it.
Because hes a pain-in-the-***. You ever met one of thiese programmers who made a obvious mistake. But you need to argue 28 minutes with them, begging them to fix it. And they throw alsorts of wierd examples at you, just prolonging getting the job done. Thiese guys dont want constructive input, they just want to be right.
Joel needs to chill out. And stop talking about people that doenst share his views as interlectual inferiors("But not everybody writes code well" , "younger slashdotters" etc).
Learn to have a discussion without creating lame examples to "protect" your own argument. Im thinking about the Encyclopedia example.. Thats the worst B******* ive ever read.
If you buy a encyclopedia, its probertly to access to information about stuff you want to learn more about. Hence the "applications" job is to provide information, having only 100 words would be an incomplete application. The entire purpose of an encyclopedia is to provide you with information you didnt know you needed when you bougth the books.
A wordprocessor application which doensnt feature the newest 20meg office assistent, text taperingtool, access integration etc. couldnt be defined as an incomplete application, just a application with is less rich on features. Bacially the applications can do the same thing, create documents. A 100 word encyclopedia wont do the same job as a full one, so, they cant be compared.
And for the WWW example, again same thing. Information gaterhing. And even the younger of us slashdotters know that what is great about the WWW is that if you are one one the
Simply put, so even the older-softwaremarketsolutions.com-article-authors
A WWW without webpages, or a encyclopedia with 100 words is not comparable to a wordprocessor/emailclient/what-ever-app with out office assistents , 3D logo generater, HTML wizards, Office exporter.
Its more comparable to a wordprocessor with out keyboard support.
Outlook strips all executable attachments, period. Outlook XP does that, Outlook 2000 does that after you've installed the service release (free download).
A rewrite is not necessary, it's already fixed. However, there are still people believing that we're living in 1996 or something and that nothing has changed.
Never underestimate the relief of true separation of Religion and State.
Software becomes dated and outlives its usefulness. This doesn't happen because the software degrades, but because hardware improves.
As an example: Would you use a 286 based compiler on a Athlon/Pentium machine now? Of course not.
Software may not rust, but it does fade away.
make Linux, not Microsoft. sin(beast) = -0.809016994374947424102293417182819
Come on, Joel. Engage brain before opening mouth: You said: "... at some point I spend some time rearranging all that code to make it more maintainable. I like refactoring ..."
That's exactly the point Stepen Eick was making.
Call it refactoring, call it oogabooga, YOU'RE WRITING CODE !!!
The fact that you do quite a bit of this "refactoring" would seem to point to code that was fairly stinky in the first place.
The Baggage Factor.
- former Microsoft programmer
I currently am developing for a client, large gov org, that still uses 95 desktops, though the 2000 rollout is in progress right now. These boxes run current software like Office 2000 without a hitch and there are no API update required for 95 to do this. The software I am working on works for both clients without any fancy tricks. Sure the USB support is minimal if none existant, but the base API have not changed. I am still using the same API's for the last 5 years or more.
Once every open-sourcer has seen their marriage break up by installing Linux on their non-technical spouse's computer, they'll finally understand that, no, most people don't prefer command lines.
I've installed Linux on my wife's computer, and she's thanked me for it. Actually, once we can get our printer working better under linux, we'll get rid of her windows partition to save HD space.
Granted, she's a CS major...
But due to chicken-and-egg problems, running Windows apps is probably nonnegotiable for most people, so WINE is going to have to get a lot better before Linux is a threat to the desktop.
To all those who claim that Wine is horrible: try a recent version! Try codeweaver's excellent crossover plugin. The MS Office viewer programs work tremendously well. Of course, OpenOffice 641C ain't too bad either.
Solution to blink tags: wrap them in another blink tag, with a javascript delay loop, so they cancel each other out
Check out this page for more information about necessary and sufficient conditions.
For the record, I take no position about whether running Windows apps is either a necessary or a sufficient condition for the success of Linux on the desktop.
-- $SIGNATURE
When you surf, you are essentially "run"ning the WWW. Joel's point is that removing the content-starved sites would probably improve the www-experience of most, for one thing because DNS would become so much simpler, and hence faster. If you look at it from an economic perspective, the net effect to all the surfers will in all likelihood be positive.
There are plenty of times I have thrown up my hands in disgust because some nutball wants to re-write a perfectly good app in the hot language of the moment.
_ __
However, I live everyday with a badly thought out program married to absolutely bizzare methods for socket and thread support. If the very core of the program is rotten and maintenance costs more than a re-write then by the above author's own admission the project needs re-writing.
I have seen both sides and extremists drive me nuts in all things.
Don't throw out something that works and works well.
Fix the program that works but does not work well.
Re-write the program that does not work, breaks all the time and costs too much to keep in its current state.
This is not freakin' rocket science!
_______________________________________________
ACK
Office now requires RichEdit 3.0, version 3 of the *system control* RichEdit. Since Win95 only has RichEdit 1.0 by default, an Office installation has to upgrade the OS -- and it does.
Interestingly, Microsoft does NOT allow ISVs to distribute RichEdit 3, nor do they make it available as a simple download from MS.
This creates two classes of application vendor. First class vendors are those named "Microsoft", and they are allowed to target the entire installed base for maximum revenue, upgrading any OS version to *make* it meet minimum requirements.
Second class vendors are all others, and if they need the same thing Office needs, RichEdit 3 for example, they are advised to get their customers to go buy an OS upgrade from MS.
Whether this is "fair" or not isn't my point. MS owns the whole platform. You can have any scraps that they don't want.
If you clone the Win98 API, apps from second-class vendors, everyone other than MS, will probably run fine. The apps from the first-class vendor, Microsoft, probably won't.
I say "Win98" instead of "Win95" because of the large number of vendors who have ceased to support Win95. If they can't upgrade the OS themselves, they either have to give up older OSes or give up some functionality that people are used to having in MS's own apps. Most have chosen to compromise, giving up some market, the Win95 platform for now, as well as the most recent nifty(Win2K+) features. In a couple of years, these vendors will be giving up Win98, too, so WINE *does* have to keep moving.
That's the nature of the platform. There are two "installed bases", a big one for MS and a smaller one for everyone else.
MS has made "3rd party horizontal app" an oxymoron on their platform. If WINE wants to run the most popular (a.k.a. "horizontal") apps, it has to keep up with the latest OS versions. Lotsa luck.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Comparing bloatware to an encyclopedia really doesn't make any sense:
when I read something in my encyclopedia just once, that, on average is a very nice score because reading the same thing 12 times isn't likely to happen. In other words: 'not often used' is a very relative concept when talking about encyclopedias.
When I use the pinball machine in M$ Word or the Flight Sim in Excel once in my life fur the fun of it, that doesn't exactly compare as favorably to the regular features like grammar checking and other stuff most people use them every day.
I believe that's sort of covered here:
I believe Spolsky would say that if it's more expensive to fix the problems than to rewrite, you should rewrite. After all, you don't have to rewrite the payroll system whenever it breaks, you just have to fix the bug.
Make me aerodynamic in the evening air
...we should be running two OSs by now right? A kernel-based OS(winxp) and a user-mode OS(internet explorer).
hehe. finally makes sense.
If you should never throw away things and start from scratch, why the hell did Microsoft reimplement old technology (NT is basically VMS and UNIX)? And why does his company produce yet another content management and bug tracking system instead of just building on one of the open source ones?
I'd like to point out that they are not using slashdot content, they are using written speach.
Do you want to have to ask every time before saying, "So and so said, 'such and such'"?
I didn't think so...
At least I hope not, Gawd!!
Sticking feathers up your butt does not make you a chicken - Tyler Durden
Umm, since when do the KDE/Gnome people base their UI design on the writings/ramblings of Spolsky? News to me.
Ah, yes, and Spolsky's widely published notion that it would be good for the sun to rise in the morning also causes the sun to rise.
I guess we can look forward to software on Linux that is just as good as Windows. But, wait, why am I not running Windows, then? Maybe, just maybe, people are running Linux because, unlike Windows, its UI doesn't suck?
But due to chicken-and-egg problems, running Windows apps is probably nonnegotiable for most people,
Wow, what a profound insight. Didn't some court come to the same conclusion? Except, they called the "chicken-and-egg problem" by its real names: "network effects" and "a monopoly".
I don't see anything interesting this guy has to say. He is just repeating the Windows party line, and he is developing the same dull, uninspired Windows desktop software as thousands of other commercial Windows developers. This is not the kind of advice the Linux community needs, unless, of course, you want Linux to become merely a free version of Windows, with the same dull applications on top of it.
www.riceboypage.com
I'm not quite sure what "refactorable" means, but I want my code to be like this:
* Good Cohesion
* Low Coupling
* No Duplication
It seems to me that the point of refactoring is often to make the code be this way. I don't think code has to already be good to refactor it, though mediocre code is clearly easier to work with than terrible code.
To refactor code in object-oriented programming is just another way of saying you have to redesign a chunk of your class hierarchy to accomodate new features, or to eliminate bugs/bad behavior. If you're at the end of your release life cycle, and you're "refactoring", it probably means you've painted yourself into a design corner and you're now having to "refactor" your way out.
The goal of good design, imnsho, is to avoid refactoring. One way to help yourself, your programming team and company do this is to employ design patterns. One of the main strengths of design patterns is, they force you, the designer/implementor, to consider strongly the long-term reusability and extensibility of your code. If you've worked with any of the standard design patterns from the "Gang of Four" book, you'll know what I mean (written by Gamma, Vlissides, et al.)
So, when he talks about "refactoring" things from ten down to one, yes, it sounds like he's found a way to save some coding or CPU time, maybe, but it also sounds like he wasn't generic or abstract enough to accomodate whatever new feature got added.
Big Daddy, Johnny, Burp, Aunt Zelda, Scott, Slurp, Big Momma
well, how the hell has he been programming for 20 years if just graduated in 1991? He is a lier also? Anybody knows more?
Afraid of say what??? Dull, functional M$ apps, eh ... not the low-beta, 6-fingered webtoed weenie abortions that currently populate the *nix world ... eh? Ya probably think GIMP is worth two-piles a dog-crap --- don'tcha ...
WHAT THE HELL IS WRONG WITH YOU?!!?
That is extremely poor taste and not a bit funny.
Your Mod should be (Score:-10, Deserves a Shit Kicking.)
Actually, winX proggies were a bitch in general to migrate to OS2. Yeahyeah they wuz supposed ta come right over just CLICK the migrate button and ... half the time nothing happened but an OS2 syscrash!
What, slashdot would link to any arrogant asshole's interview only because his opinion is unpopular? And why is he answering to comments here in the form of "interview"? Can't he just umm... write comments here like we do, and be flamed in a regular course of things?
Contrary to the popular belief, there indeed is no God.
I think his position stems from the fact that we coders out there love to rewrite things on a whim. Often times we as coders like to work with pristine code, and we find ugly code offensive (even if the ugly code works). However, his take is that unless you can show that the cost of rewriting outweighs the benefit, you should leave the code alone.
In most cases when you have a piece of working code that does the job, the cost of rewriting it from scratch is very VERY high (higher than we coders think). Therefore, you should think long and hard before going down that path.
At the first company I worked at out of school (a large financial institution), I had the misfortune of working on a large, monolithic FORTRAN app. This app was one of the worst messes I have ever seen. It was originally written by a financial guru who knew just enough about programming to be dangerous. In time, many programmers had come and gone and added their own bug fixes and feature to the code. By the time I had gotten to it, it was a bear to make changes to. My first thought was that this app should be rewriting from the ground up. In fact, I started working on a project to replace the app. After a few weeks I came to the realization that rewriting the app was a waste of time.
The fact is that old FORTRAN app worked! To create an new app that would completely mimic the old thing would take many, many man-years. Sure modifications to the old app were a pain. However, it took less time to make the modifications to the old app than it would take for me to rewrite the whole thing.
In the end I put aside my snobbish attitude and learned a little FORTRAN!
------
www.moneybythenumbers.com
rewriting from the ground up != refactoring a function
[Ooops... I see that your post is modded as Flamebait. You win :-)]
------
www.moneybythenumbers.com
Refactoring has nothing to do with adding features or eliminating bugs. If you are doing either of those things, what you are doing is not refactoring. Refactoring is rearranging the internals of your code to eliminate duplication and increase modularity, without changing existing behaviour at all.
--
CPAN rules. - Guido van Rossum
his wife just have a really wierd thing with penguins.. i wonder if there is such a thing as pengu-fobi :)
But in any case, M$ doesn't bear the cost of supporting those people.
Joel's talking about efficiency. Waffle Iron's talking about safety. Consider spacer's economy from any good SF book - the second of anything is never unnecessary.
So, the new M$ OS is not as backwards compatible as they say? No Way! I would not believe it if it were not true at each "upgrade".
As this is true, why do so many people cling to the insecure, ineficient and ugly "products" M$ keeps reselling? Joel can sit around and justify MicroSoft's ugly junk all day long. The free world has run circles around his increasingly irrelavant dinosaur, rewriting everything from the ground up multiple times AND making good use of shared and reusable code. M$ has been so busy advertising, squashing the "competitors" who made their platform useful to begin with, and building "security" for pimpy music publishers and their own goofey office suite that their core software looks terribly ancient. What is left to differentiate thier junk from the rest of the world's software but the ease of monopoly forced preloads, and access to closed hardware interfaces that gaurantee your current computer will break in two years and the hardware will not work it's replacement? Phthththtt!
Enough time wasting here, that article on Maryland's county wide LAN for everyone looks like much more fun. I wonder if they run a Debian mirror on it yet...
Friends don't help friends install M$ junk.
Building an entire new article around comments on the last article that came from people that he obviously doesn't respect much. Anyone else find this a bit... off?
"What he's saying is 'If I'm working on Foo.bar, and it's got 10 functions, if I'm in function 1, I might notice a better way to do what function 1 does, so I implement it. Better program.'
Actually, I did a search on the text, and he doesn't say that anywhere. You mean that what you choose to interpret his words to mean is
He talks about the folly about recoding from the ground up. It's a matter of scale. He
His argument is easily defeated. If I have a 10,000 line uncommented buggy program in an obsolete language that does something I can pull of in C with a single function call
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
He advocates incremental fixes as they seem appropriate, as opposed to throwing out all previous work and starting from scratch as the 'this will fix everything' solution.
Vintage computer games and RPG books available. Email me if you're interested.
Interviewer: Slashdot, as you know, is a citadel of Linux True Believers...However, to date, as a desktop OS and competitor to Windows, it's been a bust.
The interview prefaces with a description about the last time their site was mentioned on Slashdot:
Visits to www.softwaremarketsolution.com shot to 40K page views in a single day and in turn generated a lively new thread on Slashdot about the ideas and viewpoints expressed in the interview.
And they're arguing against Linux on the desktop?!?
The success of Slashdot is directly related to the success of Linux on the desktop. Yes, there are Windows using readers, and god knows even I've tried reading it with Lynx, but by and large, Slashdot is the end users of Linux.