We recently introduced a Software Engineering Graduate Academy or SEGA for short, aimed at training fresh graduates on a wide range of tools and languages used in software engineering at AquaQ. Here we have the first of three accounts of graduates who recently finished their training with SEGA. Adam Henderson has kindly given us more than a few words of insight on his experience with SEGA.
Hi, I’m Adam Henderson and I recently joined AquaQ as a graduate software engineer after graduating from Queen’s University Belfast with a BEng in Software Engineering. When starting at AquaQ I began with a 10-week training program called SEGA (Software Engineer Graduate Academy) alongside 2 other graduates, which helped introduce us to various members of the engineering team and the inner workings of the company. We also had practice sessions with various programming languages, either to refresh our knowledge or to teach us new languages that would possibly be used on potential client roles as well as showing us some industry standards for writing code.
Getting to meet with a large part of the engineering team through various meetings and presentations was a great opportunity to familiarise myself with everyone at the company. The presentations covered a wide variety of topics ranging from Java basics and SOLID principles to several different sessions of finance training. These sessions aimed to either teach us new things or help to refresh our knowledge of familiar topics and many of them, especially the financial information, were new to me and very interesting. We also had more in-depth training sessions focused on C++, Python, Linux, and React where we worked closely with another engineer over the course of a few days while we walked through the basics of the language and then worked on a small project for each of them as well as the larger Java/React project we spent several weeks on. There was mock interview training too to prepare for the sorts of questions that we could be asked in a client interview in the future.
The more code-focused sides of the training had a member of the engineering team that frequently used the language take us for a couple of hours of training sessions. The Linux training walked us through some of the basic terminal commands and showed us how to make bash scripts and then gave us some simple challenges using those new skills, which all proved very useful since Linux is so widely used, often without a GUI. The Java training was a refresher to catch us up, which was helpful as I hadn’t actually worked with the language for over a year and was a little rusty at first. Later on, we went more in-depth into more complicated Java things, such as Spring Boot. C++ was mostly new to me aside from some brief training in my second year of university which I was immediately told was all wrong. We created a simple application to take in a data stream and manipulate it a bit, just as a proof of concept.
I had used Python before several years ago, but it was all very basic stuff so getting to work on a simple client/server chat application was very interesting and I was quite proud of the end result, even if it was relatively simple. Anyone connected to the Linux VM we all used would be able to connect and chat, or even send private messages, as long as they connected to the same port. Afterward, I felt like I could confidently say I knew some Python and hope to work with it again in the future.
The main focus of our SEGA training was a project we worked on over the course of several weeks. Our task was to create an enrollment service for a university that managed students and the courses they were enrolled in. We were to accomplish this using a React front-end and a Java back-end that used Spring and Spring Boot, as well as a SQL server database to store all of the enrollment records. Although I had a basic understanding of Spring, actually setting up a Spring Boot project from scratch was new to me, so we had a few Udemy courses on the subject that helped us get started, as well as helping us get set up with JDBC templates too. My front-end experience was also a bit limited and I hadn’t worked specifically with React so we had a few useful training sessions on it to help us set up a basic project to get us started and give us enough basic knowledge to know how to figure the rest out ourselves. We used Jira tickets, which were also part of our previous training, to help keep track of the various tasks we had for the project, mainly a list of REST endpoints that would need to be created and then used by the front-end.
Using React I designed a UI for the hypothetical university administrator to interact with, with pages for the students, courses and enrollment information. React was tricky to figure out at first having not used the language, or any front-end language to any significant degree but after a bit of experimentation and a lot of googling I got the website functioning how I want it, although it took a little longer to get the CSS right. The back-end was easier, aside from the occasional tricky SQL query it was mostly straightforward and easy to adapt what I had learned in the JDBC and spring courses to suit the project’s requirements. The back-end used HTTP REST endpoints to communicate with the front-end and the whole thing was extensively unit-tested, with mine achieving just over 90% coverage. When testing for more specific edge cases I adopted test-driven development, one of the topics from our SEGA training, to lay out every possible scenario that should or should not work that I could think of to ensure that the application behaved as I intended for each of them.
Once we reached the end of our SEGA training we had a presentation with some of the other members of the engineering team, including our line managers and the head of software engineering, where we all showed off our separate projects, took some questions and got feedback which I thought went pretty well. Overall I found this project very beneficial for my training, not only did it help put the Spring training videos we watched into practice but having actual working experience with a React project as well as the demos made it a lot easier to understand how the frameworks actually functioned, which will prove very beneficial if I work with them in the future.
I found the overall SEGA experience very beneficial, the training gave me everything I needed to make the jump between university and working on real software. Getting to meet everyone in the company through the training sessions helped me fit right in and having fellow graduates working on similar things alongside me made it a lot easier to get settled after the big jump from university to a job.