A little over 10 months ago I wrote a blog which reflected on my summer internship at endjin.
Now, a little over 10 months later, I'm sitting in the same office one month into my Software Engineer Apprenticeship after having completed my Maths degree and choosing to come and join the team here, for good.
I'm writing this blog post to take you through my transition from university into the world of work, and to fill you in on my progress in the last month. I hope for this to be the first of many blogs which will detail my progression throughout my apprenticeship.
It will certainly be interesting to look back in three years' time to see the extent to which I've developed as a Software Engineer. (Pun not entirely intended.)
The small hurdle that was my final year at university
In all honesty - and at the risk of sounding cheesy - it never felt like I left endjin. That's mainly down to never actually leaving (I worked part-time (remotely) throughout my final year), but it truly feels like this time has flown by. My third year of studying was, by far, my favourite year. Yes, third year finals and the run up to them aren't exactly a hoot, but by my third year I had:
- (near-enough) total control on my module selections, which meant I could focus on modules I thought I would enjoy and I thought were relevant to a job in the Data Science/Software Engineering industry (in addition to the relevant core modules I had already completed in my first and second years)
- learned how to study properly (about time), but, at the same time, knew when to relax
- a much better means of earning money
- enjoyed a taste of the working world, and loved it.
Those factors made my final year more comfortable, and I guess that's how I feel now – comfortable. The work I do is challenging and I have a lot of learning to do, but I'm comfortable in the sense that: I'm now accustomed to working 8+ hours a day, I have colleagues who all want to help and guide me, and I'm doing work that I genuinely enjoy doing.
What will my roles/responsibilities be during my apprenticeship at endjin?
As I described in my post-internship blog, endjin took me on with no relevant experience whatsoever. Now, in the three months I interned, my focus was mainly building up my Data Science/Machine Learning knowledge – topics in which I was (and still am) very interested, given my background.
I've always preferred the applied side of Maths and, whilst I appreciate the importance of pure Maths (especially Linear Algebra in the DS industry), I don't think my preference will ever change.
As I've already stated above, my title is 'Software Engineer Apprentice'. I am on endjin's three-year apprenticeship scheme, which is designed to make the apprentice a well-rounded Software Engineer, whilst also learning the skills needed to be an effective consultant. Collaboration and direct exposure are very much at the heart of the scheme, with pretty-much-daily pairing and regular meetings with clients.
Endjin understands that people like me come in with many different backgrounds, different passions and skillsets.
My apprenticeship, for example, will probably have more of a DS-orientation, although I'll also be learning the fundamentals of software development in order to be able to contribute in projects across the board. From a technical perspective, I imagine some of my main objectives will be: getting to grips with the Microsoft Stack (with particular focus on the Azure cloud platform and its capabilities), learning to code with R and/or Python, delving deeper into the realms of machine learning, and familiarizing myself with the DS process and its applications with real-life scenarios.
From a professional and business perspective, I will be learning about the key skills behind Consulting, Project Management, Leadership, (effective) Communication, whilst being introduced to various Commercial and Legal aspects, like client contracts, MSA & NDA documents, software licences etc.
I don't think I'm going to be stuck for things to do!
At what stage was I at, one month ago?
I think the best way to start this series of blog posts is to ascertain my skill levels across certain areas as of one month ago, when I began. I'm going to try and be brutally honest with myself. Let's see:
- Maths & Statistics - Not too bad (at least I like to think so).
- Scientific languages - Most comfortable with Python, at (what I can imagine) a low(ish) level. More of a limited capability with R and Mathematica (yes, you read that right – Mathematica).
- Developer languages - More-or-less no C# knowledge, nor any other common dev languages, for that matter.
- Actual languages - Proficient in English. Parlo un po' di italiano. So I'm ready for when endjin opens up its international headquarters in Rome…
- Microsoft Technologies - Good knowledge of Office 365 and its various components. Good knowledge of the Azure Machine Learning platform. Basic knowledge of the Azure Cloud platform and its capabilities as a whole. Everything else – limited or non-existent knowledge.
- Computer Science in general - Elementary.
Professional and Business-related
- Communication and Presentation - Previous job experience means I don't consider myself too bad at this. Limited experience in a more 'pitching' or 'reporting' sense, though.
- Commercial & Legal - Basic knowledge of SoWs. No idea of things like NDAs, MSAs. No knowledge of different types of agreements (T&M, Fixed Price, Framework). No knowledge of software licences.
- Project Management - Little knowledge.
- Consulting - I will have to ask someone about this.
- Leadership - In a past life, I was a sports coach. However, I'm unsure as to what extent the leadership skills evolved through coordinating dozens of rambunctious children is transferable to the leadership skills sought after at an IT consultancy firm. Well, you never know – debugging can get frustrating.
What has my first month involved?
Learning. Learning. Learning. There's no getting away with it, I'm afraid. Through a mixture of pairing, online courses, blogs, academic papers, conversations, observations, mystifications, exclamations, jubilations, and numerous other 'ations', I've started the ball rolling on course to cover as many of the points listed above as I can.
I've mainly been focusing on getting more proficient in Data Science and its applications. I'm currently taking Kirill Eremenko's Data Science course on Udemy which is a hands-on course designed to cover all aspects of the Data Science process.
Why this course? Well, according to this blog, it is the best 'intro' course out there. Now, I'm not entirely a beginner, but I find it helpful to really nail down the basics. So far, it is an interesting and highly interactive course, and Kirill himself is a very good instructor.
Another course I'm taking is Scott Allen's C# Fundamentals course on Pluralsight. This was prompted after a pairing session during my first couple of weeks back when we were reviewing some code written in C#, and I hadn't a clue what was going on – so I took it upon myself to begin this course.
As the name suggests, this course introduces you to the fundamentals of C# using Visual Studio, and so far the course has covered the general structure of C# code (Assemblies –> Namespaces –> Classes –> Class Members –> States/Behaviours), defined various acronyms and terms (CLR, FCL, Access Modifiers etc), and has built a couple of programs to demonstrate all these new concepts. To most of you reading this, it will seem super low-level – but that's exactly where I'm at!
I've also been doing a lot of reading behind Customer Churn.
Customer Churn has become one of the biggest focuses of companies across various verticals over the recent years, with the general understanding that keeping customers is far more profitable in the long run than finding new ones. To this effect, countless academic papers have been produced, each of which play on this problem in its own way. My initial (naive) plan, was to find the magic model that performed best across the board.
Several papers later, I realise that that model just doesn't exist! With Machine Learning, the best model is very much dependent on the intricacies of the dataset, and one could have two seemingly identical datasets where a Neural Network works best on one, and a Support Vector Machine works best on the other. To some, this may seem frustrating, but I personally think the whole process would be significantly less interesting if there were 'one-size-fits-all' rules.
I was also taken (on my second day!) to Microsoft at Thames Valley Park to join Howard, James, Jess and Mike in a meeting to discuss endjin's Modern Data Platform. It was great to experience first-hand endjin's relationship with Microsoft so early into my apprenticeship, and I've been assured this will just be the first of many meetings (with clients/partners) that I will be involved in over the next few years.
In summary, my first month back has been busy - in the sense that I've had to hit the ground running from day one. I'm being exposed daily to new concepts and technical jargon which require substantial time to research, understand and learn. But that's exactly what this apprenticeship's about – being exposed to (and manufacturing) new ideas and concepts, understanding what they're all about, learning about them and applying them.
What is often frustrating, yet the reality, is that learning these new concepts will take a considerable amount of time and effort. I won't be able to learn C# in a week, nor will I be able to learn the ins and outs of Data Science theory in a week. At the same time, I won't know how to run development projects for clients across various verticals within a week, nor will I get the real-world know-how I need to call myself a fully-fledged Data Scientist within a week - my mental capacity is only finite. One thing that's certain, though, is that I am at exactly the right company to make my journey as applicable, productive and captivating as can be!
A final word
One crucial thing I've learned during my time working at endjin, is not to be afraid of asking colleagues for help/guidance on particular problems/worries.
That's assuming you've either already had a good go at figuring it out, or decided that it's in no one's best interests (including, most importantly, your own) to continue trying to figure it out alone.
There's no doubt in my mind that the best way to learn to solve problems is by figuring it out yourself - but sometimes that point-in-the-right-direction is necessary.
I'm pretty sure I've been to each and every one of my colleagues about different things that I've had problems with, and drawn from their wealth of knowledge accordingly. Remember - there is so much you can learn from the people around you.
Bring on the next 35 months!