Tell us a little bit about yourself.
My name is Anton Angelov. I come from a little European country called Bulgaria. I have more than eight years of experience in automated testing and have worked in various roles such as QA architect, consultant, and programmer.
Nowadays, I am heading my own company called Automated The Planet, which produces test automation frameworks and tools, such as the Bellatrix test automation framework.
Besides that, I love reading, not only technical stuff, but books about contemporary psychology, anthropology, physics, biographies and many other topics. Most people are shocked when they hear that I like high-risk activities such as skydiving, bungee jumping, extreme rock concerts/festivals and even a visit to Chernobyl.
How did you get started in programming?
As far as I remember, my first attempts were back when I was in the 7-8 grades. I was trying to create a crack for a PC game. After that, we had classes which taught how to program on an ancient programming language called Pascal.
What are some of the languages you use today and why?
Primarily, I use C# for most things. I love it as you can write almost anything on it, of course, combining it with the many Microsoft technologies. I love the new .NET core. What can I say- I am a Microsoft boy.
In addition, for DB I use Microsoft SQL. It is uglier than C#, but in some cases it can save you. To be honest, I really hate it when I have to test it. For one screen complex SQL transaction, you may need up to 10 screens SQL code to verify it.
What type of applications do you develop?
In my company, as I mentioned, our primary focus are the testing tools. However, don’t imagine some old-school UI testing tools. I believe that dev and QA roles will eventually merge and because of that we are building code libraries for testing web, desktop, API and mobile.
It is a lot of fun since you have to think about stuff like usability, readability, maintainability, how you will handle bug fixes, versioning, etc.
Another cool project we contribute to is our open-source distributed test runner- Meissa. It is .NET core-based and contains lots of multi-threaded code. It gets quite complicated in places since it has many features on top of other similar tools, but it is always fun to work on it.
What’s your biggest passion these days related to programming?
Owning one of the most popular blogs about automated testing keeps me motivated to regularly share my visions about automated testing. For example, the automated tests should be treated as production code, they should be maintainable, should be planned in the sprints, and should be written considering the usability of your libraries, etc.
What still sucks and shouldn’t be in programming?
I will elaborate on the subject from a different angle. I believe in the IT as a whole, however some people have significant problems with their egos. This is one of the things that slows down the delivery of the products and decreases their quality. Not everything is a technical problem and people should start listening to what others have to say. This is one of the reasons why I read so many non-technical books. Talking about different subjects during lunches with my colleagues improves our communication.
What are some of the most important skills developers can have?
They should always be open to suggestions, want to self-improve, even alone, to be proactive. It is crucial to learn how to communicate with various people in the organization. The technical skills are essential but are overrated if you ask me.
Do you unit test and how did you get started?
I was a consultant in a company that did not test at all for ten years. My job was to integrate the testing at all levels. Therefore, we had to start writing unit tests. However, the legacy code was not unit testable at all. You cannot begin to refactor it to make it unit testable without any tests. Therefore, we decided to try it for these parts.
Do you have tips for readers who are just starting out with unit testing?
When I have to choose between different architecture designs, tools or writing approaches, I always do the following even when I have found the best one at the beginning, put to the test at least two more for a few hours/days. Then I write all the pros and cons and present all options to my colleagues, and as a team effort, we choose the best option.
How do you convince your manager to write more unit tests or practice TDD?
As an international speaker, I always like to give presentations. So, I lead presentations about testing in general, why it is important, different types and words that we use. When all people from the team are on the same page and have an aligned dictionary, in most cases, you don’t even need to convince them as they change their mind during the presentations or following the discussions.
Do you practice TDD and if so, what are some of your favorite code katas?
In the company where I am a consultant right now it is a little bit hard to practice pure TDD. However, one of the things that we do is to write all testing scenarios before the actual writing of the code. When the dev is ready, some of the more senior programmers review them. He has to write the essential tests before check-in. Following this practice, if the dev has not understood the requirements and functionality entirely, it is visible after the review of these test cases.
What are some of your must-have tools or libraries that you use in your daily working life?
I spend almost my whole day using Visual Studio. This is my favorite tool and I cannot imagine writing code in anything else. I use the Java code editors, and what can I say, they are bad. Because of my job, I had to use many libraries about UI testing such as Selenium WebDriver, Appium (for mobile), WinAppDriver (for desktop) and RestSharp for testing API.
Who or what inspires you in the technical world?
Every two months or less I give a talk at some conference. Therefore, I regularly visit conferences around the world and meet many passionate people. We usually talk about the future of automated testing and think about cool ideas we can create.
Besides that, I have a ritual of reading at least technical articles each week, they keep me informed and motivated as well. I decided that I wanted to convey this passion to my readers and as a result I started to share those articles with them three years ago.
When you need a quick recess at work to regain focus, what do you do?
Since I have quite a flexible schedule, and most of the days I can work from anywhere, I usually go running, something like 5-10 km. German scientists prove that “running does elicit a flood of endorphins in the brain.”, in short, after 5km you feel much happier, and the stress is gone.
What’s your horror/war story from the coding trenches?
I do not like the so-called “callboy programming” where you make fixes on production and try to be the hero. It is against my beliefs as I am a man of high quality. However, there were a few of these situations earlier on in my career. Like five years ago, we went with my male colleagues to play football after work and received a call in the middle of the match that there were problems with our forums. We were under attack by thousands of spam-bots. We worked hard for two weeks to find a solution. During that time, many support officers deleted these messages manually. I wrote a visual bot that started browsers and did that automatically in parallel on multiple machines. This, of course, was a temporary fix until we applied the code patches for filtering these messages programmatically. Nevertheless, the support officers were so happy that they sent us candy.
What’s the best advice you’ve ever received or what advice would you give your younger self?
To try and read more serious non-technical books earlier on.
What are some interesting links you can share about yourself?
My blog- automatetheplanet.com
What is one question that we should have asked, and we didn’t and what would the answer be?
Which do you think cost more, writing the automated tests, troubleshooting or their maintenance? Why?
Some people do not even write tests. We all know that this is bad. However, some of the rest think that the only time you need is to write the tests which are a big misconception. It depends highly on the type of the tests of course. Unit tests are one idea which are more cheaply to maintain compared to more high-level tests. Nevertheless, if we are talking about UI tests, most of the time needed is required after the tests are written. If they are not written well, in the highest possible quality, you will need much more time to figure out why they are failing. In addition, over time you will need more and more time to add new tests or extend the existing ones. This is why I firmly believe that the tests are production code and should be treated as such.