In 2021 I first started at endjin for a summer internship. I worked with three other interns to create a synthetic customer data generation tool to create statistically accurate "fake" data which could be used to create large volumes of realistic data for testing scenarios for endjin's customers. I loved the whole placement, so when endjin offered me the opportunity to come back for my Year in Industry, I was very excited.
A year later I was able to start at endjin for my placement. On my first day I met Howard and other members of the team, where I received my new laptop and had a catch-up on the past year, and what has changed.
What is a year in industry?
As part of my Bachelor of Engineering degree at York, I had the option to take a 'year in industry'. This is a special adaptation to the course which includes 'year in industry' in the title of my degree. The aim of the year in industry is to ensure that when we graduate we already have real wold experience of working for real organisations on real projects, rather than just having theoretical knowledge. Then, when we go back into our final year, we have a greater understanding of what we're learning and why, and how it applies to the real world.
With endjin previously offering summer internships and graduate apprenticeships, having a student who was in the middle of university was very different, so required a bit of a different approach. endjin designed my year in a way that I would have less training, and more practical work, meaning I could get stuck in right away and have work to demonstrate what I'd done over the course of my placement.
This is why Howard proposed we spend the year focusing on implementing OpenChain ISO 5230 - the international standard for open source compliance across endjin's open source estate; a self-contained project which would take me through all different stages from it becoming an idea, to being a fully working process.
The OpenChain project
The OpenChain project was my main piece of work throughout my placement. I started off at the beginning with no idea what OpenChain was, and very little knowledge of licensing. To begin with I completed the Introduction to Open Source License Compliance Management - By the Linux Foundation, which gave me an overview of what the different types of licenses were and why you should/shouldn't use each one.
I also took Source Code Control's 'Getting it right with open-source software' course which covered an introduction to open-source licenses, their types and uses. It went into how to stay open-source license compliant, and what that means, which relates to our OpenChain project. I was kindly gifted access to the course by Holly Wyld from Source Code Control who has provided us invaluable information for working towards being OpenChain compliant.
We had several meetings with Source Code Control to discuss our methods and ideas to become open-source complaint, which was useful to gain information about what the certification is looking for, and how more specifically we could implement it. I found it was great experience to talk with external organisations on the work I was doing, as I was able to discuss my ideas and opinions.
From start to finish, we designed an ETL process where we generated SBOM (Software bill of materials) data from DevOps processes, processed and cleaned this data in Synapse, and then published it to our Backstage site so that it could be tracked and managed. I wrote a more in-depth blog post about the processes involved in becoming OpenChain complaint if you're interested in seeing how we implemented it.
Over my time at endjin I was excited to get the opportunity to meet the team in person for a team meet-up. The first meetup was in London at The Sutherland Labs, it was my first time seeing everyone since I had left from my summer internship the year before.
The second meetup was in Oxford, within the University. I did a presentation on Architecture Decision Records (ADRs) which are used to document architectural decisions, what changes were made and why they were chosen. I put together a PowerPoint presentation and had cards as prompts. I loved the opportunity to be able to present in-front of an audience to develop my confidence and clarity.
Writing blogs were a big part of my job at endjin. They were great to write as it gives you an opportunity to summarise a topic in your head, and by getting it down you find it's easier to process and understand. This was really useful when I was first introduced to my OpenChain project, as there were a lot of terms and concepts I hadn't touched on before, as it allowed me to transform the thoughts from my head into written words, which in-turn highlighted areas I didn't understand as much as others.
Some of the blogs I wrote during my placement included:
- What is OpenChain and why is it useful? - Part 1
- What is OpenChain and why is it useful? - Part 2 - What are the risks with open source software?
- What is OpenChain and why is it useful? - Part 3 - the OpenChain specification explained
- My year in industry so far
- Creating Pester unit tests in PowerShell
- Working with JSON in PySpark
- Exploring OpenChain from License Compliance to Security Assurance
At the beginning of my placement at endjin I hadn't had much experience of talking in-front of people, especially about what I'd been working on, and trying to explain a concept. At first I would speak really fast, and when I came to an end I wasn't even sure what I'd said!
At endjin, there are three meetings in the week where I could talk about what I've been working on.
- There are two 'Team Sync Up's where we talk through our plans for the week and how much we have progressed.
- At the end of the week we have a 'Show and Tell' where we have the opportunity to showcase anything interesting that we've been working on that week, at first I felt I had to prepare lots for these talks, I would spend lots of time putting notes and slides together.
The more that I was able to present to the team, the easier it got. Now I feel comfortable pulling up some work I'd been working on and talking through what I'd done, and why.
This has been a huge step, as I am now able to convey my thoughts and progress in that moment, rather than having to prepare in advance.
Another skill I've developed is time management. Before coming to endjin, I hadn't planned my week's work before or tracked my progress. In managing a project, it is important to know everything that is being done. Additionally, it is important to plan when working with other people as you need to organise collaboration time around their other commitments. Halfway through my year, I organised an OpenChain meeting with James Dawson so we always had a time in the week to chat about what I was working on, this time was blocked out so it meant we almost always had a catch up.
As there are many different streams of work for the OpenChain project, it was common that I was working on two separate parts of the project in the same week. It's beneficial for me to keep track of what I'm doing, but also so that if anyone else needs to know what's been going on, they can easily see.
To plan and stay on track I used a GitHub backlog which allowed me to track my progress. As endjin work in weekly iterations, that's how I planned my work. This meant that by the end of the week, we would have something of value to share in our team 'Show and Tell'. I'd assign the different tasks that I felt I would be able to achieve that week from my list of 'to-do: next' tasks. There are two things to take into consideration when making these decisions: risk and time estimates.
I'd estimate the 'time' each task was going to take me using a small (half a day), medium (a couple of days) and large scale (more than a week). If I saw that a task was medium or large, I would try and break it down into smaller and manageable tasks, which make it easier to progress and track what you're achieving.
The second category, 'risk', is the risk that it could be longer than this estimate, for example, if I'm starting a task and I'm unsure how long it will take, it would be a high-risk task of not being completed that week. Once I have completed a piece of work with tangible outputs, I submit them for review and once they've been approved, I'll move them to the 'Done' column.
At the end of each week, I'll review my progress and then plan for the next week, so that come Monday morning, I have a clear plan for what I'm meant to do. This also meant that if I felt I would need help from someone else on a task, I could plan this in advance so I'm sure I can speak to them that week. I found that each week, as I acquired more knowledge and experience with the work I was doing, I became more accurate when making predictions and planning for the next week, meaning I was more likely to meet my goals.
Going back to uni, I aim to plan my week more thoroughly, so that I ensure I finish the work I was meant to do that week, and any extra reading or studying I intend to do on the top. This will allow me to prioritise what is most important, and make sure I don't fall behind. I plan to use a GitHub to do this, as it will allow me to plan weekly, and track my progress from the week before.
Technologies used in my placement
Before coming to endjin, I had very little knowledge to what cloud computing was. Now I am familiar with Microsoft Azure and have used Synapse many times throughout my year. I have used PySpark in Synapse Notebooks which I can then build into pipelines.
What I'm going to take back with my to Uni?
When I first joined at endjin, I thought that 'success' with a task was being able to figure it out by myself. After a while of working largely independently on tasks that I was stuck on, I was wasting a lot of time. Then I started pushing myself to ask for help when I was stuck on something. If I thought I could figure it out by myself, I would set a certain amount of time aside to work on it, but if I knew that someone else would easily be able to give me guidance I would ask for help. When going back to university, I'll be sure to go and speak to the lecturers and professors if I find there's something I'm stuck on or if there is something I'd like to talk more about with them.
The regular whole team meetings and end-of-week 'show and tells', gave me many opportunities to work on my speaking skills. When I started at endjin, I was very nervous about these and planned lots in advance, including notes on what to say. The more presentations I did, the easier I could speak clearly and process my thoughts to convey what I meant. Towards the beginning, I'd finish my presentations and be very unsure that anyone could have understood what I meant! I'd like to hope now that I come across less flustered and am able to speak slower, focusing on what is essential and key in the presentation. Going into my final year at uni, I know that there are presentations as part of our assessments, and I now feel more ready for these as I know I can convey myself when speaking in front of an audience.
How my placement has changed my idea of the tech industry
This year has given me many deeper insights into the tech industry. I discovered that there are so many more different strains of computing than I had ever realised, including data engineers, software developers, DevOps engineers.
After working a year with endjin, I know I would love to work in tech and would love to explore the possibilities of the range of roles as seeing how much variety in the tech industry makes me want to have a go at everything! I'm grateful for the exposure I have received and would love to build on this in my final year at uni. I have created a list of projects I would like to have a go at so I have a well-rounded knowledge and understanding of computer science and what each role does, from web development and business analysis to UX design, games development and cybersecurity, I'm always excited and willing to learn more.
I have a particular interest in data which has been highlighted by the work I've done this year, and love how it can inform business decisions. I would love to continue working on complex data projects. Since taking business as an A-Level I have loved learning about market trends and business theory, so I'm hoping I can incorporate both business and data, and in the future I hope to start my own business.
I feel I have gained a lot of confidence from working at endjin. I started my degree not having a background knowledge in Computer Science, which put me on the back foot, when coming to the endjin it didn't matter that I didn't know lots of high complexity tech things, just that I was enthusiastic and excited to learn. This really helped me feel I was capable of solving problems I didn't think I could solve, and that my business skills which were strong prior to my internship were worth as much as my technical skills. I'm excited to see how I find my final year of university now that I have a wider general knowledge of computer science and more specifically data.
I've found the diversity of my project really helpful when considering career options. When looking for an internship I knew that I had a specific interest in data, however, I didn't know what parts I was more interested in, or what I found interesting about it. Along my placement, I was able to have a go at working with lots of different data types, and all the different stages of a data project, starting with collecting raw data, moving on to cleaning it and finally being able to use it to inform business decisions or spot threats. I got to use use Azure to store and process my code. More specifically, I used Azure's Synapse to run PySpark notebooks which would wrangle the code. A big part of my project was using Pandas to analyse and process code, I found this to be an invaluable tool which can be used both in pure Python and PySpark.
I also discovered I was interested in automation and DevOps. I learnt how to put processes together, and verify that they've done what you expect them to - for example using testing. It means you can distribute the code you have created quickly and automatically. In the OpenChain project, we used DevOps lots of times, one example being a workflow that packaged up some Python code and stored the execution file as a release in the GitHub repository.
Overall, as my placement comes to an end, I am so grateful for everything I have been able to learn and experience this year, it is invaluable. Everyone at endjin is enthusiastic about what they do and will never hesitate to help or share what they are working on. I would love the opportunity to work with endjin again in the future. I currently have plans to pair with endjin for my final year project where I will be looking into OpenChain ISO/IEC DIS 18974 - the industry standard for open source security assurance programs.