Blog 8.12.2023

Three practical learnings for your next hackathon

Competence

Intelligent Industry

A few weeks ago, we took part in a challenge, also known as Hackaton, as part of Agritechnica 2023. The aim of this challenge was to develop a proof of concept in just 10 days that solves problems of parallel route finding in fields in the agricultural sector. (Official title: Multi route optimization for autonomous infield machine collaboration).

A small team was formed for this purpose, which was able to solve optimization problems, represent them graphically and develop them close to the agricultural scenario. Due to the small team size, decisions and problem solving are much more efficient than often in large departments, the “power of small teams” is indeed powerful.

The great thing about hackathons like this is that you can work on the technologies of the future and drive them forward. Who knows, maybe the solution you come up with will be the new standard in the future?

Of course, the challenges are not easy, otherwise they would have been solved long ago. Then there is the enormous time pressure, but perhaps some of you will be familiar with this as the deadline approaches. You have to concentrate a bit on the essentials in order to make progress. However, we software developers often tend to “overengineer” – i.e. spend far more time on small details than necessary or develop far too complex solutions for simple problems. Alongside back pain and short-sightedness, this is another occupational disease of software developers. However, you don’t necessarily have to see this in a negative light, it’s often simply a curiosity to try things out, develop and learn. You want to understand how the whole thing works under the hood. In addition, there is usually a small portion of vanity and that’s why it’s best to do it yourself.

As we had to develop from scratch for the challenge, there was of course an enormous risk for us of trying to solve much more than necessary. You try to take all risks into account from the outset and define structures and processes as far as possible so that you can get started straight away and run through everything. It is true that good planning is extremely important and must not be neglected under any circumstances!

However, we didn’t do any of this because we weren’t really sure at the beginning which direction the development should take. That’s why we first sat down and, similar to design thinking, thought about what the problem and possible solutions could be, what the task setter actually wanted. What solutions already exist? What is still a concept and what has already been implemented?  The methods of design thinking help enormously here to focus on the actual problem and develop solutions that also address the customer.

During development, we sat down together again and again to think about how to proceed. In doing so, we were always guided by the following development ideologies:

1. Don’t reinvent the wheel!

This is one of the biggest factors in software development where a lot of time can be lost. Regardless of whether you are starting from scratch, as in our case, or if you have to adapt something that already exists, there are already solutions or approaches somewhere. In our case, we were also able to use approaches from graph theory that had already been successfully tested. So it was worth paying attention during our studies after all!

2 KISS as much as you can

Keep it stupidly simple. That’s all. Don’t build in any super-cool logging mechanisms (I keep seeing that, huh?) and don’t try to design the software as an egg-laying jack-of-all-trades. The simplest solution is the best.

3. Stay agile!

Since unforeseen things always happen in IT, often despite extensive testing, you have to be flexible. Both in the choice of technologies and in the implementation in the code. If you have a plan that is too detailed, you have to remain agile enough to be able to react to changes.

Am I telling anyone anything new here? Probably not. Do people still often not stick to it? Probably.

A lot of it is instinctive, of course. Even more so when time is short and it’s basically nothing new. Even though time was tight right from the start, these and other guiding principles helped us a lot to keep our focus and reach the goal, namely the end of the challenge with the presentation and demo, without any major problems. The presentation itself at Agritechnica, the world’s largest trade fair for agriculture, went smoothly and we were very convincing. In addition to 2nd place, it brought us a lot of attention and new contacts! Networking is the be-all and end-all at such trade fairs and when people approach you there because they have watched the presentation, it makes it easier and even more fun!

The whole challenge itself was of course also very exciting and we learned a lot of new things. But you mustn’t forget that although there are many principles such as “please don’t overengineer”, you can and must still try out a lot. That’s why you should always take the chance if you have the opportunity to take part in a hackathon. Congratulations once again and many thanks to the whole team, we did a great job!


Find out more about the collaboration in the agricultural sector with our customer AGCO.

Dominik Nöth

Software Developer

Dominik has been working as a software developer in the Embedded Development department at Gofore Germany since 2023. In addition to hardware-related software development, he enjoys working in various areas of artificial intelligence such as reinforcement learning and machine vision. Making his own small sensors to make the home smarter is also a must in his free time. His biggest hobbies, however, are music and photography. In addition to a small guitar collection, he also enjoys playing the piano from time to time. In tune with Finnish culture, it's mainly rock and metal, of course.

Back to top