Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Books Media Programming Book Reviews IT Technology

Joel On Software 166

Daniel Shefer writes "Joel on Software is a collection of essays from the Joel Spolsky's Joel on Software web log. Spolsky is also the author of User Interface Design for Programmers (previously reviewed on Slashdot) and is the principal of Fog Creek Software. In this book, Spolsky distills his technical knowledge, wit, and years of experience into an engaging collection of essays on programmers, programming and the software world. Spolsky covers everything from the technical aspects of writing code to software project management, and even offers insights into software marketing." Read on for the rest of Shefer's review.
Joel On Software
author Joel Spolsky
pages 362
publisher Apress
rating 9.5
reviewer Daniel Shefer
ISBN 1590593898
summary Great insights into programming, software in general and how to do it right.

The essays in this book are even-handed. While he focuses on Windows, Spolsky is not a fanatic believer in one approach over another; if C# works better than Visual Basic for a specific task, so be it. His approach is refreshing when so much is written by opinionated members of the "Microsoft is the source of all evil" camp.

Spolsky starts with down-to-earth topics, such as how to estimate the length of time programming tasks will require, and the ratio of QA people to developers needed for a healthy product. He then moves on to share his thoughts on managing developers and higher-level software-related issues.

One of the book's opening salvos, "the Joel Test for Better Code," is a simple "irresponsible" test that Spolsky created to provide insight into how well a development organization is functioning. The test looks for things like using source-code control, and having testers create daily builds with a single click of a button. As someone who has worked companies that would have failed the "Joel Test" miserably, I can attest to the importance of these criteria.

The chapter on Unicode is a short and to-the-point overview on the topic and should be required reading for any software developer and product manager who wants an introduction to Unicode.

Clean and bug-free code is a common thread in several essays in the first part of the book. Spolsky explains the inappropriateness of developers performing QA and stresses the need to "eat your own dog food." Having developers conduct testing is a waste of resources and upsets them just the same; forcing developers to use their own product will motivate them to create a better one.

In "Fire and Motion," Spolsky takes issue with the "architect astronauts" who generate vague technology announcements that are often counterproductive by creating fear, uncertainty and doubt. While these announcements may drive competitors to waste cycles in converting their code base to the latest technology, they offer no real substance. Misguided companies, mesmerized by the promise of new technologies or by demands from numskull customers, can sap years of developer time when product improvement should have taken precedence.

In "Biculturalism," Spolsky dispassionately discusses the differences in world view between Windows and UNIX programmers. Spolsky probably rankled some UNIX fans, but I share his perspective. Spolsky points out that UNIX developers are just as smart as Windows developers, but when it comes to understanding their end users and having empathy for customers, they tend to fall short.

The "Gorilla Guide to Interviewing" is relevant to all hiring managers. Spolsky describes some of the traits of his ideal hires. Those who, in one sentence, are both smart and "get things done." Spolsky believes in hiring people that can perform multiple roles. Spolsky believes in making a "sharp" decision about the candidate, and finds insulting that a hiring manager would not find the interviewee good enough for his own team but would refer him to another team. Spolsky shares one of his hiring secrets: never hire a "maybe." This might seem obvious, but he details why it's better to reject a good candidate than to hire a bad one. Firing can cost a lot of money, time and effort. Additionally, Spolsky suggests questions to ask during an interview and the necessary "what not to ask."

The "Iceberg Secret Revealed" discusses the manner in which customers express their pain, and points out that customers often don't really know what they want. It is the product manager's job to find a solution that will solve their customer's pain while keeping an eye on the market she is addressing. Just listening to customers without proper filters, is as Spolsky points out, a recipe for disaster. And the Iceberg Secret? Spolsky illustrates in five different ways how customers and stakeholders only look at the tip of the iceberg, and not at the substance beneath it.

In one of the shorter chapters, a missive on measurement, Spolsky addresses the prickly issue of measuring performance in companies. In addition to his own insights on measuring performance, he recommends Measuring and Managing Performance in Organizations by Robert Austin. I will add that to my reading list.

Spolsky wrote an introduction to In Search of Stupidity . He offers there the "geek's" perspective on what it takes to make a successful software company, taking as a starting point the ten largest software companies in 1984 and the equivalent list of 2001. His conclusion is that "no software company can succeed unless a programmer is at the helm." With his usual even handedness, he is quick to point out some of the debacles programmers are responsible for. In the example he gives, Netscape's disastrous rewriting of their code base and almost complete loss of market share while they were doing it. His bottom line? To succeed, a company needs a management team that love and thoroughly understand programming and understand and love business. Not as easy as it sounds.

In his five "Strategy Letters," Spolsky writes about issues that are relevant to anyone making strategic business decisions in the software industry. He starts with company growth modes by comparing Ben & Jerry's to Amazon. He then discusses the classic "Chicken and the Egg" problem when building new platforms. His example is still relevant -- few will develop .NET-based clients until a large number of end users have the .NET engine installed on their PCs and end users will not install it until there are enough applications that require it. Spolsky moves on to discuss backward compatibility, open source economics and the myth of bloatware.

