Why Self-Organization Is the Future of Software Development
Entrepreneur's New Year’s Guide
The early years of any successful startup are marked by rapid, constant change. Clients come and go; business models are adopted and abandoned; and an influx of new faces almost certainly necessitates bigger and better office space.
But even though every young business needs the agility to pivot and grow as new challenges arise, many of us still continue to organize our engineering teams under the same tired, hierarchical structures employed by the plodding industry giants we are trying to disrupt.
Unsure what that refers to? Consider that, for managers, the old way of doing software development dictated that they give directions to their business analysts, who would passed those requirements down to the engineers under their supervision.
By forcing developers to "color inside the lines" this way, this structure robbed (still does) developers of the opportunity to dream up the innovative solutions that are the very lifeblood of a thriving startup. It also made (again, still does) for an unpleasant work experience, guaranteeing that any top-tier, creative engineers hired would very quickly look for somewhere else to work.
What to do? At our app development company, we've turned to self-organization: a new way of doing things that empowers our engineers to make their own decisions and move at speeds they would quite frankly never reach were they being restrained by a top-down corporate hierarchy. With self-organization, we’ve been able to scale our India-based development team from five engineers to more than 250. And we've done that in just four years.
For the technology industry to continue breaking new ground and developing world-changing products, we all need to abandon the red tape that stifles innovation, and instead embrace an organizational model that allows engineers to realize their true potential. Here are three facets to consider when changing your company culture to the self-organization model.
1. Flexibility + support = speed
The key to a successful, self-organized engineering team is remembering that “self-organization” doesn’t mean your employees are on their own.
At Appster, we sort our developers into 25-person teams that also house all the other personnel needed to complete a project, including salespeople, business analysts and tech support. These teams, which we call “tribes,” allow engineers to work collaboratively with other employees independent of management oversight. This makes our developers more efficient, not only because they don’t have to waste time waiting for directions, but because working with a set group of coworkers gives them a feel for everyone’s strengths and weaknesses, allowing them to delegate responsibilities accordingly.
If the tribe gives self-organized engineers the flexibility to move quickly, two more groups -- “villages” and “communities” -- offer engineers the support necessary to ensure they are moving in the right direction.
A "village" is a group of two or three tribes overseen by a scrum master; this structure allows employees to share their learnings across teams and to seek out help when they hit a problem they haven’t previously dealt with. For instance, a tribe working on a healthcare app might reach out to another tribe with a track record of success in that area.
A “community,” meanwhile, organizes engineers based on their specific programming skills -- such as iOS or PHP development -- giving less experienced coders a chance to lean on their more knowledgeable coworkers for technical advice.
By combining flexibility and support, this agile software-development structure gives engineers everything they need to consistently deliver awesome work and fast turnarounds.
2. Sprinting with caution
One of the biggest challenges self-organizing companies face is finding a way to balance the freedom that engineers receive to make their own decisions with a process that prevents them from wasting time when their instincts lead them astray.
Indeed, it takes longer to fix the mistakes you make when you’re moving too quickly than it does to avoid those errors in the first place by taking the necessary precautions. That’s why it’s so crucial for every self-organized engineering team to implement a robust planning process that gives developers the runway to work quickly without hitting a snag.
Before we write a line of code at Appster, we undergo a two-to-three-week process called “sprint zero.” During this phase, our technical architects, graphic designers, product owners and senior developers take the time to dig into a project and come to a deep understanding of what exactly needs to be done to complete it. This means figuring out what infrastructure they’ll need to build, which design patents they will employ and what the finished project should look like from a high-level perspective.
Along the way, we make sure that we’re on the right path by using a practice called a “HIPA sprint,” which takes place at different stages of the development process. HIPA (Hardening Innovation Performance and Architecture) sprints are basically a chance for teams to pause the project and check that they’ve done everything correctly up to that point.
For instance, you can do code reviews to make sure you’re following your design patents, take the time to fix any bugs that have popped up and use what you’ve learned from the beginning of the project to adjust your plans for finishing it.
At the end of the day, the flexibility that startups can provide through a flat organizational structure won’t be worth much of anything to their engineers if they haven’t first thought ahead to give those developers room to run.
3. A change worth making
Creating an agile, self-organizing engineering team isn’t easy. Many developers are accustomed to a boss who can hold their hand at every step of the way, while the vast majority of startup founders obsess about their companies to the point that they're frightened to turn over even a little bit of control to folks lower down the totem pole.
However, given the increasingly competitive nature of software development, the creative problem-solving that empowered engineering teams provide will likely prove the difference between the winners and the losers in your and our respective spaces. Not only that, but self-organized engineering teams have a major advantage when it comes to attracting superstar employees who want to control their own destiny.
All things considered, self-organization is the fastest way to build the engineering team you’ve always wanted -- a team that's fast, capable, and absolutely thrilled to be working for you.
After all, it’s a lot easier to scale your development team when nobody ever wants to leave.