From start to finish: my internship at endjin
Hello, my name is Thea and I have the privilege to share with you my experience interning at endjin. Before I start, a little about myself: I'm a 3rd year in a MEng Biomedical Engineering degree at King's College London with very little experience in a software development environment. I realised that a lot of the things I enjoyed about my course were the programming aspects and so, I wanted to find external work experience in a software engineering role.
The application process
I came across this position on my uni's careers page. The application/interview process was very straightforward; send a CV with a cover letter, a 1-to-1 video interview (you'll be happy to know it was a real person, not a pre-recorded one!), a pairing session with a senior endjineer to solve a couple of programming problems and finally a 'meet the team' which felt less like a part of the interview process but more of a general get-to-know-you which was comforting.
Prior to applying to endjin, I had a thorough read of the blog posts on their website. It became clear very quickly that endjin put their people at its heart, valuing both their professional and personal development, a refreshing insight amongst the many companies I had looked into before. With this initial perspective of the company, 6 weeks later, I'm happy to say this still holds true. These values sink into the company, and it shows, not only explicitly through retrospective opportunities such as through their professional development platform Career Canvas but also implicitly through the mutual trust and friendship between the team.
My first week as an intern
Until the start of my internship, I had only been exposed to Python, C++ and (the engineering student's favourite) MATLAB but by no means was I an expert at any of them so I was fairly anxious about whether I'd be out of my depth being an intern at a tech consultancy. Thankfully, as I immediately found out, endjin wasn't the sort of company to expect a 20-year-old to have 25 years of tech experience under their belt and understood that this was a massive learning opportunity for us, for which I am very grateful.
On my first day, I was immediately welcomed and soon after met with a host of tech jargon (and this was just setting up my laptop for work!) but I embraced the uncertainty because one of my main goals from this experience was to soak up as much information as I could and be able to put them into practice by the end of it. Fuelling this, I was introduced to Advent of Code, an advent calendar of programming challenges which I used to put into practice what I had learned in the C# courses we took in parallel. Though intimidating at first, the more challenges I did, the more it became evident that the same basic structures/patterns I learned at uni could be applied, and thus making it easier to learn new and unfamiliar languages like C#.
During the week, I also had the opportunity to sit in on a Brain Trust meeting with a client. These are allotted time that clients hire endjin for to get advice from them. For me, what stood out from the meeting was the bottom-up approach endjin used for the client, starting from improving their work-life balance which would in turn have cascading effects into their professional development. It was evident endjin is an advocate for healthy work culture and this was another box endjin ticked off under the values-companies-should-have list.
At the start of the week, we were also introduced to the intern project which took up most of my time as an intern.
The intern project
The intern project focused on improving the Data Strategy Briefing offered by endjin to prospective clients as well as enhancing their demo. It began with transcript analysis using Microsoft Azure's text analysis service which uses a supervised model to output information from as basic as the length of paragraphs to the sentiment scores of sentences which was very cool to see in action. We then used Power BI, a business analytics platform from Microsoft which allows for interactive data visualisations and powerful data-driven insights to be easily understood through Power BI reports.
Power BI was definitely a learning curve and it took some time for me to get to grips with the basics. Part of the reason for this is because it uses a language called DAX which is like no other programming language I've ever seen before. It is reminiscent of excel but instead of making calculations by referencing specific cell coordinates, DAX uses tables and their columns, and to search for a given row, you must enlist one of many functions available in DAX.
For example, the below excel formula calculates total price of sale by multiplying the cells B2 and C2 which can then be copied for the rows below:
But in Power BI, to create a calculated column, we specify the table and column we want to multiply together like so:
total_cost = Sales[Quantity] * Sales[Unit Price]
This is because the data is stored in a columnar format which allows for speedier queries and reduced storage requirements. To access values in specific rows, we can use one of many DAX functions which introduces what's called a "row context", a more advanced topic, not within the scope of this blog. The FILTER
function is one example. It takes in a table and filter expression to filter the table down to only the rows that satisfy a certain condition, which is evaluated row-by-row.
We also utilised python and object-oriented programming to generate new customer data to allow for new business scenarios for the demo. These synthetic customers were created by augmenting several open data sets to ensure they were representative of the UK population. Tools such as Flake8 and pytest were employed to enforce the PEP8 style guide and ensure we had properly working code through several unit tests. Through this project, I've learnt that one of the best ways to go about a problem is to divide it into smaller, more manageable chunks, write functioning code for it and be open to various refactoring stages afterwards to improve readability and efficiency. It's far more productive to have working code and refine it later than to deliberate for hours on how to go about making it 'perfect' on the first go.
In contrast to a majority of work I did at uni, where most of it was motivated by the enhancement of an individual grade, the project was entirely collaborative. We worked together towards a common goal through brainstorming sessions using Mural, daily Teams calls and peer code reviews.
Each Friday we would present our progress at the end-of-week show and tell which was a great opportunity to develop my presentation skills as presenting has always been a weak spot for me. It also allowed for constructive feedback and for testing your knowledge to see if you've really understood the topic you're presenting. Being able to relay your thoughts and ideas clearly is key in any role and these weekly show and tells have been indispensable in developing this.
The company lunch at Cambridge
I'd be lying if I said this wasn't a highlight during my internship. Every 6 months, the company has a get-together for some lunch. But not just any lunch, no. I'm talking seaweed cured salmon, 80-day aged Hannan sirloin and stilton with granny smith tart Tatin (which you don't think would work together but they definitely do).
But food aside, it was also really great to see the friendly faces I'd seen on screen, but this time with the rest of their bodies attached and a lot of fun getting to know them in a non-work environment. Having been working remotely, lunch at Cambridge was also a nice change in scenery.
One of my worries prior to the internship was having to work remotely. Doing uni remotely for a year was demotivating and isolating, and I found that it negatively impacted my mental health. However, in comparison to the monotonous daily grind of watching pre-recorded lectures for uni followed by extended sessions of independent work, I spent a lot of time on teams calls with the other interns Klaudia, Charlotte and Amy, as well as with Barry Smart. With Slack and Teams, it was very easy to just hop on a call with someone whenever you wanted a chat. Moreover, having a dedicated workspace at home helped to free me from the distractions of younger siblings. It's also great that endjin acknowledges that a remote working environment may not be for everyone and offers an option to be able to work in a co-working space.
My last week as an intern
The internship has flown by and the last week has finally come. This week, we will be tying up loose ends in the intern project to be handed over to the apprentices. Looking back, it's amazing how much I've learnt in just 6 weeks. Many lessons were learnt on agile practices, the coding life cycle, version control, having good test coverage and good programming practices (amongst other things), all coming as a package deal with the intern project.
I'm now able to code in a language I was wholly unfamiliar with at the beginning of my internship and built core competencies within them as well as in data analytics, using new platforms such as Power BI. Through the coding challenges, I've been exposed to new data structures and programming patterns, and everyone was very receptive to any questions I had and very willing to help. My 1-to-1 catch-ups with Ian Griffiths were especially helpful in answering my questions and were always enlightening. He'd magically turn an if statement of 60 lines to just 16 using only a select few syntax changes and clever programming structures; a feat I hope one day I'll be able to do myself.
Being part of a small company, I've also realised that a software engineer does more than code. They're also data-driven, performing analysis on a wide array of different data types and sources and get stuck into other aspects of endjin such as writing blogs/articles. I've also gained insights into how businesses are run and organised.
Where to next?
One of my personal markers for a great internship is being able to learn something new each day. And I did just that; though I admit at times it felt a bit daunting and required countless google searches. But nothing great comes easy. With anything new, you should be open to all sorts of challenges that come your way because each one is a learning opportunity. I have learnt a mountain of things that will definitely be useful for me going forwards especially in my new modules next year. I'm also hoping to continue with advent of code as it's been helpful in introducing new topics to me and to keep building on what I've learnt through my own personal project.
I've thoroughly enjoyed every part of my internship, the company and its people. The experience has given me a taste of life after uni, and I'm now very excited to get into the world of work. I still have one more year until I graduate but regardless of where I end up after, I'm confident that my internship at endjin has more than prepared me for when I get there.