My first year as an apprentice software engineer at endjin
It has now been one whole year since I began the software engineering apprenticeship at endjin as an Apprentice Engineer I. Throughout my apprenticeship I have found it valuable to look back and reflect on my experiences so far, not only to showcase to other prospective apprentices what an apprenticeship at endjin looks like, but also to aid my own career development.
So far, I have documented my thoughts into 1 month and 6 month retrospective blog posts. As I now progress to the next stage in my apprenticeship as an Apprentice Engineer II, the time has come to reflect on all of the learning and experience I have gained over the past year.
As previously mentioned in my 1 and 6 month retrospectives, training has formed a large part of the first year of my apprenticeship. The software engineering apprenticeship at endjin is focused on developing skills across a wide spectrum of domains - such as software developing, data engineering, DevOps, and consulting. This can be directed by both our personal interests and the training backlog which is split into five broad areas covering the fundamentals of: Programming, Data, DevOps, Engineering Practices, Architecture and Azure.
Topics I have covered in my technical training in the past year include:
- Familiarising myself with tooling (such as Visual Studio and Visual Studio Code).
- Version control (Git / GitHub).
- C# and the .NET framework.
- Power BI and DAX.
- Data wrangling with Python using Pandas.
- Azure and the Cloud.
- Docker and containers.
- Bicep and "infrastructure-as-code".
These are just some of the many tools and technologies I have learnt about in the first year of my apprenticeship. My training has really opened my eyes to the breadth and depth of technologies that exist and has shown me that as a software engineer, the learning never stops. It is important to keep technical knowledge up to date as the technology constantly evolves and advances.
My technical training has primarily been in the form of independent study. This was essential to really grasp and understand the various subject areas, which were more often than not completely new to me. By taking online courses on Pluralsight, completing MS Learn pathways and reading technical books (such as Ian's book 'Programming C# 8.0'), I was able to build up my knowledge of the basics. This was not a completed isolated exercise. My training was backed with weekly 1-2-1 tuition with Ian. In these sessions, I was able to ask Ian any technical questions and he was able to elucidate any concepts I may have been struggling with.
When deciding which training courses to complete, I found it useful to focus my training on learning the technologies and skills that were essential to deliver the client or internal projects I was working on at the time. One of the client projects I was involved in required me to learn how to use Power BI along with the DAX language. I was introduced to core concepts such as Context Transition and when to use a Measure vs. a Calculated Column and learnt how to use the various different functions in DAX. I also discovered the importance of implementing best practices when designing data models and how to optimise data models with the aid of Performance Optimisation Tools for Power BI.
Through real-world application of the technologies I have been learning about, I was able to take my training away from abstract understanding and see exactly why these technologies are needed and how they can deliver value.
Presenting has played an essential role in testing my understanding of the concepts I have been learning about in my training. Each week we are encouraged to create a short demo/presentation to share with our colleagues in the company-wide 'Show and Tell' session. The reasoning behind this being that that the best way to understand a concept is to explain it to someone else (and I can certainly now vouch for this!). Furthermore, receiving questions/feedback from the rest of the team helped me to identify any gaps in my knowledge or understanding.
Blogging has also played an important part in consolidating my knowledge. The process of distilling down my training into easy to consume content for the endjin website, has helped me to digest and understand the concepts I have been learning. Similar to presenting, blogging has also enabled be to identify any gaps in my knowledge which I could then further research. This year I have produced 11 blog posts in 12 months. It has been rewarding to share my knowledge with the wider community and hopefully help others, particularly those in a similar position to me, where they are just starting out in their technology career.
At the beginning of my apprenticeship, I found blogging quite challenging. This is because the task of distilling down completely newly learnt concepts and then generating my own code samples to demonstrate these concepts, requires a lot of thought and consideration. However, I do believe that practice makes perfect and getting into the habit of writing frequently, along with finding dedicated time in my week to focus on blog writing, has definitely helped to optimise the process.
Adapting my approach
The first year of my apprenticeship has also been a process of learning how to learn and work effectively.
My mentoring sessions with James were key to understanding how I work best and fine-tuning my learning process. These fortnightly mentoring sessions were largely focused on personal development such as how to manage my time and set priorities. During my mentoring sessions with James, we identified that juggling too many training courses at once was not effective. This was due to the fact that a lot of context switching was difficult to manage. Instead the most effective approach was to focus my training on fewer subject areas at any one time, so that I could really immerse myself in the material and understand the concepts.
Having dedicated weekly catch-up sessions with the other apprentices has also been a great support over the past year and has helped to guide my approach to training. These sessions have been an effective means to share with tips and tricks to navigate the apprenticeship, as well as keeping each other updated on the various work streams we are involved in.
External and internal projects
In the first year of my apprenticeship, I was also given the opportunity to work on a number of external and internal projects. Through being involved in the development lifecycle, I discovered the importance of following the agile methodology and working as a team. It also allowed me to hone in on my consulting and project management skills.
At endjin, we implement the agile methodology in our projects. The agile methodology is a way of managing a project by breaking it up into short iterations. Through following the agile methodology in client projects, I have learnt the importance of constant feedback loops. Each weekly iteration provides a checkpoint to receive feedback from the client, so we can adapt our approach if required. This ensures that we are directing our efforts accordingly. Following short weekly iterations and seeking constant feedback also means that there is transparency with the stakeholders as well as clear visibility of the value we are delivering each week. Through following the agile methodology I have also learnt the importance of estimation and planning. As well as project delivery, planning should also be an iterative process. By reviewing the progress that has been made each week, we can better estimate and prioritise future tasks.
Behaviour Driven Development (BDD)
One process we utilise at endjin which aids the management and delivery of client projects is Behaviour Driven Development (BDD). BDD encompasses gathering user/business requirements in the form of 'user stories'. User stories are written in human readable language using terminology which is common to everyone across the business. This ensures that both the business and technical teams responsible for delivering the project are on the same page about the projects aims. Once defined, user stories can then be transformed into executable specifications, which are automated tests that illustrate and verify how the solution delivers the specific user requirements. Collaborating with our clients using BDD ensures we are clear on their requirements. It also means we are able to effectively plan project delivery through the prioritisation of user stories.
At endjin, alongside being engineers and the technical aspects of project delivery, we are also consultants. The skillset required is very diverse. We must be able to communicate effectively in order to deliver client workshops and mentor clients, we need to be able to manage our time effectively in order to provide regular updates/progress reports, and we also need to be able manage interpersonal relationships. All of these skills are of equal importance in order to build client relations and to ensure that our clients are confident in the work that we do.
Teamwork is an extremely important aspect of project delivery. At endjin, we often collaborate through pairing. Having two brains instead of one often leads to better quality work and a higher level of productivity. Collaboration is encouraged at endjin, and to be successful it is important to be open about when you’re stuck and utilise the expertise of other colleagues. There are various tools that we use at endjin to collaborate with. Slack is the main technology we use for communication - within Slack we have dedicated channels for internal and external projects and for posting daily updates. We often utilise Slack's huddles feature for pairing. We also regularly use Microsoft Teams, both for our team sync up's (which occur 3 times a week) and for communicating with clients. Whilst teamwork is an essential part of delivering projects, it is also key to acknowledge the importance of individual contributions. Taking personal responsibility for the quality of your work by building quality assurance into your approach ensures that what is delivered to the client is of high value.
Power BI Weekly
For a large part of the first year of my apprenticeship I have been responsible for curating endjin's Power BI Weekly newsletter. Power BI Weekly is a collation of the week's top news and articles from the Power BI ecosystem. The newsletter is split into four themes: Data Preparation, Data Modeling, Report Authoring & Interactivity and Deployment, Security and Operations. From the curation of Power BI Weekly, I have been building up my knowledge of Power BI across all of these areas. Having up-to-date knowledge of all of the latest new features and developments in Power BI has been valuable when delivering client projects. It has enabled me to implement new features in Power BI upon release, for example the use of Field Parameters. More recently, getting to grips with the new EVALUATEANDLOG function, has enabled me to debug the DAX expressions I was creating, allowing me to trace back unexpected results with greaser ease.
Microsoft Certified: Power BI Data Analyst Associate
This year, I took the PL-300: Microsoft Power BI Data Analyst exam. The exam assesses your knowledge across four functional groups: Preparing Data, Modeling Data, Visualising & Analysing Data and Deploying & Maintaining Assets. Preparing for the exam helped me to assess my strength in each area and identify any gaps in my knowledge. Eli has summarised the techniques she found useful when preparing for the exam in her blog post.
Endjin has been a fully remote company since 2017. I have found this flexibility hugely beneficial. I have freedom over creating my home working environment which enables me to be more productive. It has also allowed me to have a better work-life balance. I can visit my family back home for an extended weekend or visit friends in different cities, both in the UK and abroad. Although we are a remote organisation, to which there are so many benefits, we still believe that seeing people face to face is a vital component in building relationships. So, every six weeks, we run full-team meet ups. These meet ups are a great way to carry out activities such as in-person presentations and group discussions around strategy, but they also give us the opportunity to socialise which is usually over lots of food at a big company lunch followed by some after-work drinks.
The next year as an Apprentice Engineer II
I have really enjoyed my first year at endjin. It has been particularly rewarding applying my technical training within client projects to solve interesting data and analytics problems. As I move into the second year of my apprenticeship, I expect I will be involved with a lot more project work, as the focus of my technical training shifts away from studying and towards learning 'on the job'. Developing my time management will also become more important given the increased responsibility and juggling various work-streams. After reflecting on my first year at endjin, it has become apparent just how much I have learnt - from Power BI, to C# and .NET, to developing my skills in consulting. I look forward to what the next stage of my apprenticeship has in store.