Michael Bodnarchuk is a web developer from Kyiv, Ukraine, who serves as lead developer of the Codeception testing framework. He also works as a tech consultant and trainer at SDCLabs consulting. Currently, he’s working on a test management system for non-test management users. We’re happy to have Michael here with us today as he talks us through his journey, his experience working with PHP, his experience with Codeception and so much more.
Shahzeb: Hello Michael, thank you for taking the time out for this interview. Before we start, Can you just tell us a little about yourself so our readers can get to know you better?
Michael: I am a web developer from Kyiv, Ukraine. I was always passionate about creating new things and that is what brought me into tech. For the last 10 years, I’ve been working on my own open-source projects like Codeception and CodeceptJS.
I really like developing tools, so I didn’t have a regular job for a long time. I worked as a tech consultant, trainer, and freelancer. This allows me to get money from my products and improve them. I live in a pretty cheap country so that’s quite enough for my life. Building open-source is about passion and not money. So I don’t have a lot of money, but I have a lot of passion to make great things!
At this moment I work on my next project – Testomat.io, which is a test management system for everyone who doesn’t use test management at all. The idea is simple – your tests need visibility. You want to have them shared with teams, to show run reports and make tests to be something more than hidden gems in a code. If your team can see them, propose next tests, and check test run reports, they’ll better understand current test coverage.
Shahzeb: Can you share your journey with PHP? Any stories from your career you find interesting? What was the major challenge you faced at the beginning of your career and how did you tackle this?
Michael: I started in 2004. Like most young developers of that time I was trying to build my own computer game. The web was the cheapest platform to develop – you didn’t have to think about quality graphics, animations, or 3D. So I used the PHPBB forum engine as a basis for my game. The code quality was very poor (not just mine but PHPBB’s as well), so I gave up at some point because the project became too complicated.
But because I had a good experience with PHP already I tried to work on websites. I started using the frameworks Seagull, Symfony 1, and others. These were the good old days when frameworks just started to appear and there was no winner in that competition yet.
Shahzeb: How would you describe Codeception to someone who has never heard of it?
Michael: Codeception is a thing you need if you don’t like writing tests. It’s a testing framework designed for those who have no idea how to test their applications but would like to start quickly and easily and have a tool that integrates with their own framework. You describe interactions with the application and check the results: what was sent to the user, what was saved to the database, etc. Codeception provides all the tooling so you just focus on writing simple and meaningful tests!
Shahzeb: Why did you develop Codeception?
Michael: I was working for a US company and just started my journey to unit testing. And I wrote a few tests. They were quite good as they provided information on the stability of our application. As our CTO said: tests saved our lives a few times. However, there was one big problem – no one could understand those tests. So I asked the CEO if I could take some time and transform our tests into something more meaningful. This is how I invented a syntax where every command starts with I – I am on page, I click, I see. These syntax tests became easy to read and easy to write. From this paradigm came Codeception.
Shahzeb: How did the idea for Codeception come to you? What challenges did you experience while developing it?
Michael: Back in the days Codeception was started there was a paradigm shift in PHP frameworks. Developers switched from PHP 5.2 to 5.3, and namespaces started to be introduced. This made old frameworks like Symfony 1, yii 1, Zend Framework to become legacy, while new frameworks like Symfony 2 or Laravel didn’t take their positions yet.
So the hardest thing was to choose the PHP framework to integrate with Codeception. My original version was built on top of Symfony 1. But this was not a good idea anymore. So I made the decision to support all popular PHP frameworks. This probably was not a good idea if I count all the time I spent on their integration but the end result was pretty good. No matter the framework you use – the tests will be the same.
I heard a story that one company migrated from Zend Framework 1 to Symfony without any code change in their tests. To me that sounds pretty cool! So Codeception became a general testing tool for any kind of web applications built in PHP.
Shahzeb: You have extensive knowledge of PHP development. Would you like to tell our readers about some of the best PHP projects you’ve worked on?
Michael: PHP has a great community and a pretty good ecosystem. I like Laravel’s ecosystem, even though I didn’t use it extensively. I like that there are enterprise-friendly frameworks like Symfony, startup frameworks like Yii or Laravel and powerful CMSes like WordPress or Drupal. It lets PHP cover most of their cases on web development. I stopped judging products by their code, so I would say that all the projects that make the PHP ecosystem unique are awesome.
Shahzeb: What do you think are the main benefits PHP testers take away from Codeception tools?
Michael: Codeception is a simple tool to start, but it has enterprise level scalability by design. So Codeception encourages developers to follow best practices – do not mix code with configuration, move out support code from tests, keep tests readable, prefer integration tests, get run reports and more!
Unlike other testing tools Codeception doesn’t leave a developer alone with their problems. In Codeception most integrations are already done and problems solved. Writing tests in the manner proposed by Codeception makes them easy to write, read and maintain.
Shahzeb: What are your personal opinions on testing? Why is testing an essential part of product development?
Michael: Testing is about trust. Do you trust your code? I don’t trust my own. That’s why I have tests as a safety belt around it. You should not have false self-confidence as well. Do as many automated checks as you can. Start with linters and code analysis, add more functional, integration tests, and so on, adding more and more confidence to your project.
Shahzeb: Which type of web hosting would you prefer? In your opinion, what are the benefits of hosting a site on a managed solution provider rather than conventional shared hosting?
Michael: To maintain my own hosting, I live with a bunch of Ansible scripts which I need to update and maintain. I’m pretty experienced with it and I can tune and scale my server pretty easily. However, I would prefer to delegate that job to someone other. So if you can save time on managing servers and pay extra money to a host, that’s probably worth it.
Shahzeb: What do you think about managed hosting solutions like Cloudways that provide an optimized PHP stack with features to deploy their web apps?
Michael: I think it is great that PHP developers have an option like that. This may dramatically save time on taking product from idea to production.
Shahzeb: It’s really important to balance your personal and professional life. How do you spend your time when you’re not working?
Michael: I like kayaking, hiking, biking and other activities. It avoids me burning out.
Shahzeb: Whom should we interview next and why?
Michael: I think this should be Anton Tsitou. He is building a revolutionary technology for PHP – Spiral Framework with RoadRunner, async web server for PHP.
Shahzeb: Davert, I’m sure many people have taken notes. I’m also sure they’d love to see a picture of your workstation if you’d like to share one!
Shahzeb: Thank you once again, Davert!
Start Creating Web Apps on Managed Cloud Servers NowEasy Web App Deployment for Agencies, Developers and E-Commerce Industry.
Shahzeb is a Digital Marketer with a Software Engineering background, works as a Community Manager — PHP Community at Cloudways. He is growth ambitious and aims to learn & share information about PHP & Laravel Development through practice and experimentation. He loves to travel and explore new ideas whenever he finds time. Get in touch with him at [email protected]