What do you use to design a new piece of software?
4 points by Phreaker00 3 years ago | 13 commentsI know there are specific UI/UX tools, like Framer, Adobe XD and Sketch. There are also specific methodologies for software architecture, like creating ERDs and flowcharts. Same for the server infrastructure and persistent datastorage.
What I'm looking for is one tool that combines all the various domains of a piece of software with varying levels of complexity. So something that gives a full overview that also allows you to 'zoom in' on specific layers for more detail.
Is there any tool out there that provides this level of varied complexity and global overview? Of do you use something that's not made for it but works well?
- GianFabien 3 years agoI'm still looking for a software design tool that doesn't suck.
In the meantime, I simply use pen, paper and ring-binder. I tend to write with the granularity of a single page. That is, decompose functionality, etc, so that resulting sketches, etc fit on a single page. I don't fear mostly blank pages. Easier to find stuff as I flip through the pages.
Once I get down to the granularity of a class, function, module, I implement it and mark the page as done with a date. Any key design decisions, discoveries, etc are transcribed into the comments of that source file.
I also use GraphViz to generate some dependency diagrams. SVG files are easy to view with any HTML browser.
- rco8786 3 years agoPen and paper (or whiteboard, if available) has yet to be toppled as the king of design tools, IMHO.
- Phreaker00 3 years agoCompletely agree that this is the easiest way to do it. Especially a big whiteboard that can hold those sketches to come back to is really valuable. If only it was just as easy to digitise (not looking at you, laggy overpriced smart board).
- GianFabien 3 years agoWe just take pictures with our smartphones. If it's a really big whiteboard, then do it in overlapping sections.
- GianFabien 3 years ago
- baremetal 3 years agosecond the pen and paper
i diagram everything on paper first.
- Phreaker00 3 years ago
- eternityforest 3 years agoI always heavily document before coding. My preferred tool is just Obsidian. I just make a folder and take large numbers of markdown notes for everything.
Heirarchal notes let you organize however you want, you can make your own little wiki to handle the zooming.
I also am very much considering getting some kind of digital drawing device, like a Boogie Board with the smart pen, or else waiting till there's an affordable stylus phone that I like(The Moto Stylus is the only recent cheap one and that lacks wireless charging).
But for now I primarily rely on text for everything, until I'm ready to move into CAD or code or whatever I'm doing.
- kimburgess 3 years agoAnother advocate for Obsidian here. You can use it for base notes, embed other pieces of content as suitable to your domain, link and visualise these via a DAG with the in-built graph view and extend from there with extensions like https://github.com/blacksmithgu/obsidian-dataview if you need. The tool can be as simple or complex as your project requires.
- Phreaker00 3 years agoThanks for the insight, very much appreciated. Didn't know about Obsidian yet, looks interesting.
- kimburgess 3 years ago
- dtagames 3 years agoPaper is great. So is actually coding some part of the front or back end to test it and get it working, even without a great UI or API.
Iterative designs, rather than full top-down where everything is figured out in advance, have proven to be more flexible and faster to implement. This is part of the "worse is better" philosophy of software design.
- arkitaip 3 years agoI can't recall a single tool that covers all of the design process, there are just too many industries involved.
As for UI/UX, give Figma a try. It's powerful, supports all kinds of design work (workshops, sketching, prototypes, presentations) and has a generous free plan.
- _448 3 years agoThe UI design tool Pencil or LibreOffice Draw, and diagramming tool Dia.
- airbreather 3 years agoState machines, represented as state tables, often arranged in a heirarchy.
Not appropriate for everything, but for most things I do, can't be beat.
I also wrote my own tool to design/spec/test such designs.
- AndyJado 3 years agowell I find xcode and swiftUI are a real sweeeet couple