Interview with Daniel Moka

Interview with Daniel Moka

Please introduce yourself

I am Daniel Moka from Hungary with a mission to help software crafters master Test-Driven Development and Extreme Programming.

Tell us a bit about your journey in software development and what led you to focus on TDD.

I spent 8 years abroad, working in many different countries like the Netherlands, Austria, and France. When I started learning programming, I was lucky enough to have good mentors around me to learn from. I was introduced to TDD right from the beginning, but it didn't really click until a few years later. The thing is, to do TDD successfully, one first needs other engineering skills as prerequisites, such as how to write clean code and testing best practices.

Since the first days, I fell in love with coding and TDD, and I reached the point where I have around 100,000 followers on all platforms combined learning from me. I love helping others.

Now I am working as a freelancer and a hardcore developer with the goal of making a significant impact of the people I work with.

What does a typical day look like? How do you balance your professional responsibilities with your personal life?

I work as a freelancer, so I have no strict schedule; on the other hand, I work a lot, sometimes 12 hours a day, and even on weekends. Software engineering is both my passion and my profession, and after 10 years in the business, I still love coding and writing every bit of elegant software solutions. Of course, I try to balance it by doing sports (running, gym, calisthenics) every day and spending a lot of time with my loved ones to maintain balance.

My typical workday involves a lot of coding and collaboration with my team members.

What were the most challenging projects you worked on, and what did you learn from these experiences?

There was a legacy project back then where we needed to change existing code and add a lot of new features. The codebase was poorly written and not well tested. This project really taught me the importance of clean code and well-designed software, how to refactor code safely, the power of mutation testing, and many other exciting aspects of quality software engineering. I remember joining the project when it had around 1,500 unit tests; when I left, there were about 16,000, so there were plenty of learning opportunities.

How do you stay up to date with the latest trends?

It's quite easy; following the right people on social media helps me stay up to date.

What are your favourite tools and technologies currently, and why?

The Rust programming language takes it all; it is the most elegant programming language I have ever used. It natively solves many problems and design issues frequently found in other languages, which can be a pain to work around.

Rust has no NULLs, safe error handling, immutability by default, many cool high-level abstractions, and a thriving community and ecosystem. Writing code with Rust together with a solid IDE from JetBrains is all I need to be a happy developer.

I can highly recommend Rust to everyone; it will make you a better developer. Not to mention, Rust has gained a lot of traction lately, and FAANG companies are doubling down on it. Because it is the best.

How do you see the impact of AI on the profession? How do you think it will affect your daily work?

I use it mainly for inspiration, sometimes reviewing code snippets I have, and also learning new things about the problem domains I'm currently solving. It helps a lot and saves a lot of time. We are far from AI replacing developers, but we need to leverage its power; otherwise, we would be left behind.

You currently have more than 53K followers on LinkedIn. People are clearly interested in the things you share. What is your goal with this presence?

My goal is to help as many people as possible master Test-Driven Development and Extreme Programming. These practices are still used only by a minority, so there is much room to grow.

You have a newsletter called Craft Better Software, about Test-Driven Development (TDD) and Extreme Programming (XP). You haven't published a new issue in a while. Can we expect a continuation?

I just published a new post about “Why You Need TDD.” You can read it here: https://craftbettersoftware.com/p/why-you-need-tdd

From now on, my audience can expect more frequent posts. I already have many exciting ones in my draft list, so stay tuned!

Can you share your work philosophy and how it has influenced your career decisions?

Be kind to everyone; it’s free. Whenever you collaborate with someone, give more than they expect. Be transparent with your work. Be honest. Trust others and be someone others can rely on. Be a developer everyone wants to work with. Software engineering is a social activity, so first we need to work on our soft skills to succeed in this industry.

As for influencing my career decisions, I always try to find teams where my members share similar philosophies. So far, I can only be grateful for my previous and current teams.

What are some of your future goals? How do you plan to achieve them?

I am not a big fan of sharing goals, as it releases dopamine for things I have not achieved yet. So, I will first work hard on them, then share them. I will share my achievements on social media, so people who follow me will be notified. :)

What advice would you give to a newcomer?

If you want to stand out in this industry, strive for quality. Master testing and TDD; these will give you the highest confidence when you write code. Find a team you can learn the most from. Surround yourself with mentors and challenges. Optimize for learning, not just for doing.

And most importantly: eat healthy, exercise daily, don't drink or do drugs, and surround yourself with your loved ones. Life is short, so enjoy it to the fullest within healthy limits.