It feels like yesterday that I was writing about my first month as an Apprentice Engineer at endjin, and it has now been six months since I joined the team! Here's a quick blog post so you can catch up on how everything is going. Spoiler alert: it has been a busy few months.
While it does feel like it was yesterday that I was blogging about my first month, my mindset while writing this is completely different. The fear and self-doubt that accompanied me during my first weeks of work have started to fade, and has evolved into the reassurance that, even though I still have so much to learn, I know I have the tools to get there. These tools include being part of a company that invests in and supports their employees.
Let me take you through some of the aspects that have dominated my days during the past six months. Apprentices at endjin have a lot of dedicated time for training, which includes following online courses, one-on-ones with senior engineers, reading, and blogging. So far, half of my time has been spent on those activities. During the other half, I have been involved in various team meetings, pairing sessions, and project work. This means I get to work alongside different people within endjin and our clients, which makes it all the more exciting.
My training these past months has focused on two main areas: web development on the one side, and data cleaning, analysis and visualisation on the other.
On the data side, I was introduced to DAX when I got involved in a client project that required building reports in Power BI based on a set of requirements. DAX is a query language, which makes it different from most programming languages I had come across before, but its puzzle-like nature appealed to me from the beginning. I decided to incorporate it in my training to be able to contribute more actively to the project, something I have found very rewarding and empowering.
Through online courses, projects, and pairing sessions, I have had the chance to think about data from different points of view. From data cleaning and modelling - such as why the star model for power BI reports is the most suiting - to data visualisation and accessibility. I recently experimented with the most important Python libraries for data cleaning and visualisation, such as Pandas, NumPy, and Matplotlib. This also gave me the chance to get to grips with notebooks, an easy and interactive environment that allows the user to evaluate the output of the code block by block and add comments between each code block to provide explanations or take notes on the output.
Creating reports in Power BI has made me realise the challenges of deciding what the most appropriate way of visualising data is in such a way that it is understandable by non-data professionals. The goal is usually to tell a story with the data at hand by guiding the user through different visuals and by making use of the different filtering functionalities available.
I often get asked whether I any knowledge from my mathematics degree in my job. While the answer is usually “no”, because truth is, you don't need much advanced mathematics knowledge to be a developer, I do often realise how the logic needed in mathematics is useful in some many areas, one of them being programming. I was happy when I got to put in practice my maths skills a bit more when I was challenged to write an example for our Z3.Linq repository. Its aim is to show how the Z3 can be used to solve real world problems. I added an example where the goal was to optimise the costs of shipping products from different warehouses to different clients using satisfiability constraints. In doing this, we even ended up uncovering a bug in the code related to the behaviour of tuples containing more than 8 elements.
Blogging and Presenting
One component of my training that has gained importance in the last three months has been blogging, which is a helpful means of checking my understanding of what I'm learning. This was something I struggled with at the beginning, partly because I was under the impression that it slowed me down in my training progress, and partly because I was unfamiliar and out of practice with the process of writing. With practice, blogging has now become a part of my learning process that I use to make sure I'm not just ticking items off of a list of completed courses. And when it comes to getting used to writing… it comes with practice!
Another exercise I already wrote about a few months back are our Show & Tell sessions. In these, anyone can share anything interesting that they have done during the week, and us apprentices usually use it to present something new we have learned to check our understanding of it. These require a good knowledge of the topic you're sharing and preparation for the presentation. While presenting still makes me nervous sometimes, I appreciate the discussions it brings after. With everyone in the company engaged, some additional aspect of what is being presented often comes up, which I can research after.
As I mentioned before, I have also been involved in client projects. Aside from the technical knowledge I am gaining from it, it has allowed me to see first-hand how other companies work, their business requirements, and how agile processes work. I have seen how endjin engages with clients through the definition of the project requirements, constant communication and short iterative processes.
One thing I hadn't heard often before starting my job is that the key to good technology is people. It doesn't matter how good the technology behind any solution, application, or tool is if it can't serve it's purpose because end users never end up adopting it. So, ultimately, every solution has to start from the end-users and their requirements. I am seeing this in practice at the moment as we are running a discovery project for a client to gather all the requirements necessary to build a data platform. Through workshops, we have been learning about the different departments of the organisations, alongside their business needs. This has involved assessing the organisation's readiness to adopt different technologies, assessing the need to adopt some form of master data management, and identifying pain points with their current systems. This has revealed the importance of communication. Being able to understand the client's requirements, to ask the right questions, and to play back the information derived from this is crucial for a project's success.
A supportive environment
All the training and projects I have been doing have come with endless support. I have regular catch-ups with James Broome who helps me define my goals and how to reach them, and talk about anything I might be struggling with. I also talk to Ian Griffiths on a weekly basis, where we go over any concepts from my training that I deem necessary. These sessions allow me to not only clarify things I don't understand, but also learn about related areas that I wouldn't otherwise know about. In a way, it helps me bridge the gap between what I know that I don't know, and what I don't know that I don't know. Often, the latter is needed to give context of what goes on under the covers and helps me understand the former.
As you must know by now, endjin went fully remote in 2017, and I must admit this made me somewhat nervous when I joined. I was relieved to see how, as months went by and I spent more time working with others or having more informal catch-ups, this feeling eased off. Setting up a weekly catch-up with the other Apprentices has allowed us to get to know each other better and keep up with what we are all doing, and working in pairs or in teams in projects makes work so much more enjoyable. Creating these bonds with other people in the company brings a sense of belonging that can be hard to think possible when first joining a remote company where most people have known each other for a long time. We had to pause (yet again) our regular in person company meet-ups during the first two months of the year, but I'm excited to see everyone in person again later this month!
Working remotely also means that I can occasionally work from abroad! Having had to spend Christmas in isolation, I was able to extend my stay with my family in Spain and spend some more time with them in January without having to take time off work.
What will the next six months look like?
The reason these past six months have flown by is that they have been filled with interesting things to learn and great experiences. The multidisciplinary nature of the apprenticeship at endjin means there's no time for getting bored doing repetitive tasks as I need to improve and put in practice a wide range of skills on a daily basis.
I don't expect this to change at any point during my time at endjin, but now that the initial shock of my first full time employment is (almost) over and that I feel I have adapted well to this new environment, I expect this new phase to be about consolidation and practicing my newly acquired skills.
These past six months have shown me that I can learn and achieve so much more than I thought possible, but also that there's so much more to learn than I thought possible! Some goals I have set for myself for these next 6 months to come are to continue to improve my technical competencies to be able to put these in practice more easily. It's very rewarding when I find myself putting in practice concepts I have recently learned, even if most of the time I need to go back and look at my notes or ask for help. I hope this process will become easier as time goes by and I can make bigger contributions to projects.
Can't wait for the next six months! Let's catch-up then?