Spolsky points out that despite the growing size of applications, the cost of disk space has plummeted even faster. This may be true, but Spolsky does not address the programs' resulting sluggishness despite more and more processing power. Spolsky wraps up the essay by dismissing the notion of coming out with a "lite" version for a given software product. I agree that lite versions do not always satisfy everyone, but they can be a great way to keep out low-end competitors from entering the market in addition to a way to introduce customers to the high-end product.

The chapter about Microsoft losing the API war is a classic. Spolsky starts with the seemingly outlandish assertion that Microsoft lost the API war. After apologizing for his "grandiloquence and pomposity," he goes on to build a convincing case that if Microsoft has in fact not lost the war, they are definitely in danger of doing so. He starts with the diminishing interest in the Windows API as a development platform. He then describes how two camps inside Microsoft (the "Raymond Chen" and the "MSDN Magazine" groups) are influencing Microsoft's approach to their developers' tools. The former group emphasizes creating a backward-compatible operating system, free of bugs and impervious to third-party applications' errors that can harm it. On the other hand is the MSDN group, promoting the latest and greatest Microsoft has to offer. As Spolsky sees it, the latter group has the upper hand, and because of this, Microsoft is losing their developer base to simpler, more easily deployed platforms.

In part 4 of the book, Spolsky takes on Microsoft's .NET strategy. He describes Microsoft's tendency to create FUD in the marketplace with vague, hollow statements, and details his own company's reasons for not adopting .NET anytime soon. Spolsky wraps up with a very straightforward feature request: a linker for .NET. This would seem to be an obvious feature, but Microsoft so far doesn't agree. Microsoft is acting as though they want to win the development platform war in a single sweep. At the same time, independent software vendors (ISVs) are resisting, because they have to guarantee backward compatibility and support for everything their customers run.

My only complaint about the book is that it's too short. On my bookshelf, it resides next to the Mythical Man Month, another favorite.

Spolsky is knowledgeable, funny and free of unnecessary religious fervor. Joel on Software is a must-read for developers, product managers and those who want more insight into the world of developing software.


Daniel Shefer is a Software Product Management professional and has written numerous articles on this topic. You can purchase Joel on Software from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

This discussion has been archived. No new comments can be posted.

Joel On Software

