It has been just over a month since joining endjin as an apprentice engineer. Even though it has been on my mind for the past week, the first 30+ days have flown by.
Before another 30 days race ahead of me I would like to pause and reflect on what I have up to since joining endjin.
This post will be my thoughts on my first month as an apprentice engineer at endjin.
Within the first month I have learnt about the fundamentals of cloud computing and why businesses should consider moving infrastructure to the cloud. I have learnt a lot about Azure, the many services it offers and what service is most suited to a specific business use case.
I have also spent a large chunk of time learning C# and the popular web framework ASP.NET Core.
A big hurdle in learning new technologies is the domain specific language or jargon. What helps me to understand concepts is linking them to things I am familiar with. Lots of fundamental technologies operate in similar ways. Even for completely new concepts such as abstract classes, virtual methods and interfaces in C#, I try to use concrete examples to help my brain map something that already makes sense to the abstract. The great thing about learning fundamentals is that mental models can begin to form, helping reinforce old ideas and smoothing the transition to a new programming language or framework.
The other large learning curve is the tooling. I have never used Visual Studio or Visual Studio Code before joining endjin. In fact, navigating around the whole Windows ecosystem took some time to get used to. Like everything else, it takes practice and incremental improvements. Only yesterday did I start to compile a cheat sheet for the most useful Visual Studio shortcuts.
As of now, independent training takes up over half of my time day to day. This involves working through Pluralsight courses, reading Ian Griffiths' comprehensive Programming C# 8.0, and experimenting with what I have learnt by working through last years Advent of Code in C#; an advent calendar of Christmas themed coding challenges.
The focus on training in the first month sets us up to be effective engineers (or endjineers). When going through C# exercises and figuring out the idiomatic C# way of solving a problem, I recoil at copy and pasting a snippet of code from the internet without knowing what it does and why. Having a baseline understanding of the internals of any system helps when faced with a bug or re-implementing the solution for a different project. I have already seen the consequence of trying to jump into a project without a foundational knowledge of what is going on in a client call.
What else have I been up to?
Client calls also make up a small proportion of my time each week at endjin. Being introduced to client calls from the very start—— day two to be exact, helped demystify what I could potentially work on once my understanding of the fundamentals were solid enough. I also felt part of the organization by participating in calls.
The reason I haven't spoke about a typical week at endjin is because so far, each week as varied and been full of surprises.
This week, we spent 4 days attending a Behaviour Driven Development (BDD) master class using SpecFlow. It was a deep dive introduction to the tooling and methodology that at many times, was above our technical level. Nevertheless, the decision to enrol us to a course that may have been better suited after 6 months of C# and familiarity with testing was again to push us to the edge of our comfort zones.
Systems and protocols
At endjin, I am constantly reminded of where I am and where I want to go. Reminders are prevalent every week from general one to ones with James Broome, technical one to ones with Ian Griffiths to daily asynchronous stand-ups where we post in a daily-updates slack channel what we did the previous day and what we plan to do the next day. Systems like these allow me to reflect over short periods to check if I am continuing to grow.
Short feedback loops are integral to how endjin operates and in my experience, one contributing factor to why I feel confident in trying things for the first time. There is no expectation for me to have mastery on the first try; the sooner I try something, the faster I can gauge where my current level is and think of the next steps to improving.
Then and Now
In addition to the technical skills and knowledge I have picked up in the first month here at endjin, my confidence in presenting has improved. We are encouraged each week to present what we have been working on, what we have learnt or what we have found interesting for the week. This also forces me to consider how to present, spending time on delivering a message not just the content.
Similar to presenting, I have also had a chance to record a video update for clients. As it was my first time recording myself speak, I had no expectation of how to edit a customer facing video update. Again, tooling and recording techniques were all new to me. Upon sharing, I was given immediate feedback and as a result know how to improve for next time.
Only Just the Beginning
Despite making progress in the first 30 days at endjin, I have a long way to go. Each day I'll have the chance to improve on my understanding from the previous day. There will always be more things to learn and more problems to solve.