Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Friday, September 19, 2008

Context, the new foo


It's a beautiful New England early fall evening, the sun is setting behind the trees as I make my way up the coast on an Acela regional train. The world is made and remade moment by moment in a clear stream of context. Each contiguous instant derives some, if not most, of it's meaning the previous instant. This is how the human brain makes sense of the world. By recognizing the temporal patterns that occur in events, we recognize what should happen next. For instance when I watch someone throw a ball I intuitively know how high it will go relative to other objects and where it will likely land. If the ball were to hang in the air after the throw we would suspect that the laws of physics had been suspended or perhaps feel like we had gone to sleep and passed into the dream world. This type of unexpected event would leave us on edge, uneasy, confused and untrusting of the world around us. I believe this is called cognitive dissonance.

The hanging baseball is a constant problem in the world of software. In fact it is more of an annoyance than cognitive dissonance since we are so used to this problem. We see it so often that we come to expect the problem. What I'm talking about is losing complete context when we jump from one application to the next. There are simple cases like when searching for airfares on Kayak, you find a flight on United and when you link off to the United site it DOESN'T have the flight you selected from Kayak at the top. Or you are searching for hotels on another travel site and it doesn't maintain the check-in/check-out dates in-between searches. Tougher instances are between web apps, like booking airfare on one site and then going to another to book hotels. Knowing full well that you just booked a roundtrip flight to Seattle, the browser should automatically fill in the city and check-in/check-out dates for you. And these are just the dead simple things software should be helping us out with by maintaining context and anticipating what we need next. This not only helps the individual but should lead to better targeting of advertisements providing advertisers with more effective communication to their audience, better click through rates, and higher ad revenue for site publishers. There are so many of these examples it could drain the entire coffers of VC funds for the next 10 years.

Think about the way in which we manage contacts. I look them up in my Mac Address Book but then I need to go to half a dozen places to gather information before I make the call. I want it to automatically fetch any information in SalesForce.com about the contact, their notes, the last time they were contacted and by whom. I also want it to pull up any emails I've sent to them recently and any to-do's i have entered around this account. I want a link to their website up and ready, a stock quote handy, and any recent news items and blog posts. I WANT MY SOFTWARE TO BE INTELLIGENT. Not that crazy HAL kind of intelligence that reads lips and wants to kill me, or the manic-depressive Marvin from Hitchhiker's Guide, but the uncomplaining intelligent assistant who anticipates my needs, brings it all together and makes my life simpler. Is that really too much to ask?

Tuesday, May 13, 2008

CTO Series - Out of the Goo


At the outset a company needs a huge amount of energy from a very small set of people to have any sort of chance of making it through the first year. My companies have been fairly complicated software affairs and so much of the energy input has been in the initial product buildout to sufficiently demonstrate the idea. So, in those early heady days of whiteboard brainstorming, myth making, protean moneyless, nothing-else-exists, insomniac haze, everything draws your attention. Servers need to be built. There is no data center so the servers sit half tilted on the desk next to you humming away. Source control needs to be set up. The beginnings of an architecture need to be laid down. You set up the company's email and website. There is no marketing, no sales department, no one booking your flights. You beg and borrow from friend's time to help with various aspects. You push friends and family to the limits of their patience. And you code like crazy, pulling all nighters when you're on a roll and some thorny problem is nearly within your grasp. You're in every aspect of the product, pushing each just far enough along to get that primal system to crawl up out of the digital goo limping into reality.

Key take-aways:
  • The early days of startups can get you distracted in a thousand directions so build a plan
  • The plan should be optimized to get you into discussions with *real* customers as soon as possible to validate the value
  • Don't fall in love with your plan, it will change, perhaps daily some weeks
  • Build top 10 lists. There's a hell of a lot to accomplish. Figure out what matters most to the plan and create a top 10 list.
  • In the list take on the hard problems yourself, delegate the easy ones
  • Lead by example. Push people but don't expect them to work harder than you do.
  • Have someone tend to the business. Incorporation, setting up health insurance, getting office space, chairs, and printers, and a checking account are not where you add value
  • Communicate. Constantly elaborate on the vision to any one who will listen and primarily anyone in your startup. This will help you in the evangelism phase later. Things that seem like really great ideas in your head sometimes fail the test when you have to communicate them out loud. This forces you to think through the problem in greater detail.
  • Don't get distracted. Don't look at your email when you're focusing on the product. If someone has a question that doesn't need to be addressed right away tell them you'll get back to them. Let people know when it's ok or not ok to come ask you questions. Wear a set of headphones when you don't want to be interrupted even if you're not listening to anything. Most people won't bother you if you have headphones on (same as on a flight).

Once this is accomplished the road show begins and you spend a lot more time talking to people than writing code. In order for your company to survive you must raise money, either by selling some form of the product, or taking in venture capital. This slows you down to a crawl but gives a lot of perspective on the value of your creation and gives you time to digest the market and what might be important. It also preps you for the next stage in the company's development, R&D growth. Rest here on the bank for a just a moment. There's a lot more evolution coming.

pull your banner ads until google does a better job