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.

Wednesday, July 1, 2009

"Honor the voice of possibility that calls you."

Honor the voice of possibility that calls you. Notice what diminishes you and what brings you alive. Embrace your questions, treasures, and gifts with gratitude. Passionately commit to impossible causes. Love generously. Believe in your goodness and genius. And always - keep learning.

Dr. Stephanie Pace Marshall, Spring 2007

Monday, June 8, 2009

Be a scientist.

(original publish date 6/9/09)
These remarks were delivered to the 8th Group at Avery Coonley School in Downers Grove, IL on June 3rd.

Dear guinea pigs, I asked my father for his sage wisdom on how to begin today, especially given his many years of experience in life and as a previous ACS graduation speaker himself. He thought for a moment with closed eyes, and then said, “Jonathan, I know how you can start. Start by saying, 8th group, LISTEN UP … YOU GRADUATES.”

8th Group, I have good and bad news for you today. The bad news is, I want to take a risk and run an experiment: I’m going to assign homework, to a graduating class during a commencement address. Yes, real homework. The good news, though, is that although technically, diplomas have not yet been awarded I don’t think I have the authority to withhold them, so the assignment will be solely for extra credit.
With that out of the way, I wanted to take the chance to thank Mr. Barton for giving me the honor of speaking here today. Also, thank you to the larger ACS Family, faculty, parents, administrators, and Trustees, who literally make this all possible.

8th Group, please excuse one last order of business. I want to thank Mrs. Lenhardt. I get a bit emotional when I think about the effect you have had on my life. I remember you specifically in two roles during my time at ACS, first as leader of the student council, and second as my L.A. teacher. As you know Mrs. Lenhardt, I’ve always been more of a scientist than an artist, or even a “language artist”.

But if a student not finding his or her passion in the subject of a teacher is a sign that that teacher has failed, I want you to know Mrs. Lenhardt, that you have taught me more things about leadership and life to ever question your success as a teacher, things that have long outpaced my rather paltry skills in writing, and principles that I continue to treasure in my current endeavors.

8th Group. This day is about you. Congratulations to all, on a job well done! [applause]

I was lucky enough to chat briefly with a few of you yesterday, and Anna, your class president, informed me of your nickname as the “guinea pigs” or more affectionately the “gerbils.” I later asked a few members of the 7th Group about this name and they had never heard of it, so I’ve gathered in must be a mark of self-identity. It appears this “gerbils” term reaches all the way back to the 6th Group when you first received tablet computers as an experiment and the term relates to my message today.

My message today is, “be a scientist.” In my field of study, computers, we often strive to make messages short so they can be transmitted quickly, so I’ve chosen to boil this speech down to just those three words: “Be a scientist.”

I would guess that there are at least a few budding artists in the room that I may start to offend if I keep using the word “science” without also mentioning the “the arts.” So let me be clear: when I say “be a scientist” I don’t mean it in the literal sense that you need to become a physicist, chemist, or even to only study fields in the natural sciences. What I mean is to approach your academics, career, and life, as a scientist; that is, one who questions. Don’t take someone else’s word for it. Find your own truths.

Now 8th Group parents, I need to apologize. I know ACS is normally very good about permission slips. I remember in kindergarten having them literally pinned to our clothing as we went home. But I conducted an experiment on your children about 6 weeks ago, without permission.

I sent via e-mail three questions that I thought for sure would spur some interesting discussion and was completely surprised by the result of one of my questions. Of the responses I received, every single student answered “yes.” That question was, “can a scientist also be an artist?”

I thought I was so clever when I wrote this question, but each one of you very easily got the question right and if I may paraphrase, roughly said, “ofcourse Jonathan, you can be anything you want to be.” 8th Group, you have already taught me, in the course of running this experiment, that you have to ask the right questions.

So let me change the question a bit. High school will represent the first time you can choose your own classes through what are called electives. So what if I had asked, “In high school, if you had only one elective to take and the choice was science or art, which should you take?” how then, would you answer? I hopefully have made the question a bit more difficult. We have now a working purpose, or driving question for these remarks.

So let’s now try to answer this question just like a scientist collecting data. Let’s move from the left part of this backboard which contains the hypothesis, to the middle, where we find data.

I want to address both the scientists and artists in the room. But artists, let me first address you with a specific suggestion and scientists listen in too, because there’s a secondary relevant message.

