Starting a tech business is exciting, but growing up can be painful.
Drawing on Planday’s journey from its creation in a Danish bar to its rapid expansion and recent historic VC investment, our Chief Product and Technology Officer, Chris Micklethwaite explains how to navigate the growth of a software business and where to expect challenges, but also find opportunities.
If you’re at the point of scaling, you’re obviously doing something right. But the approach you used when starting up won’t necessarily help you when scaling up.
One of the biggest challenges for a tech company is not actually the tech — it’s more about how you grow and organise your tech teams through the different stages of company growth. Software doesn’t write itself — you need smart people working together in the right way, communicating effectively, to deliver a brilliant software product experience.
A start-up with perhaps a dozen or so people might have a handful of them writing code, probably including the founder CTO — as happened in the first few years at Planday. It’s late hours, it’s long hours. But it’s exciting, it’s diverse and there’s lots to do, so that’s why in this situation people usually perform multiple roles in a small, tight, team.
But then as you start to scale up — as you get to more than perhaps 70 people with perhaps half in engineering — people will start to take on more specialised, dedicated roles. You will be hiring new people to do specific things. You will also become more aware of how efficiently teams are functioning and how individuals are communicating with each other and sharing knowledge. At this point you will have to put processes in place: frameworks and ways of working that people in a start-up environment are probably not used to.
Lines of communication and team efficiency
In a start-up you have a small number of people, so communication is easy. Consider the number of ‘lines of communication’ in a team — you can work this out as n(n-1) / 2.
So if you have two people, that’s one line of communication. If you have five people, it’s 5 x 4 / 2 = 10. But if you have 70 people, the possible lines of communication are more than 2,400 — it gets crazy.
It’s important to remember that software development is a highly creative process, and success depends on the skills and knowledge of people in teams. Knowledge management, in turn, depends on effective collaboration and communication.
To compensate for the ‘lines of communication problem’, collaboration needs to happen between groups of people – teams – which means putting in place some organisational structures, and being more specific about individual roles and responsibilities.
The right people in the right place
Over the years I have led teams working across multiple countries, with engineering in-house, outsourced, off-shore, near-shore, on-shore, and every combination in between.
As a result, I am a big advocate of co-location — everyone sitting and working together. You get the most value, the highest quality, and productivity from a team with the right skills and experience, when they are near each other.
They can communicate better, it’s easier to have formal and informal meetings and ceremonies like daily stand-ups, and ultimately they work together and resolve issues much, much quicker.
It’s also a simple human thing, to bond and build a relationship with someone, in person. Teams working together will also more easily develop an identity and a shared sense of purpose.
Clarity and direction
As a company grows, maintaining a common sense of purpose is particularly important for creative work like software development. When teams have context — knowing why something is important, being in touch with the value it creates or problem it solves — it gives a mental framework within which to work, and is a source of motivation for most.
In Planday’s Copenhagen team, there is also a sense of ‘work hard and play hard’, and we actively support social activities outside work. As a result, everyone gets to know each other on a personal level, and are more likely to support each other during work hours.
How does this help scaling?
If you have teams operating in a similar way, with a clear focus (a ‘domain’ of knowledge and technology), it will become easier to solve the ‘lines of communication problem’. Teams begin to communicate and manage dependencies between them, not individuals.
To have small teams that work well together, with focus, clarity and purpose — and all the skills needed to develop and deliver software — also makes it possible to work in short cycles, putting things live, trying developments out with users, experimenting, learning and improving all the time.
Three things to keep in mind as your business grows
It’s challenging to grow any business, but here are some things to remember, that might help.
1. What got you here, won’t get you there
As your company grows, you’ll need to take a hard look at how it’s functioning as well as re-assessing the skill levels necessary to develop future tech or to meet future challenges. The approach and team during the start-up phase will probably not be suitable during scale-up.
Be brave, and be prepared to make sweeping changes from time to time.
2. Things usually need to get worse, so they can get better
For start-ups transitioning to a much larger, fast-growing company, setbacks are inevitable — in people, technology, environment, finances. Whenever there’s a setback at Planday, the team doesn’t beat itself up. We make sure we learn what went wrong and why, and use that learning to improve for the next time.
3. Everything has a cycle, and feedback loops are critical
Most high-performing software businesses are constantly refreshing and improving the underlying technology. Those that don’t may need to go through bigger refreshes of platforms and technologies, perhaps changing the approach and re-engineering core parts of the system, and this seems to have a cycle of three to five years.
So it’s sensible to expect constant investment in the underlying tech, to continuously re-engineer towards a longer term technology strategy — and constantly refresh the product and services.
Get rid of anything that’s not working or not providing value because it’s simply another overhead to maintain. To inform this work, make sure there are good feedback loops in place to measure usage, taking into account customer/user feedback, to drive the development in the right direction.