From programming to business: Lesson 0

When you ask people for tips in their area of expertise, they often gloss over the most basic things they do because, you know, it's obvious. They live and breathe this stuff, so it doesn't occur to them to call it out.

I've been a programmer since I was six, and some of these basics were the hardest to learn when I made the transition to being an entrepreneur.

Here are six of the most basic things I've learned to do differently in five years of entrepreneurship and two years of working on my business full-time.

1) Causality is a bitch

As engineers, the one thing we're used to is clear cause and effect relationships. We know that given enough time and effort, you can figure out exactly why a certain bug occurred or a piece of code does what it does.

In business, it is very rare that you can figure out the exact sequence of events that led to a lead being generated, or a customer buying a licence. You'll have a general idea, but that's about it.

Usually, the best you can hope for is statistical correlation between two events. This pre-supposes that you have a statistically significant volume of information to figure this out in the first place, which is not always true.

This blog post is an excellent example of my having made peace with fuzzy cause-effect relationships. Do I think this specific blog post will bring in more consulting work for C42, or significantly increase traffic to our products RubyMonk and Bevy? Probably not. But I do know from experience that blogging regularly has a net positive effect on lead generation, with occasional spikes that convert to game changing engagements for us.

You'll need to:
  • Accept that the real world doesn't aggressively manage complexity through abstraction. The real world is much harder to debug than a codebase.
  • Gather information when available and analyse it for correlations.
  • Accept that in the absence of hard data, you'll be heavily dependent on your intuition to make decisions.

2) Business is about people

Businesses exist to create value for someone. That someone is your customer.

However, we tend to focus on the customer to the exclusion of everyone else that contributes to the value creation process. Remember that guy you interviewed five years ago at your previous company? He enjoyed the experience and follows you on twitter. Last month, he sent a prospective customer your way.

There's no way you could have predicted this particular sequence of events up front.

Businesses often succeed because of a serendipitous series of connections between people. The acquaintance at a meetup that suggests a feature, the interviewee that thought you were unusually nice that recommended you to a VC, the colleague that actually wrote the code that makes your product go... all of these people contribute to your success in unpredictable ways. Not all of them have formal business relationships with you -  in fact most won't.

In other words - business networking, marketing and sales are very important. If, like me, you're an introvert and don't like meeting strangers, buckle down and get over it. If you're lucky, you'll eventually be able to hire someone to do some of it for you.

Incidentally, it's easy to go overboard with the whole networking thing. You'll learn to improve your assessment of people over time, and then start avoiding the leeches. No quick solution here, though.

You'll need to:
  • Be nice.
  • Meet more people.
  • Pay more attention to how happy your colleagues are working at your company.
  • Accept that a tiny percentage of the people you interact with today are going to help you achieve very important things in the future in ways you can't predict.
  • Understand reciprocity - the more value you create for people around you (including your colleagues), the more likely you are to have them create value for you in return.

3) Don't ignore sales and marketing

Sales and marketing aren't just customer facing activities. Every interaction you have with anyone that is business related is either a sales opportunity or a marketing opportunity. 

You're always working on creating a brand for your company, your products and yourself. Understand exactly what you're selling, to whom and pay attention to how they find out about your products and services. We did something similar for C42's consulting arm by figuring out how we would look for outsourced Rails consultants. We then used that information to figure out how to make ourselves more accessible to prospective clients.

You'll need to:
  • Study the basics of both subjects. Understand sales channels, market segmentation, cross-selling and up-selling.
  • Recognise that many seemingly internal activities like interviews are actually sales (you're selling the idea of working at your company to the candidate and everyone they speak to).
  • Understand that promoting your company is an ongoing activity that every employee is a part of.

4) Make yourself accountable

When you go from being a student or employee to a business owner, it's very easy to let it go to your head. This is especially true for solo founders and businesses that aren't at a point where they have a board to hold the founders accountable for performance.

Ensure that you're making yourself accountable to someone - having co-founders is a good way to do this. Maintaining a system of checks and balances is very important.

You'll need to:
  • Identify mature, experienced people who can give you candid feedback. It's even better if they're your colleagues. Favour a diverse group with people who have different priorities.
  • Keep evaluating your own performance. Constantly ask yourself if you'd hire someone who performed like you to replace yourself. You may be surprised at how often the answer is "No."

5) Get a To-do list

The thing with writing code is that you're most productive when you're in the zone. You go in for several hours, churn out code and then come out of it. Every interruption is to be avoided.

Here's the thing with a business: Your day is one long series of interruptions. Get used to it. Your colleagues and customers have a right to your time, so make sure you give it to them.

Your best friend in this situation is a ToDo list. Figure out what tools work best for you, but remember that if you don't track what you need to get done, it won't.

FWIW, I use a combination of email (basically 0 inbox), Trello and iCal (integrated with Google Calendar) to keep track of things.

You'll need to:
  • Get organized, set up some kind of system. Use tools to facilitate the system.
  • Set up your calendar, maintain it and share it with your colleagues.

6) You can't be good at everything

You've already spent 10,000 hours learning to be a good engineer. Now you have to spend another 10,000 hours learning to be good at business. What's more, business consists of many interrelated areas that you need to be aware of, and you can't be an expert on all of them.

You'll need to:
  • Start studying. Dip into subjects like accounting, economics, marketing, sales and finance.
  • Accept that you're not going to be an expert on any of these. You don't have the time.
  • Learn to hire the right people to handle areas of expertise that you need for your business. Then support them while do their job. Remember, they know it better than you do, so you need to trust them to get things done.


V. Narayan Raman said...

Nice post. Agree with you on most points.

harry said...

its good and though i liked it..but being a programmer learning entrepreneurship, can't simply appreciate things so easily..

It could have been a little more then this as lesson 0..

Anonymous said...

Very nice article

Akshay said...

nice one; very well said

Fiori dei liberi said...

Worth read.
Waiting for the following learning lessons. The best point: the jack of all trades and the time invested in learning engineering.

Fiori dei liberi said...
This comment has been removed by the author.
Fiori dei liberi said...
This comment has been removed by the author.
Fiori dei liberi said...
This comment has been removed by the author.
Saager Mhatre said...

Now waiting for lesson 1 ;)

Anonymous said...

We wrote a post on RubyMonk here -

RubyMonk’s Title: Should Be ‘Ruby Tutorial’, Not ‘Ruby Tutorials’

Anonymous said...

Adding it as a link -

We wrote a post on RubyMonk here -

RubyMonk’s Title: Should Be ‘Ruby Tutorial’, Not ‘Ruby Tutorials’

Anonymous said...

This article is very nicely thought through, and I really like it.

However, I strongly disagree with a few of the points. All of the data could be modeled... if you can't figure out how to do that, maybe you're not as good an engineer as you think.

Jonathan said...

I found this article really interesting as a coder who is currently in the transition of taking on more of a "business" role.

Anonymous said...

Right you are on point one; even seo services in new york tend to ignore the causality of the whole process.