On day one, as soon as I collected my pass, I went up to Man AHL's floor and found my mentor waiting for me. He helped me set up my user account and dev environment. This entire process was very efficient. I'd heard horror stories from people on other internships where this took as long as a month! With setup complete, my mentor gave me an informal introduction to Man AHL, and how the different teams work. A little less than a week later, the other interns and I had a more formal introduction to Man AHL and Man Group, where we were shown presentations from each part of the business, providing an insight into how they work individually and together and the various ways in which they contribute.
After completing my induction, my mentor and I went on to discuss the project I would be working on during the internship. In our initial conversation, we scoped out the general goals of the project, what we wanted to gain from it and what the best first steps would be so that we started by moving in the right direction. We wanted to create a service that facilitated the collaboration and presentation of Jupyter notebooks. The goal was to create a platform that allows users to expose notebooks as web dashboards. Jupyter notebooks are easy to produce and so the platform allows users to create prototype web applications relatively effortlessly. After some initial analysis and investigation, the scope was focused from having a monstrously powerful platform, which was a version-controlled social network of notebooks, to a still-potent searchable interactive web dashboard service which anyone can contribute to through a repo managed by git.
The software development process at Man AHL follows many modern Agile practices, and the central git repository and pull requests allowed me to efficiently structure my changes and collaboration with my colleagues and mentor. The feedback that I received from pull-requests was an important part of the learning process during the internship.
We also had weekly meetings with the other interns, where we each had 5 to 10 minutes to present what we had been working on for the week to our mentors and our line managers. As much as this was intended to provide visibility for our progress and any potential blockers, I also found that it helped me structure my daily workflow as well. With the end of the week presentation in mind, it was easier to prioritise tasks.
Opportunity and Challenge
Working on my project was an exciting opportunity to create not only an interesting and useful tool, but also to learn a lot more about some of the frameworks and technologies needed to deliver it. I gained a deeper insight into how many of the core technologies actually work.
My project also had to scale nicely for multiple clients, so to serve requests I decided to use Nginx as the web server to reverse proxy to the different services. I had some experience with Nginx before joining Man AHL, but I used this project as a platform to grow and extend that knowledge. A lot of the challenges that arose from this were more to do with configs not behaving as I expected them to, but breaking things down and growing the config incrementally definitely helped.
In technical terms, the largest challenge was getting Docker to behave on CentOS. Developing on Arch/Ubuntu at home, I find controlling Docker to be relatively painless, because I'm usually the only one using that machine and have root access. In an enterprise environment, the setup was naturally more bespoke and involved. In my case, I found that the Docker images that accumulated during the development process were taking up a lot of memory. To resolve this, I ended up writing a small script to clear up my development environment regularly. The script had to delete all my container images, any stopped containers, any dangling images and any dangling volumes, all while making sure not to delete any other running containers for any other projects running on the same machine. Needless to say, I learned a lot more about how Docker works and how well-constructed Dockerfiles can significantly reduce the memory footprint.
The time I spent at Man AHL gave me an insight into why the firm is so good at what it does. Beyond hiring high calibre people, it invests heavily in the employee experience with a lot of extra classes, seminars and social events. Man AHL takes a collaborative, performance-first approach. No matter the problem, there is always an expert at hand. The dedication they have to quality-driven development was a pleasure to witness – it has been a wonderful experience.
Apply for a Summer Technology Internship
Man AHL is offering summer technology internships, which run for 8-12 weeks, based in our head office in London. This is a great opportunity to join one of the most prestigious tech teams in systematic trading. To learn more about the internship opportunities and to apply, please visit our careers site