Comments Filter:
  • -1 flamebait, but all Joel ever talks about is what a smart guy he is and how everyone else is an idiot and all companies, except fog creek, suck.
    • by oexeo ( 816786 )
      "-1 flamebait, but all Joel ever talks about is what a smart guy he is and how everyone else is an idiot and all companies, except fog creek, suck."

      You just described most of the programming population (except for the fog creek part)

  • A long time ago I decided that Joel on Software would be non-political. In programming terms, politics are orthogonal to software

    Not quite so. If you vote for the wrong guys, you software-making activities might stand a greater chance of moving overseas, and then the two issues won't be orthogonal anymore.
    • by Anonymous Coward
      Uh, no shit, and if North Korea nukes his office that might affect his coding, also. Obviously he's talking about the code itself, which cares nothing about the guy at the keyboard.
    • by ZoneGray ( 168419 ) on Thursday November 18, 2004 @08:27PM (#10860820) Homepage
      It's funny, everybody thinks they know to vote for one guy or the other, and they'll somehow prevent software development (or car-building, or steelmaking) from moving overseas.

      But did you ever stop to think about the laws that would be necessary, especially for software or services? And could they be effective? If I buy software from a guy in the Netherlands instead of Iowa, are they gonna bust me?

      What if I hire an Asian coder I met on a BBS to work on a site? And what if I like the guy's work, and I want to use him to work on 20 more sites? And then he decides to hire first one helper, then another, and his company grows? At what point do I have to stop doing business with him?

      How do you write a law like that without being incredibly ambiguous, or leave numerous loopholes, or ways to work around it (not to mention the paid-for loopholes, similarly pitched in the name of "job protection").

      Folks have been promising protection from overseas competition since... well, forever. And it should be blessedly obvious by now that it just doesn't work. Trying to regulate software and services in that manner is a civil liberties nightmare.
      • Re:From Joel's blog (Score:3, Informative)

        by hey! ( 33014 )
        Well, there's more than laws. There's trade policy, diplomacy, and fiscal policy. Why are these important: they affect exchange rates. Exchange rates are what drive programming jobs overseas; American programmers are as good as any in the world, and in many cases there are inefficiencies in moving tech jobs overseas. But if the cost is low enough, then the jobs will go. Marginal changes have a big effect.
    • I'm just thankful for being able to read a blog that has some actual content amongst the anti-bush rants. I just stopped reading most design blogs for the month before/after the election, because I was tired of politics.

    • That's a business issue. Business decisions can be affected by politics, but business can be affected by a lot of factors, e.g. money, capital, revenue, profit, etc. (hint, hint)
  • Aha! (Score:5, Interesting)

    by Otter ( 3800 ) on Thursday November 18, 2004 @05:51PM (#10859751) Journal
    I'd been meaning to put this in a JE after it was rejected as an article submission, but this seems like a good opportunity:

    Joel is assembling a volume of "the best software essays" of 2004 and is taking reader nominations [joelonsoftware.com]. Suggest something if you have a favorite, or just click through and read everyone else's picks.

  • Worth noting (Score:5, Interesting)

    by prostoalex ( 308614 ) * on Thursday November 18, 2004 @05:54PM (#10859777) Homepage Journal
    The entire book is available on the Web [joelonsoftware.com] for free, since the book is basically the collection of Joel's best articles. He cleaned them up, according to the introduction, but anyone willing to "look inside the book" (tm) before getting it, has a chance to go through 100% of it.
    • Re:Worth noting (Score:4, Insightful)

      by michtu ( 541114 ) on Thursday November 18, 2004 @07:07PM (#10860302)
      That's cool, but I think having the book on your desk can do more to get other people to read it than pointing them to a web site. Logical or not the people who should read his stuff will be more inclined to believe a book though from experience the people who should read the essays, won't.
      • I think the people who should read it are those who will. The rest wouldn't benefit from it anyway; either they are successful and have no need for it, or they are lusers and will stay that way no matter what ;)
  • I've been publishing GoingWare's Bag of Programming Tricks [goingware.com] on my website for several years. I don't get as much time to write as Joel does, but there should be some articles there that would be interesting and useful to you.

    It is Google's #1 hit for programming tricks [google.com].

    I have quite a wide range of interests, so the articles aren't really just about programming anymore.

  • A quick FYI (Score:5, Interesting)

    by Swamii ( 594522 ) on Thursday November 18, 2004 @06:01PM (#10859843) Homepage
    For those that don't know the background to the story, Joel published a "How Microsoft Lost the API War" essay on his blog which stirred up enough developers at Microsoft that the company decided it would backport their new windowing and rendering system ("Avalon") and their new networking and messanging system ("Indigo") to previous versions of Windows, including XP. Before this essay, the said technologies had been designed for Windows Longhorn only.

    Point being that Joel has a lot of influence and a lot of respect among the Microsoft folks. I also hope his suggestion of a linker for .NET falls on listening ears in Redmond, time will tell.
    • Re:A quick FYI (Score:2, Insightful)

      by atheken ( 621980 )
      agreed, and I also don't understand why there's so many "haters" out there - he writes eloquently, and only picks topics that have at least SOME relevance. (more than I can say for *most* blogs). Everybody probably hates daringfireball.com also.
    • Re:A quick FYI (Score:2, Insightful)

      by Anonymous Coward
      One of the reason, imho, that MS puts alot of weight into Joel is because he played a MAJOR part in the development of VBA for Excel. I'm not versed in his history at MS but I do recall him being noted as a very talented developer by top MS executives.
      • Re:A quick FYI (Score:1, Informative)

        by pabtro ( 609586 )
        That is bull. "Talented developers" in a big organization? Well established processes are the only factor that counts, so every developer can be replaced, like lego pieces. Otherwise organizations would be relying on individual talent, that is Ok in a 5 people team, but not for big software. Maybe this is the reason why MS software didn't shine for a long time. Now it is a lot better. I use it myself.
        • Re:A quick FYI (Score:3, Insightful)

          by mccoma ( 64578 )
          There are a lot of companies in the world in a lot of different fields that rely on "individual talent". Yes "individual talent" is hard to replace, but the productivity gains from hiring top flight people with talent are worth the effort. Great companies hire great people.

          Software is not factory work, methodologies come in and out of favor, but great developers produce more and cleaner code than an average developer. I have never been on a project where people can be replaced like "lego pieces". There

          • OT: Re:A quick FYI (Score:3, Insightful)

            by Tim C ( 15259 )
            If this is offtopic, then so is the parent. Stupid mods; you're not supposed to mod down just because you disagree with what's being said...
        • Re:A quick FYI (Score:1, Offtopic)

          by Usquebaugh ( 230216 )
          Nice troll :-)
      • Re:A quick FYI (Score:2, Informative)

        by rjshields ( 719665 )
        I'm not versed in his history at MS but I do recall him being noted as a very talented developer by top MS executives.

        Just playing devil's advocate here, how would top executives know how to spot a talented developer? There's a developer at my work that people think is "very talented" because he's always boasting about how good and fast he is, inflating his own accomplishments and stroking people's egos. Realistically, he's an average developer, but he fools the "top executives" because they all come fr
    • Re:A quick FYI (Score:3, Interesting)

      by cygnusx ( 193092 ) *
      Microsoft ... decided it would backport ... their new networking and messanging system ("Indigo") to previous versions of Windows, including XP

      Indigo was supposed to be available for Windows XP and Windows 2003 [msdn.com] ever since it was announced.

      Don Box's introduction to Indigo in the Jan 2004 issue of MSDN (available on the web since early November 2003) says as much [microsoft.com]:

      As part of Windows Longhorn, Indigo is available to every Longhorn application. Indigo will also be available as a separate download for Windows

  • Definitely no PHB (Score:4, Insightful)

    by ggeezz ( 100957 ) on Thursday November 18, 2004 @06:02PM (#10859853)
    Joel is definitely no PHB (pointy haired boss). You will think that many of his insights are just plain common sense and that is correct. The problem is that too many times management will not use common sense and they need someone like Joel to point it out to them.

    I'm Joel's collections made it into dead tree form as that will lend them some more credibility. Good reading.
  • by dchamp ( 89216 ) on Thursday November 18, 2004 @06:14PM (#10859950)
    Gotta love this:

    Joel on Software is a collection of essays from the Joel Spolsky's Joel on Software web log.
    • Not really circular...

      [Book name] is a collection of essays from [author name]'s [blog name] web log.

      They just all happen to have the same name! :P
      • Damnit, they should have namespaced it!

        What I liked was this one:

        While he focuses on Windows, Spolsky is not a fanatic believer in one approach over another; if C# works better than Visual Basic for a specific task...

        Well yeah, if both options are evil, of course you can't get fanatical about one approach over the other. Sheesh.

  • by MikeMacK ( 788889 ) on Thursday November 18, 2004 @06:22PM (#10859998)
    His approach is refreshing when so much is written by opinionated members of the "Microsoft is the source of all evil" camp.

    Yeah, you gotta watch those guys, I much prefer the unopinionated members of the "Microsoft is the source of all evil" camp - they write much better stuff.

  • "His approach is refreshing when so much is written by opinionated members of the 'Microsoft is the source of all evil' camp."

    I prefer to be called "honest" and not "opinionated". :)
    • Think of some evil that Microsoft is NOT the source of.

      Got one? (almost any evil will do - war, terrorism, child molesters) In the cosmic scheme of things, software companies don't even show up on my evil radar.

      Q.E.D.

  • I do not pay much attention to Joel Spolsky because he seems to have a poor understanding of the most important trend in software today: the open source revolution (OSR). He rarely writes anything positive about OS (or, at least as of 18 months ago, he rarely did so), and his CMS software, CityDesk [fogcreek.com], is not open source software. Open source tends to improve more rapidly than proprietary software. If Joel understood that simple fact (and he does not), then he would release his software under an open source li

    • I really don't understand the response. I work for a medium sized company that is growing fast. A lot of our initial infrastructure (hardware & software) came to the company via 2 key acquisistions. We use OS software and solutions where we can and were they make sense. Nevertheless, we have to be able to support a range of non-OS solutions. If we hire a programmer help maintain a legacy VB application it is great if he/she has OS experience, but certainly experience in MS environments is absolutel
    • Good Gates, how could this comment be moderated down to -1. Agree or disagree with the poster, but valid points are made.

      Read through Mr. Spolsky's web site and see that he doesn't acknowledge free software/open source at all other than sterotypical blanket bromides.
    • by TheRealSlimShady ( 253441 ) on Thursday November 18, 2004 @08:08PM (#10860720)
      You don't think that might be because Joel doesn't share your opinions about Open Source software?

      Furthermore, Joel's "technical interview questions" are less than optimal. If you want to assess a prospective employee's intelligence, the first questions that you ask should be along these lines: "How long have you been using Linux or *BSD? How long have you been using Apache, Tomcat, Zope, mod_perl, PHP, gcc, etc.? What is the difference between TCP and UDP? What are the most salient differences between Linux distributions these days? Why do you use your particular distribution (of Linux, *BSD, etc.)? What do you know about package management?"

      Well that would be great if you were interviewing them for a job developing web applications on Linux - however, since he writes most of his software for the Windows platform they would be pretty useless questions really wouldn't they?

      • Well that would be great if you were interviewing them for a job developing web applications on Linux - however, since he [Joel Spolsky] writes most of his software for the Windows platform they would be pretty useless questions really wouldn't they?

        In terms of intelligence, there is a huge difference between person X, who began using Linux (or *BSD) in 1993, and person Y, who waited until 2003 to do so. Person X is likely to be far smarter (unless person Y was, say, only 10 or 12 years old in 1993).

    • by guet ( 525509 ) on Friday November 19, 2004 @05:03AM (#10862845)
      I simply do not understand it.

      Perhaps because you're so blinkered by your belief in the 'one true way'.
    • How can you call "open source" a revolution when it's been slowly festering for decades? That's like calling Linux revolutionary despite the fact that it's 13-year-old reimplementation of a 25-year-old OS.
    • If Joel understood that simple fact (and he does not), then he would release his software under an open source license. And he would move to Linux, abandoning M$ Windows.

      And if you understood that sold software is intended to generate income, not exist for its own benefit, maybe you could run a business.

      If you want to assess a prospective employee's intelligence, the first questions that you ask should be along these lines: "How long have you been using Linux or *BSD?

      What the hell for? Lots of intel

    • You don't pay attention to Joel on Software because he doesn't support open source? Well, since he is in the business of selling software, why should he? He can surely sell a lot more web development clients for small businesses using windows than for those using Linux, and it is likely (to me) that his target marker (non-technical users looking for an easy to use web page maintenance system) are almost exclusively using windows anyway.

      When the time comes (ie, there is a significant linux desktop pre
  • Bloat is good! (Score:3, Insightful)

    by MrLint ( 519792 ) on Thursday November 18, 2004 @06:51PM (#10860176) Journal
    "In fact there are lots of great reasons for bloatware. For one, if programmers don't have to worry about how large their code is, they can ship it sooner." [joelonsoftware.com]

    Interesting reasons. Bloat is still bad, no matter how much CPU you decide you can throw at it.
    • Re:Bloat is good! (Score:4, Insightful)

      by vhold ( 175219 ) on Thursday November 18, 2004 @07:19PM (#10860390)
      His point still stands though. It's a sacrifice. Anything you make at all, the very first decision you make whatsoever is whether you are going to actually make it, and that hinges almost entirely on how much it's going to cost to make. Stapling a bunch of fatty components together has the advantage of being relatively fast. It's not entirely uncommon for software to bloat up at first and trim it's fat here and there where it matters later.

      So without bloatware, there would be products we wouldn't have at all.
    • While I don't want to defend bloat across- the-board, what's the real issue? I'm sure you're not worried that business logic will be filling up your hard drive, right?

      What does CPU have to do with big binaries, besides an increase in paging, which is arguably a memory thing, even if you're talking about CPU cache...

    • Re:Bloat is good! (Score:5, Insightful)

      by akuma(x86) ( 224898 ) on Thursday November 18, 2004 @11:34PM (#10861885)
      >> Interesting reasons. Bloat is still bad, no matter how much CPU you decide you can throw at it.

      It's comments like this that make me think that computer science should be taught as an engineering discipline.

      It's a tradeoff. Engineers make tradeoffs all day long. Consider the costs and the benefits. In this case it's a tradeoff of how much does the user care about bloat vs. how soon they want the product. As disk and memory and cpu speed all increase EXPONENTIALLY at the same cost point over time, the tradeoff often falls towards bloat since exponentially falling hardware prices make the user more likely to be indifferent.
      • It's comments like this that make me think that computer science should be taught as an engineering discipline.

        That distinction is already made. You have computer scientists (people who do research into cool type systems and write lots of papers), and you have software engineers (people who work with existing tools and write big systems in the "real world"). Both sorts do valuable work, but in completely different ways and with completely different goals. And I don't think the choice of terminology was
        • >> That distinction is already made. You have computer scientists (people who do research into cool type systems and write lots of papers), and you have software engineers ...

          The problem is that many software "engineers" are trained with computer science degrees resulting in poorly engineered systems.
    • Why is bloat bad? The size of your application only matters if it's going to cause problems - otherwise who gives a rat's ass?

      Sure, if your code is intended for the "lean mean programming competition 2005" then you want it to be slimline, but if it's heading for your customer's PCs then you have to fulfill their criteria, and size of application is probably 23rd on their wish list.
    • There's one thing you should keep in mind whenever you read something written by Joel: Joel doesn't give advice about how to write the best software possible. He gives advice about how to write software and make money from it.

      Sometimes it means that you have to deliver something that is not as perfect as you would want it to be; make it more perfect would require too much resources. Resources that you don't have, or that should be used for something else.

      It also shows in his opinion about the rewriting of
      • ...while the software is successful, Netscape as a company is not.

        <sarcasm>He wants us to demean our art with commerce! Shock, horror. That would be untrue to our Xerox PARC ancestors.</sarcasm>

        "Currency is the sincerest of flattery" said someone, and to some extent it's true. That people are willing to pay for the product (whether in classic license or shareware license or GPL support license) is important. For one thing, it keeps me supplied with hardware:-)

      • id mod you up as insightful if i hadnt started this thread:)
  • Hell I'm ever reading the chapters on writing specs. So you can tell it *must* be good then.
  • by RobinH ( 124750 ) on Thursday November 18, 2004 @07:11PM (#10860339) Homepage
    My review would be that it was a quick, enjoyable, and thought provoking read. I don't think you should necessarily live by what he says, but he makes some good points. I particularly appreciated his essay about how to write functional specifications, and after reading that online, I decided to go out and purchase his book.

    The book doesn't flow too well, since it's a collection of loosely related (or sometimes not-at-all related) material. You also have to check the dates on each one, since some of the essays, particularly his early comments about .NET, seem quite dated.

    Overall, I'm happy I read it. If 30% of it has something useful or insightful, then it's a bargain.
    • I particularly appreciated his essay about how to write functional specifications, and after reading that online, I decided to go out and purchase his book.

      His essay on functional specs misses the mark in a number of areas.

      He starts out wrong:

      Why won't people write specs? People claim that it's because they're saving time by skipping the spec-writing phase.

      Nobody who's managed more than one project makes that claim twice and for most managers, the need for specs is obvious. The usual reason projects

      • It's a shame the other reply to this is AC, as he has some valid points. Where I work, we have three stages of specs:

        1) Customer requirements spec written by the Client/User/Business Analyst/consultant. Provided what they request is feasable, we go to:

        2) Functional spec prepared by the Systems Analyst, gives a high level overview of how the solution will work. If this is approved by the Client, and the solution is sufficiently complex, we go to:

        3) Techincal spec prepared by the Systems Analyst, upd
  • by skoda ( 211470 ) on Thursday November 18, 2004 @07:27PM (#10860444) Homepage
    I realize critical writing is difficult, but if you're going to advertise a book review, deliver one. Like most Slashdot "reviews", this review [reference.com] is actually a summary [reference.com].

    A review should provide critical thoughts on the strengths and weaknesses of the material under consideration. A book review is not just a regurgitation of its contents. It also also provides an evaluation of its merits, noting where it succeeds or fails in its purpose. And enables me to determine if its worth its while.

    This "review" nicely summarized the contents of the book but largely failed to inform as to whether the reviews are well written, provide new ideas, or present old ideas in particularly valuable manner. Therefore, I cannot recommend reading this review. Instead, just read the book's table of contents.
  • by Anonymous Coward on Thursday November 18, 2004 @07:38PM (#10860513)
    In "Biculturalism," Spolsky dispassionately discusses the differences in world view between Windows and UNIX programmers. Spolsky probably rankled some UNIX fans, but I share his perspective. Spolsky points out that UNIX developers are just as smart as Windows developers, but when it comes to understanding their end users and having empathy for customers, they tend to fall short.

    I should probably read the thing firsthand, but if this is an accurate summary then it is garbage. This "difference in "world view" between Windows and UNIX programmers is such an overly simplistic and stupid straw man argument.
    Politics are orthogonal to software indeed, why don't you follow your own goddamn sentiment Joel.

    Having worked a ton of jobs as an electrical, hardware, and software engineer I can tell you that this generalization makes absolutely no sense. In general, there is absoultely no macroscopic correlation between software usability and underlying operating system platform. Software development is such a complex process, and for anything other than some shitty little bug tracking tool, one that involves more than a few people. How these teams are managed (that ranges from methodology, to choosing the smart/professional people in the first place) has absolutely nothing to do with some UNIX/Windows dichotomy you're promulgating. There are of course the zealots, of which you are a Windows/Microsoft one, even if you don't realize it. This is from the fact that you draw this simplistic separation, no matter how charitable you are about the other side.

    When you get out of the realm of the shrink wrap software market from Best Buy, you realize there is a huge multi billion dollar industry of software used for things like manufacturing and design, and no Joel, they're not all programmers tools.
    For many segments of this market, the operating system used becomes a secondary issue to having an integrated or working system.

    For a high profile example, there was the LAX shutdown due to the shitty designed Windows based ATC system. Apparently, according to you, at least the developers had empathy for the poor bastards flying to LAX when their shitty system didn't work. The fact of the matter is that this could and probably would have happened if the same team of idiots had chosen to use a UNIX system. It is not an issue of smartness or UNIX people people being as smart as Windows people.
    • Software development is such a complex process, and for anything other than some shitty little bug tracking tool, one that involves more than a few people

      Interesting comment. When I read this sentence I couldn't help but think about a chap called ESR who wrote a whole book based on a shitty little mail application. And somehow, that book has turned into one of the cornerstones of the open source movement.

      For many segments of this market, the operating system used becomes a secondary issue to having an

  • by Sirp ( 830830 ) on Thursday November 18, 2004 @08:23PM (#10860792) Homepage
    I don't know if this made it into the book or not, but there is an error in one of his essays that reflects a glaring misunderstanding of the workings of C++. From http://www.joelonsoftware.com/printerFriendly/arti cles/fog0000000014.html [joelonsoftware.com] :
    You could have code like this:

    int foo( object& r )
    {
    r.Blah();
    return 1;
    }

    and you would get crashes there because the r reference was NULL, even though that's completely impossible, there's no such thing as a NULL reference, C++ guarantees it
    And then he goes onto blaming the problem on 'cosmic rays' and the user's computer. While it is true that there is no such thing as a NULL reference in C++, the problem is still likely to be a simple bug in his software. There are many possible constructs that the C++ Standard leaves as 'undefined'. A conforming compiler can do anything it wants if you do something involving undefined behavior, and that includes creating a 'NULL reference'. Just try this program:
    #include <iostream>

    void f(char& ref)
    {
    std::cout << "value of reference is " << (int)&ref << "\n";
    }

    int main()
    {
    char* p = NULL;
    f(*p);
    }
    What's its behavior? It's undefined, because a pointer-to-NULL is dereferenced, and that's a big C++ no-no. It could be anything whatsoever according to the C++ standard. The most common behavior though, and the behavior of my compiler is to output, value of reference is 0 That's right, we have created us a 'NULL reference'. I must admit, I'm a little surprised that someone who has so many years of experience as a programmer doesn't understand this, and instead blames it on the user's computer. I know his book is mostly on a higher-level, looking into the management of software projects, but he seems to think that being a good programmer is fundamental to being a good manager...
    • *p in this case _is_ the dereferencing of the NULL pointer, and it certainly will produce a segmentation fault. The use of reference merely obfuscates the nature of dereferencing in this example, and a debugger or runtime has to find out, what exactly should be said about the reference when the segfault/exception/... happens inside the function because dereferencing happened not at the earlier moment (outside the function) when it looked like it was supposed to be done. Even if some particular behavior was
    • You've misunderstood his point. Those paragraphs are warning about a particular type of programmer you meet: the guy who says that since C++ doesn't "allow" references to invalid memory, they can't happen, so he uses references instead of pointers and never checks them. Then one day somebody else tries to call the code, passes in a pointers, and whap.
    • I agree completely. I went and looked at the article, and it's obviously a memory corruption problem that should be analyzed with Purify or valgrind or something like that.

      When you have an object that seems OK, and then you try to call a member function on it and it goes boom, it means that somebody else stomped on the memory of that object. (I guess the other possibility is a bad link where the header file and the library are out of sync, but that shouldn't be the case in a field failure.)

      Cosmic rays or
    • "he seems to think that being a good programmer is fundamental to being a good manager..."

      And he is correct. The top people at the most successful companies have moved up through the ranks or have a background in what the company does/makes. I saw one report that like 60 percent (was it more?) of the fortune 500 companies have this trait, and of the remaining ones, half drop out of the top 500 soon after they get in.

      It's true that there are aspects of running a company that are independant of what it does

    • Of course, the point of the essay - Hard-assed Bug Fixin' - is that not every bug is worth finding and fixing. If this dubious C++ locution (and it is dubious) occurs, and works 99.9% of the time, how much is fixing it worth in time and resources? Of course, that depends on what happens the other 0.1% of the time. That's why there's a level 5 of the Capability Maturity Model [google.com] -- and why most of us don't need to do that level.

    • > What's its behavior? It's undefined, because a pointer-to-NULL is dereferenced, and that's a big C++ no-no.
      > It could be anything whatsoever according to the C++ standard.


      In other words, Joel was lucky.
      He could have ended up with demons flying out of his nose [catb.org].

  • by a_karbon_devel_005 ( 733886 ) on Thursday November 18, 2004 @08:56PM (#10861025)
    After reading this book, I actually decided Joel was much LESS clever than I initially thought. Most of his knowledge is directly from Microsoft, you might as well read a Microsoft training manual. Yet it's plainly obvious he fails, for a LONG time, to grasp .NET

    Pages upon pages bitching about how stupid .NET is and of course, he ends up moving Fog Creek software towards it. He seems short sighted in many regards. Remember the page where he wanted a linker for .NET? hehe.

    My impression after reading the book is that he was a rich guy who went to good schools, was given opportunities and learning early (thousands of dolloars on computers when he was a kid and computers were quite rare), and basically recycles things he was spoon fed at Microsoft.

    There's nuggets of goodness, but my opinion of Joel's knowledge and expertise actually went down after reading the whole book.
    • After reading this book, I actually decided Joel was much LESS clever than I initially thought. Most of his knowledge is directly from Microsoft, you might as well read a Microsoft training manual. Yet it's plainly obvious he fails, for a LONG time, to grasp .NET

      Joel is smart, but he's decidedly old school in many ways. Or rather he's old school for the typical reason people are old school: because he's resistant to change. This is common among technical people in my experience. First they rant about h
    • From a pure programming standpoint, .NET may be great. From a business and user standpoint, it's a pain because of no backward compatiblity. Microsoft's decision to drop Win32 support in Longhorn is dumb, because I don't want to have to rebuy software that I'm already happy with, and software producers want to improve their product, not rewrite it for Bill's new platform. These are Joels main gripes, and they are perfectly valid.

  • if C# works better than Visual Basic for a specific task, so be it.

    I always see mention of "suitability for specific tasks" with respect to different programming languages, I've never seen anyone explain which languages are best for which tasks, much less why. If anyone can spill some wisdom, I'm all ears (er, eyes, I guess).
    • How applicable any given technology I believe to be generally related to the people involved far more than the technology.

      From how familiar a group is with how to get the most out of a technology, to what ways the people in the group are most comfortable thinking and developing, you should always start with a group and use the technology that will worst best in concert with them - it may be a new technology, it may not, the important part is that you do not weigh down a group with unnecessary problems befo
    • by Foolhardy ( 664051 ) <csmith32&gmail,com> on Friday November 19, 2004 @01:37AM (#10862342)
      What SuperKenall said is correct. However, some languages have more differences than others.

      All the .NET languages MS ships are all about the same; the only difference is syntax. .NET requires all compatible languages to adhere to the same capabilities so they can be 100% compatible with each other. Unfortunately, it also requires all the languages it supports to be dumbed down to the lowest common denominator. There is a very long list of things that had to be removed from ISO C++ to create Managed C++, because including them would make it incompatible with VB and C# (and .NET), such as multiple inheritance, templates (non-type params too), pointers, member pointers, etc.

      Functionally, VB.NET, C#, J#, and Managed C++ all have exactly the same capibilities. They are all sequential, procedural, imperative, object-oriented languages that support single inheritance, interfaces, events, exceptions, type generics(they will in v2.0), reflection and share a common runtime library and work in a sandboxed VM. The ONLY differences between them are in syntax. So, it doesn't really matter which of these languages are used unless someone in the group doesn't know the syntax for a language in a source file they need to work on. The interfaces between them will be equivalent regardless of language.

      Compare this to a functional language such as Common LISP [iu.edu] or Scheme [drscheme.org], or a declaritive rule-baed language like Prolog [csupomona.edu] or Mercury [mu.oz.au]. Mercury can compile to .NET (it normally compiles to C), but you can forget about a runtime system like Prolog being compatible with .NET. .NET doesn't understand functions that don't have an implementation until you've decided the direction the argumets are flowing (a very big part of declaritive languages), .NET doesn't understand state tracking and backtracking [mu.oz.au] or multiple modes [mu.oz.au] based on detirminism, .NET doesn't understand multiple possible results for a single variable (a list is the closest you can get; it isn't the same because you have to do all the handling yourself which defeats the purpose).
      Haskell [haskell.org] has to jump through hoops to get the needed multiple inheritance to work.
      OTOH, there are some interesting projects like F# [microsoft.com], an OCaml like functional language. It has some serious issues to be compatible with .NET, though.

      It's like Microsoft offers you several languages, but they are all the same. The illusion of choices without really having any. They should just be like Java and admit that there might as well be one language-- seriously, Java could have all the multi-language support of .NET if there were bytecode compilers for other languages. .NET and Java are so alike in function anyways.

      As for what languages should be used when, where and by whom: I don't know. I'm still trying to figure that out. I know that some are good and bad for certain things, but I also know that personal preference is important, too.

      </rant>
  • by fionbio ( 799217 ) on Friday November 19, 2004 @04:28AM (#10862774)
    I've came across an interesting discussion [fogcreek.com] at Joel's site. Answering a question regarding Lisp, Joel writes:
    Paul Graham is brilliant and I'm sure lisp was great for him and his team, but I think most of the productivity of lisp came from the fact that it's garbage collected. I don't see any reason why a lisp programmer today would have a productivity advantage over a C# or Java programmer (and yes, I know lisp.)
    If I knew Lisp so little (seems like e.g. he doesn't even know about Lisp macros and has no clear idea what closures are), I'd have never written "yes, i know lisp". Later in same discussion some guys who know Lisp bring out clearly that Joel is, well, somewhat underinformed and that he'd better shrink his self-assurance a bit. Poor Joel seemingly was unable to say anything against it.
  • Joel's sayings is common sense. The guy is a little bit overrated, because almost every good software engineer more or less knows these things.

    I would have thought better of him if he could come up with a new software engineering methodology that makes development less-time consuming and error prone, and a programming language to back it up.

    After all, he is considered to be one of the most experienced programmers, and he certainly has the publicity to be claimed one of the top programmers of the planet. I
  • ``Having developers conduct testing is a waste of resources and upsets them just the same; forcing developers to use their own product will motivate them to create a better one.''

    Actually, that can be viewed as a contradiction. Forcing developers to use their own product is having them conduct testing. It's the only test that works; you don't just test what you think needs to be tested, you test what actually needs to be tested.

    This is also why many open-source projects are so successful, and many others
    • Proper QA testing is vastly different from actually sitting down and using the product; the two are no where near being close.

      If a developer is 'testing' a product, they're suppying known inputs to subroutines to see what gets returned, putting in known data to see if calculations return appropriate answers, and so on.

      If they're actually 'using' the product, they notice that that little popup that happens for result X really should just be a status message on the bottom of the window, or that this data

  • Joel is the biggest stuffed shirt that I know of in popular media. And he's not even that popular, outside of us in the type-for-a living crowd.

    He embodies an impractical and obtuse attitude towards software development that has made me walk out on or simply refuse a few job interviews.

    Anytime some dipstick wants me to estimate the number of piano movers required in lower Manhattan, I want to tell them to stop snorting the crack that Joel is handing them. Or whatever people do with crack.

    His 'articles'

"It takes all sorts of in & out-door schooling to get adapted to my kind of fooling" - R. Frost

Working...