
Waiting for it with Capybaraâs synchronize method
Feature specs are notorious for their potential to flake. Itâs possible for the results of feature specs to be inconsistent because they have to deal with asynchronous state. In a typical test environment, thereâs a single Ruby process at play, so test code will be executed in order as written â we can reasonably expect one line to complete before the next is executed. But when it comes to feature specs… Continue reading

Wiggling my way to a win
The work calendar At FreeAgent, we work in intervals of sprints (2 weeks) and cycles (which are made up of 4 sprints â adding up to roughly 2 months total). In a cycle a team typically aims to complete 1 larger project, and during a sprint a team aims to complete sub-tasks of that larger project. This helps construct timelines and structure for product managers and engineers to work within. … Continue reading

Switching to Swift: The iOS Migration
Apple released the SwiftUI framework at their Worldwide Developers Conference (WWDC) 2019. The new framework was a significant shift in iOS app development, promising faster development and more reactive user interfaces (UI). At the time, the FreeAgent iOS codebase was in much the same state as other iOS apps - using UIKit, an entirely different framework that had been in existence since 2008. Whilst UIKit was, and still is, a… Continue reading
We're hiring! Check out our vacancies đ

Building the bridge from education to real-world application
Youâve just hung up the phone and youâve received an offer for an internship. The excitement is overwhelming as the countless months of applications, assessment centres, interviews and rejections become obsolete. Youâve done it! This is your first step gaining valuable experience about being a software engineer and bridging the gap from theoretical university to real-world application. Youâre faced with excitement and questions. What is it like to work on… Continue reading

Building the building blocks: My summer on FreeAgentâs Design System Team
As someone hoping to find a job within the UI/UX field of computer science, I was amazed at how little I knew about how a design system team works. My classmates at university were the same. They too didnât realise the scale of these teams and had never come across the phrase âdesign systemâ. This internship has been a crash course in why design systems are so important. I think… Continue reading

Uncharted Waters: a guide to exploring unfamiliar codebases
Some companies' codebases are massive. FreeAgentâs, with its monolith Rails application, certainly is no exception. The first time you clone one of these codebases onto your machine and see the sheer number of folders, files and complexity, your eyes might just widen and your jaw may just drop - letting out a yelp. As you click through the first few random files, noticing that you donât understand a thing and… Continue reading

Creating re-usable descriptions in dbt with Jinja docs
If you're working with dbt and find yourself copying the same column descriptions across multiple models, this post is for you. We'll show you how to eliminate that repetition using the Jinja doc function! Continue reading

The Engineering Behind Salesforce at FreeAgent
For nearly 15 years, Salesforce has been the engine room for our customer data here at FreeAgent. Since we first brought it on board in 2011, it has grown from a straightforward CRM into a complex, deeply integrated platform. While one blog post cannot cover every detail, we hope this gives you a better understanding of how we leverage Salesforce and the engineering approach we use to maximise its impact.… Continue reading

View specs: rendering templates that are nested within a view component
FreeAgent makes use of the RSpec and ViewComponent frameworks for unit testing and reusable front-end components respectively. Since FreeAgent is a Ruby on Rails application, weâll often want to write unit tests for our Rails view templates, using RSpec, i.e., a view spec. When rendering our reusable view components in our view templates, especially complex ones, testing can get a bit confusing, especially if the template is dependent on being… Continue reading

The Other Copilot: Coding with AI
It seems Copilots are ten a penny these days. While our CoPilot accountant partners are a human way to support you using FreeAgent, the flight term has really taken off(!) as branding for AI tools, GitHubâs Copilot being just one of them. The rise of AI tooling for developers has sparked a lot of discussion and controversy as of late. Itâs also seen rapid development and innovation, with several code… Continue reading