Live data from Hacker News

The Duct Tape Programmer

joelonsoftware.com

1–10 of 43 posts

Re: The Duct Tape Programmer

#4
I work on enterprise software in a financial company, and IMO, this quote from Zawinski would lead to a dangerous short-term view in that context: "unit tests are not critical. If there’s no unit test the customer isn’t going to complain about that."

When you work in enterprise software, this approach might work on the first project, maybe the second, but eventually a point will arrive where a requirement will take longer to deliver for the simple reason that there are no unit tests. Without unit tests, bugs will be found later in the project life-cycle, possibly even after delivery. If customers have delivered software that is unusable, the fact of delivery becomes a negative pretty quickly..

On the positive side though, the tension between what's essential for the customer, and what developers need to learn to keep their careers alive is an interesting idea, and is something we've been looking recently at where I work. Is it a good idea to introduce a technology just because a programmer feels s/he should learn it? I'm not so sure.

Re: The Duct Tape Programmer

#5
post #2

can we have the link updated? when I was linked from my rss reader (just now-ish), it was set to go to: http://localhost/www.joelonsoftware.com/items/2009/09/23.htm... should be: http://www.joelonsoftware.com/items/2009/09/23.html thanks.

sorry, HN doesn't let me edit the link.

Re: The Duct Tape Programmer

#6

I work on enterprise software in a financial company, and IMO, this quote from Zawinski would lead to a dangerous short-term view in that context: "unit tests are not critical. If there’s no unit test the customer isn’t going to complain about that." When you work in enterprise software, this approach might work on the first project, maybe the second, but eventually a point will arrive where a requirement will take l…

If you need unit tests, write unit tests. If you don't, don't.

So in your case you would notice that for iteration 3 you need some unit tests. Then you can write them in iteration 3. You didn't need them in iteration 1, hence no need to write them in iteration 1.

The concept of technical debt will probably inserted into the discussion here. I think it is irrelevant. Yes, there is always technical debt. For example, I currently have a technical debt of several billion dollars because I haven't installed big data centers like Google or Apple have. So should my web app ever need to scale to a gigantic level, I'll have a problem. But not now. So it is a debt I can live with.

Re: The Duct Tape Programmer

#7
Okay, first off, this article is interesting but very ancient. And I remember the shit storm it caused quite fondly :-)

A couple of obvious points have been made at the time. Yes, it's a gross generalization. Yes, somewhere in there is an uncomfortable truth that is liable to make a couple of Java and COM artists very angry.

At the end the whole point boils down to the overused saying: real programmers ship. It's as simple as that. All this artificial distinction between "Duct Tape Programmers" and whatnot is just an attempt to elaborate somewhat unsuccessfully on a central experience of software development.

This is why: Our code sucks, and there are many reasons for it. We may have some control over WHY our code will suck, but the core fact is just inescapable. Of course, there are people who claim their code is always beautiful (often paired with energetic statements about some framework technology) and it's worth noting that those developers are easily the worst of them all. At least the rest of us have some semblance of self-awareness.

Re: The Duct Tape Programmer

#8
I have a similar feeling towards TDD. I use test driven developments for those parts of my code that needs it. I recently had to create a function that did some complex calculation. TDD was great for that, because I had a set of known inputs and a set of known outputs. It made sense to write the test before the code.

But I will not write trivial tests just to make the unit test coverage increase. I've seen tests written for simple getters/setters that just sets "this.birthday = date". If we do contact an alien civilization that have multiple birthdays, we will probably have to change the code anyway and the unit tests will have to be rewritten.

I may get some negative votes for saying this, but whenever I see a project with 100% unit coverage it's a red flag for me. This means they have wasted a lot of development time while writing trivial unit tests for trivial code.

Unit tests are great for parts of the code that needs them. But if your only reason for writing a unit test is to see the statistics "improve", you are wasting effort.

Re: The Duct Tape Programmer

#9
post #8

I have a similar feeling towards TDD. I use test driven developments for those parts of my code that needs it. I recently had to create a function that did some complex calculation. TDD was great for that, because I had a set of known inputs and a set of known outputs. It made sense to write the test before the code. But I will not write trivial tests just to make the unit test coverage increase. I've seen tests writ…

A good reason to write tests for seemingly trivial code like that is if you're implementing an API that others will use. I've re-factored a class that implemented a public API and been saved by trivial tests that pretty much just tested getters/setters.

But there's a time and place for everything. I rarely pass 95% test coverage, the remaining 5% are usually not worth pursuing.

Re: The Duct Tape Programmer

#10
post #7

Okay, first off, this article is interesting but very ancient. And I remember the shit storm it caused quite fondly :-) A couple of obvious points have been made at the time. Yes, it's a gross generalization. Yes, somewhere in there is an uncomfortable truth that is liable to make a couple of Java and COM artists very angry. At the end the whole point boils down to the overused saying: real programmers ship. It's as…

It boggles my mind that an article from barely over a year ago counts as "very ancient", that people clamor to add "(2006)" to article titles, etc.

If more programmers actually read stuff that was published longer than (gasp!) five years ago, perhaps there would be less naive noise about how New Methodology X is going to finally fix all these nagging issues in software development once and for all.

Post reply on HN