24 hours later: Ocado Technology reports from the GreatUniHack
For many cutting edge technology companies looking for fresh talent, hackathons are a great place to get an insight into what the future of the industry holds. The GreatUniHack is a large scale, 24-hour event hosted and organised annually by HackSoc, a group of computer science enthusiasts from the University of Manchester. As sponsors of the event, our tasks included mentoring the students, delivering a short workshop, and presenting the participants with a real world challenge designed to test their skills to the limits. The enthusiasm and talent we witnessed during the two days was incredible!
The day kicked off with presentations from all ten sponsors who introduced their respective companies and discussed the different technologies they work with. During this time, sponsors also presented their hackathon challenge. This was the task the hackers focussed all their energy on from 12pm on Saturday until 12pm on Sunday, so it needed to be good! We approached this with very high expectations, as the whole point was to push all participants to the limit of their abilities. It was because of this that we decided upon a real world challenge we face every day at Ocado Technology: cubing.
Cubing is the complex optimisation problem of packing groceries for a customer order as efficiently as possible using the least amount of containers, while also adhering to a set of strict constraints. In our highly automated warehouses, we use a cubing algorithm developed in house to calculate the number of containers required for an order and decide how best to group the items of 260,000 weekly orders into bags.
In a perfect world, we could simply fill a container with as many products as it could fit and send it to our customers. In reality, however, we have to comply with various constraints such as which items can be placed in the same bag (for example placing bleach and bacon in the same bag is clearly a no-go), the maximum weight of the container, the mechanical properties of each item in relation to other items it could come into contact with, etc. Our current algorithm is the product of seventeen years of hard work and continual optimisation, so we simplified the problem space down to ten key constraints to make a solution realistically achievable within 24 hours.
While the hackers were hard at work, our mentors remained on hand to help any students looking for an experienced software engineer’s opinion on their ideas.
As the end of the hackathon drew near and solutions to our challenge started filtering back to us, we were incredibly impressed with what the teams had accomplished in such a short space of time. We were not expecting to necessarily see anyone fulfill all of our constraints given the complex nature of this 3D NP-complete optimisation problem, and yet two out of six teams complied with all ten constraints.
The winning team presented the best optimised of the two solutions and also demonstrated a fantastic work ethic and method to approaching the problem; as well as brainstorming ideas and working collaboratively on the task at hand, we noticed that they had a phase of research where they read relevant literature on the topic in order to make their algorithm as efficient as possible. It was amazing to see such talented and enthusiastic students working on real world problems, and we look forward to seeing where the future takes them.
In addition to setting and supervising the challenge, we asked Benjamin Phipps, one of our talented senior software engineers, to deliver a workshop on functional programming using Scala. The session kicked off with a brief overview of Scala syntax and introduced concepts such as the monoid and how it could be applied to a wide variety of problems, techniques that can be applied across many languages, and spotting functional patterns using an overarching example of calculating the receipt for a customer’s order. Hackers ranged from first year undergraduates to PhD students, meaning pitching the topic at an appropriate level was a challenge in itself. However, Benjamin did an amazing job of getting everyone involved and coding with the help of ScalaFiddle and it was incredibly refreshing to see the level of engagement and audience participation during the session.
All in all a great experience was had by all and we were very impressed by the level of enthusiasm and commitment (not to mention the stamina required to stay awake for the full 24 hours) demonstrated by all the students involved. We would also like to thank HackSoc for organising the event and our mentors; Kyriakos Chatzikyriakou, Zhuowei Yang and Miguel Trigueira for all their hard work.
While student organised hackathons are a fun way to explore the limits of software engineering, the cornerstone to the future of technology is a solid education. The industry is reliant on innovative young developers entering the talent pool in order to keep up momentum and stay fresh. We keep a keen focus on enabling the next generation to achieve in a digital world with our open source education initiative Code for Life, and our internship schemes which provide students with the experience of working within an innovative tech company.
Holly Godwin, Technology Communications Assistant