Most people in the software industry will work at several companies throughout their careers. In this chapter I’ll focus on software consulting companies specifically, but before we get to that let’s recap on the types of companies that could be involved in software development.
Many software professionals work in companies that are not strictly software companies, but rather companies that make their money through some other ways while software only serves a means to an end. Many of these companies can be found in the financial services sector such as banks, investment and insurance companies. Other industries that hire software professionals include warehousing, logistics, manufacturing, retail, tourism, aviation and many others. As a software professional working for one of these companies you’re essentially part a cost centre i.e. your work doesn’t directly generate money for the company. As a result, the software professionals in these companies don’t really worry too much about bringing in money.
On the other hand you will have companies that eat, sleep and breathe software for a living because that is their only way of generating an income. As mentioned in previous chapters these types of software companies can be divided into product development and software consulting. Product development focuses on developing products that can be resold as out-of-the-box products to many customers across the globe, while consulting companies offer custom development for their clients. Product companies invest a lot of money, time and effort into R&D (Research & Development) in the hope that they will sell those products at a fixed price, while consulting companies sell their time and expertise for an hourly rate i.e. they’re mostly selling services as opposed to products.
- How a software consulting company functions: having distinguished between the different types of companies that employ software professionals let us look specifically at software consulting companies. We’ll first start with the problems in these types of companies. What I have seen throughout my own experience and by listening to other people’s experiences is that most software consulting companies do not last very long. Most of them do not even make it to the five year mark. The reason for it is quite simple in that they do not understand the paradigm they operate in. Software consulting companies are like hunters and gatherers i.e. they hunt and gather for a new project, they eat from the project, they hunt and gather again and this cycle continues to eternity. The moment they stop hunting and gathering is the moment the money dries up because they don’t have any sort of automation in place to ensure a passive income. In keeping with this analogy it essentially means that they haven’t matured to the Industrial Age i.e. having machines that make money while the people sleep. Unfortunately what many of these consulting companies don’t realise is that they are vulnerable to external factors that are outside of their control, just like hunters and gatherers that are left exposed to the effects of droughts and seasonal changes. During winter or a draught, there are no more fruits and vegetables to gather and the animals to be hunted are inaccessible or difficult to find.
- What keeps a software consulting company afloat: the only way for the hunters and gatherers to survive during winters and droughts is for them apply prudent strategies, which include:
- Savings: an inexperienced manager of a software consulting company will be tempted to go on a spending spree after acquiring a big project or an investment from an investor. A prudent manager on the other hand will know that the good times are temporary and the work will dry up at some point. He will therefore save as much money as possible during the rainy reason to ensure there’s enough to pay salaries during the droughts.
- Lean teams: most software consulting companies that I have seen tend to hire people based on project workloads. The bigger the project the more developers they hire. This strategy may serve well during the project but after a few months or a year the project gets completed and the work runs out, at which point they start looking for another big project. Those big projects are typically difficult to find and therefore failing to find the next project the company starts retrenching the staff due to a lack of work that can be given to them. A prudent manager on the other hand will rather keep the team as small as possible to avoid such retrenchments.
- Hiring jack of all trades: based on common business practices an inexperienced manager of a consulting company will typically try to specialise their work force. If the big project that has been acquired happens to be a web development project the manager will go on to hire developers that specialise in only web development. In most consulting businesses this can often be a mistake because the next project could be a mobile app requiring a different set of skills. With the current staff not being to handle the new project, the manager will once again be forced into retrenching the developers if he cannot find more web development work for them to do. Some might argue that a consulting company should learn to pick their battles thereby specialising in only one type of solution e.g. only do web development or only mobile development. However due to the fact that most consulting companies live from hand to mouth they won’t always have the luxury of being picky with the projects they take on i.e. they normally take what they can get in order to pay the bills. It’s for this reason that in an effort to mitigate risks a prudent manager will tend to hire developers that are jack of all trades. This enables them to reallocate developers to projects as business needs change. In other words, prudent software consulting companies tend to hire developers that are flexible in order to compensate for an inflexible budget.
- Typical types of people you’ll find running software consulting companies: as you can see it requires a special kind of skillset and aptitude to run a successful software consulting company. Here are the most typical kinds of people I’ve seen running these companies.
- Technical people: most software consulting companies normally start off with a single talented developer who decides to go at it on his own by becoming an independent contractor. He then lands a huge project and proceeds to hire many developers to help with the work load. As mentioned above, this often ends in disaster for the company since the work will eventually dry up. Although software companies perform technical work, the problem with technical people is that they often only focus on the technical aspects. They typically have great aspirations to build amazing software products, learn all these new technologies and do all the cool things. However, what they fail to understand is that keeping a consulting company afloat is not about the amazing software they’re developing but rather the hours that they’re billing to the customers i.e. the money they’re bringing in. Going back to the hunter and gatherer analogy, the technical people are like the chefs in the kitchen preparing the amazing food, while the business owners are the ones hunting and gathering for food to be brought into the kitchen. It doesn’t matter how good of a chef you are if you cannot hunt and gather for more food to be brought in. It’s for this reason that purely technical people will not be able to run successful software consulting companies. The only way for technical people to start their own successful company is by coming up with a recipe or dish that everybody wants and requires very little work with each new sale i.e. to develop a product that scales.
- Sales people: although sales people are very much required in terms of hunting and gathering, they often don’t make for good managers of software consulting companies. You’ll often find sales people that have found one or more great opportunities for developing custom software i.e. they know someone who knows someone that is looking for a software solution. They then proceed to find an investor, take a loan from the bank, or even cash out their life savings to start a software consulting business by hiring a few developers. The problem with sales people is that they are typically big on vision but short on details i.e. they know what they want but they typically have no idea on what it takes to get it. Because of this they tend to make a million and one mistakes while running a software company. These could include the mismanagement of funds by going on a spending spree, hiring and promoting the wrong developers, overpromising and underdelivering to customers, failing to understand the technical details of the software solutions as well as failing to understand the customers’ business requirements. Most importantly they fail to understand the hunter and gatherer paradigm and therefore fail at managing cash flow.
- Accountants: it may seem counter intuitive, but in my experience accountants are the best kinds of people to manage and run a software consulting company. There are a couple of reasons for this:
- Managing Cash Flow: based on the hunter and gatherer analogy it goes without saying that managing cash flow is crucial to surviving in a business that goes through regular droughts and therefore tends to live from hand to mouth. One of the main responsibilities of an accountant is to manage cash flow, and for many accountants this is something that has been ingrained in their DNA.
- Practical: accountants tend to be highly practical people that don’t concern themselves too much with airy-fairy ideas, idealistic dreams and philosophical debates. They tend to focus on the task at hand and dealing with reality as it presents itself. This simplistic approach to life makes accountants see things in black and white or in their case as debits and credits (money in vs money out) i.e. we’re either making money or we’re losing money. Although it can be argued as to whether that way of thinking is right or wrong in terms of the big picture, for a hunter gatherer kind of business that survives from hand to mouth, this kind of approach is perfect. Some may argue that accountants are short sighted in that they only care about what happens in this month/quarter without worrying too much about long term goals. However, the truth is that in a software consulting business long term goals and vision are in fact mostly irrelevant i.e. it’s a hunter and gatherer sort of business that has relatively short cycles of hunting and gathering (i.e. projects) which repeat themselves in perpetuity.
To be clear, I’m not saying anything about whether the business model of a software consulting business is right or wrong. That is the topic of another discussion. All I’m saying is that given the business model of a typical consulting business, these are some of the things required to keep such a company afloat.