Live data from Hacker News

The Duct Tape Programmer (2009)

joelonsoftware.com

41–50 of 52 posts

Re: The Duct Tape Programmer (2009)

#41

So one thing I think that gets lost is, to me, the most important quality in code is: how easy is it to debug. Like, I remember once having to maintain this guy's code where he just went crazy on C++ templates. And like, he proved that he's very smart and clever, but it made his code practically unusable since nobody could figure it out, and trying to debug a template masterpiece is like the hardest thing in c++ codi…

Forget about inherent complexity, just having good error messages is hard! I spent hours this week debugging a test that kept failing in EXPECT_EQ(result.status(), SUCCESS) Since this was a codebase I hadn't ever worked in before, I spent quite a while flailing around trying to figure out where I needed to add logging and eventually realized that `result` had more error details that the assertion was hiding from me.…

If only they had use VERIFY_OK/EXPECT_OK which prints out the error message :(

https://chromium.googlesource.com/chromium/src/+/master/net/...

Re: The Duct Tape Programmer (2009)

#42

Earlier quoted context omitted.

Actually coding is about both. Proving your smartness _by_ making things people can work with, because they are simple. Creating a C++ template madness is not that smart in the end. Really smart people invest time into making their code very readable and at the same time manage to give it the required layers of abstraction and flexibility in a way that does not confuse the reader. They make their code in a way, that…

"Proving" you're smart is a terrible idea, if you're smart it'll come across pretty quick and if it's not obvious to other people the attempt seems pretentious. I don't think you should guard smartness by pretending its the same thing as practicalness. I know a lot of people that spent time on brilliant work that had no point. They were smart as hell just impractical If I'm hiring a coder and I get one that writes th…

Yes, you raise an interesting point and I am not voting for going out of your way or intentionally trying to "prove" anything. No need for that. Just do good work and try to apply your smartness to find good solutions, keeping the ones coming after you in mind, who will have to deal with the stuff you write today. That might be yourself tomorrow anyway. Practicalness should include smartness, go hand-in-hand with it, and acting in a practical way should include not tripping yourself up in the future with things you do now. A quine might not be the best way to solve a problem without creating a new one. But perhaps it is in some situation. Always depends.

I want to raise another point though, which is allowing developers to enjoy their profession as well. Imagine going to a master carpenter and telling them "I just need you to connect 3 plywood boards together." and then the next day you go into their shop and dictate them: "No, no, do not put that much effort into connecting them! It doesn't need to look pretty. Just use some glue, that will make them stick together! No need to be clean about it. Just leave redundant glue on it. It's going to be under the table anyway and no one will see it." That is how many developers are treated and I don't think it is a good thing. Developers need to be given some leeway, some room, to get creative and deliver great solutions. Of course it should be within certain limitations with clear goals set and all that. Just don't suffocate creativity, taking out all joy of the profession and let them be actual developers sometimes. Software development is a truly creative activity. Lets not forget that.

Re: The Duct Tape Programmer (2009)

#44
post #40
post #20

I always liked this quote by Jamie Zawinski, from Coders at Work "I know it’s kind of a cliché but it comes back to worse is better. If you spend the time to build the perfect framework…release 1.0 is going to take you three years to ship and your competitor is going to ship their 1.0 in six months and now you’re out of the game. You never shipped your 1.0 because someone else ate your lunch. Your competitor’s six-mo…

Which is in some way sad. I know we are not hired "to write code" but "to ship products", and that everything is done in "sprints" and we must be very agile in doing them because they're always non-stop, and quality comes second (unless, of course, you are really skilled and can ship high quality code in half the time it usually takes), and customers first and "we'll polish it in version 2" and... I guess I feel "gui…

It's easy to do things slowly, by the book, taking all the time in the world, while the world is waiting. It's part of the skill and mastery to know which corners to cut and which things are essential and which can be fixed later, and judge the effort to result ratio accurately.

Re: The Duct Tape Programmer (2009)

#45
post #20

I always liked this quote by Jamie Zawinski, from Coders at Work "I know it’s kind of a cliché but it comes back to worse is better. If you spend the time to build the perfect framework…release 1.0 is going to take you three years to ship and your competitor is going to ship their 1.0 in six months and now you’re out of the game. You never shipped your 1.0 because someone else ate your lunch. Your competitor’s six-mo…

Shouldn't that worry you, rather than excite you? He's just saying "worse is faster", not "worse is better". Especially that last sentence is kind of terrifying: "they can rewrite it because you don’t have a job anymore." Basically, everyone who takes the time to write good code will be outcompeted by bad code written quickly, until eventually everything is bad.

He's definitely saying "worse is faster" but he's also saying "worse is better," if what you're measuring is how good you're at shipping a product. And I think if you change "bad" to "good enough" (to be better than existing products) then you're right.

Re: The Duct Tape Programmer (2009)

#46

Earlier quoted context omitted.

>Coding isn't about proving your smartness it's about making something people can use and work with. No, that's what business is about. Coding isn't just for business.

Realistically who is studying your code? Probably nobody unless you made something super famous. Otherwise youre what trying to show off? It's a lot of effort to get people to be: "neat, im confused" (Believe me I say that as a person that's written a lot of "im being clever" things to the delight of nobody)

