Thursday, August 25, 2011

My one question for Steve Jobs in 2001

I’ll always stay connected with Apple. I hope that throughout my life I’ll sort of have the thread of my life and the thread of Apple weave in and out of each other, like a tapestry. There may be a few years when I’m not there, but I’ll always come back. [Playboy, Feb. 1, 1985]

I've had two personal encounters in my life with Steve Jobs. The first was in 1997 when my parents forced me to stalk him after a Cirque du Solei show in San Francisco and I shook his hand. I wouldn't recommend doing this to any famous person, although in my parents' defense Steve wasn't as famous back then except to fanboys like me.

The second encounter, however, happened 4 years later at Apple in the summer of 2001. I was an intern there and one day the head of the intern program gathered the almost 100 interns into the Town Hall auditorium in Infinite Loop 4 for a "surprise guest speaker" that wasn't really much of a surprise: Steve Jobs.

The meeting had no agenda but I had a hunch that when Steve (everyone who has ever worked at Apple just calls him "Steve") ended his remarks there would be a Q&A session. My mind started racing. This was probably going to be the one time in my life when I would have the chance to ask Steve Jobs a question and get a reply. This has *got* to be a good question. This was like getting a chance to shoot a basket with Michael Jordan, you want to take a good shot.

I can't remember exactly the questions that I decided against, but I remember specifically thinking that I wanted to ask something that hadn't been captured in the numerous books I had read about Apple's history. Something Macworld magazine hadn't reported on. Something Steve hadn't talked about in the press before. And something personal to him. The other interns, disappointingly to me, were asking questions more about the company like "Is Apple ever going to go after the enterprise market?" (Steve's response, a refreshing "If you're interested in that, you're probably at the wrong company.")

Steve got to about his 4th question from the audience and by this point almost every single intern had their hand up. He gestured in my direction but I could tell he was actually looking at an intern in the row right in front of me. I got a bit aggressive and barged ahead with my question anyway before the other intern could begin. Steve smiled a bit in apology to the intern I had just trampled over but let me continue.

I was nervous. "Steve, many years ago you left Apple to start Next. But recently you returned to Apple. Why did you come back to Apple?" I could be filling in false details, but I remember Steve thinking for a moment with his characteristic "fingertip pressed together downward glance". He then proceeded to give a two part answer.

The first part of his answer I've completely forgotten because it seemed to be a canned spiel that he had used before. It had something to do with Apple's products or mission. I started losing interest because it sounded like something I might have even heard Steve say before at a keynote. I felt a bit disappointed that my one chance to learn something new and unique about Steve was probably about to end.

But then, as if to try again at my question, he added a second part to his answer.

"When I was trying to decide whether to come back to Apple or not I struggled. I talked to a lot of people and got a lot of opinions. And then there I was, late one night, struggling with this and I called up a friend of mine at 2am. I said, 'should I come back, should I not?' and the friend replied, 'Steve, look. I don't give a fuck about Apple. Just make up your mind' and hung up. And it was in that moment that I realized I truly cared about Apple."

When I was 5 I first played with an Apple II GS. And when I was 10 (or 12?) my parents got me a Macintosh IIsi, put it in my room, and subscribed me to Macworld magazine. Apple and Steve's work has been a part of my life for almost as long as I can remember.

To bring a company that in 1997 was losing money and had changed CEOs nearly every year for many years in a row, to be the most valuable company in the world is a feat I'm not sure we'll ever witness again in our lifetimes.

Steve managed to find work he loved and did it to the very best of his ability. It's a concept that sounds so simple but in practice is hard to do, but one that is worth striving for.

Update 1/7: On page 315 of Steve Jobs, Walter Isaacson quotes Jobs telling the same story where he uses Andy Grove by name , instead of "a friend".

Thursday, July 7, 2011

Code components not features

A few days ago, I asked one of the "grey hairs" (experienced people) at my startup:
Is it better to have engineers coding features or components? Should they work on a vertical slice, a feature, that cuts through many layers in the technical stack? Or instead, should they focus on one component in one layer of the stack?

I wasn't sure of the best answer, but the experienced-one recommended a one-engineer-per-feature approach, especially for a startup. His argument cited greater individual motivation, higher functional quality of the feature, and faster iteration on the feature.

They say an easy way to make a 50/50 decision is flipping a coin, and if it comes out heads and you're disappointed you know you should have decided on tails. So let me try to make the opposite case: you should always have engineers work on just one particular component, in one layer of the stack, and never on an entire feature.

When you have a system, whatever system that might be (a company, a technology product, a team of people), the system will naturally have a tension between the goals of the individual parts of that system and the system as a whole. For example, the star hitter on a baseball team might want to go for a homerun everytime to improve his stats. But sometimes, it's best if they only go for a single because the team needs another man on base.

A tech startup has two big systems: the product itself and the team creating the product. Happier teams make better products so we'll focus on optimizing the "team system" first. Where the post linked above goes wrong is here:
Nothing is more motivating than feeling like your work really makes a difference.
Programmers, however, aren't motivated by quantity they're motivated by quality.

The quality of one's work is directly tied to one's self-esteem a trait inherent to human nature. A piece of code that is executed by a processor 750 million times isn't necessarily higher quality than a piece of code that is executed only once.

The very idea of a startup is a perfect example of this principle. When you're writing code at a startup it will likely get used by no one at first. So the only motivation you have is making something that is high quality.

