Some lessons from 10 years in the business of IT consulting

These points are unsorted, random and subjective. Quite a few are negative – not because I want to focus on the negative, but because we learn from our mistakes (or the mistakes of others). 

If your sales are slow, it might be that you are bad at sales, or there is a downturn in the industry. Though most likely nobody needs what you are offering.

The more pushback you get on price, the more it is a sign that you are in the wrong business. A great business is one where conversations go like this:

Client: “How much will it cost?”

Us: “Here’s a number that’s pretty high, because you’ll probably want to negotiate a rebate—”

Client: “Cool, when do we start?”

If they ask you to fill out hundreds of questions, submit a detailed calculation, and submit solutions before starting, they either don’t know what they are doing, or do not really value it. Either way, you don’t want their business, and you wont get it. 

Firing someone can be great for morale. If it is someone where everybody they have worked with is annoyed with their incompetence. 

Any truly major decision or change takes about 3 years to have its full effect. Your most important partner got bought, and is now a completely different company? Projects are managed badly, and the employees need to compensate with unpaid overtime? Management targets are set unreachably high, and bonuses never paid out? A new line of business, with a brand-new team? A new CEO? Anything that happens in the first year after that change is not yet a good indicator of how that will work out. 

Profits are a lagging indicator. Nothing ruins a company as surely as incentivising management only on this year’s profit. It is easy to increase profits, all you have to do is cut investments. 

You need a healthy ratio between junior and senior people. Too many seniors, and junior people never get to stretch their wings. Not enough seniors means there is nobody to teach the juniors. 

If you tightly control your people so they only spend time on things that have a measurable impact on the bottom line, you avoid a lot of waste and slacking off. You also get rid of serendipity, research, improvements to internal tooling, cross-pollination between departments, experiments and all the other things smart, driven people will do when nobody is watching.

If you invest in a new line of business when it’s uncertain, it might not pan out, and be a waste of money. If you invest in a new line of business only when it has become a sure thing, it will already be crowded with competitors who invested before you. Also: an uncertain partner who needs you will be willing to support you, and remember you for taking a chance on them. An established partner has their pick of companies, and you have to be the one to beg them to take you on. Also: when a market is new, nobody has experience or references, so that’s OK. When a market is established, you face the chicken-and-egg problem of gaining experience when you have none. 

For the really important tasks, you want to send your best and most experienced people. But if you only ever hand big important tasks to the most experienced people, the junior ones will have no chance to become experienced. Sometimes you have to ask people to step into footsteps that are a size too large for them, for them to grow into those. But only one size, not two. And you have to accept that sometimes they will fail. But if you don’t, you will have no experienced people, and be forced to have people step into tasks that are two sizes too large for them. 

When there is a conflict between what an employee wants, and what the company needs, do a cost-benefit analysis. For example, paying for a  training that is not directly relevant to the company may cost 2000 bucks, but that’s a cheap way to buy motivation. 

You know how external rewards can kill intrinsic motivation? That goes the other way round, too. The more you force people to go the extra mile (without extra reward), the less willing they will be to go the extra mile when nobody is watching. 

If you have to fire people during their trial period frequently, you either suck at recruiting, or you suck at onboarding. If you never have to fire people during their trial period, you are too conservative and too picky when hiring – give some uncertain, wildcard candidates a chance. 

There is no such thing as a perfect candidate – some lack experience, some come from a different domain or tech stack, some seem a little weird, some are demanding,… Figure out what flaws you can accept. And judge on whether you see potential for improvement. 

The most loyal employees are the ones to whom you showed loyalty first – the highschool dropout who you took on as first an intern, and then as an apprentice. The trainee who had almost no programming experience, but a burning desire to learn. The star performer who burnt out, and needed months to get back to being productive. Those will stick with you through tough times. 

It is very easy to increase profitability quickly – all you have to do is reduce investments, cut training, and mandate unpaid overtime. A bad manager will commend you for it. A good manager will realize that in the long run this is disastrous. 

When a project is well and truly fucked, and a hopeless disaster, the most important thing to get back on track is to give the impression that you know what the problems are, you have steps to tackle them, and you have a timeline and priorities. It can be an incomplete plan with imperfect solutions and an uncomfortably long timeframe – but knowing how bad it is is much, much better than fearing the worst. 

Fast, cheap, good. Time/Money, Quality or Scope. One of them has to give if the other two don’t work out. If a client has unrealistic expectations and is at the same time insisting on being inflexible on all three dimensions, no amount of project management can make him happy. 

It is much easier to edit a mediocre solution, than to sit in front of a blank slate. The same goes for a client. Never ask “what do you want us to do here?”. Always ask “what result do you want to achieve with this”, and then “I would suggest the following – does that work for you?”

You are judged on results, not effort. Unfortunately that also goes for projects: If you take on an easy project that basically runs by itself, and even a clueless intern could not mess up, and barely make it work, you will be praised for your success. If you take on an impossible doomed project, and by heroic effort almost pull it off, you will be chastised for your failure. A good manager will reward heroes. 

How many people leave is less important than why they leave. If they want to move to another city, or change industry, or tech, or role, fine. If they leave, and in their next job they do the same work with the same tools and for the same clients, just at a different company – they were not attracted somewhere else, you drove them away. If they pull other people with them, it means they really like it a lot better elsewhere. 

Organizational design matters. Somebody whose work is measured in the same P&L sheet will be more helpful to you than the same person if they are not. 

You do not need the highest pay, the fanciest office or the most comfortable job, if you can offer interesting work, great teams, growth and appreciation. How do you convince a candidate to come work for you, after he has told you that he has another offer that pays 20% more? THAT is your employer brand. 

Never save on equipment. Never save on training. 

Nothing makes your boss happier than putting in extra effort without him having to ask for it. Nothing makes employees happier than treating them well without them having to ask for it. 

Do not try to make your team happy. Tell them what you need them to do. Tell them why it matters. Give them what they need to do it. Reward Successes. Happiness follows. 

If you say no to additional work because your plate is full, you make people unhappy now, but they will respect you, and you get to make the decision of what to drop. If you say yes to additional work when your plate is full, you will make people unhappy later when you either drop the ball or half-ass it, they will resent you for being unreliable, and your stress level makes the decision of what to drop for you. 

Experiments that fail are OK. Experiments that fizzle out are a failure. Have a good balance between cash cows and experiments. 

Blog at

%d bloggers like this: