News for hackers. Stuff that matters.
Re: by JambalayaJimbo on Tuesday March 31, 2026 @02:47PM (#47591740)
How do you even converge on the right data model without refining code? Elegant code and elegant data model are the exact same thing!
Re: by bitwize on Tuesday March 31, 2026 @02:51PM (#47591783)
It's called "systems analysis". Programmers are generally pretty terrible at it because it requires holistic, big-picture thinking. But it used to take up the bulk of the design activity for a new enterprise system.
Re: by skydhash on Tuesday March 31, 2026 @09:34PM (#47595711)
And the result was usually a complex system that no one needed and could maintain. Successful refinement is needed when you try to accomplish something from the ground up, refining it as you're adding features. Not locking yourself in the ivory tower drawing UML diagrams and drafting requirements. Doing and thinking go in pair, not separately.
Re: by jcgl on Wednesday April 01, 2026 @04:24AM (#47598296)
Yeah, the field of software engineering has come a long way since then. But just because previous implementations of the analysis phase were flawed doesn't mean that the phase itself was flawed.
Re: by bitwize on Wednesday April 01, 2026 @01:47PM (#47604133)
Research conducted by M. Bryce and Associates suggested that use of a structured systems analysis phase before programming began resulted in time and cost savings vs. just "hacking it together" like programmers want to do. Locking yourself in the ivory tower is an unfair way to characterize systems analysis. Systems analysts talk to people in the business to understand what the business requirements actually are, and then design an information system (NOTE: not a computer system or software system; if it cannot in principle be run on pen and paper it is not an information system) that meets those needs. Programmers only come in when the automatable parts of the system need to be implemented, and work from a detailed and precise spec.
Re: by skydhash on Wednesday April 01, 2026 @04:54PM (#47606430)
> Programmers only come in when the automatable parts of the system need to be implemented, and work from a detailed and precise spec.

A lot of systems are complex enough that you can’t get to that stage (and if you think you do, think again). Mostly because of communication issues and time concerns. Which is where the agile manifesto comes in and recommends the talk-do-show in short cycle. It needs not to be hacked together and the showing helps with communication, the talking guides the doing, and the doing is what pays for everything.

Re: by lmm on Wednesday April 01, 2026 @12:12AM (#47596729)
"Show me your code and conceal your data structures, and I shall continue to be mystified. Show me your data structures, and I won't usually need your code; it'll be obvious."

Lots of people try to make their code better by revising their procedures and don't even think about changing their data model, and generally fail. You might not be able to change your data model without changing your code, but they're different activities.

Re: by theshrike79 on Wednesday April 01, 2026 @10:07AM (#47601101)
Or not using the data model properly, zero foreign keys in databases, no triggers checking column contents etc.

"We'll do it on the app level".

sigh

Re: by lmm on Thursday April 02, 2026 @08:17PM (#47621915)
No, that part is just smart. Databases have terrible support for nontrivial datastructures, doing everything at the app level is the only reasonable response.