Since about 1960 the software world has agreed that producing high quality software requires breaking a system down into smaller parts. This isn't too surprising given the way large systems (like countries and corporations) have always been organized.

It's easier to make one thing of high quality than ten things of high quality. And while an engineer might enjoy creating more rather than fewer high quality things ("Yay! Big contribution, I know I can do a good job on all of them!") it's going to be best for the system (the team) to have each person focus on making at least one thing of high quality first.

This encourages better encapsulation, abstraction, and in the end a better product which can go on to lead a company to becoming the second biggest in the entire world. It comes down to a focus on quality first and all else second that wins the day.

Sunday, May 8, 2011

Kings, Addresses, and Facebook -or- Why We Don't Need Phone Numbers Anymore

We've been using addresses to send messages for a long time but Facebook has made them obsolete. Our "identity" is our new address. We don't need e-mail addresses, phone numbers, or IM handles anymore but address books, strangely, might still be useful.

Addresses sprang from the need of identifying someone within a crowd without a central directory. Before addresses, we didn't have the crowd or the central directory. In 1229 King Frederick II wrote a letter to King Henry III of England updating Henry about the latest news. When Frederick wrote that letter he probably just put Henry's name on an envelope, stamped it with wax, and then told a servant to deliver the message. Frederick didn't need an address because there wasn't a crowd - there weren't many people he could send a message to.

The first widespread use of addresses in the US came about in 1775 when Benjamin Franklin formed the US Postal Service. Sending letters was brought to the masses and a system was standardized to move these sheets of paper around. You couldn't just write a person's name on an envelope anymore because the number of recipients went way up. The possible number of recipients went up because it became cheaper (and just plain possible physically) through the use of technology like trucks and roads to send a letter to anyone.

Good old Frederick probably didn't have an address book but the first US citizens needed them because although they could remember who their friends were like the kings, they couldn't remember all those addresses. The old kings didn't need them since in their day addresses were the same thing as identity.

With mailing addresses, your identity is still pretty close to your address since one is contained in the other. But once e-mail arrived "address" and "identity" fully separated for the first time. For once, a person could choose whether to reveal their identity as part of an address. I could choose to make my e-mail tactless@gmail.com or berger.jon@gmail.com for example, and still receive messages just the same either way.

Finally, jump to current day. Facebook comes along and makes the old new again. Let's assume for a moment that Facebook reaches its goal of making everyone on the planet a user. Coupled with an excellent, graph-weighted people search (which it has) your identity ends up being your address again, just like with the medieval kings. Meaning, all you really have to know is someone's name to send them a message.

Wait a second, what? So we're now all kings like Frederick where we can just scribble a name on a sheet of paper and hand that to our servant and trust it gets to the right person? Yes, essentially. Facebook is our servant and its almost perfect mapping of real people to accounts provides the infrastructure necessary to make this possible.

Facebook messaging is a departure from e-mail precisely because it ties so strongly "identity" with messages and abandons "addresses". Facebook actively bans fake accounts, while Hotmail allows you to create as many as you'd like.

If all it takes to message someone is their name, then it follows that the only people you can't message are people whose names you don't know. You know Barack Obama's name, and you can message him if he has his Facebook privacy settings at their default. OK, so famous people will likely want to alter their privacy settings, but for everyone else the rule still holds.

But wait, you might say, what about the fact that you aren't friends with everyone on Facebook. Facebook lets you talk with your friends and since I'm not friends with everybody that's the real reason I can't message the President. It turns out Facebook's default privacy settings do allow you to message non-friends, they just restrict you from seeing personal things like photos you're tagged in and your email address and phone.

You can message John Smith too. I know he has a common name and it'd be more helpful to have his address. But it's likely you met John Smith at a party, or a conference, or some real world event with real world relationships that Facebook knows about explicitly or implicitly and those allow him to pop up in that spiffy search right away.

What about those pesky address books, things people hated anyways. Kings didn't need them, Benjamin Franklin and friends did, and since we're back to the "king situation" people on Facebook today don't need them again.

Well, not quite. Address books just look much different. It's no longer a list of addresses. Rather, it changes to become a list of names. Your only task becomes remembering the names of people and how they are relevant to you rather than managing the addresses associated with them (or managing phone numbers which are just another type of address). You could try to just keep this list of names in your heads, but we meet so many people these days that's just not possible.

And Facebook is definitely not good at this either. It only remembers a small subset of the people you'd really want in a modern address book. Which means Facebook can't be the end-all and be-all of our social world forever. Which is a good thing for Google, Apple, and all the startups and would-be startups just getting started.


Thanks to Kartik L. and Andrew O. for providing feedback on this post.

Tuesday, January 18, 2011

Experiment in graphic design textures

I was inspired by Path's iPhone app to dabble in textures tonight. Here is the part of the iPhone app that I thought looked very pleasing to the eye:

And after downloading a few of the packs from http://tileabl.es/ and using a technique from Game Artist to colorize the texture, I ended up with this:


The rounded rectangle is intentionally different from Path's. Path's shadows give the impression that the profile picture appears at a layer in between the frontmost beige and the background brown texture. I thought this introduction of three separate planes was unnecessary and chose instead to have my rectangle float above both. While writing I realized I had also created three planes and so made another version with only two.


Overall, I think my attempts look pretty good although the texture I'm using still isn't great. Path's looks more refined, sanded, smooth, polished, solid, slick, and less gritty, noticeable, and intrusive.