News for hackers. Stuff that matters.
Re:How Do You Know a Developer Is Doing a Good Job? by onion2k on Friday February 10, 2017 @06:11AM (#13614577)
There's a difficult balance between "future-proofing" and "over-engineering". I'm not sure which is actually worse. Given how often I've seen a client happily run a prototype of some code in a production environment for years, I tend to err on the side of thinking future-proofing being a bit of a waste of time. This is especially true if there isn't a clear roadmap that states when something is going to change, and the cost of changing isn't already committed to the project.
Re:How Do You Know a Developer Is Doing a Good Job? by crdoconnor on Friday February 10, 2017 @06:49AM (#13614732)
IME the best architectural designs are usually the result of heavy retrospective refactoring, not up-front design.

Thus future proofing isn't just a waste of time, it's actively counter productive. The predicted requirements are rarely correct although the extra code remains a liability.

Re:How Do You Know a Developer Is Doing a Good Job? by maxwelljoslyn on Friday February 10, 2017 @08:57AM (#13615340)
> IME the best architectural designs are usually the result of heavy retrospective refactoring, not up-front design.

Right. And this applies to other disciplines too. "Heavy retrospective refactoring" is exactly what a writer does each time they go back and make edits to a piece. Connections between elements such as characters, themes, writing style, and dialogue are felt out only by emitting draft after draft.

Even this comment went through many edits to get into this shape. These two sentences alone have been rewritten ten times.

In my experience there's also value in imposing a framework once one has done enough emitting of raw material. For code this might be looking for ways to extract common logic out of several similar functions. For writing this might be considering how two characters have "interacted" so far and what other details ought to fill out their relationship (without considering whether or not all those details will manifest overtly in the work.)

Re:How Do You Know a Developer Is Doing a Good Job? by foobarrio on Friday February 10, 2017 @01:17PM (#13617545)
This is where experience comes into play though. Not every bit of software is totally unique and built on first principals. If you're working at some place and built similar software at a previous place, part of the up-front design is going to be driven by retrospection on previous projects.
Re:How Do You Know a Developer Is Doing a Good Job? by Nomentatus on Saturday February 11, 2017 @02:04PM (#13624132)
But wait a minute - shouldn't most of one's future-proofing be making sure you CAN easily alter a design later if need be (including better documentation), especially in the ways you can already see change coming?
Re:How Do You Know a Developer Is Doing a Good Job? by crdoconnor on Saturday February 11, 2017 @06:49PM (#13625615)
Cleaning up existing code will make it easier to alter designs later and that's something you should continually be doing as you implement features and fix bugs, but that's not pre-emptive architecture.
Re:How Do You Know a Developer Is Doing a Good Job? by Nomentatus on Sunday February 12, 2017 @11:51PM (#13633199)
As I say elsewhere here, I've killed projects assuming that. Pulling out bricks from the bottom and replacing them is sometimes so hard, you really have a dead project.
Re:How Do You Know a Developer Is Doing a Good Job? by tdk on Friday February 10, 2017 @01:44PM (#13617773)
Seconded. Premature design is worse than premature optimisation.

http://wiki.c2.com/?YouArentGonnaNeedIt