It’s the dream of every budding startup to hit its first million users, but as a company experiences such growth, it also faces new questions about preserving its product on an ongoing basis. That’s one of the dilemmas faced by Buffer, an app designed to space out users’ social media updates throughout the day. In a recent interview with Lifehacker, founder Joel Gascoigne explained the challenge of striking the right balance between developing new features and managing existing ones now that his product has reached the million-user threshold.
“Too many new features and the product will deteriorate over time,” Gascoigne said, detailing the challenge that faces many apps as they reach maturity. “Too much work on existing features and growth is likely to slow. We try to strike a balance.”
He explained that Buffer tries to balance its attention to the two sides at about a 50-50 level. Among its key maintenance initiatives is having engineers spend time on customer support, which helps them understand customer concerns and empathize with the difficulties created by any bugs in the service. Additionally, the company’s developers devote 10 percent of their time to code refactoring, cleaning up existing code so it remains easy to work with over time.
Finding a balance
This refactoring step is essential, as it addresses several of the key factors outlined by Capers Jones that tend to undermine productivity among developer teams. In a recent column appearing on DZone, contributor and software CTO Jim Bird pointed to Jones’s chart of worst practices for coding. High complexity code that is hard to understand and change has an estimated negative 30 percent effect on productivity, while update problems in code with embedded data and hard-coded variables lead to a 45 percent drop in productivity. Broadly, not identifying and cleaning up error-prone code reduces productivity by half, while a lack of tools for source code navigation and inefficient change control methods lead to 28 percent and 27 percent drops in productivity, respectively.
“Many of these mistakes are due to not recognizing and not dealing with basic code quality and technical debt issues, figuring out what code is causing you the most trouble and cleaning it up,” Bird wrote. He later added, “These simple, stupid mistakes add up over time to huge costs, when you consider that maintenance makes up between 40 percent and 80 percent of total software costs. Like the classic mistakes in new development, mistakes in maintenance are obvious and fixable.”
Determining how much time to spend on maintenance versus new feature development is an ongoing debate, and the right answer will likely vary based on the company, as well as factors like the maturity of the product, the size of its user base and overarching business goals. However, using tools such as code refactoring software is essential regardless of the ratio, as maintaining clean code is key to longevity and handling change down the line. As a new app takes off, its focus will necessarily have to evolve to include more maintenance of existing features. Ongoing source code analysis and refactoring are key for ensuring the needs of the growing user base continue to be addressed in the most elegant way possible.