Before I applied for the internship at endjin, I was working at a fast-food restaurant to earn some money over the summer to get ready for my final year at uni. I had already given up on the idea of finding an internship, considering it was late June already. Despite losing hope, I was still checking my weekly emails from my uni's careers page which list opportunities I could potentially be interested in, and that's when I saw endjin's internship ad.
I knew I had to apply as soon as I read that it's an opportunity to see what a career in Tech looks like and you don't have to have a Computer Science degree. All you need is problem solving skills and a passion for learning which I definitely had. I sent my CV and in a few weeks got invited for an interview. I was very nervous as usual with interviews but this time I felt more prepared. I spent a lot of time reading blogs on endjin's website and the job description a few times more and it really felt like a good match for me.
Before endjin, when I was applying for other internships, I never felt confident, I thought I was applying for things I wasn't ready for or things that were not interesting enough to me to put in enough preparation time.
The first interview was a general chat with James Broome and Howard van Rooijen on why I was applying and what I had been learning at uni. The conversation felt really natural and although I was still nervous about how I was doing, it was definitely one of the most pleasant interviews I've been through. It's so much better to have a conversation with an actual person rather than recording yourself answering questions that were written down on some recruiting website.
The second interview was even better. It was a technical pairing session with Ian Griffiths, that tested how I think through a coding problem. It was interesting because it wasn't a test of what I already knew (I had never seen the language we were using in that exercise) but rather seeing how I learn when introduced to something new. That session didn't feel like I was being interviewed but more like solving a challenge, through which I was being supported the whole way through. I could ask as many questions as I needed to about things I was unsure about.
The final stage was meeting the team where again it was a general chat and everyone was nice and welcoming.
A few days after my final interview I woke up at 5am, to get ready for my 6.30am shift and I remember feeling very unmotivated to get up so I thought I'd go on my phone for 10min or so to help me keep my eyes open. That's when I saw the email saying I got the internship, which woke me right up and suddenly 5am didn't feel like 5am anymore.
I got really excited that I could finally start gaining experience in something that I was actually interested in, and not customer service which I wasn't particularly passionate about. I mean it was okay but not exciting, there was no challenge and I felt very stagnant intellectually. I really wanted to start learning new things again so getting that internship offer got me motivated and excited for the future.
The first week of my internship was all about getting set up with all the tools endjin use like VS Code, Git, github, Docker and other technology tools. Other than that I spent most of my first week joining meetings and shadowing people which was interesting because I got to see how they collaborate and what they were working on at the time.
Pretty much everything was new to me so I obviously didn't understand everything that was happening, but everyone was always happy to answer any of my questions and gave me a short introduction to what they were working on.
After the first week, 3 other interns joined and that is when we started doing courses, coding exercises and were introduced to the intern project. From the courses, I mainly focused on the C# fundamentals on Pluralsight which is a website that provides various courses. Along studying the course I was doing Advent of Code (AoC) challenges in C# whenever I had some free time when I had nothing else scheduled like the intern project or meetings. These coding challenges were small enough to tackle the problem within one day but also challenging enough to take a few hours (and got progressively harder with each day).
With each day I was discovering new topics starting as simple as reading a file using C# in VS Code, building up to extracting only particular parts of the file that were needed to compute the problem. What was also good about doing the AoC was the fact that after solving the problems myself I had sessions with Ian who showed me how the problem can be approached differently and using code that is more neat and compact.
When I was first introduced to the intern project, I wasn't sure how we were going to go about it. I had an idea of it but couldn't quite grasp it fully. Thankfully as we started doing things hands on with the code and data analysis tools such as Power BI, it all started making more sense with every week. Barry Smart, who is the leader of the project, was always happy to answer any of my or other interns' questions whenever we got stuck on things. I also liked how the project was structured.
The fact that we were always collaborating and never left with the project alone. It was a very good experience pairing up with other interns. When we were working on parts of the project, one person was sharing their screen and driving while the other was guiding and giving ideas on what to do next. I had a chance to be on both sides of this collaborative process and I really enjoyed both. Driving made me learn a lot more about the syntax and coding itself. It helped me notice some simple mistakes I make in Python such as wrong indentation or forgetting a colon at the end of a method for example.
I was used to programming in C and C++ before doing this project so python wasn't really that intuitive to me but I think I got adjusted quite quickly. What I also noticed was that switching from C# when doing the AoC to python for the project and vice versa wasn't as hard as I expected it to be. Once you're into that headspace of programming in one language in a particular moment, you kind of put most of the knowledge you have about the other aside.
Being on the other side of collaborating helped me see the bigger picture and allowed me to come up with more ideas since I wasn't focused on typing and was thinking about the next step while one was being typed by the other person.
Now, what was the project actually about? The goal of this project was to generate new representative, synthetic customer data to enable new business scenarios to be demonstrated. It involved optimizing Data Strategy Briefings which are one hour sessions with potential clients where endjin demonstrate how using cloud technologies and various data platforms such as Azure Synapse can improve the efficiency of the work they do and even lower the cost.
So, the main focus of the project was to improve those briefings to increase sales, to produce something that can be demonstrated to a potential client so they can see how powerful those cloud services can be and hopefully get endjin to help them get started.
The starting point was analysing transcripts of the briefings that took place in the past. We checked how often clients speak in those meeting, whether there was enough engagement and what type of questions they asked / what they were really interested it.
All that was done using a transcript analysis tool written in Python and then visualising the data produced in Power BI. The transcript analysis showed how much value prospects placed on the demonstration in the Data Strategy Briefing, so we decided to improve it.
Part of the issue with the demo was that it was centred on an a relatively narrow IoT (internet of things) scenario. We wanted to broaden the demo out to cover more use cases that prospects could relate to and to enable us to demo more of the features in Synapse.
For that next step we needed data. We decided to use public data such as census and land registry. Using that, we wrote code in Python that would generate fake people which we called synthetic customers, that had made up names, ages and employment statuses.
Although these customers generated were not real, they were still statistically accurate because we used the data to generate people based on real postcodes. Then next step was generating households and with those households we would generate people using the code written previously. Finally, we created fake products those customers were subscribed to.
Although the project is not finished, I think we made a lot of progress over those 2 months and now our work can be continued by the apprentices who joined a month after us. I'm really curious to see where this project ends up in a year or so. It will be cool to see how something I was a part of at the beginning develops into something bigger and more advanced.
Looking back, I think I learnt a lot during the internship. I learned how to use Python and C# (beginners level) which I had never used before, and understood object-oriented programming much better than I did before. I am now familiar with the whole code development lifecycle and with github and making pull requests, approving them and in general the whole collaborative process that github enables.
Now going into my final year of uni I feel more confident in my ability to learn new things and I feel very grateful for the opportunity that endjin gave me and for everything I've learnt over those 2 months.
Oh and I forgot to mention the company lunch which took place a few weeks before my internship ended. Matthew Adams and Howard organized a great day out in Cambridge where we could all meet each other in person. There was amazing food (lots of it!) and wine and drinks. It was so nice to meet everyone and the whole day was a fun time.