Build with craft

If you think about daily consumer software as alike to clothes, you’re probably right.

Software has been such a huge part of our lives that nowadays, we have all developed a certain taste for good software, and we now know how to distinguish between good and bad software. Just like how we develop taste in clothes and how we invented this concept of “fashion”, software have always had its own “fashion”, and like clothes, this changes over time. There was a period when using BootstrapCSS for your HTML app was fashionable; it was kind of the only thing that existed that allows you to build nice-looking apps fast. Over the last 2 years or so, we started going very modern, with the kind of style you see made popular by Vercel or Linear: the glossy look, rounded but sharp-looking borders, mostly dark background tones with white or white-ish text. Rise of libraries like ChakraUI and TailwindCSS, and most recently shadcn/ui, allowed devs to build beautiful UIs fast without compromising hours on end fiddling with pure CSS. Eventually, this “fashion” becomes the de-facto way people build product interfaces; any examples that deviates from this and looks worse is considered inferior. Looks matter. Considering consumer software would be used by many people for the majority of their time, it needs to look good, besides solving the user’s problems.

UIs are important, but they only scratch the interface part. There’s UX: the study of creating better and better user experience. Eye candying alone is not good enough. UX is accompanied by moments of magic where users can swiftly accomplish the task at hand with little to no friction. Software design can take a page from how games were designed; users should be able to do what they want to do quickly and efficiently. The best example of this is why Linear beats Jira by a large margin; modern startups who build modern products shouldn’t be using something built almost 2 decades ago with little improvements and consistently gets called out for providing a bad PMing experience—modern startups should be using modern products that elevates their experience like how they elevate their users’ experience.

Software craftmanship has become so important that a recently new role called a design engineer has come into place and became popular in Twitter (X). Currently the role itself is fairly ambiguous, but these engineers often build design artifacts that elevates the user experience. Design is no longer a designer’s concern; it has also become an engineer’s concern.

So I think if you’re going to build software to be used by many these days, you should put software quality and software craftmanship as one of your core tenets. Our standards for good software has risen significantly, and those who knows how to build with craft will get some great wins.