My recommendation to you, artists is, “get a C, ++.”

When you get to high school don’t be afraid of taking a class where you might get a failing or less than desirable grade. Take a programming class like C++, for example, or at least one that is not in your comfort zone. I suggest this because in my experience, both have been helpful for growing in unexpected ways. Let me give an example.

I will admit, I was always good at tests and homework. In high school I found that among my peers I usually was able to do pretty well. I wouldn’t be at the top of the class, but I somehow managed to pull off decent grades consistently.

In college, I looked forward most to the classes that I could choose to take rather than the required classes that were part of a so-called “well rounded education.” Who needs that?! I thought, I just want to take the computer classes. An area I had a choice was foreign language and I thought to myself, I am so set. I can easily pass as I’ve had more years of French thanks to ACS than practically anyone else.

I took the placement test during the first week in school. I had to go into a dark booth, fill out a sheet of paper with a #2 pencil, and use a tape cassette player — do you still remember those? — to record my voice speaking French. A few days later I got the results:

FAILURE –take 2 more quarters of 1st year French, the sheet said.

Despite ACS’ excellent foundation in French, it’s a subject I have always struggled with for reasons still unknown to me. French was always out of my comfort zone but it did give me something I didn’t expect, a tool for connecting with other people around the world and an appreciation for different vocabularies, syntaxes, and grammars. Something I eventually put to use while learning a plethora of computer languages.

My main piece of advice is to take a class where you might fail. If you need a specific suggestion though, on what kind of class this should be, I’ll add one last detail. Take computer programming because I truly believe that over the course of the next century there will be no more important artistic medium to work in besides written computer code.

OK artists, hopefully I’ve convinced you to at least consider a science elective in that one slot you might have to fill. But now I want to speak to the scientists who might already be choosing a science class without any urging. Artists, pay attention too though. See if you’re able to guess where I’m going with my advice to the other half.

My recommendation to you, scientists, is “make a scene.”

Take a class where you are required to create something. I’m not talking about making the classic baking soda volcano. If you want a specific suggestion, try a video editing or photography class where you have to tell a story, or “make a scene.” I’ll give another example here.

At about the time I graduated college in 2004, Google decided to run an experiment of its own by hiring young college graduates and placing them in leadership positions called Associate Product Managers or APMs. The program was new, so I received a call from Google asking if I would like to apply. In 2004 I declined the request because I decided to finish another degree, but in 2005 when they called again I happily interviewed.

I knew very little about this new APM program but it sounded like fun and so I accepted Google’s offer. A few months after I joined, Google announced publicly something that I believe to be a historic undertaking, something on par with our country putting a man on the moon. I got a front row seat at such a project called Google Book Search.

The goal of the project is to scan in the world’s books with a current decade-long target of 15 million volumes. This way, all of the books, good and bad, ever written will be available at select collegiate libraries and hopefully, one day, to every person on the planet – no matter where they may be located.

A pesky set of laws called U.S. Fair use doctrine, something that evolves slowly since it’s made by a monopolistic thing called government, made such a project possible in the first place. Fair use says, you can make use of others’ ideas and works without asking for permission, as long as you don’t steal. And since Google was just scanning and not stealing, it luckily didn’t have to ask for permission 15 million times.

The day Google launched the project, you all remember, right? When Google Book Search launched banners streamed down in Times Square, there were fireworks in Paris, and the heroic engineers on the project marched in parades around the country and showed up even on American Idol, right? Not even close.

Rather, Google got sued. By who? Ironically, some of the people who would most benefit from the project, the authors of the books being scanned! And why? The real answer is complex, but slow moving out-of-date laws played a large role. All I can say is, Newton’s Laws never looked any better!

The point here is Google “made a scene” in scanning these books. They announced the project even when it wasn’t clearly in compliance with our nation’s laws. It scanned the books anyways and made our citizens and lawmakers question the validity of the old laws. Questioning authority and the old way of doing things, is an American principle that goes back to our Declaration of Independence which encourages us to alter or abolish any form of government that fails to serve its purpose.

Making a scene can take the form of book scanning or physical protests, but perhaps just as powerful, the phrase can be taken literally to mean making a video scene. So scientists, my advice to you in high school is take a video editing class, or at least something to tell a story but more importantly remember making a scene is about questioning authority and doing the right thing even when those around you might be doing the opposite.

