Remix.run Logo
koliber 8 hours ago

You can't code without specifications, period. Specifications can have various forms but in ultimately define how your program should work.

The problem with what people call "Waterfall" is that there is an assumption that at some point you have a complete and correct spec and you code off of that.

A spec is never complete. Any methodology applied in a way that does not allow you to go back to revise and/or clarify specs will cause trouble. This was possible with waterfall and is more explicitly encouraged with various agile processes. How much it actually happens in practice differs regardless of how you name the methodology that you use.

IshKebab 8 hours ago | parent [-]

Of course you can code without specifications. Most software projects don't have them these days.

In contrast they're still the standard in the hardware design world.

Jtsummers an hour ago | parent | next [-]

This is a Tyranny of Structurelessness sort of thing. In that essay there is a structure in structureless organizations but it's implicit and unarticulated which makes it inscrutable, potentially more malleable (which could be good), but also constricting to those who don't know the actual structure when they try and accomplish things.

If you don't have explicit specifications (which don't have to be complete before starting to develop code), you still have specs, but they're unarticulated. They exist in the minds of the developers, managers, customers, and what you end up with is a confused mess. You have specs, but you don't necessarily know what they are, or you know something about them but you've failed to communicate them to others and they've failed to communicate with you.

wiseowise 7 hours ago | parent | prev | next [-]

> Of course you can code without specifications. Most software projects don't have them these days.

And most software projects are complete mess that waste unfathomable amounts of resources. But yeah, you “can” develop like that.

n0w 7 hours ago | parent | prev [-]

Code is a specification. You cannot have a program unless you specify how it works.

SideburnsOfDoom 5 hours ago | parent [-]

And TTD would say "start with a failing test, it is an executable specification for the code that you will need to make it pass. Then make it pass, then refactor to make nice code that still passes all tests - red, green, refactor under tests"