Reinvent the Wheels
The benefits of experimenting on your own
In programming, there is a common statement: “Don’t reinvent the wheel!” This advice helps save time and effort, especially in projects where speed and efficiency are important. But what if we look at it from the other side? Outside of deadlines and everyday tasks, reinventing your own “wheels” can become your main tool for growth and new discoveries.
Why is this so important?
Developing something commonly used from scratch gives you a better understanding of how a familiar utility or library you use works. This greatly improves your skills, as you can solve not only typical tasks, but also go beyond the everyday routine. Only personal experience in designing and implementing will lead to deep understanding.
Try Something New
Different areas of programming often use similar concepts, but in different ways. Mastering these differences will allow you to not only grow professionally, but also find more elegant and robust solutions in your daily work.
Don’t limit yourself to what you do during work hours. Explore different directions: write your own mini-framework for managing the DOM in the style of React, implement a server-side caching system, or create a simple 2D game. Want something more complex? Try writing a compiler for your own language or even your own game engine (No matter how cliché this topic may be).
Of course, the result will most likely be far from ideal — and that’s okay. The main thing is not to compete with professional solutions, but to immerse yourself in the process and learn what difficulties developers of such projects face. Each new challenge will add skills and experience that will come in handy in the most unexpected situations.
Personal experience
Being a student, I was into visual novels. My friends and I often discussed them until one day we decided: “Why not make our own?” But what do you think students of a technical university will choose — to write a gripping story with well-developed characters or to create their own game engine? Of course, the latter!
This is how FQuesty was born. We were inspired by RenPy, but at that time we were disappointed by the weak support for multiplatform. And, as true enthusiasts, we decided: “Let’s do better!”
Every day the engine acquired new details:
- Own programming language for describing scenes.
- Asset loading system.
- Translator and interpreter for the created language.
- Animations and sound playback.
Each of these tasks turned into a separate challenge. We solved problems with memory leaks, fixed the positioning of characters on the screen and experimented a lot. It was a real marathon of learning and creativity.
In the end, we put together a working prototype of a visual novel. It was far from perfect, but looking at it, we felt proud of the work done. Then the project remained in the past, like a pleasant memory. We all went our separate ways.
Every now and then, I come across this repository and think: “What if I go back and finish this?”
What did we get from this?
- Deep understanding of the basics. When you create something from scratch, it becomes clear how everything works under the hood. You begin to understand why frameworks and libraries make certain architectural decisions.
- Developing universal skills. When designing your solutions, you learn to decompose problems, find effective algorithms, and optimize code. These skills are useful in any field of development.
- Creative inspiration. Inventing “wheels” gives you the opportunity to experiment and go beyond the usual.
Sometimes such experiments are very useful to distract yourself from the daily routine and “get a taste of programming” again.
Instead of a Conclusion
What do you think? Do you often try to do something from scratch? Maybe you have your own “Wheels” that have opened up a new perspective on programming? Share in the comments!