Summer at Judge0: Development, Design and Philosophy

In the summer of 2025, I worked as a software engineering intern at Judge0. During this time, I worked on the redesign and implementation of the new landing page and the creation of a custom blog system. In this article I want to reflect on the time spent at Judge0, talk about the experience of working for an open-source first company and briefly introduce some key ideas I learned along the way.

Meet the Team

I had the pleasure of working with Herman, CEO of Judge0, as well as Filip, an open-source contributor and the author of the Judge0 Python SDK. I also worked alongside Lovro, a fellow software engineering intern who joined at the same time as I did. Collaborating with them was both fun and inspiring and I learned a lot from their different perspectives.

Redesign of the Landing Page

The first task I had during this internship was the redesign of the old Judge0 landing page. The old version was over five years old and built with jQuery. It was very simple, with some unconventional UX/UI decisions and it also suffered from performance issues. When I first saw it, I knew that there was a lot of potential but that it was going to be quite a challenge.

The problems were obvious: fix performance issues, make it more visually appealing and help important information stand out via a better user experience.

I decided to use Next.js for the new version of the landing page as it would give me superior performance to the old jQuery version. I had also used Next.js extensively in my previous projects so I was quite familiar with the ecosystem.

The redesign part...now that was a challenge I knew was coming. I had barely any experience with design in my career so far but that didn't stop me. I started learning Figma, sketching out wireframes and creating mood boards. I had to go through many iterations of the design before I was happy with the final result. And to be honest, I think I gave Judge0 a great new look.

Custom Blog System

As an addition to the new landing page, I also wanted to create a blog system which could help the team at Judge0 share knowledge and news with the community and rank higher on search engines.

For this I decided to create a custom solution instead of relying on some third-party framework or library. This made it easier to have the same theming as on the landing page and helped me add things I wanted to add, like the author page and table of contents in a way that fit our style.

Long story short, I created the system using a custom Remark parser to parse markdown articles from the content directory. This ensured that we could leverage all the benefits of Next.js, primarily its static site generation (SSG) capabilities.

In the end we ended up creating the blog, a blog which will hopefully one day be respected by a lot of people. In the meantime, you can go ahead and check it out here.

Herman's philosophy

One of the best things to come out of this internship for me was listening to Herman's philosophy on software in general and his approach to running the company. Mind you, Herman has been running Judge0 for more than 9 years at this point so it's fair to say that he knows a thing or two.

The first thing that stood out to me was his pragmatic view of software and his insistence on quick iteration. At first this stubbornness was weird to me. He used to say:

Don't let perfection get in the way of completion

I struggled with this in the past because I tended to over-engineer solutions. I would think of improvements and how I could find the best thing to implement. Then, even when I had a good working solution, I would spend hours again on thinking about how I could improve it and optimize it. I would think about what I could add, what new features I could implement, but in the end I would just lose myself in the process. Now looking at it, this is probably the reason why I have so many unfinished projects.

The second thing he talked quite a bit about is companies which focus on simplicity and longevity. Today everyone talks about millions in ARR, huge seed rounds and exceptional exits. This might be an amazing thing for the founder who worked tirelessly on his startup, but for the rest of the company, not so much. Sleepless nights, following the 996 founder routine, the constant need to innovate and adapt to the market... that's not normal!

However, there are companies which were founded 10+ years ago and survived the ever evolving market, changed programming languages, frameworks and technologies and all of that without sacrificing employees' work life balance or sanity. Herman was really clear on this. He would rather have a company which works, feeds families and helps innovate than a company which is big and glorious but loses the essence of what a software company is. Chasing more revenue, more employees and bigger numbers often leads to nothing but more stress and less happiness.

Judge0 kept to its core values and principles for over 9 years. That's a huge feat and I'm really proud that I could have been a part of its story.

Conclusion

My summer at Judge0 was more than a three month internship. It pushed me out of my comfort zone and helped me grow as an engineer, maybe even as a designer (a bad one for now).

Judge0 showed me what makes a great company great. It's not about the numbers, the revenue or the market share. It's about the company's core values and principles and most importantly its people.

I’m deeply grateful to Herman, Filip and Lovro as well as to all the open-source contributors who helped make this company what it is today. I wish the best for the Judge0 team and hope to one day have a great company like that myself.