In this article I will try to explain my point of view on some problems you might face when your company is growing. Also, what exactly is growth and why there are some very wrong things about it.
Who am I to talk about it?
I’m a software engineer for over 7 years. I had an opportunity to work for very different companies: a couple of startups, outsourcing companies, huge world famous corporations with 20–50 years of history, and relatively young but large companies. I was working as a senior developer and a team lead in a web project with ~20 millions of views per month and I’d say this is an experience I’m proud of the most so far.
I believe I have a very diverse experience and enough data to compare different approaches how a company/team/project can be scaled. Also, I have a lot of friends who worked in a variety of other companies and told me stories about their experiences.
Of course, everything I write here is my own personal opinion; I’m not trying to convince you that I’m an expert or that everything herein is correct.
Also, take into account that I’m a software engineer and I tell about things from a tech perspective in software development. I don’t care about financial KPIs any company has or about marketing. I’m more interested in building efficient, technical solutions to challenging problems in a good work environment and make some money for living out of it.
To explain the main point of this article I have to start with something far from it. Let’s start with how a company may typically evolve — or rather, how I’ve seen companies typically evolve.
Let’s look at the startups first. What do you usually think of them?
I, personally, imagine a small group of people who are very passionate about their product, are highly motivated, and may work overnight without even noticing it. Most startups are extremely efficient because people involved in work truly believe in their product, they are proud of what they are doing, they are creators. Because there are so few of them and they usually know each other very well, there is almost no waste of time on communication, usually there is a dedicated person who takes care of all the non-technical stuff the startup has in order to not distract developers from work.
Everything changes when a startup raises investments. Now the startup has to show an insane growth to keep the investors’ trust, otherwise your business would be failed in their eyes. And of course, to get the investments you have to promise absolutely unrealistic plans. The worst part — every startup does that, and to be at least at the same level in the investors’ eyes you have to do the same or even more. Not because you actually can reach these goals or interested to get this results, it’s all to get the investor’s money. They call it “growth” which you have to show in every annual report.
What is growth?
That’s a very important question and what’s even more important that a lot of people would give you a different answer, these are the answers I hear from people most of the time:
- You start making more money (let’s say the startup is profitable)
- Your company gets larger hiring more people
- Your company is expanding to other markets
- Your product gets more features
Obviously, these are things your investors can see from an annual report and things which could be measured in numbers and could be shown as a progress at some events, covered by media, etc.
First of all, most people think that “You start making more money” is a result of the other 3 actions. In my opinion it’s only partially true.
People start a company, their product is getting popular (if it’s really good) and it’s bringing more and more money. But at the same time the people start scaling their company just to show their growth and those results they got from increasing popularity of their product seem like it happened because they’ve scaled, hired more people, implemented more features and expended to other markets. Sure, they look like a serious large company now but was it necessary, is everything okay with this approach?
I really doubt that.
Hiring more people
“We’re hiring” is almost everywhere. Companies always need new developers, they hire even if they don’t have open positions. They want to work faster.
I’m convinced that you should not hire more people if your only aim is to increase the speed of work output. To do that, you should look at how efficient your company/team is, identify your bottlenecks, and try to improve them first. Optimizing any part of a process that isn’t the bottleneck is, at best, equivalent to doing nothing at all.
What people think would happen, if they hired 1000 new developers:
- The company will be able to work on more things at the same time
- The company will have more resources to get the same amount of work done faster
- The new employees will bring their experience and expertise to their teams and make them more efficient
What usually happens when a company hires 1000 more developers:
- The current team members spend a lot of time educating new hires, they don’t have enough time for work. It becomes a problem especially when the documentation is very poor company-wise.
- New hires do more mistakes because they don’t know all the verbal agreements and “stuff everyone knows at the company”. Also, they produce more bugs in projects even though their code was reviewed. They simply don’t see the whole picture yet.
- New hires doubt all the decision made before them and spend a lot of time trying to find out “why” and convince that “it was wrong and we need to switch to X”.
- Most of new hires don’t share all the passion and values of the project, at least in the beginning while they have not contributed much, so they’re not that motivated as current team members. This attitude is very toxic, it’s spread like a virus to the current team members and I saw entire projects failing because of that.
- Just multiply everything above to the amount of new-hires and you’ll get a complete disaster.
When I hear that a company X is planning to hire 1500 developers in next 3 years, I think something like “wow, must be a very tough, demoralized, and chaotic environment for next 5 years at least” not “wow, this company is growing so fast that they have a lack of resources”. Because let’s be realistic, you’d need a huge amount of the current resources to integrate all these new-hires in your processes and make them productive at least at the same level as the current team members.
For example, there is a huge social network in Russia called VK.com which has its entire tech department consisting of less than 100 people (as far as I know) and they have a very successful history of users’ growth (currently more than 97 millions of active users per month) and company is around 10 years on the market (mostly in Russia) and very profitable — 3,8 billion rubles in 2016 (41% more than in 2015). I’d say the company is very fast at developing their very complex product and adding new features without increasing the number of developers that much. Also, I believe they have a pretty decent quality of the product.
On the other hand, I know some companies who are focused on their hiring so much that they don’t have enough time to fix even existing major problems in their product and they even plan more features to deliver in near feature. And when they failed to deliver what do you think they say? “We need more resources in order to work faster!” and they start hiring again.
Expending to other markets
First of all, why? Do you really need this? Will it be 100% good for you? Yeah, maybe numbers on paper show that it would be. But it’s so complicated, there are so many factors you can’t take into account before you actually are on the foreign market like:
- Culture differences — maybe your product is not that important for this audience, maybe they’re simply not ready for this yet
- Law differences — things you’re used to having simple in your country can be overcomplicated in another country. Also, censorship, corruption, media, etc
- Different financial scale — sometimes you can’t use the same prices in other countries, in case your company is from a poor country it’s an advantage but also the other way around. Who knows how many other factors you have to consider and how many surprises to expect. My point is — it’s too risky especially for a new company and you company can sink because of such decision.
Developing more features
It’s a very good marketing move and can bring more money for sure but it really depends how you think about it.
If it’s a feature that your customers have been asking for — yes probably you’d make them happier. If it’s a feature just because you think it’d bring your company more money you should consider to fix your current bugs first and when you don’t have any known bugs you can plan to work on this new feature.
Seriously, have you ever thought what impact your bugs have? I constantly hear this argument “it’s just ~100 users affected, so let’s postpone the fix till we have more resources”. But what if each of these users tell to 10 their friends that your product is crap and they should not use it? It’s already a thousand, what if these friends tell their friends?
For example, recently I needed to buy a spare part for my laptop. So, I managed to do that only on the 7th website in a row because all the previous 6 ones had bugs that didn’t allow me to finalize my purchase. Using developer tools I could see some API calls failing, some 404 errors and so on.
I always tell my friends about bugs I found and how irresponsible the developers of this product are. But at the same time, I’ve seen this attitude in some companies where I worked, unfortunately it’s a systematic problem, I could not fix it alone. Sure, some bug investigations can demotivate your developers, they’re creators, they want to build something new and shiny but that’s all about how you build your culture around fixing bugs, make it more social recognizable, tell everyone how hard it was to find and fix this bug and that who fixed it is a brilliant person. Build a reward program, be creative. I believe that quality is the attribute that makes your company to look serious, not how many features you have. And yet, I still hear things like “Business won’t benefit from this [clean up], the impact is small”.
Another example, I remember the time when everybody were crazy about Apple because they had the highest quality on the market, or at least they convinced everybody that they did. They became famous for “it just works”, not “check out this new feature”. Remember how sometimes they even said things like “we know better, [customers] don’t need this feature”? That attitude made them look serious and built their reputation, which is still bringing them a lot of money today.
Additionally, I believe there is a problem in communication with customers. I find bugs on a daily basis and can’t report them anywhere because usually the customer support have no idea what I’m talking about when I say “the API request on this page is failing with the error”, for some mysterious reason they can’t forward my message to the developers responsible for this. So, I’ve lost my hope and don’t report such bugs anymore because it’s a waste of my time. I just never return to those websites. The support system does not usually work with experienced users who work as developers.
Does your company need growth?
Probably. But maybe not that fast. Maybe you promised too much. Maybe you’re driving a racing car towards the wall and you are not ready to take the next turn. Also, are you sure your wheels won’t fall off during that turn?
From my perspective, this culture of growth at all costs is destroying the world. There is nothing wrong with turning the same profit for years. Why does it have to be 10,000% higher year after year? Why can’t we think less about money and fix these bugs we have? Why can’t we be responsible and respect every single one of our customers? Why can’t we first improve our productivity to work faster, instead of hiring 1000 more developers?
If you consider growth, look around, look at your company, talk to every single person and be sure that your current state is nearly perfect, there is nothing more you can do and you’re ready to integrate another developer in your processes, develop another feature or expand to another market. Otherwise take a break and fix your company.
Thanks to Jonathan Pollack for editing and helping with a better phrasing.
This is another write up of my recent talk where I share what tools and techniques I use to protect myself from being hacked.
This is a write up of my recent (if can call October 2018 recent) talk that I gave for my colleagues. It's about typical attack vectors used against web-apps and how to decrease the attack surface of the apps.
Recently I faced that most people don’t really understand what corporations like Google or Facebook are doing and why their services are free of charge but they have enormous profit at the same time.