Carmel is studying a Physics MPhys at the University of Manchester. She made contact in April because she was looking to gain some real world software development experience during her summer break, before her final year at University.
During her two month internship we tried to expose her to as many different aspects of endjin as possible; from New Proposition Development, marketing, partner & business development activities, as well as our software engineering processes and the Microsoft Azure ecosystem.
If you are interested in a paid internship, take a look at the internship section on our careers page.
So this summer I was lucky enough to intern at endjin, and this is my attempt to summarise the experience in the hope that I can give some insight into entering the world of software development.
When I started at the company I had very little idea what to expect. For a bit of context, I am about to go into my master's year studying physics at Manchester University and through my course I had done a bit of programming in C++ and using Matlab. However, as anyone who has made the transition from the study of coding to a working environment will tell you, programming is a very different ball game in the classroom to in a professional setting (more on this later).
I spent my first couple of weeks here in a world of New Proposition Development (NPD) and marketing strategies. This was extremely interesting as I had never experienced anything like it. Not only was it an incredible insight into the process involved in the creation of a marketable product, it was also a great introduction to the working model at endjin. We spent many hours brainstorming and discussing different aspects, it was a real creative process which I think the working environment here brilliantly encourages. As part of this process I also had my first exposure to the various aspects involved in professional programming. This included the use of GitFlow, Specflow, VSTS, and many, many other acronyms (these became an extensive list in the back of a notebook, which I have referenced many times over the last two months).
Alongside these NPD projects, I was given some smaller projects to work through on my own. I was given a lot of support in working on these but I was also allowed to figure out many of the details for myself. It was an extremely valuable learning experience as I was given the help I needed to learn about the different aspects of programming in a professional environment, but also allowed enough freedom to really develop these skills and experience working in this setting. Endjin's main technical focus being the Azure platform and Data Science, I gained a lot of invaluable knowledge of these subjects about which I was previously almost entirely ignorant. However, the projects were not limited to this, they included data generation and analysis for endjin's IOT Anomaly Detection Platform, but also building Slack integrations and content harvesting and publishing. I really enjoyed the wide range of areas I was involved in as I felt I was gaining a much wider view of the endless possibilities and opportunities in this sector.
I was writing mainly in C# at this point, which of course involved a lot of searching the web for syntax (StackOverflow received a lot of traffic from my machine this summer), but it was a relatively smooth transition from C++. However, as I have already mentioned it is very different to writing code in the classroom. I think the main difference arises because of the fact that when you are learning, you are recreating code which has been written thousands of time before. This is, of course, necessary in learning the techniques, however those are the parts of the code which in a professional setting we avoid writing. The re-using of endjin's Intellectual Property (IP) is a huge part of the process. While this meant that I did spend a lot of time swimming in names of variables and functions that I was not entirely sure what they did, it was exciting as I really felt I was producing something worthwhile. Also, having access to code written at this level gave me a lot more of an idea what I was working towards.
As I progressed, I began working on things more and more independently and feeling more comfortable with a lot of the concepts. It was still an extremely steep learning curve, as I tried to get to grips with R, LINQ, SQL and Azure WebJobs. But through a combination of determination, Google, and the extremely patient help and support of everyone else at endjin I gradually began to feel more at home in this world.
Alongside the independent work I was doing, I got to pair with other members of the team on the various projects that endjin were currently working on. The main project I was involved with was largely centered around building a new content managed website; this involved both design, using a CMS (content management system) and also behind the scenes coding to add various features and fix bugs. We were working on this using Vellum, endjin's Azure based CMS, and it was really interesting to be able to use the interface for the design elements of the project, and also be able to edit that interface as necessary. This gave me a much more in depth understanding of exactly how web development works, as I could appreciate the tools that the designers use while also understanding how these tools worked at an underlying level. For this project we were using AngularJS, CSS and HTML, none of which really I'd seen before. I must admit that it took me a long time to get my head around how all of these worked together (and I'm still not entirely convinced of my knowledge) but seeing how they can build up a complex website was fascinating.
Overall endjin have provided me with a truly invaluable experience, I have gained a huge insight into both programming and the industry as whole, and it was made all the more enjoyable by the welcoming and enriching environment created at the company. I began this summer with only a vague idea of what might be involved in software development, and I am ending it having gained a lot of knowledge and skills which I very much intend to use again. I can wholeheartedly say that though it has been challenging and at times frustrating (amidst my many battles with SQL servers), it has been an extremely rewarding experience.