At Socket we move fast, and we’re proud of the way we do it. Our customers love our speed of development, and as we gain more traction, we’ve been prompted to think about the question: how do we move so quickly?
I love this question and it is constantly on my mind, so I will try my hardest not to bore people to death…
To put it simply: we’re structured for speed, testing is baked into our development flow, and all development is handled by our in-house team. We also use AI tools where applicable, and these are carefully employed with human oversight.
If you’re interested in the methodology under the hood of Socket, here’s how we do it:
Conceptual
* Speed is baked into the company culture: We constantly review bottlenecks, and we remove or fix them as we go.
* We have a tiny team, with high communication: We all know what each of us are doing, all the time, with minimal meetings and bureaucracy.
* Between us, we have huge amounts of experience: Every one of us has been building scalable SaaS software for a decade or more, and we have worked closely together for many years in this business, and in previous ones.
* Add to that a huge amounts of domain expertise: We've been building software in the accounting and bookkeeping industry since 2018. Our co-founder Jon is the MD of an accounting firm, which gives us an edge. What might take a tech company six months of UX research and another six months of R&D, we have a decent chance of getting version 1 out in a month or two and "getting it right or thereabouts" the first time, as we are solving our own problems. From here, speed of iteration is key (see all other points).
* No outside overheads or reporting needs: We're fully bootstrapped, no VCs or external investors. The founders are the shareholders and the management team. We are hands on. We can make decisions instantly.
* We enlisted awesome early adopters: The accounting and bookkeeping industry has a lot of people that are excited about how technology can enhance their business, and are genuinely interested in helping the software tools they use evolve into game changers for them. They are a delight to work with (thank you to all who might read this). We can give them closed doors early access to new functionality: this helps us iron out kinks we encounter in real-world data, and prevents us from straying into something that is not useful or fit for purpose. In return, our customers end up with a useful product much faster than we would be able to otherwise.
Technical
* Agile SDLC: We often ship to production multiple times per day, and have a CI/CD pipeline that supports rapid iteration.
* Judicious testing: Our test coverage is decent, but we especially focus on highly sensitive areas (a fast test suite is a critical component of the Agile SDLC above) and avoid testing for the sake of testing for units that are self-evident.
* Truly self-managing full stack: In our R&D team, our full stack engineers are capable of doing everything. We try to avoid too many specialisms within areas of the codebase. We don't have dedicated testers, product managers, or scrum masters. After a quick planning session, they break the project down and write their own tickets, provide progress updates and check-ins (the whole team pitches in on product direction) and ensure test coverage before peer-reviews in code and UX. Loom features heavily across our process.
* We stay extremely close to our customers: Following on from the above, our engineers take responsibility for what they ship. They'll automatically take on bugs that come in around an area they've touched recently. As a customer, you're just as likely to have your support ticket picked up by an engineer as you are any other team member. This results in the fastest feedback loop possible. At the risk of being vulgar: customer feedback is our lifeblood and we inject it directly into our veins.
What's changing? Two thoughts
1. Integrations are hard: There's a strong desire in the industry for more of the tech stack to play nicely together. We're proponents of this, and have invested heavily in integrating with best in class tools across the space. Each one introduces significant complexity and overhead in the codebase, along with providing areas that are outside of our direct control. It can be mitigated with careful software design and architecture, but I'm not going to lie: each integration has an impact on the speed of our development.
2. AI in engineering is amazing: The pace of change here is insane and it is difficult to stay on top of it all. We're cautiously employing AI more and more in our engineering workflows, within "junior developer" guardrails. The beauty of involving it in a large existing codebase is that there are a lot of existing patterns and styles for it to take guidance from. As a result, I'd say our team is 50-70% more productive than we were 18 months ago, and I expect that to grow significantly in the coming months.
Overall, we're optimistic that through maintaining our approach above and careful use of AI we can maintain or even improve our current velocity as our codebase and our customer base grows. Exciting times!
Speak soon,
Rich, and the Socket Team