What do you use to design a new piece of software?

4 points by Phreaker00 3 years ago | 13 comments
I'm currently working on a side-project that, for a change, I'd like to fully structure first before diving into the code.

I 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 ago
    I'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 ago
      Pen and paper (or whiteboard, if available) has yet to be toppled as the king of design tools, IMHO.
      • Phreaker00 3 years ago
        Completely 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 ago
          We just take pictures with our smartphones. If it's a really big whiteboard, then do it in overlapping sections.
        • baremetal 3 years ago
          second the pen and paper

          i diagram everything on paper first.

        • eternityforest 3 years ago
          I 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 ago
            Another 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 ago
              Thanks for the insight, very much appreciated. Didn't know about Obsidian yet, looks interesting.
            • dtagames 3 years ago
              Paper 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 ago
                I 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 ago
                  The UI design tool Pencil or LibreOffice Draw, and diagramming tool Dia.
                  • airbreather 3 years ago
                    State 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 ago
                      well I find xcode and swiftUI are a real sweeeet couple