News for hackers. Stuff that matters.
Re:How I Became a Better Programmer by fauigerzigerk on Tuesday March 21, 2017 @06:27AM (#13920990)
>The time to clean up the code is when it already does what it should.

I'm a bit skeptical of that as a general principle.

I want code to be a consistent representation of my mental model of the solution at all times. I use code to help me think, remind me of my thinking and communicate with others. It's not just a series of commands that make a machine do something.

As long as any ugliness is not in conflict with this purpose it's fine. I can totally live with functions that are a bit messy and probably need cleaning up later.

Re:How I Became a Better Programmer by tshannon on Tuesday March 21, 2017 @09:34AM (#13922008)
Yep, I agree. I see it more as a list of priorities, not necessarily sequential steps.

1) Make it work 2) Make it maintainable 3) Make it fast

All three should be on your mind when developing something, but if you have to choose between 2 and 1, go with 1.

Re:How I Became a Better Programmer by AstralStorm on Tuesday March 21, 2017 @10:52AM (#13922673)
And you end up with the 60+ year old TODO this way. Or lack proper reason comments (the why) and end up in a gaggle of legacy code.

My rule is simpler: never write instant legacy code. If it feels like something you won't understand a month later, it likely is legacy code.

If it reads badly (and I'm not talking about this or that brace or whitespace choice), then it also provably is in that category.

Re:How I Became a Better Programmer by ant6n on Tuesday March 21, 2017 @01:43PM (#13924449)
If there is actually a trade-off like tshannon notes, then by not making it work first, you may end up with un-finished projects.
Re:How I Became a Better Programmer by AstralStorm on Tuesday March 21, 2017 @04:02PM (#13925675)
The solution to making it work first is to make a prototype with the correct design. You do not have to implement it at once.

(On C2 wiki, a proper SpikeSolution)

If you hit a case your design cannot cleanly handle, it is time for redesign, but often a tiny amount of design constrained by use cases will expose a good design quickly.

Re:How I Became a Better Programmer by mythrwy on Tuesday March 21, 2017 @04:14PM (#13925793)
They never give me the time for items #2 and #3. As soon as it works most clients and bosses figure "done".
Re:How I Became a Better Programmer by BurningFrog on Tuesday March 21, 2017 @07:15PM (#13927145)
How does that work exactly?

Why can't you just keep working until you consider your task done?

Re:How I Became a Better Programmer by kwhitefoot on Wednesday March 22, 2017 @03:17AM (#13929023)
Are you working as a developer? If so, how do I join your team? In my life as a developer I have deadlines that are set by customers and no amount of explanation that I need another week to make the code bomb-proof will shift them.
Re:How I Became a Better Programmer by BurningFrog on Wednesday March 22, 2017 @12:51PM (#13932530)
I've heard about jobs like that, but I would never take one. There are far less insane developer jobs out there, and you could try to find one!

Development time is inherently very hard to predict, so strict deadlines - even if set by people who understand the technical issues don't make a lot of sense. There many books on this, and I won't try to summarize them here.

Still, if you have a deadline, you can use your time however you want before the deadline, right? So if it's better/faster to clean up the code after you made it work than to try to type everything perfectly the first time, what's stopping you?

Or is it that the deadlines are so tight that you only have time to write terrible code?