I know exactly what I’m trying to do: I’m trying to come up with a business idea that’s exciting enough that I’m willing to invest significant amounts of time and money to pursue it. That’s a nice, clear goal. But, as is presumably clear from previous posts, I’m not exactly sure how to do it.
Thus far, I’ve made myself notes on vaguely plausible ideas for businesses that would offer products to educate children, improve restaurant efficiency, help people decide where (or even whether) to go to college, and garden better. I’ve been all over the map and, as a result, I’m starting to feel lost. I’m sure that reading interesting things, talking to interesting people, and thinking hard is necessary — but I doubt those acts alone are sufficient. I know that some random event will provide the insight I seek, but I need a better-structured process to create enough of the right kind of random events. What should I be doing — and how do I know if I’m doing it?
My high-school classmate Ben Lamorte recently posted an article about the use of Objectives and Key Results (OKRs) methodology to keep people on track. OKRs go back at least as far as the early days of Intel and are now in use at various leading companies, including Google. The idea is simple: each person has a clear objective, together with several measurable “key results” that will further the objective. It’s important that the key results are measurable so that it’s possible to determine whether or not they were achieved in the time allotted.
For example, as a CEO, your objective might be “improve profit margins”, in which case some key results might be “increase market share to 30%,” “reduce shipping expense by 7%,” and “sell (unprofitable) Division X.” In a large organization, some of the key results may be delegated to others. Perhaps the VP of Corporate Development is tasked with selling Division X (which would become her objective) and might have as key results “prepare deal book,” “run auction process,” and “negotiate definitive agreement.”
OKRs don’t sound like magic, but they do sound like a useful formalism to me. I already keep a calendar (so that I know when I have appointments), maintain a to-do list (to remind me of things I need to get done), and use Quicken (so that I can understand my finances). If starting this new business is my primary objective, isn’t investing in a bit of process worthwhile?
Before I decide what business to start, I think that I need to decide what target market is most exciting to me. Once I’ve identified an interesting group of people, I bet I’ll find that they have some common problems, and, perhaps, I’ll be able to come up with a solution. Right now, I’m just wandering around, without enough knowledge of particular industries and people therein to get where I need to go. So, between today and March 31st, here’s my objective:
Objective: Decide who to serve.
As a first step, I think I ought to talk to people from the industries that interest me. I’ve had a few ideas about technology for restaurants, but I’ve never owned a restaurant. I’ve never even worked in a restaurant. So, I need someone to tell me what hard problems restaurants face, what technology they currently use, and where to learn more.
Key Result #1: Meet with at least 10 people, representing amongst them the following industries: education, restaurant, connected devices (Internet-of-things), and computer/internet security.
If you know someone you think I should talk to, let me know!
While I’m sure those discussions will be helpful, I also want to get to know more entrepreneurs. I’d like to get a sense of what’s hot and what’s not. I’d like to see how people are putting together business and technology building blocks in novel ways. I think I can be helpful, which will be satisfying and build relationships that will be valuable in the future. What’s the best way to see a lot of start-up businesses in short order and make friends with entrepreneurs?
Key Result #2: Join an angel investing club.
Finally, while I have a strong technical background, computer science is hardly static. I’m good with compilers, programming languages, and operating systems. I’ve written GUI applications for Windows and Linux. I can hand-code a vectorized FFT in assembly language. But, I’ve at best a passing familiarity with some of the latest, greatest technology. New technology gives us ways to solve problems that were previously intractable — and, as a boon to would-be entrepreneurs, creates new problems. I’ve aways leveraged my knowledge of the underlying technology when making business decisions. So:
Key Result #3: Write an application that runs on Amazon Web Services using a distributed no-SQL database.
It’s going to be a busy couple of months!
I have some experience with AWS and no-SQL (MongoDB specifically), plus I’ve played with Google App Engine a little. I’m not sure I can claim to be any kind of expert, but I’d be happy to share what I do know.
Thanks! Here’s a simple question: what programming language did you use? It looks like you can talk to AWS from Java, C#/.NET, Python, Ruby, and even via HTTPS POST. I’m vaguely inclined to use Ruby, just because I’ve never written code in Ruby before, but is there any particular reason to prefer one language over the other in the context of AWS? (I’m not asking about general trade-offs between the languages that would apply anywhere; I know about those. But, if the Java AWS APIs are more complete, or the Python AWS APIs are no longer maintained, or the Ruby AWS APIs have always been buggy, or whatever, that would be good to know.)
Step #1 — in which you start the servers — does not require you to “talk” to AWS via anything other than the clickity clickity web console. That’s plenty to spin up one or two servers. Only when you want to scale up do you need more than that. I’ve not done that myself, but I’ve seen James Wickett do it with Chef (which is Ruby, I think).
Once you have a blank server running you can log into it using SSH, just like we used to with CodeSourcery — it will have your key, and the username is ‘ubuntu’ (unless you chose RHEL or something).
Once on the server, step #2 — your application code — will only require use of the AWS API if you use S3, or one of the other AWS products. If you only use your own database (which will need “local” storage — EBS in AWS speak) then there’re no API calls needed.
Our cloud project used S3 to store the files uploaded from the client. I used the Python API to do that. I chose Python because we were doing our web stuff in Tornado, which means Python.
I wouldn’t know about the differences between the APIs in different languages. I think Amazon aim to be language independent so you can chose whichever framework you like. I think you can expect PHP, Tornado, and Ruby on Rails to be well supported, and that means a good spread of languages.
Pingback: Random Accounting | Keeping Busy
Pingback: What Do You Get When You Cross … ? | Keeping Busy