First, I addressed the artists in the room, and told them to “get a C++”. Then I suggested to scientists, “make a scene.” So I now want to conclude with one final message to both. So let me move from the middle of the backboard to the final panel which holds the “conclusion.”

I want to close tonight with my homework assignment. High school is your personal declaration of independence. It represents the time in your life when you will transition from imperial control by your parents to being on your own.

So on this day, I want to give you just a small gift borrowed from a Berger Family tradition, because you have certainly earned it. The rarely used but still in circulation two-dollar bill is the only bill with a historical scene on the back – a scene of the signing of the Declaration of Independence. I’ve written on each bill an e-mail address that is unique to that bill. I ask this: e-mail that address with what you plan to do with the bill and where you think you or the bill, will be both 1 year and 12 years from today.

In return, I will promise you this. I will keep your e-mail confidential and at both the 1 year and 12 year mark I will send the e-mail you sent, back, to the address I received it from. Also, if anyone else in the world finds the bill and decides to e-mail the address on it I will forward the message along.

Working out plans for the future, like this homework assignment, is something students at ACS have done since the beginning. A scientist studying ACS once wrote,
Boys and girls [appear to] experience the thrill, [the thrill] which is the reward of the thinker who has worked out his plans in harmony with nature's forces. The teacher encourages the work, but for the most part, experience is left to do its own educative work.
Gertrude Hartman wrote this in 1938 about the science classes within these very walls, or really, the brick walls over in that direction.

I give this $2 bill assignment because gaining experience through setting a goal or working out plans is the best way I have found to give the science experiment of my life, purpose. And purpose cannot come from science or art, but only from within.

Purpose, as seen here on the left part of this backboard.

When you set a personal goal both short and long term, it’s not necessarily important you reach it, because you are the only one who gets to define your own success. But it’s important to do because it gets you thinking about the future.

Finally though, I will end by amending my original message. Be a scientist, but be a scientist with a purpose. What I really mean is, be one who questions with a purpose.

Thank you.

Thank you also to Maliha Mustafa, Mike Kodiak, Germaine Hoe, and Andrew Ow, who sent me feedback and ideas for this speech.

Sunday, May 24, 2009

Recent Web Browsing Learnings

I was lamenting the fact that browsing the web is not very productive to a friend and she suggested I summarize my learnings in written form, possibly posting such a composition to my blog. I decided I'll give that a try by looking through my browser history...
  • Stopping a "fixey" bike requires using the back tire as a skid break. I read the article because I learned about the fixey trend roughly a year ago at a vegan dinner in SF. My most recent trend following involved buying a pinstriped black blazer.
  • Having a laser-focused purpose can produce incredible results. Jim Collins apparently proposed four days after his first date with his wife, who later said she wanted to win an Ironman Triathlon which Collins quit his job to help her do. There has to be more details to these surprising tidbits but amazingly facts this NYT writer found.
  • It's hard to open up old file formats. I'm a real life possessional minimalist but a digital pack rat and recently found this link was one of the top results for opening old Clarisworks files. I was trying to do this so I could look back on my 8th grade graduation speech which I plan to reference in the address I'm giving in about 10 days.

I think I proved to myself with this post that aimless browsing of the web can help you accumulate many tidbits of knowledge but it still doesn't really "accomplish" much.

Thursday, May 21, 2009

Weight Loss Tip: Big Thing of Water

I'm not trying to lose weight. But I do like to drink Coke or Pepsi with meals, particularly dinners, and I know this is not particularly healthy. A close friend of mine was... and I don't think he'd mind I say this... "bulkier" back in high school. In fact, he ate fast food every day for lunch his senior year and lots of soda with those meals.

However, he also happens to be one of those individuals who has managed to lose weight and keep it off over a period of years. He shared a tip he practiced several years ago tonight that I think will never see the written word unless I put it down here: drink big things of water.

To stop his "Coke habit" (hmm... that sounds wrong) he decided during his junior year in college to get a big 32 oz. cup, fill it to the brim with water, and set it next to his every meal. This small gesture alone lead in the long run to him cutting soda out of his diet nearly completely, and I think significantly contributed to his weight loss.

It came up in a conversation about how very tiny but achievable goals sustained over long periods can sometimes have a much larger effect than gigantic goals sustained for short periods.