We are ten years old this month. We started out on June morning in 2004 as a “company” where we had no rules, no goals and no clear plan of what we would do to sustain ourselves – we only knew that we just have to make it a place where people are happy. Over the decade we have learnt many lessons on what to do and what not to do in the business of software. And today I want to write about the lessons we value the most. It would have been great if someone gave me this list ten years ago, but I also wonder if I would have believed it enough to follow it!
Creating a company based on a single vision works
For us it was the vision of: “work should be place of happiness”. It sounds nice, it sounds right but is it good enough to carry a company to profit and permanence? I honestly feel it is – in these ten years a lot of things have happened, many business decisions had to be made and many a crisis had to be overcome, but it was always this single vision that guided us in all our thoughts. Having a single vision meant we could easily decide among multiple options that we had in front of us. It gave us the road to travel and the strength to walk that road fast.
I am not sure if our particular vision is important, it was for us and it worked great. But I think any overarching simple vision that you truly believe in, that everyone in the company can understand and embrace would have worked. Having a simple vision is important. Without it (or with too many of them) I feel we would have been lost.
Software business is all about the right people
Selecting the team members in any company is important. But I feel in the business of software this one thing can make it or break it. You could have the lousiest idea about a software product in the world, but if you have the right people they change it into something amazing – and obviously the other way round. I think in no other modern world business is the product of the business is so malleable, so sensitive to the craftsmanship of the people building it.
So, hiring decisions are the most important decisions in a software company. We learnt to be patient, to be more exact and to be more careful when hiring new team members. If this meant that we lost important business we learnt to live with it – that’s how it is in this world.
Think only in the long term
All our decisions that have been based on short term thinking have failed or have haunted us. Somehow this very ephemeral world of software requires a very non-ephemeral structure to stand on. So we learnt that buying this server “just” for this six month project doesn't mean we can compromise on the quality. We learnt that bending the rules “just” this once to meet this deadline backfires pretty soon. There is nothing short term in software business – it’s hard to believe that this is true given how software projects work.
If you are not hiring a great C++ guy now since you don’t have any projects right now, it’s probably a big mistake. If you are saving a few dollars on a server you’ll probably regret it next month. The list is really long and scary – but if you do want to be successful you just have to believe that you will be around for a very long time.
Only thing that works is an environment of trust
Software is so inherently a collaborative effort that only if people feel safe in trusting others that the whole thing works. Otherwise you spend all your energy trying to force external systems and rules to make that collaboration happen – and it keeps failing. Only an environment of trust can achieve software products that are on time, relatively bug free and usable.
An environment of trust builds up primarily from the actions and policies of the company. It builds up from the actions that people in positions of power take and how those actions are perceived. Any system or rule that you bring that has an impact on that perception has to be considered carefully before it is put in place. So if you thought that nifty time tracking tool you just bought will turn the company around, think again, it might be the first nail in the coffin.
Never, ever be “set in stone”
Software is always a moving thing. And no wonder that a software company should also be like that. What works today, what worked so well last time, has every chance of failing to tomorrow. You will always have to adapt your rules, policies and business practices. If you are doing great as a business now, beware tomorrow the technology might change or the customer’s need for a certain feature might evaporate. That’s how it is in this game. And the only way is to be able to adapt.