Think of it like dancing. To dance with others you have to follow rules or at least communicate a lot. But dancing erratically by yourself is fun too even if no one sees it.

Re: The Duct Tape Programmer (2009)

#47
post #20

I always liked this quote by Jamie Zawinski, from Coders at Work "I know it’s kind of a cliché but it comes back to worse is better. If you spend the time to build the perfect framework…release 1.0 is going to take you three years to ship and your competitor is going to ship their 1.0 in six months and now you’re out of the game. You never shipped your 1.0 because someone else ate your lunch. Your competitor’s six-mo…

Shouldn't that worry you, rather than excite you? He's just saying "worse is faster", not "worse is better". Especially that last sentence is kind of terrifying: "they can rewrite it because you don’t have a job anymore." Basically, everyone who takes the time to write good code will be outcompeted by bad code written quickly, until eventually everything is bad.

“Eventually?” Everything already is bad.

Re: The Duct Tape Programmer (2009)

#48
post #20

I always liked this quote by Jamie Zawinski, from Coders at Work "I know it’s kind of a cliché but it comes back to worse is better. If you spend the time to build the perfect framework…release 1.0 is going to take you three years to ship and your competitor is going to ship their 1.0 in six months and now you’re out of the game. You never shipped your 1.0 because someone else ate your lunch. Your competitor’s six-mo…

Shouldn't that worry you, rather than excite you? He's just saying "worse is faster", not "worse is better". Especially that last sentence is kind of terrifying: "they can rewrite it because you don’t have a job anymore." Basically, everyone who takes the time to write good code will be outcompeted by bad code written quickly, until eventually everything is bad.

We're already giving all jobs to low cost centers and low cost employees and look where this is taking us: take home automation products as an example.

Re: The Duct Tape Programmer (2009)

#49

Earlier quoted context omitted.

"Proving" you're smart is a terrible idea, if you're smart it'll come across pretty quick and if it's not obvious to other people the attempt seems pretentious. I don't think you should guard smartness by pretending its the same thing as practicalness. I know a lot of people that spent time on brilliant work that had no point. They were smart as hell just impractical If I'm hiring a coder and I get one that writes th…

Yes, you raise an interesting point and I am not voting for going out of your way or intentionally trying to "prove" anything. No need for that. Just do good work and try to apply your smartness to find good solutions, keeping the ones coming after you in mind, who will have to deal with the stuff you write today. That might be yourself tomorrow anyway. Practicalness should include smartness, go hand-in-hand with it,…

I mean that's true I don't want people to avoid love of the craft and art of it, I just think people need to evaluate is what I'm doing useful or a fun puzzle

Re: The Duct Tape Programmer (2009)

#50

So one thing I think that gets lost is, to me, the most important quality in code is: how easy is it to debug. Like, I remember once having to maintain this guy's code where he just went crazy on C++ templates. And like, he proved that he's very smart and clever, but it made his code practically unusable since nobody could figure it out, and trying to debug a template masterpiece is like the hardest thing in c++ codi…

Actually coding is about both. Proving your smartness _by_ making things people can work with, because they are simple. Creating a C++ template madness is not that smart in the end. Really smart people invest time into making their code very readable and at the same time manage to give it the required layers of abstraction and flexibility in a way that does not confuse the reader. They make their code in a way, that…

Elegant simplicity is much like the adage in racing: slow is smooth, and smooth is fast
Post reply on HN