Skip to main content

Starting from Scratch

Avoid bloat by designing a specific feature instead of the full client

When designing a client from scratch, it may be tempting to lay out the whole thing, including all of the features necessary to make the app “come together” as a whole. This approach creates unnecessary work and often overcomplicates the product.

Instead of laying out all of the functionality, consider designing around your core features. What problem does your product solve? What feature specifically solves it? Start there.

Start in low fidelity

One major advantage of starting your product design in low fidelity (low detail) is having flexibility and allowing for input from other stakeholders. Jumping straight into pixel-perfect and colorized design makes things more concrete and set in stone. You don’t have the same amount of freedom to change layouts and other details because of the time you’ve already invested in the design.

When you stay in low fidelity for as long as you can, you have the complete freedom to change anything you need to change to make the best UX possible. Some ways to accomplish this:

  • Brainstorm on a whiteboard. It’s easy to erase small
  • Use paper and sharpies
  • Use flowcharts to map out your client interactions (FigJam)

User / customer in the loop

Get users involved in shaping your product. Users will provide valuable feedback that you may otherwise waste time on building out the feature in full.

Establish communication channels with your users on a daily basis. Fast moving startups invite customers to their Slack, Telegram and Discord channels to always be available for feedback and feature ideas.

On nostr, as a developer or designer you can also get direct feedback on your client or client design simply by frequently engaging with your followers.

  • The outdated development model: Build > Build > Build > realize your design’s don’t work, spend more time fixing them.
  • A better model: Design > Build > Design > Build loop
  • The best model: User > Design > Build > User > Design > Build

In our third model, the user / customer is the focus of our design-build cycle. This helps get clarity on effectiveness of proposed solutions and spot bad decisions early without wasting precious development time.

That’s not to say that you must always involve the user in everything you build. You will have your own grand vision for how your product will work and wow your users and customers. Sometimes other people will not understand that vision until it is in front of them, clickable and easy to explore.

Design only the absolute necessities at first

As designers, we seek to impress people who employ us or have put their trust in our ability to deliver beautiful, functional things. It is natural to want to fit everything into a design, multiple variations and various functionalities that make for a “whole” experience. However, this approach can overwhelm developers and derail them from what they should really be focusing on.

Try to design the minimal number of things and functions to make the feature or app functional. Avoid temptation to add “small” things that actually end up being a huge time investment on the technical side.

It’s much more practical to add the little features as needed, only when other major pressing goals are met.

An example of this would be an Emoji or Gif picker in a social client.

For a developer, it is not an insignificant task to create emoji packs and gif embedding from within the app. But for a designer it’s as simple as dragging an icon into or next to an input field.

Who wouldn’t want a gif picker in their social app? Of course, everyone does. But when your priority as a developer is to ship a sustainable, usable product, this little addition may not be the best use of time. What takes a designer 10 seconds, could take a developer 2 weeks to implement.

Avoid creating design systems at first

One common advice out there is to create design systems to speed up your design process. This advice is best applicable to designers who have a feature-complete and complex product. It is not well suited (in my opinion) for a product designer who is exploring a new product from scratch.

While design systems certainly make life easier for designers, they can take a lot of time and headaches to set up properly. Much like over-designing, setting up a design system too soon may constraint your ability to make changes on the fly, when you need to be flexible and creative.

As the project matures and you are certain that the elements you’ve designed are not going to change significantly over time - that is a good time to start componentizing your design files. Or, when you find yourself constantly having to adjust multiple elements by selecting them often.

Of course, if you are a seasoned designer and feel comfortable setting up a design system first, go for it!

But, create components when working with repetitive elements

If you are an experienced designer and or know that you will be working with a lot of the same types of elements throughout a client, for example - social feeds, forms, then it’s fine to create components on the go so you can quickly change the styling as needed.