You might be interested in https://thorny.io - an interactive notebook for decision-making. It's purpose is to capture design-rationale and bring it to life so that as you refine your reasoning, the changes ripple through your decisions. It can help communicating complicated design decisions that can be awkward to capture in prose. It's intended to be very low-friction so more like markdown than old requirements mana…
Ask HN: Better tools for the software requirements / scoping phase?
21–30 of 104 posts
Re: Ask HN: Better tools for the software requirements / scoping phase?
#22If that is the case, surely we can find better ways to uncover the requirements, and better tooling will help solve the problem.
Experience tells me that people don’t know everything beforehand. Thus the key assumption is not valid.
Then the question we should be asking is: how do we most efficiently bring people to where they discover and understand the requirements?
Experience tells me people are much better at giving concrete, specific feedback to a running system than to an abstract requirements document.
Hence iterative development.
In essence requirements are not a document by a process.
Re: Ask HN: Better tools for the software requirements / scoping phase?
#23Re: Ask HN: Better tools for the software requirements / scoping phase?
#24The underlying assumption with requirements is often not stated explicitly: that people _can know_ everything in detail, in advance. If that is the case, surely we can find better ways to uncover the requirements, and better tooling will help solve the problem. Experience tells me that people don’t know everything beforehand. Thus the key assumption is not valid. Then the question we should be asking is: how do we mo…
If a problem is less complex or can be released iteratively, than that's the lean way to do it, where you also have good learning. But often to solve the problem just a bit you already need a load of stuff to be taken care of.
Key to me is to stay in text or cheap click-dummies for long enough. Depending on the complexity I go through several stages:
generally:
- Always probe for details if you can imagine some already, you are trying to know as much as possible as soon as possible. File it all in to a "to take care of later"-list at least, better yet sort in properly already.
- write down everything (maybe others can remember everything, fine too :) )
- change and refine whenever something new has to be taken care of. IN the following steps it will always be easier now, than in the next step.
1. gather high level requirements with the stakeholders
2. sketch a rough workflow. I usually do a nested list.
3. write down a complete workflow
4. now you might know what you need, so define a rough UI, technology, interfaces
5. still in text: write your concept so someone else understands it
6. talk everyone involved through the concept (first stakeholders, than devs)
7. double-check if you cant simplify or leave out anything, at least for a first version
8. if necessary: do mockups, designs, schemas
9. only now start to program (for difficult stuff a prototype)
- On top it might be helpful to have a small checklist depending on your needs with entries like "reporting?, testing?, support?"
Re: Ask HN: Better tools for the software requirements / scoping phase?
#25Earlier quoted context omitted.
> What's the point of spending the time and money on beautiful engineering, if it's going to be scrapped tomorrow anyway (or even before it's finished)? Good luck maintaining that code. Don't forget about the team, a messy codebase and/or poor requirements, eventually, will break a team's morale until the day news devs come along and demand a refactor. I start to love the idea of a waterfall model for software. Peopl…
Software that is used, changes, because successful software influences the world around it, which in turn changes it's requirements. So typically, even if a team gets it right the first time (which by itself requires enormous effort), the once perfectly specified requirements will have changed shortly after release. Edit: sibling is right as well, it depends on what you're building. Sometimes there is nothing better…
Re: Ask HN: Better tools for the software requirements / scoping phase?
#26The underlying assumption with requirements is often not stated explicitly: that people _can know_ everything in detail, in advance. If that is the case, surely we can find better ways to uncover the requirements, and better tooling will help solve the problem. Experience tells me that people don’t know everything beforehand. Thus the key assumption is not valid. Then the question we should be asking is: how do we mo…
Re: Ask HN: Better tools for the software requirements / scoping phase?
#27With most programs, you'll spend half your time battling its UI and trying to get around limitations.
Re: Ask HN: Better tools for the software requirements / scoping phase?
#28Earlier quoted context omitted.
> What's the point of spending the time and money on beautiful engineering, if it's going to be scrapped tomorrow anyway (or even before it's finished)? Good luck maintaining that code. Don't forget about the team, a messy codebase and/or poor requirements, eventually, will break a team's morale until the day news devs come along and demand a refactor. I start to love the idea of a waterfall model for software. Peopl…
Software that is used, changes, because successful software influences the world around it, which in turn changes it's requirements. So typically, even if a team gets it right the first time (which by itself requires enormous effort), the once perfectly specified requirements will have changed shortly after release. Edit: sibling is right as well, it depends on what you're building. Sometimes there is nothing better…
Yes, but... A good model can support larger changes than a bad model. For example, a well designed relational model can support iterative change better than a slapped together system using CSV. So does a system that supports a consistent mental model for the end-user.
This is the fundamental skill: abstraction. To find the right abstractions, sustaining simplicity while opening up ability to change is an extremely difficult and hard-fought skill.
Unfortunately, due to a constant influx of new developers, its value is underappreciated. Requirements for this skill are (non-exhaustive): excellent communicative abilities, combined with a predilection for logic reasoning, good technical understanding, some psychological understanding and perseverance for when a model proves unsuccesful.
From my experience, the best systems we have designed and implemented started with long sessions at the white-board, often followed by some tech 'spikes' [1].
[1] https://en.wikipedia.org/wiki/Spike_(software_development)
Re: Ask HN: Better tools for the software requirements / scoping phase?
#29Re: Ask HN: Better tools for the software requirements / scoping phase?
#30Use UML, SysML, etc to diagram out your requirements (starting at high level at first, more granular as the system matures). Now build a high-level model of your system design (software and hardware if required). Match parts of your system to the requirements. This lets you see gaps in two directions: requirements you haven't addressed (because they aren't connected as "satisfied by" anywhere on your model), and questions to ask for more detail on a given requirement that could drive the design.
As others have said, there will always be late requirements that change things, so it won't resolve those. It can, however, show stakeholders how much changing a requirement can cost in terms of rework/time by showing how the model has to change to accommodate.
The caveat with this is: the model needs to reflect your actual design, and you need to keep it up to date. The times I've used it so far it has been a useful exercise.