Hey! I’m Gareth and I’m a software developer for the Legal Innovation Lab Wales. As part of the recruitment process to get this job, I was asked to complete a technical challenge which would showcase my abilities and demonstrate my suitability for the role. For my first blog post I thought I would discuss my solution to the technical challenge. My implementation can be found on GitHub.
The technical challenge involved re-producing the Linux kernel using only pen and paper... Ok not really.
The real technical challenge involved producing a piece of software. There were no specifications or requirements for this software, only that it had to be completed between a Thursday evening and the following Tuesday morning. The choice of programming languages and libraries used was completely up to me. This was an opportunity for me to show my working process, and evidence that I could write clean, consistent code that’s easy to understand whilst following best practices (such as SRP, DRY and KISS).
The approach I decided on was to take a simple idea and build an over engineered solution to highlight my skills to the best of my ability, in the timeframe given. I developed a basic calorie counting web application that tracks the number of calories a user consumes each day. The user can set a calorie target, then add food items and their calories to their daily diary to track their intake. I felt like this basic idea would be achievable during the challenge and I could add more features and refine the application should I have time remaining.
For my implementation I knew I wanted to use some of my existing skills, but also use it as an opportunity to learn something new and challenge myself.
I started with creating a backend in the form of a REST API, using .NET Core, connecting to a PostgreSQL database using Entity Framework, secured using JWT. These technologies are familiar to me, so I knew I could capture most of the functionality of the application quickly and easily, which would allow me more time to focus on the areas of the project I was less sure about.
To further highlight my skills for the job, I packaged the entire solution using Docker so it could be easily deployed and demonstrated on any system.
Following the technical challenge, I was invited to present my solution to the rest of the development team and answer any questions they had. I really enjoyed the opportunity to showcase my skills but also having the opportunity to push myself and learn something new under pressure.
Oh, and I got the job – hurray!
In future blog posts, I will document the processes I used to create the backend and the frontend for my technical challenge.
Thanks for reading and stay tuned for more!