WORKING AT CALNEX -
LIFE AS A SENIOR SOFWARE ENGINEER
PAUL TOPLEY - SENIOR SOFTWARE ENGINEER
Q: What attracted you to work at Calnex?
I joined Calnex via the aquisition of JAR Technologies. To paraphrase a well-known idiom, "I came for the aquisition, but stayed for the company."
Calnex from a developer’s point of view has a lot to offer. Innovation, freedom, insight, non-corporate feel, simple management structure, well defined work/task flow, and many other things. For me the main attraction is the innovative nature of the company. Innovation is at the core of what Calnex does across all its products, and as such is central to any project. If you are not moving forward you are moving back is a good way to describe Calnex's approach to innovation. Freedom is also another major benefit for me. No one is putting you in a box and telling you there is a specific way to do things. You are given the freedom to work out solutions end to end, with support and guidance along the way. If the solution is fit for purpose (performant, maintainable, understandable), it’s a goer. Calnex has a very low key atmosphere. The approach is to try and make sure how you do things doesn't mean constant pressure on anyone. Of course there are moments when you need to roll the sleeves up and break a sweat getting something done under time pressure, but this is very much not the norm here.
For a developer’s developer, this is a great place to work!
Q: How / Why did you get into Engineering?
Like most 17 somethings, I wasn't sure what I wanted to do. I knew I wanted to go to University, but to do what. I was good at science, so one of my choices was Pharmacology. I had built a computer when I was in Upper 6th, and liked techy stuff, so winged the other degree choice, Electronics, Communications & Software. In the end I decided to go for the techy degree, mainly for the breadth of career paths on the other side. Initially I can honestly say I hated software. I couldn’t wrap my head around languages like C and Visual Basic. It wasn't until my placement that that light bulb went off in my head. Understanding logical flow with a real world application was what made it finally click. I’ve never looked back since then. I love what I do, and would write more code if I had time.
Q: What is it that motivates you in the morning and gets you energized about your role?
Following on from the last question, the love of writing code is a big factor. But equally, problem solving and a tangible and interesting product to work on is also a big motivator. Everyone has horses for courses, but having a tangible, physical device has always been important for me when looking for potential roles. The Network Emulator I develop software for is a complex, rewarding & hugely performant piece of kit. It is a product with massive potential, and is great to be central to realizing that potential. It is also a multi-faceted platform, with development requirements in different software languages, as well as Linux level DevOps style work. All of this adds up to a product with a diverse range of areas to work on. You will certainly never get bored working on it.
Q: Talk us through a typical day for you at Calnex?
Working at the Belfast site, things are a bit different to Linlithgow (Calnex Headquarters). It’s generally a quiet start to the day, as everyone has their different starting times (flexible working win). First task is usually to fire up one of the Dev Network Emulators, and pick up whatever I have been working on from the previous day. From that point on, I can be working on that same problem, or some other issue/question/task could present itself. Lunchtime usually rattles around all too quickly. Being slap bang in the center of Belfast, lunch time eating, if you want to go out, is never an issue. I usually go for a walk around the block to get some fresh air. The odd game of pool with my colleagues is also a regular occurrence in the office. Whether its morning or afternoon, a spontaneous conversation about some Network Emulator specific issue or philosophical software question can always occur. The approach to software development here is very organic, so conversations like these are always happening, and it helps us drive better code, features and generally a better working atmosphere. Home-time is usually 5pm, with the usual sprint to the train to make sure I get home.
Q: What tools or skills do you use in your typical work day?
In a typical day my main piece of kit is my workstation. There can be sometime where a screwdriver needs to be cracked out to change the configuration of a Network Emulator, or I have to get my hands "dirty" chopping and changing some network cables. Back to the workstation, I prefer a native Linux Desktop Environment. This is no "Windows Only" requirement at Calnex, which is great for me. I personally use Ubuntu Mate 18.04. Within that environment we have the usual IDE's. I typically use Eclipse for C++ development, Sublime for simple code editing, and PyCharm for Python Development. Day in day out I am usually in C++ code for the main firmware, Python and/or bash for DevOps work, and then in Linux for, well, Linux. Linux as a term covers so many individual parts it wouldn't make sense to cover them all here. As Belfast, from a development perspective, is for Network Emulator development, we use some pieces of hardware to help us test the Network Emulator. This is usually Calnex's Paragon, and Spirent’s Test Center, which would both be used for packet generation and packet statistical analysis (latency, drop, Out Of Order etc).
Q: What do you enjoy most about your job?
There are many things that make this an enjoyable job. I'll cover a few key ones as to not bore everyone to death. Writing code, to solve problems and implement features is what I enjoy the most. This is what gives me the greatest challenge in what I do. I very much like to keep the grey matter firing, so a very intellectually involved job is one I am most happy at. Writing software is the epitome of the saying "there is more than one way to skin a cat". This means that creativity is one of the core values of software development, especially in a product such as the Network Emulator. Of course you can stay on the train tracks that someone laid before you, but personally I like to lay the tracks as much as I can. The creativity in a solution to a problem is what gives me the greatest sense of achievement in this job.
Q: Most challenging aspects of your job?
Whilst I enjoy learning new things and new approaches to problems, the biggest challenge in Software Engineering is that nothing stays still. It can be said that this doesn't apply to all realms of Software Engineering, but for me personally this can be a double edged sword, as in it is what I enjoy a lot, but it is also one of the biggest challenges. I love that things are always changing and that there are always new ways to do things. But the flip side is you can never take your foot of the gas. You always need to be on the ball, up to date with new approaches, languages, frameworks, the list goes on. As I said earlier, if you aren't moving forward, you’re falling behind. The positive take on this is that you are always on the crest of the wave, and always employable.
Q: What skills do you need to succeed in the job?
This is actually a really difficult question. You are always learning as a software engineer. Given this, of course a Graduate Developer is nearly always going to be well behind a Senior or Principal Developer in terms of skill. I think the key aspects are that you need to have are entrenched core skills that make you more capable of learning the new skills that come down the turnpike that you will need to succeed in your job. The single core skill for me is the ability to learn. If you struggle with this then you’re in trouble. If I think about how my understanding and skill has evolved since I graduated, I could never do what I do now as a graduate. I would have panicked and sunk long ago if I didn't learn.
Q: What has been your biggest success at Calnex?
This is without doubt the 3.6 & 4.0 software release for the Network Emulator. Pre-Calnex, our product had alot of deficiencies riddled through the product. It did what it needed to do, but when pushed it struggled. A lot of this was down to very low resource in a small Start-Up company. With Calnex came more resource, and the hard won skill from the company around product development.
3.6 & 4.0 took the shackles off the product, at the core firmware level and the Linux OS level. Being an instrumental part in both releases means I can look at the Network Emulator now and know that a significant part of myself as an engineer has made this product a reliable, enterprise grade piece of kit. I know how much ground up re-work I had to do, specifically at the OS level, as part of the 4.0 release. A lot of this required skill in areas I didn't have when the work for 4.0 was hammered out. It was very challenging at points, but the end result was worth it.
Q: What piece of advice would you give to anyone who wants to work in Software Engineering?
Lots of different pieces of advice I could give here. I’ll try and stick to core areas. First of all, and most key, is actually to make sure you want to do this. A great deal of the time people just look at doing software engineering because there are plenty of jobs, which usually pay well. Of course there are some software engineering jobs that could be viewed as "easy", but I would say that to be successful, these jobs are not what you want to aim for. We are very fortunate to live in a time of the Internet, and a plethora of resources for you to try out coding within needed to go near a degree. This is the first port of call to see if you actually like this.
Following on from actually wanting to write software, there are some core principles that I live by as a software engineer that generally have stood me in good stead for the last 9 years since I graduated. Keep an inquisitive attitude.This means always asking questions, you can’t ask too many questions in my experience. Being inquisitive means keeping up to date on languages, new frameworks, approaches etc. Doing this throughout your career means you always abreast of software development playing field. Next is writing simple, clean code. I have always tried to write the simplest solution to any problem, within the requirements of the problem/feature. Simple, clean code is a comparative joy for anyone to work on, including yourself when you come back to code you have written 6 months later. You don't want to be pulling your hair out over your own creation. Another piece of advice is never be a silo. It may be tempted to keep yourself as the knowledge expert in a given area, but I don't believe this will stand anyone in good stead in the long term. In 2019, and many years before it, Agile is the main approach to software development. Key to Agile is a knowledge diverse team. By its very definition you can’t be agile if only one person can do a specific thing that has the potential to hold up an entire project. In my experience, a cooperative, knowledge diverse engineer, and the team within they work, is a win for everyone involved. Finally, I would say always have time for questions. Questions, in my mind, are how people learn. Of course this can be abused, but that's another skill to learn, nous.
Q: What do you do for downtime?
As I like to code, I do actually write some in my spare time (hardcore). I usually have a few things on the go, and work on them when I have time. Being an out and out geek, I have my own cabinet at home with a few servers, and enterprise grade infrastructure. Best networked house in Northern Ireland :P
Outside of the geek stuff, I'm a hands on guy, and will turn my hand to anything I am interested in. Gardening, wood work, car wrenching, you name it.
All of this is now in the back burner having just welcomed my son Theo to the world. Likely the biggest challenge I will ever face, being a Dad ha.
We’re always on the lookout for great engineers to join our team - You can send your CV to careers@calnexsol.com
Or check out our current vacancies here