And the backbone for this automation, what made it possible was test automation. But no matter how you delegate to automation, there is still some other problems that could pop up, like delayed quality feedback, especially if you're testing too late in the process, when bugs are surfacing on the very finish line long after you committed the code. And this is not really good because you always implement bug fixes under some pressure. You're losing context because you're switching to another task and so on.
And by consolidating a huge amount of changes and testing them in the batch, it's pretty hard to know what contribution caused what bug. So what we did here, we implemented a shift-left approach, which is pretty easy. It's moving your target of testing from the very right to the very left in a very simple form. So we have this main, where everyone contributes. There is a features that is contributing to main, and there is some releases that you're tagging, or if you're using trunk-based strategy, you are forking from it.
And so for us, it was always there, like in the release stage. So what's shift-left approach suggesting you, test early the possible. So we switch it to the feature stage. And then about automation, so the automated tests are very diverse. We can apply and test different aspects. There is a bunch of different technologies. And I will show you some that we are personally using. For a static test, this one that's analyzing the codebase without running them, like linters, type checkers, we are using ESLint, we are using SwiftLint, StyleLint, Rubocop, Ruby guys are weird with naming, Hint, HTML, Printer, TypeScript, which is a huge safety net when it comes to the code quality, Kotlin detect.
Comments