In the Spotlight - Benjamin Antal
In our first In the Spotlight series, you’ve met Jure. Now, you’ll meet Benjamin - our only Netherlands’ based software engineer! He joined the Core team exactly one year ago, and since then, he hasn’t stopped improving. If you ask anyone at Memgraph what Benjo’s greatest strength is, they will tell you, “it would be hard for us to pick one of his strengths as he has so many”! So, dig in and find out more about Benjo, his role at the Core team, and what he's passionate about below.
Can you share more about yourself - what did you do before joining Memgraph? When I joined Memgraph, I already had six years of software engineering experience. Initially, I started my career as a Java test automation engineer but, after two years, switched to C++. Since then, I have been all-in on C++ and have successfully contributed to a few different products of different companies.
My early experience at Tresorit significantly influenced my career and work philosophy. The engineering team there helped me realize that we should always aim to do our best, whether at development tasks, code reviews, answering simple questions, or just being a good human being. So, I always urge others to aim for their best regardless of the context. If you are doing everything to the highest quality you can, then there is nothing to regret in the future.
Since I moved to the Netherlands from Hungary, I have worked on different things, from data visualization in a physical modeling application to an event-driven traffic simulator engine for testing advanced driver-assistance systems, but I remained a C++ enthusiast.
Can you walk me through your career path at Memgraph so far? How did you start? I didn't have any hands-on experience with databases before joining Memgraph, except for my master thesis on benchmarking databases on graph datasets. I contributed a lot to the Social Network Benchmark of the Linked Data Benchmark Council (LDBC). So, I had some basic understanding of database systems but knew I had to learn a lot to work efficiently on any database. I learned a lot about Memgraph (as a product) and general database architecture through code reviews, online resources, and smaller development tasks.
At first, I mainly worked on smaller things and tests. Still, soon after, I took a deep breath and jumped into the deep water - I led the development of our Kafka integration from the design steps, through the development, until merging and releasing it. So if you have any issues with it, I am probably the person to blame!
More recently, I started to work on the biggest challenge of my professional career: figuring out and designing how to make Memgraph distributed. Even though it’s been a little more than a year since joining Memgraph, I think I have improved a lot. I gained a lot of valuable experience, stepped out of my comfort zone, and began to work more on planning and decision-making, which is the next big step for me as a software engineer. I will always want to stay more on the technical side of development, so leading the distributed project is the perfect way to experience and learn more about software design and ultimately help me move forward in my career.
So, what would you say the biggest accomplishment in Memgraph is so far? I think the writeable query procedures and leading the development of the Kafka integration are two features I am the proudest of here in Memgraph. I implemented checks to our GitHub Actions-based CI workflow. Since then, they got a few bugs in our code, which turned out to be a good addition.
That is really cool and nice to hear. Let’s now dive into the practicalities. What's your tech stack? Tricky question and so many options. Linux Mint 20.2 Cinnamon (an Ubuntu 20.04 based distro) and VSCode; I use CMake and Clang to build Memgraph; as part of our CI system, we use many excellent tools like Clang-Tidy, Cppcheck, and different sanitizers (ASan, LSan, UBSan). Our entire CI system is GitHub-based (repositories + GitHub Actions occasionally with our servers to boost the building process).
On the language side, I mainly use C++, but from time to time, I use Python (for E2E testing and some scripts) and bash scripts. Sometimes I also have to use pure C (our cross-platform client library and our CLI on top of that is written in C, and we also have CPython integration in Memgraph).
The language I have used a few times but would like to use more is Rust. I think Rust has the potential to replace C++ in the future and is a strong candidate for my favorite programming language :). I am always happy when I work on rsmgclient, our Rust client, or rsmgp-sys, the rust integration of Memgraph. Stay tuned for more of that!
That is quite plentiful! How do you stay on top of all that and your tech skills? I listen to a lot of podcasts mainly. Out of those, I want to give a shoutout to: CppCast, Two's Complement podcasts, and the r/cpp subreddit They are my guiding light for C++ and general software engineering.
Let’s talk about out-of-office stuff. How does Benjamin unwind after work? I recently started bouldering - that's wall climbing without ropes, but only up to 4 meters, and using big foam mats to protect us when we inevitably fall. Apart from that, I like biking and a lot of team sports. When I am tired after physical activities, I watch some series or play computer games if I am not working on some of my pet projects.
Your team, the Core team, is fully distributed. Each team member is in a different location, and you are all native in a different language. How has that experience been like? Is it difficult for remote teams to feel connected? As I always emphasize during interviews, for me, the team is not just a group of coworkers but more like a group of buddies. A friendly atmosphere elevates the team's morale and mood, so for us, it is natural to remain a team even in the most challenging situations and while being remote. Our daily meetings always give a friendly vibe for the day. I was afraid that in a fully remote job, this wouldn't happen, but the Core team proved me wrong.
In your experience, what do you think is key to successful remote teams? Communicating clearly and effectively is crucial in a remote environment because you cannot just poke the other person if something goes wrong. Ad-hoc communication always has some overhead in a remote job. That's why it is crucial to make the communication as effective as possible.
If you want to join Benjo in the Core team, or Memgraph in general, we have a bunch of open positions waiting for you to apply!