What does performance look like? From high frequency trading to microservices. Senior Software Engineer Alan Wilkie takes a closer look at our tech stack and what makes a good software developer.
What makes a good software developer?
Software development is a creative process, turning a user requirement into a computer system that achieves the required goals and satisfies the user’s needs. It is both abstract and creative, like writing a book. What makes good software developers is an ability to think about those abstract things on a whole range of different levels understand it from the customer’s perspective as well as the operational and machine’s perspective. There are many different levels that are involved in developing a computer system; the ability to switch between those levels and think about things in different ways is what makes a good software developer.
Tell us about your previous role and what made you decide to make the move to becoming a software developer at FinoComp?
I began my career working on real-time computer systems that look after manufacturing processes. Before FinoComp I was working for a company that does interface software for financial exchanges, both trading and pricing. Part of that involved making those interfaces operate fast enough to be usable by high frequency traders.
In that space everything is about latency. When a price gets published by an exchange, it must make its way through the system and then somebody’s high frequency algorithm will make a decision and send an order back to the exchange. That process needs to happen within microseconds. We are not talking seconds or even milliseconds but small numbers of microseconds (millionths of a second). To give an idea of the scale, in human terms most things happen in milliseconds. Our perception of vision, touch and hearing for example takes milliseconds to occur, from the time air vibrates and the sound vibrates into ear to send that message to the brain will all take place in a matter of milliseconds, we however were operating in microseconds. It was important to optimise the nanosecond range to achieve the required latencies.
What does performance look to you and how does it compare from role to role?
Here at FinoComp, the systems we are dealing with are not in the same latency ballpark. Managing large superannuation fund systems for example, can take days rather than seconds to effect change.
The challenge here is rather about scale rather than about micro concerns of latency. We are focussed here on managing systems that handle hundreds of thousands of accounts and the orders and transactions that take place daily. Performance is still critical, but it is measured in a different way.
In my previous job the focus was on super small fine grain stuff. There is a difference between latency and throughput. For high frequency trading, latency (the time between something being requested and that action taken) was key, whereas throughput is more about processing large amounts of data.
Tell us about the tech stack FinoComp are using?
We are working with the Java language and runtime environment, and Micronaut as a framework for application development. The bigger picture is Kubernetes for managing large distributed systems, and Kafka for large scale communication. Whereas a Java application for example, is just one small piece of the puzzle, solutions such as Kafka and Kubernetes are about scaling that up into a bigger system with enough throughput to deal with large numbers of transactions.
Getting into that space and working with these applications is really exciting as it is a whole new world of distributed systems and high throughput messaging. The landscape is changing rapidly.
Part of the role is also to develop the user interface that these systems provide. It is important to ensure you get a good user experience across a potentially distant network connection. We are using React as the web application framework and delving into micro frontends, the equivalent of microservices for web user interfaces. This is all very new and cutting-edge development. Whereas some might not mind working on and supporting old software and machinery, most people in my experience like to work with new components and new technology.
What are the newest tech developments that you see coming down the track and what are the opportunities and challenges we face in our industry?
Microservices architectures are becoming the way that these sorts of systems are developed. One key reason for this is scalability. Another is that there have been challenges in the past in getting things changed when dealing in a monolithic system environment. This can lead to customer frustration as it can take a long time to add new features or fix problems. The move is towards these smaller components that plug together to make a bigger system which can be developed more independently. Microservice architectures will ultimately produce a better customer experience as they can get new features and problems fixed faster.
In terms of new trends and challenges coming down the track, software is becoming more distributed. What we mean by that is software services that are running in different places and on different hardware. Whereas today you might have all of your applications running on one computer, going forward these could be distributed across a wide geographic area and across many different networks, and yet still be able to work together. This has its advantages from customer perspective, as if for example there is a problem in one geographic area, it doesn’t affect their business too much. Those same services will be able to be redistributed to another geographic area and pick up where the failed systems have left off.
The move to more distributed systems can however bring challenges. Systems can be easier to look after when they are in front of you. It can be harder when you are running on remote hardware provided by a third party on the side of the planet.
What do you enjoy most about your job?
I have always enjoyed solving really difficult problems! My favourite thing is to work on something that seems impossible, and to solve it. I am also interested in computing performance. Few things are more satisfying than taking something that used to be slow and making it work really, really fast! The other aspect is the people that I work with. We have a fantastic team and working with such a good bunch of people makes a huge difference.
Some of the team that I am placed with are new to the industry, whereas I have been doing this for a long time! I try wherever I can to be available to help and guide and to try and apply my experience to support them. They are picking it up really quickly and prepared to listen and learn fast. Mentoring is a very satisfying part of my job.
What do you like to do outside of work?
Outside of work my whole family are involved in music. I learnt to play piano and guitar, and more recently I’ve picked up the trombone. My wife and children all play multiple instruments with the City of Wollongong Brass Band (a British-style brass band) and City of Wollongong Wind Band (a concert band). Unfortunately, COVID-19 put a stop to our concerts since May 2020 and we have been in lockdown since. Normally be doing concerts and competing at State and National Band Championships, but these have also been put on hold. We are hopeful that we will be able to perform again next year when everyone is vaccinated and things start getting back to normal.
We have been running weekly online rehearsals, but there is only so much we can do online. Platforms like Teams and Zoom are great for enabling people to talk to each other, but they don’t work very well for musical performance. I have set up another solution geared towards online musical rehearsals, but real time audio systems are not for the faint hearted. Luckily, I have a family of five who play instruments covering (almost!) the full range required for band music, so we have been able to do multi track recordings. It’s a bit of fun and helps keep up our performance skills.