|
I assume you were just way too awesome for the book.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
While I don't agree with the terminology, I do agree with some of the sentiment - shipping a product is much more important than polishing code; after all, no matter how much you polish a turd it's still not an acceptable substitute for broccoli. The problem that Joel doesn't cover is that some really bad programmers behave just like these duct tape programmers, and as a company owner, you can't afford to work out which they are. Is somebody slacking off from writing tests because he doesn't need them and his code works straight off the bat, or are they just lazy, incompetent and trying to avoid doing any work.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
Pete O'Hanlon wrote: no matter how much you polish a turd it's still not an acceptable substitute for broccoli
Do you like broccoli?
I'd take the turd.
Even an unpolished turd is an acceptable substitute for broccoli
The metaphor is valid though
|
|
|
|
|
harold aptroot wrote: Do you like broccoli?
Yes.
harold aptroot wrote: I'd take the turd.
Whatever spanks your danglers I suppose.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
What works for building tree-houses doesn't work for building nuclear waste storage facilities - and vice versa.
|
|
|
|
|
Good thing he's just talking about software then.
"Creating your own blog is about as easy as creating your own urine, and you're about as likely to find someone else interested in it." -- Lore Sjöberg
|
|
|
|
|
Yes, I'm guilty of over engineering, but that's because I love to code!
This line was a good wake up call for me (and not because of the cool curse word):
“At the end of the day, ship the f***ing thing! It’s great to rewrite your code and make it cleaner and by the third time it’ll actually be pretty. But that’s not the point—you’re not here to write code; you’re here to ship products.”
* SA-LAP! *
- S
50 cups of coffee and you know it's on!
Code, follow, or get out of the way.
|
|
|
|
|
[...]
One thing you have to be careful about, though, is that duct tape programmers are the software world equivalent of pretty boys... [...] You, my friend, cannot go out in public without combing your hair. It will frighten the children. Because you’re just not that pretty. Duct tape programmers have to have a lot of talent to pull off this shtick. [...]
Meh.
Essay boils down to, "Fly by the seat of your pants: do whatever's necessary to get the product out the door, skip whatever isn't necessary. Oh, and be damn good, 'cause if you aren't you'll go down in flames".
(yes, I just summarized a collection of long, rambling metaphors with a much shorter metaphor. Deal with it.)
That's a great strategy, if you can pull it off. I've worked with programmers who usually could, programmers who usually couldn't, and programmers who never could... but constantly tried anyway. The last are the worst: instead of shipping without some feature, we shipped with it... broken... and some rather unpleasant collateral damage.
I know the bits about C++ and multithreading delighted at least one person here, but frankly they're irrelevant to the discussion (and please... who here is writing Windows desktop apps and still managing to keep their process down to a single thread? Ha! I don't believe you.)
|
|
|
|
|
Exactly.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
Shog9 wrote: I know the bits about C++ and multithreading delighted at least one person here, but frankly they're irrelevant to the discussion (and please... who here is writing Windows desktop apps and still managing to keep their process down to a single thread? Ha! I don't believe you.)
Well said. My current 'application' consists of three computers, one user process, 4-6 services, two device drivers, and literally hundreds of threads.
|
|
|
|
|
I really dislike design patterns and often engineer by the seat of my pants, however the accusation that programmers use technologies as a crutch cuts both ways. Using COM for no reason but to use it is as dumb as not using C++ because... I have no clue what the reasoning there was. Templates can and very often are overused--they cause major code bloat if you aren't careful--but they can also be very useful and a good programmer will understand all the ramifications and make a decision. (Though they better be prepared to defend those decisions; I'm sick and tired of programmers who whine and complain when asked to defend their coding decisions.)
Thing is that I've spent a good portion of my career cleaning up after, and cursing, the "duct tape" programmers that Joel describes. I happen to be very good at it too, at least in the C/C++ realm. My biggest complaint is that these programmers tend to think they are far more clever than they really are and code that way.
By all means, before you write a class ask yourself if a simple set of procedural functions would work just as well. But, I'd better not see you passing a f***ing structure into every function unless you have a really, really, really damn good reason (say you have to interop to the DLL from .NET.)
Oh, and by the way, Netscape was memory leaking, BSOD causing sh*t. Anyone who holds that code and the way it was coded as a model is a fool and a jackass rolled into one.
* * *
I get really irritated with the attitude that "you’re not here to write code; you’re here to ship products." Actually, you're "here" to solve customer's problems and hopefully make a profit while doing so. It may sound like the same thing, but it isn't. I've found that if you concentrate on solving the actual problem the customer is facing, you quite often reduce the requirement set and amount of work you have to do. Moreover, I just find it far more satisfying that being a code monkey in a crap product factory.
modified on Thursday, September 24, 2009 7:40 PM
|
|
|
|
|
Seems a bit absolutist to me. I say go with what works well. If you are a new programmer without much experience, then you should probably spend some of your time trying to understand the more complex ideas. If you start working for a corporation right away in which the quickest solution is the right one, you'll never learn and you will be forever mediocre. However, if you are spending all of your time in theory land without actually finding good uses for those theories, that is probably a waste of your time and the company's time (theories are hard to learn without practical application and your lack of learning and over-engineering is wasting the company's time).
I prefer a middle ground. I try to code so that I don't prevent changes in the future, but I'm not typically going to code for those changes before they are required. After all, if you've done that, then you're not dealing with change so much as trying to prevent it. With something that evolves as much as software, that is a losing battle.
As far as programming to cater to the lowest common denominator, I don't like that idea. Perhaps the example you present will help more junior developers later on when they encounter your design. There is nothing better for learning than to see the theory applied to a practical example in the context that the "student" is working in anyway.
In fact, I was just talking with my coworkers and manager about WPF. I was worried about the learning curve, as any new developers we hire may not be up to learning WPF. However, given a multitude of examples, I can see even a very junior developer not having a huge problem with WPF. That being said, WPF does have room for improvement to make it more intuitive, but that's off topic. Point is, learning is not bad, in moderation. And designing intelligently is not bad, when done appropriately. Coding to ship a product as fast as possible is just short-sighted, albiet necessary with new products. To see such "duct tape" coding applied to a mature product is less than ideal (I know because I have to deal with a million line beast that is made of 2 inches of code and 5,000 yards of duct tape).
Visual Studio is an excellent GUIIDE.
|
|
|
|
|