Sofa's blog about design, code Ampersand everything else.

« Previous Ruby on OS X Talk Thursday the 21st of May, 2009 Cocoaheads Presentation Next »

Interning At Sofa 

by Klaas Pieter Annema

This is the last week of my internship at Sofa. What better way to summarize what I've learned than in a blog post?

Nine months ago I started my internship here at Sofa. My assignment was to create an iPhone application. It took me one month to create a working application without a proper user interface. So I was almost done… Right? You probably know that Sofa's user interface quality standards are high, but how long do you think it takes to adhere to them? I've started my internship nine months ago and I can't talk about what I did, because it's still not done!

User Interfaces

So I learned not to underestimate the user interface. Yes, but I also learned something way more important. Before I started at Sofa I knew about the importance of user interfaces, but somehow, I never applied this knowledge. To me user interfaces were a necessary evil; something a product needed to have to show off all the incredibly complex features I implemented.

I learned that a user interface should never reflect the complexity of a feature directly. As a programmer, I wanted users to acknowledge the amount of work I put into a feature. I abused the user interface to show this complexity and hoped the user would recognize and appreciate my work.

A user does not see the complexity of a feature, not even if you make using it as hard as implementing it. I always show stuff I'm excited about to my fiancee. Somehow, she never is quite as excited as I am. She, like most non-technical users, just doesn't see the complexity.

Users don't care about the complexity of features, they want software to work in ways they expect. When a user interface visualizes complex features in easy to use ways, people will enjoy using your product and get excited about it. Which brings me to the next thing I learned.

The One Rule

There are a lot of applications out there that aren't fun to use. Don't developers use their own products? I don't know, but I think they should. If developers aren't familiar with the problem they're solving, how do you think they can solve it? All of Sofa's applications follow a simple rule: Create software that solves problems you understand and care about.

This is, I think, one of the biggest advantages of working in a small company. Everyone at Sofa shares the same vision about software; we want to create beautiful, stunning and easy to use products. Of course, there are big companies that build software in a similar spirit, but regrettably, most don't. This is no surprise, since managing this becomes harder as the number of employees increase.

David vs. Goliath

During my internship at Sofa, a lot of my opinions and prejudices slowly changed. I've already talked about my huge transition from a UI-indifferent Windows programmer to an interface-centered iPhone developer. Another prejudice that slowly changed, was how I felt about working at a smaller company.

Before Sofa, I always pictured myself working in a large company. I can't recall my exact reasoning, but I think the thing I wanted most was a successful career, stepping up the corporate ladder as quickly as possible and giving leadership to increasingly more random people. Random because I probably didn't hire them. Random because they probably wouldn't share my (or each others) vision about software development.

I probably wouldn't have gotten much fun or satisfaction from such a career. On top of that, I was excited about the wrong aspect of it. I wasn't excited about developing great products, I was excited about being as high-up and important as possible. And yes, probably about the salary that comes with those positions as well. I don't want to imply that such a position (and its paycheck) can't be fun, challenging or exciting. I'm just saying that I was excited about everything but creating great software.

Now onto something I am excited about.

I Got the Job!

The second my opinions about smaller companies started to change, my goals started to change as well. I wanted this job. And I got lucky; Sofa offered it to me on one condition, the same one that applied to my internship: I was not allowed to pack my own lunch ;). So now I travel two hours to get to work and two hours to get back home every day. Why? Because I am excited about creating beautiful, stunning and easy to use products!

Finishing Up

I learned a lot more than this, but the above three things were by far the most important. If my post inspired you and you want to write just such a post after some intense pixel perfect programming, send an email to Koen or Dirk and they'll get back to you.

 

This is an archived version of the Sofa site