At Global Office, we’re experts in helping companies identify the technology they need and either sourcing it or building it for them.
Our clients often come to us knowing they have a problem that could be solved by technology, while others simply know they would benefit from using more strategic technology in their business.
As such, we offer consulting services, as well as an in-house software engineering team allowing us to build custom software applications to meet our clients’ needs and solve their particular problem.
We been in business for 20 years, and have a breadth of experience across a number of sectors and industries, from finance to health to logistics.
From a software engineering perspective, Global Office is essentially a work-for-hire software company. Clients come to us to build them software solutions that they can’t build themselves.
That presents us with a number of challenges. We want to provide our customers the absolute best software experience possible. Much of our work comes from referrals by existing clients, and so our reputation for designing and building quality software is extremely important to us.
Additionally, because our developer team sit across a number of software projects, it’s important to ensure that the applications are as robust as possible, because given the number of applications we support, fixing bugs essentially chews up development resource that could be used to action a development request from a client or work on a new software project.
As a company, our engineering goals and objectives are fairly simple:
- Write more robust software with fewer defects
- Ensure a quality user experience
- Proactively address issues before they cause problems with our clients
- Reduce error notification emails flooding developer inboxes
Our view is that by working towards achieving the goals above, it will mean a better experience for clients using software we’ve written, as well as reducing developer effort spent on finding and repairing bugs. The latter directly impacts our bottom line, so improving this actually makes us more profitable, too. It’s a win/win.
Strategically, reducing re-work efforts and bug fixes undertaken by our development team frees them up to write new software. It gives our company the ability to run a leaner team, which reduces our costs, and allows us to act more competitively when engaging with new clients.
Having a robust error tracking product available to us allow us to push software from dev, to staging to production quickly and confidently, which allows us to release early and release often, which for some of our customers is essential to providing the best experience for their staff.
From my perspective, I see our software development process being a “before Raygun” and “after Raygun” one.
Before Raygun, we used a rudimentary embedded error notification tool that provided minimal exception information to an email inbox which was monitored by nominated engineers.
We support an extensive number of software projects and our problem was that the inbox was absolutely flooded with emails. It was information overload. So much so, that errors just simply wouldn’t be taken care of effectively because we were blinded by the sheer volume.
At the same time, because errors were being emailed to a single inbox, distributing those error notifications to an appropriate team lead to deal with became a nightmare – especially as we would get multiple emails for the same error if it was a recurring one!
Enter Raygun! So much automated goodness is now available through integrating this product into our software. Each software application that we build for our customers now has Raygun integrated. For starters, integrating Raygun is a breeze. We’re primarily a Microsoft development house and Raygun has Nuget packages that we simply drop into our Visual Studio solution. A quick config change in the app to include the Raygun API key, and boom! – we’re away.
With Raygun, we’ve set up teams for our software projects. This allows engineers to be assigned to a team within Raygun and only get notifications about errors that matter to them. External contractors that may be brought into a project can be added to an appropriate team, giving those contractors access to error information too, without having to set them up on our internal network. Immediately our error inbox was a thing of the past, and the challenge of distributing errors to the people that need to see them was taken care of right out of the box.
The problem of repeating emails being delivered to the error inbox was also handled effectively for us. Raygun provides the ability to batch error notifications, so if the same error happens again within a short space of time Raygun sends one notification to say that the error is still occurring. All of a sudden our team is still notified of errors, but no longer are they bombarded. We now have visibility of all errors, but importantly, clarity of those errors.
Inside Raygun, the goodness continues. Errors are logged into error groups, with details of each error logged inside that group. Our engineers have access to server information, stack trace information, as well as details of the user that actually encountered the error. This is gold. For starters we have all the relevant information in one place and we can assign an engineer to take care of the error – but importantly, by knowing the user that encountered the problem we can actually make contact with them and let them know that we’re looking into the issue. This gives our clients confidence that we’re across their software solution and allows us to meet our goal of being proactive with addressing our issues.
A lot of the software applications we write have a companion iOS application. iOS errors are notoriously difficult to debug. Apple crash reporting is not real-time, and the information provided can be complicated to decipher. Raygun for iOS allows seamless integration into our iOS apps, with real-time error logging and stack trace information. Affected users and device information is supplied directly in Raygun, so issues are able to be solved quicker and more easily.
Lastly, our apps have detailed logging recorded using the Log4Net product. Raygun has a Log4Net integration which allows custom logging rules to trigger notifications to Raygun. Perfect!
Since implementing Raygun, we’re so confident with errors on our products that we’ve actually added some of our customers to the appropriate Raygun team so they can get visibility over errors – and I’m happy to report they don’t get many notifications!
We implemented the Raygun solution extremely quickly. The learning curve for a software engineer using Raygun is so low, that after implementation our engineers were blasting bugs within a few minutes.
Actual implementation into our software applications is fast – it’s one of the best products that I’ve ever evaluated in that respect. Create the app in Raygun and get a Raygun API key. Load up Nuget or Cocoapods and install the appropriate libraries into the project. Amend the configuration to use the assigned Raygun key, deploy. It took longer to branch the project and merge, commit and tag the changes in our source control repo than it did to install Raygun and deploy the software to production.
We now have an engineering lead tasked with assigning engineers to bugs, we can investigate and deploy a fix, update Raygun to indicate the version release that the fix was resolved in, and then mark the error as resolved in Raygun.
No longer are we being overwhelmed by information overload due to errors being delivered into a single location, now we have grouped errors being notified to engineers that are required to see them, we have a robust process for ensuring that issues are dealt with proactively which means a better experience for our clients, and our code quality is much improved meaning that our engineers are freed up to engage in new work, improving our company’s bottom line.
Raygun has allowed my company to reduce its error notifications by 90%. Development is more robust, and Raygun versioning allows us to know when bugs have been introduced after a specific release.
As a result, productivity has increased because our engineering team have visibility over bugs faster with more information than before. Problems are resolved in a timely manner, before flow on effects make it more complicated to resolve. As such, we’ve improved our bottom line because our engineers have more time to work on new projects for our customers, instead of debugging existing software.
We’re able to more confidently release our applications to production, knowing that obscure issues that haven’t been picked up during QA will be captured and reported through Raygun.
Importantly, it allows us to be proactive with identifying and resolving issues, improving our customer relationships, cementing our reputation as providers of quality software, and ultimately spurring future business growth through recommendations to new clients by existing ones.