Growth is an impatient teacher. Based in Sydney with another office in Silicon Valley, Invoice2go
has had its own share of experiences sailing the growth seas. In 2017, with 250,000 customers
, the invoice and payments software firm decided its code needed to scale better. Invoice2go made the tough decision to rebuild its software from the ground up.
Hiring the right people is a challenge
Though the company is around ten years old, the pace of the company significantly ramped up after the company raised money from Accel five years ago. From then on, the Invoice2go story became about growth and transformation. Head count has increased significantly and now numbers around 70. Staff is split pretty evenly between the company’s Sydney and Redwood City offices.
“Growing talent is always hard,” said Sebastian Urban, director of engineering. “Any business’ reach always exceeds its grasp -- ambition always exceeds capacity. It comes down to prioritization. Anything you can do to be more efficient is useful.”
The geographic distance and time zone differential between the company's two offices have made hiring the right developers all the more important. The company approaches sourcing talented developers as a full-time job. Given the setup, not everyone has access to the same information, resulting in asymmetric informational pockets. Urban says the product and engineering teams align around issues, or norms, instead of creating top-down rules for the teams to code by.
“Developers need to have a certain level of trust that the system works,” he explained. “Not everyone has a full understanding but there are people with domain expertise, who can share that knowledge, and cross-pollinate ideas. We’ve established guide rails to help developers be successful.”
Defining the roadmap
The company's expects its developers to make smart choices about what Invoice2go decides to solve and what it doesn't attempt to solve, making hiring and managing developers that much harder. The company’s engineering team plays an active role in working with product to help shape which problems they attack. This impacts the developers' strategy, work flows, and even the quality of their code.
[caption id="attachment_26095" align="aligncenter" width="500"]
Stripe's research on the impact of bad code[/caption]
Bad code can be a major problem for a growing financial technology firm. In a recent study conducted by Stripe
, the payments firm found that the average developer spends over 17 hours a week dealing with maintenance issues, such as debugging and refactoring. This accounts for nearly $300B in lost productivity every year.
“Bad code can mean it’s poorly written, not fit for purpose, or includes things that are incomplete,” said Urban. “If you aren't aligned, with our geographic challenges, it's important that people can be autonomous, think critically, without really close direct management. This is why it's challenging to hire people. Our most successful engineers must think critically, be self-guided, and know to align with rest of their team.”
Focusing on what matters
Urban is thoughtful when it comes to determining his team’s priorities. His engineers are encouraged to be super selective about what problems they address. His touchstone is pretty simple: he wants developer talent focused on solving customer problems. Anything else, he requests them to seek out solved problems and leverage existing tools.
Deep and narrow problems require deep expertise. And payments processing, in particular, requires expertise in regulations and security. Payment processing is one of those things that’s important to Invoice2go’s solution. Customers want to get paid faster, so they need payment processing. But when the company mulled over building its own solution or finding an existing solution, they went with Stripe.
“What customers actually see with payments is such a small window — so much stuff happens behind the scenes,” said Urban. “We chose to partner with Stripe, which provides tremendous value to us so we can focus on other things.”
Using Stripe for payment processing has effected changes at every level of Invoice2go’s technology stack, infrastructure, and credit handling. Urban believes the integration has saved a significant amount of time, enabling his team to release more features at a greater pace.
After a decade in existence, the decision of what to focus on and what to buy off the shelf has changed. Invoice2go originally ran its own servers. But over time, it didn’t ascribe the same value in doing so.
“Now, we're fully in the cloud on AWS, and we no longer want to be in the business of running data centers,” concluded Urban. “For our business, we want to put our energy where it makes the most sense. We’re happy to rely upon resources with great partners like Amazon and Stripe.”