Matt's Blog: while { coding }
    Back to Matt's Homepage   |   Hire Matt

It’s OK to make things pretty

I have an announcement to make.

It’s OK to like pretty things. And you know what else? It’s OK to make pretty things too.

That’s right. And not just pretty things others make for you. Not just the candy coated interface you see on your latest OS or on your phone. It’s OK to make your programs pretty too. It’s OK to make your docs pretty. It’s OK to make your website pretty. Pretty pretty pretty.

Aesthetics are important. How you feel about the tools you work with matters. It matters a lot.But making things pretty isn’t just about aesthetics.

Bear with me here.

Beauty is a form of wealth. And wealth comes in many more forms than we imagine. I’m not talking tangible wealth – cars, yachts, bling. I’m talking about something a little more intangible but still very valuable.

I create wealth all the time when I’m programming. Again, I’m not talking about money or the literal value of the code I’ve written. I’m talking about the good stuff that just *falls out* while I’m working. And this isn’t because I’m particularly awesome, it just happens. I  think it happens to anyone who works in a creative field.

For instance, say I am writing some code, and I realize that I’m essentially repeating the same 4 lines of code in several different functions. So I Extract Method and boom, I’ve created some new wealth which wasn’t there before. Of course that is more intentional. What I’m getting at is directly related, but a little different. I’m talking about a sort of accidental wealth. For instance, say I’m doing a lot of work with lists. And I realize after a while that I have several places in my program where I am iterating over lists in the same way. So I pull out that code and consolidate it into one spot. Pretty soon I realize that the iteration function I created is handy in a LOT more places. And not just in this one project, but in all of my projects. Pretty soon I’m coding in a whole new way and I actually start to *think* in a whole new and more powerful way.

I don’t know what you’d call this. There’s probably some huge German word for it which would roughly translate as “the thing that gets you more things without you seeing it at first”.

Beauty can work in this same way. For one thing, there is just the simple aesthetic pleasure of working on something pretty. I remember back in the dotcom days I was working on a site that had a pretty UI designed by some skilled graphic designers. I had to start building out the site with placeholder HTML before we had the UI and it was an OK project. Nothing thrilling, kind of ho-hum. But then the designer’s UI came in and WOW, I suddenly liked working on that project a whole lot more. Of course one of my coworkers was working on an even prettier website, and after a while I really wanted to work on *that* instead, even though I knew that the technology under the hood was awful to work with. Apparently sometimes the grass is always greener, even if the green comes from a spray can. So working on something pretty can definitely improve your attitude about your work, and I would argue that a better attitude improves the quality of your work too.

But that’s not where all the wealth comes from. It’s not just the good feeling you get working on it. It’s the way things play out in your mind. Imagine you’re building an application and you have some objects that get manipulated. I don’t know about you, but for me, when I create new objects, especially ones that live in the database, it takes me a while to believe in the thing I’ve created. Not just believe in whether it will work or not, but to actually think of the thing I’ve created as real. But when you allow yourself to make things beautiful, to make that a priority on par with functionality and correctness, the things you create become tangible. Icons are a great example of this. Icons – good icons – can look great and really add something to your application. I’m not just talking about the icon for your program, I’m talking about the icons you pick to represent things within your program.

Think about a personnel database. The typical app that comes to mind is some byzantine Windows app or maybe a clunky web app which dumps out people’s stats in row after row of icky blandness. Now imagine that instead of row after row of text, there is a thumbnail image of the actual person. And imagine that you can click on that person to get more information about them. Imagine that you can drag that person around by their image. That you can transfer Tricia from Accounting to Distribution Support by literally dragging her from one department to another. Certainly you can do those same things with just text in a list, but it doesn’t feel the same way. You wouldn’t see Tricia as a real person. You wouldn’t *believe* in the idea of Tricia.

And it’s the same way with any entity in your application. Why should only the user-visible objects in your app have icons? Why should only the user-visible screens look nice? It’s very common to have programmers build out apps that look great to the customer, but when the programmer needs to get under the hood everything is fugly and lacks imagination.

That’s not right. That doesn’t serve anyone. And there are unseen opportunities missed! I’m not saying to spend all of your time making things pretty. I still stick by my Big 3: Make it Work, Make it Right, Make it Pretty. But making things pretty is definitely allowed and maybe even downright necessary.