Good afternoon friends.
Today we would like to tell with you about rather interesting technical term - "refactoring".
Refactoring is the process of changing the internal structure of a program without affecting its external behavior and with the goal of making it easier to understand its work. From a business perspective, there is no direct benefit from this process. The question may arise - why change the "internals" of the program, if it is not profitable? The answer is very simple. History knows a large number of projects that have sunk into oblivion only due to the fact that the issue of refactoring was delayed. As a result, the development of new functionality began to require colossal labor costs, and development costs began to significantly exceed the profit from the product. Therefore, it is imperative not to drive the project to the point where the amount of technical debt (refactoring tasks) will stifle the project.
However, there is also a downside to the coin. Any code isn't perfect. Trying to achieve the splendid architecture and the complete absence of technical debt can lead to the fact that the development team does not have time at all to develop new functionality that will potentially bring direct profit.
How do we find the “middle ground”?
For the second year already, our entire team has been divided into three cross-functional sub-teams, two of which (“product” teams) are engaged in the development of new functionality, and one (“core-team”) can fully focus on the technical state of the project. This does not mean that product teams write the code somehow and they constantly have to rewrite it. It's just that when you constantly add pieces of new code to the product, you need to be careful so that they do not conflict with each other and with the old code.
Product teams think through everything in advance and try not to create new problems that need to be addressed in the future. For example, the functionality of album posts and channels was well thought out from the beginning, so we don't need to refactor this code any time soon. But the main modules - chats, calls - we refactor almost constantly. In the last sprint, the volume of rework was very large, so that several bugs even made their way into the update - but we have already promptly corrected them by releasing an urgent interim release.
Stay tuned and stay up to date with everything that happens with us!