If you’ve spent time at a start-up, you know life moves pretty fast and technology moves even faster. Over the last several years, my experience with Ruby on Rails® has provided me insight not only into scaling a team with this popular web application framework, but also into broader lessons all start-ups should consider. Growth, business needs and the development process are often tangled, but they are exciting challenges that make our work so rewarding when it succeeds.
When I started at BillFloat in late 2009, the Ruby on Rails framework had a dedicated community and well-deserved reputation for ease of use and speed to market. A number of other venture-backed companies, including those in the financial sector, had trusted running their business on Rails. As an active Rails developer since early 2006, choosing Rails as our web application development framework was a natural choice.
Move forward several years and our needs in 2012 were broad, but not unique. We needed to scale our engineering organization. We needed to deliver multiple products. We needed to consolidate complicated business logic. We needed to accomplish all these tasks without disrupting existing business. While daunting, these needs in themselves reflected a positive and exciting truth. We were scaling because we were successful.
In the beginning, companies should just focus on a single Rails application and getting their product to market. If possible, think about horizontal scaling and partitioning off functionality as much as you can from the beginning. However, prove there is interest in your product before you invest heavily in adding complexity.
In the Rails community best practices change rapidly. Today’s hot gem or technique will be outdated within months. BillFloat’s experiences with processing long running jobs are a good example. We have changed our approach several times since starting.
In some ways, technology is the easier part of scaling. Adding servers, optimizing code, and refactoring are all well worn best practices within our industry. In addition, teams must manage dependencies between application tiers, other engineers and product management. Teams must practice agile development to scale effectively, including test-driven development, pair programming, feature-based branching with pull requests as well as continuous integration.
Scaling is also about people and organization. As you grow, you discover you need new people and new ideas. Even when you have the people and skills you need, communication among all the teams can be challenging. It is easy – and common – to slip into a mindset of just worrying about your own projects rather than the whole direction of the company.
New and growing companies often attract passionate individuals who are willing to put the time, energy and brain-power into pushing an idea to its full potential. Ruby on Rails can be a great tool to help get you started, and scale with you to the next level. To reach the greatest heights, however, you’ll need to remember the pieces that aren’t tied strictly to the technology.
Doug Reed (@dougereed) is CTO and Vice President of Engineering at BillFloat, Inc., a leading innovator in consumer credit delivery.