Slashdot Mirror


Joel On Software

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.

166 comments

  1. Joel shomoel by Anonymous Coward · · Score: 0, Insightful

    shut your Hoel, Joel

    Noone knows who this guy is, and noone cares what he thinks.

    Running a weblog and some rinky-dink "software" company doesn't make you an industry expert!

  2. Comment removed by account_deleted · · Score: 0, Offtopic

    Comment removed based on user account deletion

  3. Joel is a blowhard by Neil+Blender · · Score: 1, Insightful

    -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.

    1. Re:Joel is a blowhard by oexeo · · Score: 2, Insightful
      "-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)

    2. Re:Joel is a blowhard by TechnologyX · · Score: 0

      Hell yes, let's have another -1

      --
      Slashdot sucks
  4. From Joel's blog by Rosco+P.+Coltrane · · Score: 1, Insightful

    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.

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
    1. Re:From Joel's blog by Anonymous Coward · · Score: 3, Insightful

      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.

    2. Re:From Joel's blog by mattyrobinson69 · · Score: 4, Funny

      Thats not true. My computer doesn't didn't care about me and crashed frequently. Then i decided to start caring for it and installed linux and now it shows its love.

    3. Re:From Joel's blog by Anonymous Coward · · Score: 0

      Don't try to vote your protectionist policies into office simply because you can't compete in the global marketplace.

    4. Re:From Joel's blog by ZoneGray · · Score: 3, Insightful

      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.

    5. Re:From Joel's blog by G-funk · · Score: 1

      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.

      --
      Send lawyers, guns, and money!
    6. Re:From Joel's blog by hey! · · Score: 2, Informative

      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.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  5. Aha! by Otter · · Score: 4, Interesting
    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. Suggest something if you have a favorite, or just click through and read everyone else's picks.

  6. Worth noting by prostoalex · · Score: 4, Interesting

    The entire book is available on the Web 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.

    1. Re:Worth noting by michtu · · Score: 4, Insightful

      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.

      --

      Frenchman to King Arthur - "You've got two empty halves of coconuts and you're bangin' 'em together"
    2. Re:Worth noting by pax01 · · Score: 1

      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 ;)

    3. Re:Worth noting by Anonymous Coward · · Score: 0

      Nobody should read it cause it sux

  7. Re:Bullshit by Anonymous Coward · · Score: 1, Funny

    In this context amateurs also include long-time tech professionals who don't know a thing about management or leadership and therefore are extremely impressed by some of the basic management stuff he is able to regurgitate.

  8. What's the guy's name again? by Anonymous Coward · · Score: 0, Funny

    I keep forgetting.

    1. Re:What's the guy's name again? by Anonymous Coward · · Score: 2, Funny

      404 Teh funny not found

  9. Re:Cool by Anonymous Coward · · Score: 0

    "M$"...
    "Behemoth of a corporation"...

    You're such a slashbot...
    *Sigh*

  10. GoingWare's Bag of Programming Tricks by MichaelCrawford · · Score: 1, Offtopic
    I've been publishing GoingWare's Bag of Programming Tricks 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.

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

    --
    Request your free CD of my piano music.
    1. Re:GoingWare's Bag of Programming Tricks by Anonymous Coward · · Score: 0

      Thanks for this. Very easy to read.

  11. A quick FYI by Swamii · · Score: 4, Interesting

    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.

    --
    Tech, life, family, faith: Give me a visit
    1. Re:A quick FYI by atheken · · Score: 2, Insightful

      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.

    2. Re:A quick FYI by Anonymous Coward · · Score: 0

      Maybe they're just homophobes :P

      (Personally, I thought the book was awesome)

    3. Re:A quick FYI by Anonymous Coward · · Score: 2, Insightful

      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.

    4. Re:A quick FYI by pabtro · · Score: 1, Informative

      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.

    5. Re:A quick FYI by mccoma · · Score: 2, Insightful
      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 is always a ramp up time to not only learn about the organization but domain knowledge.

      The figure 10x more productive is quoted a lot, and just think - a bargain at around 1.5 to 2x the price.

    6. Re:A quick FYI by Usquebaugh · · Score: 0, Offtopic

      Nice troll :-)

    7. Re:A quick FYI by cygnusx · · Score: 3, Interesting
      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 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:
      As part of Windows Longhorn, Indigo is available to every Longhorn application. Indigo will also be available as a separate download for Windows XP and Windows Server 2003.

    8. Re:A quick FYI by rjshields · · Score: 2, Informative

      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 from a sales and marketing background and wouldn't know how to spot a talented developer if one landed right in front of their noses.

      --
      In this world nothing is certain but death, taxes and flawed car analogies.
  12. Definitely no PHB by ggeezz · · Score: 4, Insightful

    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.

  13. Open Source Citydesk? by Anonymous Coward · · Score: 0

    Does any of you guys know of something like http://www.fogcreek.com/CityDesk/ for linux?

    1. Re:Open Source Citydesk? by my_fake_account · · Score: 1

      Isn't that the point behind sgml/xml? Maybe look for some dtds?

      Just guessing, I'd start with DocBook. I *think* there's a free online book about it at O'Reilley.

      All of the above is a guess-- I'm not much involved in producing documentation.

    2. Re:Open Source Citydesk? by HyperChicken · · Score: 0

      Perfect example of why open source isn't making it on the desktop: The "solution" present sucks in terms of usability. XML and DTDs aren't easy to use. CityDesk is. It does what users want, the way they want it to.

      --
      Free of Flash! Free of Flash!
    3. Re:Open Source Citydesk? by Anonymous Coward · · Score: 0

      I would love something like citydesk for linux!!
      easy, fast and simple.

  14. Re:Cool by Anonymous Coward · · Score: 0

    Attention mods, this "post" is just an excuse to get people to click on the Amazon referral link. MOD SPAMMER DOWN please.

  15. Circular Reference by dchamp · · Score: 3, Funny

    Gotta love this:

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

    1. Re:Circular Reference by rackhamh · · Score: 1

      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

    2. Re:Circular Reference by Trejkaz · · Score: 1

      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.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    3. Re:Circular Reference by Anonymous Coward · · Score: 0

      Yeah. Better example: Spolsky regularly champions Firefox, and appears to regard XUL as a viable competitor to Avalon. Interesting coming from a Windows-only, ex-Microsoft guy, eh?

    4. Re:Circular Reference by Trejkaz · · Score: 1

      Yeah, that's a much better example.

      People should also scold Microsoft for using the name "Avalon", which will only cause confusion since both Avalons are architectures for developing applications.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  16. Re:Bullshit by Anonymous Coward · · Score: 1, Insightful
    70% of the articles are bullshit, 30% are useful.

    Your mistake is that you don't realize that's a compliment. Anyone with a 30% usefulness rate is worth reading. (As long as you have a brain, you don't need to believe the other 70%, right?)

  17. Watch those guys by MikeMacK · · Score: 2, Funny
    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.

  18. Yep, this guy's an idiot by computational+super · · Score: 0, Flamebait

    After two minutes of poking around his web site I found this gem:

    But for almost any kind of real business, you just have to know how long things are going to take, because developing a product costs money. You wouldn't buy a pair of jeans without knowing what the price is, so how can a responsible business decide whether to build a product without knowing how long it will take and, therefore, how much it will cost?

    Of course, the time it takes to develop a specification so detailed that "the business" can decide how long it will take and, therefore, how much it will cost is three time the amount of time you'll ultimately spend "developing the product".

    --
    Proud neuron in the Slashdot hivemind since 2002.
    1. Re:Yep, this guy's an idiot by jjohnson · · Score: 3, Funny

      There's definitely an idiot in there somewhere, but I don't think it's Spolsky...

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    2. Re:Yep, this guy's an idiot by Lao-Tzu · · Score: 4, Insightful

      Yeah, I used to work for a company that believed that. No specifications, since deciding how things will work would take too long. So we did iterative software development, instead - build it once, present it to the users, and then start over because it wasn't what they wanted.

      I quit.

      Oh man, am I ever happier now.

      Joel is no idiot. He realizes that specifications take time and effort to develop, and to keep up-to-date. He argues quite convincingly for specifications as a wise investment of time, not a waste. A large section of this book is devoted to "painless" specifications, and it is insightful and useful. This book is the only book I've ever felt a need to keep next to my keyboard - and it's not even a technical manual.

    3. Re:Yep, this guy's an idiot by Anonymous Coward · · Score: 0

      You could not be more wrong. Have you ever worked on a large project with no specs?

    4. Re:Yep, this guy's an idiot by dubl-u · · Score: 1

      Yeah, I used to work for a company that believed that. No specifications, since deciding how things will work would take too long. So we did iterative software development, instead - build it once, present it to the users, and then start over because it wasn't what they wanted.

      That's a fine anecdote, and an unfortunate experience, but it's not proof that specs somehow save you from this problem. You were clearly deciding how things work when you built the code, so decisions got made. If those bad decisions were turned into a spec that you developed in one go, the product would still have sucked; it just would have taken you longer to find out that you were making sucky decisions.

      The last place I was at did weekly iterations for a 4-developer, 9-month project, and it was fantastic. We had a vision of where we were going, and a rough product plan, but no written spec. Every week we built a few small features and were ready to ship at the end of it. Being able to see things working helped us kill dumb ideas sooner and, even better, let us devote more resources to things that turned out to be really important.

      No development method can save you if complete idiots are in charge. But if your people have the potential to learn, shorter feedback loops help them do it sooner. So the questions I have for you are: how long were your iterations? And why didn't anything happen to improve the quality of the decisions?

    5. Re:Yep, this guy's an idiot by Moraelin · · Score: 3, Insightful

      Going ahead without a plan is a sure-fire way to get shafted. Especiall when the client doesn't have only _one_ person representing them and making the decisions, as is the pipe-dream of extreme programming. You soon end up with 1 of them wanting something, 1 threatening to cancel the contract if he doesn't get something completely different, 3 playing politics and prestige games and trying to make a "my department is more important than yours" point to each other, and 2-3 wanting to turn the whole program into something completely unrelated because their department didn't really need an e-commerce system but could use a customized project planning tool.

      And I even have an experience that went like this: the client actually nominated one person to represent him and make the decisions for him. The ideal situation, right? So we go ahead, and even accept a ton of change requests from him, and conversely he aggrees that extra time is needed to implement those. Also that some features that needed the most time weren't that necessary and can be left out for now. Had some iterations with him too. All went smoothly.

      So then here comes the big day and deadline and have to get the program accepted and paid. And the client PHB gets in the act and overrides the representative. "What? You threw away _that_ feature I explicitly requested myself in the beginning?! On whose authority?! And why the heck is this program two months late?! I needed it in March!!" (The two months had been accepted by his representative as time to implement the change requests.)

      Turns out the peon nominated to represent him didn't have as much authority as he and we thought. And not having anything written down and signed for all that stuff in between, well, basically his view was that we went into phantasy land and implemented something else than what he asked for. Two months late too.

      "No development method can save you if complete idiots are in charge."

      Quite insightful, but therein lies the rub: development without any specs and just doing what the clients fancy this week, basically puts _them_ in charge. They're your new managers, they decide what you do. And they're not even trained or experienced to manage a programming project. How do you prevent half of them from being complete idiots?

      Basically I'm not against iterations as in showing the the client some progress. But I do like having _some_ specs, if nothing else to prevent wasting even more work.

      True, the client doesn't know exactly what they want from the beginning, and just writing all down will make the bad spec that you mention. But here's the fun part: you can help the client give you a good spec. Mock-ups and small demos take a lot less work than actually coding those features, and lets them see roughly how things work and kill dumb ideas just the same.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    6. Re:Yep, this guy's an idiot by dubl-u · · Score: 1
      the pipe-dream of extreme programming.

      Ok, I accept that you had problems doing this. But it would be easier to have a discussion if you'd accept that I have been successful with those methods. And honest, I've done several projects like this. These methods work, both in large corporations and highly volatile startups.

      You soon end up with 1 of them wanting something, 1 threatening to cancel [...] 3 playing politics [...] and 2-3 wanting to turn the whole program into something completely unrelated[...].

      Having a spec often doesn't help this problem. Instead, people just pile all their requests into an incomprehensible, unworkable spec. Then, because the project is underscoped, developers end up doing whatever parts interest them.

      Deciding what to build is a business problem and a political problem. Developers should give advice to the businesspeople, but they should stick to technical decisions. A planning process like the Planning Game makes sure each side does the things they are best at.

      Quite insightful, but therein lies the rub: development without any specs and just doing what the clients fancy this week, basically puts _them_ in charge. [...] How do you prevent half of them from being complete idiots?

      If you have a proxy for the real stakeholders, you have to close that feedback loop. For a proxy, I recommend that
      • they be a professional product manager
      • that they fairly represent the needs of all stakeholders
      • that you have weekly demos of progress that all stakeholders are invited to attend
      • that you release early and often (weekly if you can, but no less often than quarterly)
      Mock-ups and small demos take a lot less work than actually coding those features

      Agreed. Personally, I like whiteboards and paper. For a great reference on the topic, try Paper Prototyping by Carolyn Snyder.
    7. Re:Yep, this guy's an idiot by computational+super · · Score: 1

      Interestingly enough, you're underscoring my point, albeit in a subtle way. Re-read my post - I was pointing out the folly of trying to develop a specification so detailed that "the business" can attach a dollar figure to it before beginning development work on it... as far as design/specs themselves are concerned, I actually do beleive that doing some design work before starting coding is always useful.

      Sp, how does your post underscore my point? If you couldn't assimilate the meaning of a (pretty clear) 10-line HTML blurb, you're probably not assimilating the standard 1200-page corporate "large project" spec very well, either.

      I do think it's interesting that everybody who disagreed with Joel in this topic has been modded down... does Joel have mod points?

      --
      Proud neuron in the Slashdot hivemind since 2002.
    8. Re:Yep, this guy's an idiot by Moraelin · · Score: 1

      And again, for anything even resembling a real corporation, having a higher level manager (who can basically speak for or override all departments who want a say in it) available to you all the time is at most a pipe dream. It may work for tiny projects, or small clients, or sometimes even projects which are the high level manager's own pet project and _explicitly_ supposed to help him override the subordinates.

      We even had such a project. The manager was basically sick and tired that the subordinates were submitting reports that were not formatted exactly with his favourite (unreadable) fonts and his favourite (unreadable) colours. So he wanted a customized tool that enforces those, so he can tell all the peons to use it or have their reports thrown into the garbage bin. And since it was his own pet project and pretty much _against_ the subordinates, we had direct communication to him.

      But for anything else, expecting that a high level enough manager:

      1. Even understands what the subordinates need to do their job, when he's not even the one using that tool, and

      2. Is willing to waste his time directly at your team's disposal, as is the dream (again: pipe dream) of XP,

      dunno, it's IMHO more wishful thinking than going to happen. _Both_ points are unlikely to happen.

      In practice,

      1. they won't have a bloody clue what the subordinates need, and will go into la-la land wishing just funny fonts and colours. (Witness the endless stream of useless intranet projects that are some boss's pet project, but are so broken that noone wants to use them. The fault invariably is that said boss never uses that site himself, but orders a secretary or peon to get the data for him out of him. So he never gets to witness first hand that his ideas suck.)

      2. Someone who has enough rank to keep all those department fiefs in line and keep them from fighting over whose barony is more important, well, his time is measured in millions per day. Maybe even per hour. No way you're getting him to stop managing a company, and start managing your team instead.

      So he'll delegate a peon who _doesn't_ have the authority and probably didn't want to babysit your team either. And you end up in the exact situation I've been through. (And if you think I'm exaggerating, C3, the poster child of XP, basically also got a peon assigned to be their proxy.)

      But now to individually address your criteria, and why you're unlikely to get all of them satisfied from a big customer:

      "they be a professional product manager"

      As I've said, it'll more likely be a lower level manager who got assigned a task they can't fully controll, and they likely didn't want in the first place.

      "that they fairly represent the needs of all stakeholders"

      As discussed before, the only way those stakeholders won't pull in opposite direction, is if the proxy outranks them all and can keep them in line. When the peon is signifficantly lower rank than them (which will almost always be the case) they'll more likely make it a point of prestige to make it clear they won't let a peon dictate what they'll use.

      "that you have weekly demos of progress that all stakeholders are invited to attend"

      In a situation like the above it's a recipe for disaster. Each boss in that room will make a point to want something else, just to show that (A) they're active and paying attention, (B) show who's in charge.

      A couple of friends are in a project, two floors above my office, which is already two years late and going to the dogs just because of that: they ended up having to deal with the egos of every single PHB in a big corporation. There isn't a single week when those don't want the exact opposite of what they wanted last week, and preferrably something which needs a fundamental architectural change.

      And while in theory it may seem like "cool, as long as they pay for those change requests, it's all fun", it's actually still seen everywhere as a failed proj

      --
      A polar bear is a cartesian bear after a coordinate transform.
    9. Re:Yep, this guy's an idiot by dubl-u · · Score: 1

      And again, for anything even resembling a real corporation [...] pipe dream [...] wishful thinking [...] Serious corporate development [...]

      Point 1: I'm not sure if you're trying to be a condescending jerk, but that's sure how it comes across here. Before assuming that I'm only doing "quick web-site with a forum", maybe you could, say, ask. Then you'd find out that I've worked on some of the world's highest volume web sites, worked for one of the world's largest banks, and worked on financial trading software, where bugs can cost millions of dollars. I sure haven't seen it all, but I've done a little more than web guestbooks, thanks.

      Point 2: I'm saying I have done this and it works. So you telling me it's impossible is unconvincing; it feels like I'm a pilot getting lectured by a flat-eatherer.

      Point 3: If your organization is fundamentally too insane to figure out what software to make, then no matter what method you use you're screwed. Projects for organizations like that will be eternally late, confused, painful, and in the end, disappointing for stakeholders. So yes, I agree, agile methods may not be for you guys. That's ok; you don't have to use 'em. In fact, please don't use them, because I'd rather you blamed each other for the upcoming failures rather than blaming tools that work fine for other people just because they aren't silver bullets.

      I would however keep actual releases a lot less often than weekly, and make it clear that weekly they can get at most betas and demos.

      If that's all you can do every week, it's great to make that clear. Me, I can deliver working functionality every week. The trick is to slice the work so that instead of spending much of the project on invisible lower layers, I do thin slices of the app every week, cutting all the way from UI to back end.

      For starters there just isn't time in a week to do any signifficant architecture changes or anything.

      Well, more accurately, you don't know how to do any significant architecture changes in a week. Not knowing something how to do something doesn't mean it's impossible.

      I agree that some architectural changes in large code bases or in large deployed environments can take more than a week. Those, you do gradually. But personally, I regularly do significant architecture changes in a week.

      Second, I can even think of bugs which took more than a week to test.

      Then A) don't write bugs, and B) automate all your tests. On the projects I do, bug rates are well below one per developer-month.

      On my last project we never went home with an open bug and we always went home on time. Our total QA period before our launch was about 30 minutes because we had already automated all the tests we could think of, including unit tests, end-to-end functionality tests, and several different kinds of performance tests. And of course, any changes we made were done in pairs, meaning continuous code and design inspections. So far we've been in production for about a month with no bugs found.

      This kind of thing gets at least one month of extensive QA

      Yeah, if you're used to writing buggy software, that's a good attitude to have. But doing XP, you're doing QA from day one via automated acceptance tests. After N months of simultaneous QA and development, an extra month of QA generally seems unnecessary. But sure, it doesn't hurt do extra QA. I'd bet, though, that if that month-long QA periods keet turning up zero or even a small handful of defects, you'll eventually get tired of 'em and spend your QA dollars where it generates real value.

    10. Re:Yep, this guy's an idiot by Moraelin · · Score: 1

      "A) don't write bugs"

      Well, gee. It's so obvious. I wonder why noone else figured that out before. (Sarcasm there, if you can't tell.)

      "B) automate all your tests"

      We do.

      "Yeah, if you're used to writing buggy software, that's a good attitude to have. But doing XP, you're doing QA from day one via automated acceptance tests."

      Ah, more XP bullshit and double-speak.

      No, XP merely redefines the meaning of the word "bug". If it's not in an automated test, it's not a bug. Even if the client's data is pwn3d by any l33t script-kiddie, it still isn't a bug. Unless the client's _manager_

      1. Is a security expert and could foresee every single security vulnerability your team might make, and,

      2. has the technical skill to write extensive automated acceptance tests that encompass it all...

      hey, it's not a bug. It's the client's fault, not ours. Never mind that it's really a buffer overflow in our code, or our piss-poor design of the enforcing of user rights, it's not a bug. It's a change request.

      One word for you: bullshit.

      That kind of lame changing semantics just disgusts me.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    11. Re:Yep, this guy's an idiot by dubl-u · · Score: 1

      Ah, more XP bullshit and double-speak. [...] hey, it's not a bug. It's the client's fault, not ours.

      Ok, clearly you want to be right more than you want to learn something, so I'm kinda wasting my time with you. Suffice it to say that you're raising some good issues, and that there are workable solutions to these problems. If you want to actually know what they are, drop me a line and ask. But you telling me over and over that it's impossible to do things that I have actually done isn't productive for either of us.

    12. Re:Yep, this guy's an idiot by Moraelin · · Score: 1

      I'm not sure what I'm supposed to learn. How to write software that never has any bugs?

      I believe that's already explained in Kent Beck's books very clearly. It's based on redefining semantics so that "bug" suddenly means what everyone else calls "known deffect".

      Funny thing is, Microsoft too ships with no known defects as a matter of policy. By XP definition (again, Kent Beck's definition) all the buffer overflows and exploits that pop every weeks are therefore not bugs. They're at most change requests and we should probably all pay to get them fixed... err... changed.

      Or for that matter, hey, then I've never had a bug either.

      How to release every week to the productive servers? See above. If we redefined "we don't know if there's anything that our automated test cases don't cover" to mean "our software is perfect", sure, we too are ready to go productive without extensive QA.

      Now if only the client and all their business partners also saw it that way: that if something happens to their data, it nevertheless was 100% perfect software that caused that.

      How to have zero penalty for stumbling blindly and changing the architecture every week? That's explained in the book too. It merely requires redefining semantics again.

      The rest of the world, when talking about the cost of change, talks about not only the cost of this week's changes, but also about all the code already written and which now gets thrown away. Let's say every other week the client wants the same thing changed again to something else, and let's say it only requires two man-days each time (one XP pair, one day). By the definition the rest of the world uses, if you did that 20 times, that's a total 40 man days wasted. Not just the last 2.

      There is no known way to elliminate that effect, because it would require going back in time and causing the first writing wrong code to never have happened in the first place. Hence why most of us would rather stop and think a bit than rush through a major architecture change in one week, and maybe throw it away the next week. Because all those weeks slowly add up.

      But if in XP's case we redefine that to not be a part of the cost, look, XP has solved that problem too.

      Needless to say, I'm still not impress by any methodology whose success depends on redefining what "success" means.

      Point in case, even the famous C3 project, XP's poster child, is such a redefined "success". What Kent Beck doesn't say is that the client considered the project an abject failure and cancelled it. After several years of XP and the client's representative developping stress-related health problems, the C3 still did about 10% of what it was supposed to do. So it got cancelled.

      But Kent Beck conveniently redefines that to be an outstanding success.

      Either way, if you have solutions that don't involve redefining words, I'm genuinely interested in hearing them. If they fall under what I've described above, I'm not. That I already know from the XP books.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    13. Re:Yep, this guy's an idiot by dubl-u · · Score: 1

      Either way, if you have solutions that don't involve redefining words, I'm genuinely interested in hearing them.

      That's not particularly convincing coming after a 13-paragraph rant. Let's just leave it at this: we both agree that the way you understand it couldn't possibly work.

  19. Opinionated?! by INetEngineer · · Score: 1

    "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". :)

    --
    --I smoked my sig.
    1. Re:Opinionated?! by NotQuiteReal · · Score: 1
      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.

      --
      This issue is a bit more complicated than you think.
    2. Re:Opinionated?! by Anonymous Coward · · Score: 0

      This guy is absolutely convinced that Microsoft IS the source of all evil - AIDS, killing babies, you name it:
      Microshaft

  20. Re:Cool -- Step 1. Post spam to Slashdot by Anonymous Coward · · Score: 0

    Step 1. Post a referral link to slashdot.
    Step 2. Wait for idiots techies who SHOULD KNOW BETTER to mod up your spam.
    Step 3. Collect referral cheques from linked purchases and... ...wait for it...

    ***PROFIT!***

  21. Not by a long shot douchebag by Anonymous Coward · · Score: 0

    Does the F in FP stand for FIFTH? wtf. you loser.

  22. I do not pay much attention to Joel Spolsky by Paul+Bain · · Score: 2, Insightful

    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, 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 license. And he would move to Linux, abandoning M$ Windows.

    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?"

    Why do people who have such a poor understanding of the OSR (e.g., Joel, Steve Jobs) attract such attention, nay, adoration, from Slashdor readers? I simply do not understand it.

    --

    A lawyer & digital forensics examiner. Also an expert on open source software (OSS).
    1. Re:I do not pay much attention to Joel Spolsky by Anonymous Coward · · Score: 0

      Heh. I don't quite get what you're doing (it's not inflammatory enough for trolling and you don't seem to be building karma for crapflooding) but welcome to my friends list!

    2. Re:I do not pay much attention to Joel Spolsky by mbullock · · Score: 3, Insightful

      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 absolutely critical. Unless you are lucky enough to work in an OS bubble the questions you pose are just plain silly. What I personally value in coworkers is smarts, work ethic, and an ability to learn things quickly. The specifics are secondary because they change.

    3. Re:I do not pay much attention to Joel Spolsky by Naum · · Score: 2, Insightful

      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.

      --

      AZspot
    4. Re:I do not pay much attention to Joel Spolsky by TheRealSlimShady · · Score: 4, Insightful
      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?

    5. Re:I do not pay much attention to Joel Spolsky by Paul+Bain · · Score: 0, Troll

      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). In general, the earlier that a technologist understood the OSR and the longer that he has been using open source, the smarter that he is. Trust me, people such as Linus, Larry Wall, and Tim O'Reilly are damned smart.

      And if you think that Windows has a future (as Joel apparently does), then you are probably an idiot. Indeed, if you think that Windows has a future, then why are you reading and posting to Slashdot at all? Slashdot is the most concentrated collection of Windows and M$ haters on the face of the planet.

      --

      A lawyer & digital forensics examiner. Also an expert on open source software (OSS).
    6. Re:I do not pay much attention to Joel Spolsky by TheRealSlimShady · · Score: 1

      You're quite obviously a troll, but I would say that idiot would be a label quite easily applied to someone who is asking questions about Linux/Apache when they're looking for a Windows developer...

    7. Re:I do not pay much attention to Joel Spolsky by Anonymous Coward · · Score: 0

      Slashdot is the most concentrated collection of Windows and M$ haters on the face of the planet.

      Actually most readers of slashdot participate through Internet Explorer running on Windows. It's easy to say you hate something huh?

    8. Re:I do not pay much attention to Joel Spolsky by kashani · · Score: 3, Insightful

      Yes asking someone how long they have gone to school is the same as asking someone what they have DONE at school. I've got 5 years of major ISP exp, that trumps 10 years of screwing around with a single PC in your basement.

      kashani

      --
      - Why is the ninja... so deadly?
    9. Re:I do not pay much attention to Joel Spolsky by downbad · · Score: 2, Funny

      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.

    10. Re:I do not pay much attention to Joel Spolsky by arethuza · · Score: 1
      Great post! I initially though "what a great troll", but then realised that I have actually met people who think like this.

      For what its worth, I think Joel does a pretty good job. Clearly there is a subtext of him marketing his products (I know people who use them and think they are great), but thats OK as he is pretty up front about it.

    11. Re:I do not pay much attention to Joel Spolsky by Anonymous Coward · · Score: 0

      He works at a commercial software company that needs income, of cause they doesn't release their software as open source.

      "I simply do not understand it. "

      My guess is that you are probably just a zealot.

    12. Re:I do not pay much attention to Joel Spolsky by Anonymous Coward · · Score: 0

      "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."

      It's worse than that -- he wrote an essay (was it this one?) on ArsTechnica with massive critisism of Phil Greenspun's "lack of insight" for basing the company around Free Software, and praised the actions of the new VC who decided to scrap the (working, successful) code and re-write it in .NET with a proprietary license.

      Naturally, the .NET code was a big stinking failure, horribly late, bug-ridden, and the customers were complaining all-through the process that (a) they liked the software as it was and (b) they wanted modifications now, which ArsTechnica couldn't do because they were busy rewriting their software in an inferior language.

      The impression I got of the company was that it went from being a very successful company with a Free Software product, making millions from consulting, to a failed, almost-bankrupt company with a proprietary product that nobody wanted and wasn't earning any money. And Joel Spolsky wrote an essay in the middle of all this, cheering the people with the "vision" to persue a proper software license (proprietary), a proper programming language (.NET), which would now only run on WindowsNT and didn't do what the customers wanted

    13. Re:I do not pay much attention to Joel Spolsky by Mant · · Score: 1

      Trust me, people such as Linus, Larry Wall, and Tim O'Reilly are damned smart.

      Just becuase some smart people adopted Linux early does not mean adopting Linux early is a sign of being smart. I mean, I assume you adopted Linux early, but you include such an obvious logical fallacy as this, so right now I'm not impressed with your smarts. Unless your a troll, in which case it was well done.

      And if you think that Windows has a future (as Joel apparently does), then you are probably an idiot.

      If you think it doesn't you are living in a fantasy. Even if Linux is very succesful, it isn't going to make windows go away. Linux will be doing very well to be in competition on the desktop, which is still light years from Windows vanishing.

      Indeed, if you think that Windows has a future, then why are you reading and posting to Slashdot at all?

      Maybe becuase Slashdot has lots of non-OS related stuf? Maybe becuase while there are some Slashdotters who are rabidly anti-MS, it isn't a hive mind? Maybe quite a few windows users and coders also post here?

    14. Re:I do not pay much attention to Joel Spolsky by Fulcrum+of+Evil · · Score: 2, Insightful

      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 intelligent people don't use Linux/BSD or really drink the koolaid. Some of us have lives outside of the computer.

      Why do people who have such a poor understanding of the OSR (e.g., Joel, Steve Jobs)

      Why do you think their understanding is poor? Just because they aren't OS crusaders?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    15. Re:I do not pay much attention to Joel Spolsky by JoeNiner · · Score: 2, Insightful

      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 presence, with customers willing to pay for applications of that type), I would not be surprised at all if he develops software for the platform. Until then, he is trying to make money, not prove he is smarter than everyone else.

      Disclaimer: I have Joel's page bookmarked and have at least read a part of every one of his essays. You'd be crazy not to learn what you can from successful people who share their thoughts with such ease in a public forum.

      --
      Mod Me, Bee-yotch!!!
    16. Re:I do not pay much attention to Joel Spolsky by Anonymous Coward · · Score: 0

      . If Joel understood that simple fact (and he does not), then he would release his software under an open source license.

      Maybe because he runs a business and doesn't have the luxury of living up to your ideals, of which you're not going to implement as your sole income stream.

  23. Bloat is good! by MrLint · · Score: 2, Insightful
    1. Re:Bloat is good! by Anonymous Coward · · Score: 0

      Nice generalization. Perhaps you could provide a single reason why bloat, in the context of the article you quote, is bad.

    2. Re:Bloat is good! by Anonymous Coward · · Score: 0

      One man's bloat is another man's feature. He makes his point well.

    3. Re:Bloat is good! by vhold · · Score: 3, Insightful

      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.

    4. Re:Bloat is good! by javaxman · · Score: 1
      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...

    5. Re:Bloat is good! by MrLint · · Score: 1

      well what im really scared about is that all that business logic will infect me and turn me into a PHB :)

    6. Re:Bloat is good! by akuma(x86) · · Score: 4, Insightful

      >> 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.

    7. Re:Bloat is good! by samael · · Score: 1

      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.

    8. Re:Bloat is good! by vrt3 · · Score: 1

      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 Netscape: one could argue that Mozilla/Firefox/Thunderbird are very successful after all, but that misses his point: while the software is successful, Netscape as a company is not.

      --
      This sig under construction. Please check back later.
    9. Re:Bloat is good! by Anonymous Coward · · Score: 0

      This attitude towards bloat is no surprise from someone who helped creating the beast called Excel... Bloat that app baby!

    10. Re:Bloat is good! by Haeleth · · Score: 1

      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 a coincidence.

    11. Re:Bloat is good! by ab762 · · Score: 1
      ...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:-)

    12. Re:Bloat is good! by MrLint · · Score: 1

      id mod you up as insightful if i hadnt started this thread:)

    13. Re:Bloat is good! by akuma(x86) · · Score: 1

      >> 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.

  24. like How to Promote Your Business on the Internet? by Anonymous Coward · · Score: 1, Interesting

    I guess that's why you're pimping it here on Slashdot, huh.

    Sorry dude! I looked at your site and read through a few of the articles. I didn't find anything interesting to me. In contrast, nearly all of the articles by Joel have been interesting to me (I have read most of them more than once over the years).

    Do not pass Go, do not collect $0.02.

  25. Re:like How to Promote Your Business on the Intern by MichaelCrawford · · Score: 0, Offtopic
    I guess that's why you're pimping it here on Slashdot, huh.
    My father used to say "If you don't toot your own horn, no one else will toot your horn for you."

    Sorry you didn't find anything interesting, but I'll be writing several more articles in the coming year, so please bookmark it and check back from time to time.

    --
    Request your free CD of my piano music.
  26. Bought It. Reading It. Enjoying It. by JohnDeHope3 · · Score: 1

    Hell I'm ever reading the chapters on writing specs. So you can tell it *must* be good then.

  27. A bit trigger happy with the name calling? by vhold · · Score: 2, Interesting

    Hmm, when I went poking around I found this quote almost immediately..

    'First of all, failing to write a spec is the single biggest unnecessary risk you take in a software project. It's as stupid as setting off to cross the Mojave desert with just the clothes on your back, hoping to "wing it."' ....

    I don't think you are really justified to call the guy an idiot with your single, most likely very out of context, quote. Here is where I got this quote.

  28. Actually I just read this too... by RobinH · · Score: 3, Insightful

    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 have never let my schooling interfere with my education." - Mark Twain
    1. Re:Actually I just read this too... by tootlemonde · · Score: 1

      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 begin without specs is because the managers are lazy, incompetent or the project is so poorly defined that it is doomed to failure. The absence of specs is a symptom of a deeper problem, not a error that can be corrected simply by pointing it out.

      His advice on spec writing has a number of flaws, in particular:

      Pick your product's audiences and imagine a fictitious, totally imaginary but totally stereotypical user from each audience who uses the product in a totally typical way.

      Imagining how a user uses the software is no substitute for actually observing how users interact with an existing system, even if it's a manual or inefficient system. The world almost always behaves differently from what you imagine and if you have direct observation, you don't need the imaginary scenarios.

      I detect in this bit of advice, as well as in much of his writing, the mind of a frustrated writer who wants to use the opportunity of a specifications document to amuse the reader with his cleverness.

      His advice on who should write the spec is also poorly thought out. He recommends that someone with the title of "program manager" write the functional specs. He says: "All program managers need to be very technical, but they don't have to be good coders."

      The functional specs have to come from the users. A program manager may write them down but it is the users that decide the UI, the workflow and the deliverables, not the program manager. If this program manager has anything to contribute it is because of his broader experience with other systems and projects, not because of his technical expertise.

      His advice on how to write a spec is generic and self-evident, e.g., "write as simply as possible", "review and reread several times". The functional specification document should be vetted and approved by the manager of the business unit that is going to use it. The objective is to make him happy with it. If he's a good manager, he'll make sure the document is usable. If he's not a good manager, it probably doesn't matter what the document says.

    2. Re:Actually I just read this too... by Anonymous Coward · · Score: 0

      It's obvious you have a different perspective on the matter than I do. If I ever tried to get a customer to write the functional specification, they would laugh at me and tell me that's my job, which it is. My customers don't know the details of what they want. In a functional spec, I write that down, and they REVIEW the spec, point out problems, and I REVISE, and then REPEAT.

      The problem Joel pointed out about nobody reading functional specifications is right on from my point of view. I recently finished a project where I had written a 9 page functional spec for it (yep, very small), and 3 of those pages were title page, table of contents, and signature page. So there were only 6 pages for the customer to read. I got approval from the customer, went ahead and implemented it, and when I got to the site, they told me this wasn't going to work the way it was. They hadn't read the spec.

      I recently wrote a different spec, about 60 pages long, using some of Joel's ideas about including anecdotes with imagined typical users, and the spec DID get read, and lots of good comments. The typical users were well accepted, and it helped everyone think in terms of the user, rather than thinking about how the system actually did the work. It was an insightful idea. I was able to describe the users using the system in a way that even the customer understood.

      I'm sorry that you didn't find the content as useful as I did, but there's no accounting for our different perspectives on the issue. I do, however, agree that his comment about why people don't write functional specs wasn't very useful to me, since for anything bigger than a 2 day job pretty much gets at least a basic functional spec around here. But I suppose there are people around who still don't write specs.

    3. Re:Actually I just read this too... by ynohoo · · Score: 1

      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, updated by the programmer as required. Defines the nuts and bolts of the solution. May be skipped for simple problems. May be seen by the Client, but usually of little interest to them.

      This might seem like overkill, but knowing who signed off what features and when can save you and your companies ass. You still get clients trying to "backdoor" extra features in by talking directly to the coder or raising it during the testing phase, but if you have a record of what they requested and approved, its more difficult to be abused in that manner. I've left out the quoting and estimate process, but you get the idea.

    4. Re:Actually I just read this too... by tootlemonde · · Score: 1

      You still get clients trying to "backdoor" extra features...

      Sometime before the spec-writing stage, the customer should have made up a business case for the project in which he describes the revenue or cost savings from each feature of the project.

      The contractor or IT department can help at the business case stage by estimating the effort needed to implement each feature so that the client can compare the cost to the benefit.

      The list of features that survive the cost-benefit analysis is the basis for the specifications. If the customer wants to add extra features later on, it should be because he can cost-justify them and thus be willing to pay for them.

      Similarly, contractors will try to push all sorts of bells and whistles into the project to boost the billable hours. A reference to the business case is the customer's best guide.

    5. Re:Actually I just read this too... by tootlemonde · · Score: 1

      If I ever tried to get a customer to write the functional specification, they would laugh at me and tell me that's my job, which it is.

      In one sense, it's your job if they're willing to pay you to do it. However, the question is, who is best able to determine the client's needs, you or the client?

      Having the contractor who is going to implement the project create the specs puts the contractor in a conflict of interest. If he's paid by the hour, he naturally wants as large a project as possible. In that case, the spec document becomes more like a catalogue that the client picks and chooses from. If the contractor is under cost constraints, he naturally wants as few features to implement as possible. In that case, the spec document doesn't take into account the benefits of the features to the client.

      If customers understood how much of the cost and success of the project depended on the spec document, I'd expect them to want to take a lead role in its development. The fact that many clients don't has its counterpart in the fact that many IT departments start projects without specs. They're not thinking very hard about their jobs.

    6. Re:Actually I just read this too... by Inthewire · · Score: 1

      If the company I work for had a single client, one willing to pay anything to get results, yeah, SOWing a massive effort might make sense.
      But we've got lots of clients, and we want more, so we don't pad the hours for free money (reference accounts drive sales).
      There's fiscal reasons for being reasonable.

      --


      Writers imply. Readers infer.
  29. Re:Cool by Anonymous Coward · · Score: 1, Informative

    It's pretty pathetic that you refer to Microsoft as M$ and then try to pimp your Amazon affiliate link in the same post.

  30. Review advertised. Summary delivered. by skoda · · Score: 5, Insightful

    I realize critical writing is difficult, but if you're going to advertise a book review, deliver one. Like most Slashdot "reviews", this review is actually a summary.

    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.

  31. Amazon Spammer at it again... by Anonymous Coward · · Score: 1, Informative

    +5 informative? Please. This is just another post by cloudkj to spam his Amazon affiliate links.

    He has a history of this.

    Quit modding this dickhead up.

  32. Sounds like 13yr old kid rants by Anonymous Coward · · Score: 3, Interesting

    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.

    1. Re:Sounds like 13yr old kid rants by TheRealSlimShady · · Score: 1
      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 integrated or working system.

      Excellent point, and a point completely missed by a great many.

  33. Incestuous by Anonymous Coward · · Score: 0

    Someone please persuade me that this review, the post and most of the comments are not written by people who personally know Joel of Joel and Joel Joel. Joel.

    Joel.

    1. Re:Incestuous by Anonymous Coward · · Score: 0

      You forgot to mention the moderation.

  34. If you like my writing, there's more by MichaelCrawford · · Score: 0, Offtopic
    Here is an index to all my writing on the web and in dead-tree form.

    Something like fifty articles, essays, rants and scrawls.

    The author of DrunkenBlog says of Living with Schizoaffective Disorder " It's the kind of thing that reminds you of why the web is cool."

    --
    Request your free CD of my piano music.
    1. Re:If you like my writing, there's more by Anonymous Coward · · Score: 0

      Slow down cowboy.

  35. An error in one of his essays by Sirp · · Score: 4, Interesting
    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 :
    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...
    1. Re:An error in one of his essays by Alex+Belits · · Score: 2, Informative

      *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 defined for this situation, optimization would likely break it.

      So the most Joel could accomplish by using a reference is that the dereference of NULL would kinda supposed to happen outside of his precious function, and in the code of the poor guy who dared to call it. "Kinda supposed" because it isn't even guaranteed to work that way in the first place.

      --
      Contrary to the popular belief, there indeed is no God.
    2. Re:An error in one of his essays by mjfgates · · Score: 1

      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.

    3. Re:An error in one of his essays by bitMonster · · Score: 1

      Huh? You cannot check a reference.
      You can do "assert(&r != NULL);", I guess, but that is utter nonsense.

    4. Re:An error in one of his essays by bitMonster · · Score: 1

      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 crappy computers? WTF?

    5. Re:An error in one of his essays by ab762 · · Score: 1

      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 -- and why most of us don't need to do that level.

    6. Re:An error in one of his essays by alexo · · Score: 1


      > 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.

    7. Re:An error in one of his essays by Anonymous Coward · · Score: 0

      *p in this case _is_ the dereferencing of the NULL pointer,
      Right.

      and it certainly will produce a segmentation fault.
      Wrong. It's more efficient to copy the address instead of making sure the memory can be accessed and then copying the address. I only tested it with gcc 3.4.3 (which prints 0 as expected) and that one counterexample is enough to at least show your "certainly" to be wrong. Remember, undefined behaviour allows anything. That includes going on as if nothing's wrong.

    8. Re:An error in one of his essays by Sirp · · Score: 1

      It is not 'dubious' that his code was bad: his code was almost certainly bad.

      If you get a crash report, look at the top level of the call stack, and see it's due to a 'NULL reference', you can be 99.9% sure that that NULL reference was caused by a NULL pointer dereference in a direct or indirect caller.

      If you dismiss the bug as 'cosmic rays' because C++ doesn't allow NULL references, then you have made a misdiagnosis of the cause of the bug, and failed to fix something that might have easily been fixed.

      By Joel's own admission, there were *hundreds* of reports like this.

      In other words, there were some bugs involving classic NULL pointer dereferences all over the code, and Joel wasn't a skilled enough software engineer to work out what the problem was, instead deciding to blame it on the user's system.

      Sure, I agree, some bugs aren't worth fixing. It might not be worth fixing a minor display glitch that is difficult to reproduce and track down. It might not be worth fixing printing software not working properly with a few obscure printers. Heck, sometimes it might not even be worth fixing a deeply-seeded memory leak that causes the program to fail after running for a very long time. I'm even willing to concede that in some cases a very very rare memory corruption bug might not be worth fixing, when your program isn't meant to be highly reliable.

      But when you're working on a product intended to have millions of users, and you are allowing simple NULL-pointer dereferences into your code, something is SERIOUSLY wrong. That's just awful, awful coding.

    9. Re:An error in one of his essays by Alex+Belits · · Score: 1

      I was looking at the previous example, where there was done more than printing, so the address was physically accessed, and therefore would produce a segfault..

      --
      Contrary to the popular belief, there indeed is no God.
    10. Re:An error in one of his essays by Anonymous Coward · · Score: 0

      *p was only used in the second example.

  36. Re:Cool by Eric+Giguere · · Score: 1

    Another book on programming interviews (from the interviewee's viewpoint) is Programming Interviews Exposed. Seems like a decent book for preparing for Microsoft-style interviews.

    Eric
    JavaScript is not Java, damn it!
  37. Stop me before I write again by MichaelCrawford · · Score: 1
    it gets to be an obsession sometimes. Writing that first paragraph is for me like the first drink is to an alcoholic.

    --
    Request your free CD of my piano music.
  38. A wee bit disappointing... by a_karbon_devel_005 · · Score: 4, Insightful

    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.

    1. Re:A wee bit disappointing... by Junks+Jerzey · · Score: 2, Insightful

      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 how awful something is. Then they grudgingly use it. Then they become advocates.

    2. Re:A wee bit disappointing... by ynohoo · · Score: 1

      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.

    3. Re:A wee bit disappointing... by turpie · · Score: 1

      Could you please point out where MS said they were going to drop Win32 support in Longhorn? As far as I know they are just going to develop their own new software in .NET, not force everyone else to.

  39. Bloat matters with distribution by Anonymous Coward · · Score: 0

    Bloat matters when you think about distribution.

    There is a limit to the "bloat is good" principle. I have a reasonably fast cable modem connection at home, and don't really mind 10-20 MB downloads (assuming my cable connection is the bottleneck here). When things are getting bigger than that, it must be something I really want, up to something like 300 MB. Beyond that I just won't be bothered.

    But there are still a lot of people over dialup. I definitely would not be touching anything beyond 20 MB over dialup. Also, if the download site is slahdotted or something to dialup speeds it means almost the same thing.

    I hardly ever buy anything that I can't download and try from the web first (it's ok if they send me a CD/DVD backup in mail).

    Then you have limited form factor devices where bloat really, really does matter. Show me a cool 20 MB app and I show you my PDA with 5 MB memory (yeah, it's getting kinda old).

    Just about the only situation where you may be able to forget bloat is if you can get an OEM deal for your software. Or maybe not - after all, you probably want other distributions channels in addition to OEMs.

  40. I've never quite understood... by symbolic · · Score: 1


    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).

    1. Re:I've never quite understood... by Foolhardy · · Score: 3, Informative

      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 or Scheme, or a declaritive rule-baed language like Prolog or Mercury. 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 or multiple modes 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 has to jump through hoops to get the needed multiple inheritance to work.
      OTOH, there are some interesting projects like F#, 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>

  41. That's because so much depends on the people... by SuperKendall · · Score: 1

    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 before they start.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  42. OT: Re:A quick FYI by Tim+C · · Score: 2, Insightful

    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...

    1. Re:OT: Re:A quick FYI by Anonymous Coward · · Score: 0

      You are correct. I just meta-moderated the offtopic as unfair...whoever did that was wrong. (Also because an on-topic response to an off-topic post is not off-topic!)

  43. He means, geeks run unix, ma/pa kettle run winders by Anonymous Coward · · Score: 0



    He means, geeks run unix, ma/pa kettle run winders. That's a fact, Jack!

    (Fingers, don't fail me now)

    /.

  44. Joel is way too self-assured by fionbio · · Score: 3, Informative
    I've came across an interesting discussion 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.
    1. Re:Joel is way too self-assured by game · · Score: 1

      Joel might be smart. But he fancies himself as a been-there-done-that kind of guy. It must be very hard for him to withhold judgement which is reinforced by his dark, journalistic side.

      I stopped reading JoS because of this and his OSS stance. He is too alien.

  45. Joel is good,but his sayings are common sense. by master_p · · Score: 1

    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. If he can't come up with something fresh, who can?

  46. I simply do not pay much attention by guet · · Score: 3, Insightful

    I simply do not understand it.

    Perhaps because you're so blinkered by your belief in the 'one true way'.

  47. Re:like How to Promote Your Business on the Intern by Anonymous Coward · · Score: 0

    That's funny, because my girl toots my horn.

  48. Testing, Dog Food and Open Source by RAMMS+EIN · · Score: 1

    ``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 are miserable failures. The ones that succeed are invariably the ones that the developers write for themselves; the ones that fail the ones that they make for others. Most OSS UIs suck, because we don't need them to be better.

    With commercial software, it's largely the other way around. The software is developed for Real Users, and therefore often has a good interface and a bad implementation. Now the ideal might just be commercial open-source software - like OS X: open source core, commercial UI. The core could use a lot more hacking, though.

    --
    Please correct me if I got my facts wrong.
    1. Re:Testing, Dog Food and Open Source by CyberDave · · Score: 1

      I'd mod you up if I could, but I don't have mod points.

      Your third paragraph is something I've been thinking for many years, but have found somewhat difficult to convey because the people I'm talking to inevitably think I'm attacking them, their ego, their competence as programmers, or something like that.

      Developers (programmers, code hackers, whatever you want to call them) invariably will produce a piece of software that works great for them, but sucks major ass when you stick it in front of someone else.

      I might not have a problem stringing together 4 or 5 different command line utilities just to print a text file, but my mom and dad couldn't figure that out if their life depended on them and would much rather see a shiny button labeled "Print" in the word processor's window.

      The thing that bugs me, though, is that nobody seems to listen (when I say it, when Joel says it, when the customer says it--well, maybe that last one since they pay the bills), and we end up with shitty software program after shitty software program (from a user interface standpoint, anyway).

      *sigh* enough ranting

      CyberDave

    2. Re:Testing, Dog Food and Open Source by SuiteSisterMary · · Score: 1

      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 column is superfluous, (have you ever seen something which is subfluous, or even just fluous?) and so on.

      --
      Vintage computer games and RPG books available. Email me if you're interested.
  49. Not true by Sirp · · Score: 1

    He's clearly talking about distributing end user software (Juno) to end users, and then getting crash reports back. He just looked in the function at the top of the stack (maybe that's the only function he had access to in the crash log) and assumed that C++ can't have NULL references, so this must be a problem with the user's machine.

    He says,

    "When you have a million users, it is amazing what will crash, often because of severe low memory conditions or severely crappy computers," and his solution for the problem is, "you will find crashes in places like that and you won't believe your eyes. (And you won't fix them. Cosmic rays, man. Get a new computer and this time don't install every cool shareware taskbar lint gizmo you find. Sheesh.)"

    No-where in the article does he blame this problem on another programmer. In fact his entire point is that no programming error can cause this problem. He says it's completely impossible, and blames it on the user's computer and says they should get a new one.

    He is perhaps right about it being related to computers with little memory, in which case a call to malloc() or new [1] might have returned NULL, and then he's dereferencing and passing to this function, however a well-behaved program should check for this kind of thing, of course.

    Prematurely blaming a crash on the environment the program is running on is generally a pretty clear sign of an inexperienced programmer....

    [1] new can't return NULL in Standard C++, but he was probably using MSVC++ = 6, and that does.

  50. Management by gr8_phk · · Score: 1
    "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 or what industry it's in. They really make that point in business school. The problem is there are aspects to running any business that they just don't teach in business school. You'll find lots of engineers, chemists (see Exxon), etc who get real world experience and then pick up an MBA and move up the food chain. I've never heard of an MBA going back for a technical degree, have you? And which one do you suppose is more valuable?

    If your company suddenly brings in a bunch of xEOs from an unrelated industry, it's time to find new cheese.

  51. That's not a political issue. by sczimme · · Score: 1


    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)

    --
    I want to drag this out as long as possible. Bring me my protractor.
  52. Not OSR by lwriemen · · Score: 1

    The most important trend in software is translation of implementation independent models into implementation dependent code. The OSR only exists because software development has been of such poor quality for so long. Face it, if the software does what it's supposed to do, nobody would ever care about the code being open source. Free software is a bird of a different color. Kind of like free anything. ;-)

  53. Joel on boring by Queuetue · · Score: 1

    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' aren't much more than his well-meaning, but useless "folksy" opinions on subjects that are either common sense (and therefore unneccesary), or him simply being contrary (and therefore unusable) to drum up blog links, and therefore sell more of his weak foggy-bottom bug-tracking-with-salsa-and-cheese or whatever. Which, of course, is designed with and intended to support the very same impractical methodologies that he espouses on a regular basis.

    Joel is essentially the homeopathy of the software world - not really dangerous, but useless, time wasting, and a proponent of expensive false hope for those too clueless to actually use critical thinking in thier lives.

    1. Re:Joel on boring by Anonymous Coward · · Score: 0

      His 'articles' aren't much more than his well-meaning, but useless "folksy" opinions on subjects that are either common sense (and therefore unneccesary)

      You just described Ben Franklin as well.

      or him simply being contrary (and therefore unusable) to drum up blog links

      Example?

      and therefore sell more of his weak foggy-bottom bug-tracking-with-salsa-and-cheese or whatever

      I did get tired of hearing about the software -- and I'm not sure what more it does than bugzilla. And you're right, if Joel has all the answers why doesn't he try and incorporate it into his product instead of writting ones for companies that aren't implementing them?