My Summer @ FreeAgent
Hi, I’m Struan. Nice to meet you. I’ve been working at FreeAgent over the summer as an Engineering Intern within the Workflow team and to round off my time here, I’ve written an Engineering Blog post about my internship, covering the main projects that I’ve been working on over the past three months.
My time at FreeAgent started off with meeting the Workflow team, my team for the summer, and then going to the first of many inductions. This first induction was probably one of the most important that I had that week. Mainly because it was my IT induction, and it gave me access to all the resources that I need on a daily basis. I then immediately moved into my first ever retrospective and sprint planning session.
During my team’s planning session, I was assigned my first task — creating and sending bounced email notifications. More about this later. Before I could start any of the fun stuff, I first needed to get myself set up: getting added to FreeAgent repositories on Github, and setting up the FreeAgent app in my development environment. I also took some time in my first weeks to shadow our superhero support team for a morning to find out first hand what our customers regularly need support with.
Now back to those bounced email notifications. This was a new feature in FreeAgent based on information that we already stored about the invoice emails that we send on behalf of our customers. Its purpose was to make it easier to work out when an email had actually bounced, and let our customers know so they can follow up and make sure they still get paid. This being my first foray into the FreeAgent code base, I took some time exploring how all our email systems work together, and how and when we get notified that an email had not been delivered. I then got to work adding the feature and just 33 comments and a test later, the code was ready to ship out to the world.
Now as we all know, all companies have their own slightly quirky traditions. FreeAgent is no different; and with your first Pull Request merge you get the Ship-It Squirrel (with lots of hats on!).
Unfortunately knowing all the code instantly is hard, so being a newbie I overlooked a couple of use cases for my first ever feature. So, I went back to what I had just finished working on and made some edits to make sure that it was not causing any unexpected behaviour. One of the awesome things was being able to get feedback about this new feature pretty much immediately. Once it was launched, it was great to see our customers saying “This is great news”, “Very happy to see this update!” and “That’s good to know! I missed out on a payment because a client didn’t receive an invoice last year”.
The Case of the Foreign Exchange
Now onto my next project: getting into the scary world of foreign exchange rates and updating the XE.com API that we use to automatically convert customers invoices, expenses and bank accounts entries to/from a foreign currency. We’ve been doing this from an older version of XE.com’s API for a while now. So, Jonathan (the other Engineering Intern) and I were tasked with upgrading this to the newest, fanciest API from XE.com. The new API had quite a few improvements over the old one, and helped to ensure that we were able to continue to provide exchange rates to our customers.
This sounds simple, but this hard-working code had been working in a mostly unmodified state for a while. So, to complement the upgrade work that we completed, we also did a good old refactor and closed a five year old Pull Request! Additionally, to help us know when something goes wrong with the API we added a new feature to our Dev Bot (our Engineering Slack Bot) to check we had received the currencies that we are expecting from XE.com, and to highlight any issues with them. To let everyone know about all the changes we’d made, we rounded it off with a talk to the Engineering team at our Engineering Forum.
How Much Did I Spend?!?
The final major project for me was the Spending Categories Report and Insight. This is a new Insight and an accompanying Report that shows FreeAgent users how much they have spent across their various accounting categories over time. This information has always been in FreeAgent, but just like bounced email notifications, it wasn’t the easiest to get hold of! So to help our users get an idea of what they are spending their money on, we created a new Insight to highlight this to our users. The Insight provides a snapshot of the spending, but what if our customers wanted to see where they’d spent their money over the last year? To complement the new Insight, we created a new Spending Categories report as well. This project involved going a bit deeper into the accounting code, finding out how we stored transactions, how to access them, and then group and sum them together.
This was probably one of the most interdependent of all the projects that I’ve done so far — I had to coordinate what was happening with product, design, communications and support departments to ensure that it looked right, sounded right, and that everyone knew it was coming. We also took some time at our weekly Town Hall to tell the whole company about and demo the new Report and Insight too.
I’ve really enjoyed my time as an Intern at FreeAgent. I’ve learnt so much about how they work and had a chance to work with some really awesome people on some cool new features. I hope this post gives you a bit of an insight into what I’ve been up to over the last couple of months.