Live data from Hacker News

The Duct Tape Programmer

joelonsoftware.com

21–30 of 53 posts

Re: The Duct Tape Programmer

#21

Right now I'm working on save/load for a game that is overflowing with duct tape code. Yes it shipped and did well. But now I'm paying for all the sins of all the duct tape used by all the coders. I'm not sure I'd change anything in the past but I do reserve the right to bitch about things written that aren't fully correct but close enough... until save/load is considered and then it just doesn't work at all. Grumble…

Every time you bitch, consider this: you've still got users.

It'd be appropriate to bitch about it if you didn't have users. But, in the end, it doesn't matter how fancy things are: the user is the only thing that matters. Ever.

Re: The Duct Tape Programmer

#22

Multiple inheritance often makes it extremely difficult to tell where my code is coming from. When you don't use inheritance, you often get to refer to another module by name . E.g. `my_dependency.fetch_data(123523)` With multiple inheritance, however, that other module has become your own "self"! Suddenly you're stuck with: `self.fetch_data(123523)`. And if you want to find the source of `fetch_data()`, you basicall…

>Multiple inheritance often makes it extremely difficult to tell where my code is coming from.

Thus the rise of the "can't do anything without an IDE" developer ..

Re: The Duct Tape Programmer

#23

Multiple inheritance often makes it extremely difficult to tell where my code is coming from. When you don't use inheritance, you often get to refer to another module by name . E.g. `my_dependency.fetch_data(123523)` With multiple inheritance, however, that other module has become your own "self"! Suddenly you're stuck with: `self.fetch_data(123523)`. And if you want to find the source of `fetch_data()`, you basicall…

I just use "find definition" or mouse over.

Re: The Duct Tape Programmer

#24
I have started taking "I write bad code", "I don't write unit tests" etc with a pinch of salt. I think in any real world scenario there will be factors that pull the code in one direction or the other. Sometimes the most important thing is to ship, sometimes the most important thing is to ensure that you can keep shipping. It is entirely contextual.

Re: The Duct Tape Programmer

#25
I like this article. I was good at the crazy multi threaded stuff at uni. Now I find I have a lot to learn about making real life products. 3 Years in and I have to admit attention to detail and simple yet robust solutions are more important than understanding the latest and greatest way of doing things.

Re: The Duct Tape Programmer

#26

The problem with this blog post is that it's long been used to justify writing crappy code, when it's actually about writing simple code, and those aren't necessarily the same thing. If your duct-tape go kart falls apart going around a corner and gives you a permanent injury you're gonna wish you spent a bit more time at the starting line wondering what to build it out of.

> you're gonna wish you spent a bit more time at the starting line wondering what to build it out of.

Sure, but usually spending a bit more time at the starting line (or rather "much more time" or "all the time in the world, until there's no time left and you still have to use the duct tape version, now in an even bigger hurry") won't help you find the problem spots. Hindsight bias is very well and alive and usually all the "yeah, we should have thought about that before" remarks are just that. You wouldn't have thought about it before, because you need the scars to tell you "Bad idea, don't do it again."

Re: The Duct Tape Programmer

#27

Right now I'm working on save/load for a game that is overflowing with duct tape code. Yes it shipped and did well. But now I'm paying for all the sins of all the duct tape used by all the coders. I'm not sure I'd change anything in the past but I do reserve the right to bitch about things written that aren't fully correct but close enough... until save/load is considered and then it just doesn't work at all. Grumble…

Every time you bitch, consider this: you've still got users. It'd be appropriate to bitch about it if you didn't have users. But, in the end, it doesn't matter how fancy things are: the user is the only thing that matters. Ever.

Until the users want a new feature - save/load, say - and you can't add it without breaking the toaster in the office kitchen. And so the users bugger off to play Candy Crush Massacre or whatever :-)

Re: The Duct Tape Programmer

#28

Multiple inheritance often makes it extremely difficult to tell where my code is coming from. When you don't use inheritance, you often get to refer to another module by name . E.g. `my_dependency.fetch_data(123523)` With multiple inheritance, however, that other module has become your own "self"! Suddenly you're stuck with: `self.fetch_data(123523)`. And if you want to find the source of `fetch_data()`, you basicall…

>Multiple inheritance often makes it extremely difficult to tell where my code is coming from. Thus the rise of the "can't do anything without an IDE" developer ..

That's not always a bad thing. If everyone is standardized on a particular IDE (or features for IDEs), you can be insanely productive.

Shouldn't shrug off good tools, either

Re: The Duct Tape Programmer

#29
post #27

Earlier quoted context omitted.

Every time you bitch, consider this: you've still got users. It'd be appropriate to bitch about it if you didn't have users. But, in the end, it doesn't matter how fancy things are: the user is the only thing that matters. Ever.

Until the users want a new feature - save/load, say - and you can't add it without breaking the toaster in the office kitchen. And so the users bugger off to play Candy Crush Massacre or whatever :-)

And they can't rationalize why you're saying it'll take months to implement save/load.

The newest SimCity is a great example of this.

"zomg offline mode should be really easy for you guys to write! Why haven't you yet!?" "well... ...technical debt and design decisions that are at odds with that..."

Re: The Duct Tape Programmer

#30

Multiple inheritance often makes it extremely difficult to tell where my code is coming from. When you don't use inheritance, you often get to refer to another module by name . E.g. `my_dependency.fetch_data(123523)` With multiple inheritance, however, that other module has become your own "self"! Suddenly you're stuck with: `self.fetch_data(123523)`. And if you want to find the source of `fetch_data()`, you basicall…

Strictly speaking, this issue is not caused by multiple inheritance but just by inheriting from a lot of classes. It also happens with huge Java class hierarchies, for instance.
Post reply on HN