Tuesday, January 27, 2009

How Engineering Decisions Get Made

Now that we're a small team, patterns are emerging on how we make technical decisions. Team dynamics has always been pretty fascinating to me, and tons has been written about good engineering practices (e.g. Code Complete) combined with good project management (e.g. Getting Results).

Let's say you're working on a big project, and need a design decision. For example, your team is trying to decide whether to go with Rails or Django, or whether to use a database, flat files, or write your own storage system. Maybe you need to define a communication protocol. There are many ways to decide, but it comes down to three basic patterns:
  1. "The Man in the Room" – One of the star developers thinks "I know how to do this," goes off into a room, and reemerges three days later with a prototype. The other developers are shocked and awed. When one discovers a flaw in the decision, the concern is brushed away with "but it's already working!" The design is adopted, partially to not hurt the star developer's feelings. Because the initial decision was never discussed, the developer ended up reinventing wheels, and forgot some of the requirements.
  2. "Let's chat" – An hour-long discussion ensues, dominated by the most outspoken developers. Positions are taken early. The group is by the quieter developers, as initial arguments are exchanged. Eventually, the group moves to the whiteboard, and the different options are sketched out. One group eventually wins over, the other feels beaten. A decision is seemingly reached, but is quickly forgotten, since no one remembered to write it down.
  3. "Committee rodeo" – An overeager project manager proposes to form a committee that makes a decision. Opinions are solicited. Specifications are written, then rewritten. At the scheduled time, all parties involved meet in a room, with a domain expert flown in from across the country to help out. After a day of deliberation, a decision is reached, and the specification becomes forever written in stone.
Well, those are the worst cases, actually, and you can probably make every single one work for you. I prefer (2.), combined with the discipline of writing things down.

Tuesday, January 20, 2009

"Greatness is never a given"

"Greatness is never a given. It must be earned. Our journey has never been one of shortcuts or settling for less. It has not been the path for the faint-hearted — for those who prefer leisure over work, or seek only the pleasures of riches and fame. Rather, it has been the risk-takers, the doers, the makers of things — some celebrated but more often men and women obscure in their labor, who have carried us up the long, rugged path towards prosperity and freedom."

-- Barack Obama, inaugural address, minutes ago

Thursday, January 15, 2009

I Like this Quote

"Lucky things happen to entrepreneurs who start fundamentally innovative, morally compelling, and philosophically positive companies, creating something interesting and valuable rather than strictly seeking money." - Bo Peabody, Lucky or Smart
I haven't read the book, but I find this one quote nicely summarizes what we'd like to build: A useful product, a positive philosophy, and a great place to work.

Monday, January 12, 2009

Emails that make you Happy

Here's a random idea: What if you email client could show only emails that will make you happy? Email is a huge source of stress: All these emails from your boss, payment reminders, and project assignments – sometimes it's best just to ignore them. I propose adding a view that shows you only happy emails.

So how do you find these emails? Unless there is some magic natural language processing trick that I haven't heard of, I'd doubt that a content-based happiness filter would work. Let's just do it by sender.

People remember how you make them feel. The best way might be to just show the user a list of her top contacts, and rate her contacts. Like rating songs in iTunes, but more fun.

The inbox will now only contain emails from people that make you happy. The stress-free workplace is born.

Wednesday, January 07, 2009

Looking for UI Designer, Mobile Developer

We're looking for a UI Designer and a Mobile Client / iPhone Developer to come work with us for the next 2-4 months as contractors. Job descriptions are below. We're working on a product in the email space, and want to add more thrust so we can launch sooner.

Interesting. Job Descriptions?

  1. UI / Interaction / Web Designer: You can help us get to a Gmail level of UI perfection. You should produce beautiful, usable, and information-rich interfaces that load quickly. You can go full-circle from wireframes to mockups to PNGs and JavaScript/Python code.

  2. Mobile Client Developer: Our main product is a web app, but we're planning to build a mobile version of it, specifically for iPhones. You should have experience developing in Objective-C with the iPhone SDK. Ideally, you'd also know about developing for Blackberry, Android, and Windows Mobile.
You should also be pretty self-directed, and know how to deliver production quality code and pixels. We can't bring in people who need long ramp-up times.

What should I expect?

  1. Experience working at an early stage startup. It's an interesting, exhausting, but also fulfilling experience. We're essentially following the YCombinator model, and still working in my apartment. There are no hierarchies or red tape.

  2. Work with great people. You'll like working with us. We're smart and determined and fun.

  3. Equity. We won't pay you a lot, but it'll be enough to cover living expenses. More importantly, we'll give you a significant chunk of stock. We want you to benefit long-term from making a large contribution at an early stage.

What are you guys working on?

We're haven't shown what we're building to the public yet. If you're interested in email, you'll like our product. We'll be happy to show you what we're doing.

What technologies do you guys work with?

Our main product is a web app in JavaScript, Python, and Django. Our iPhone app, obviously, would have to be Objective-C. It's best if you come with a knowledge of these.

Where are you located?

Foster City, CA: Not a hip place, but certainly one where we can focus on work. It's easy to reach from the Peninsula, the South Bay, the East Bay, and San Francisco.

What if I don't live in the SF Bay Area?

We expect you to spend a significant chunk of time physically with us. You can crash at our place or we'll find something nearby.

I'm interested; What should I do?

Excellent! Send me your resume. My email address can be found here.

Saturday, January 03, 2009

My New Year's Resolution

Everyone's asking about my New Year's Resolutions. I really only have one, and it's only three words: "Make startup successful." People say that I can be intense in my focus, and that's where my focus will be in 2009.

But now that I think of it, I'd also like to get back into shape, which seems inversely correlated with my number of work hours, thus somewhat conflicting with the above.

I also want to blog more - my main barrier to that is thinking too much about something informative or entertaining to say, and then experiencing writer's block. This year, I will post more at the risk of sounding trivial and being criticized by people named "Anonymous".

Thursday, January 01, 2009

2008 in Review

I traveled a lot this past year. Here are all the memorable places I where spent time in 2008 (this map is somewhat inspired by Sacca's):

I left my job and started a new company: I had been dreaming about this since I was just a little boy. The experience of doing something from scratch has been very fulfilling. Things are moving at high speed and I should have plenty of good news to announce here in 2009.

Oh, and doing that trip around the world was a great idea. Highly recommended to anyone who wants to decompress.