For the last few weeks I have been working on major refactoring project. It has become too much time consuming to add new functionally, make changes to an old app I have made a couple of years ago. When the initial project started I kept coding giving too much thought about future self. As long as things work as expected who cares what happens in the future. Now that future is here, every time I need to add some functionality to the code I need to get familiar with the initial code again, again, and again. My past self didn't take into account it would become necessary to make changes because structure of data it uses changes, or source of the data went through changes, or all dependencies wouldn't consult with me before making the updates. However, outside factors weren't the biggest problem. Even with all the changes in the outside world, the app did work just fine without throwing errors. The most challenging part became adding new functionality. That is because of poor code structure, and zero planning for the future.