Is it worthwhile to rebuild existing software for learning?
Asked by
VelvetMango42
I'm building an email service in Python, but instead of following a more complex standard approach, I'm experimenting with a Flask application over HTTPS. Is recreating tools and systems that already exist a reasonable way to learn, or am I wasting my time by reinventing things?
Answers
Be especially careful with security-sensitive features. Writing your own encryption, authentication, or mail-delivery protocols can teach you a lot, but those implementations shouldnโt go straight into production without serious study and testing. For an email system, also think about delivery when the recipient is offline, retries, queuing, and what happens when the two systems arenโt online at the same time.
Reply to this answer
Thereโs nothing wrong with simplifying the implementation if youโve consciously simplified the requirements too. A Flask-based HTTP service might be fine for a small experiment, but it wonโt automatically provide all the behavior and interoperability of established email protocols. Build it to learn, then compare its capabilities and limitations with the standard approach.
Reply to this answer
Not dumb at all. Rebuilding existing systems can be one of the best ways to understand how they work, especially when youโre doing it as a learning project. Comparing your version with established implementations afterward can also reveal design decisions and edge cases you hadnโt considered.
Reply to this answer
It depends on the goal. For practice, go ahead and build your own version. For a real product or work task, use mature libraries and services unless you have a specific reason not to. Existing solutions have usually been tested against years of unusual failures, compatibility problems, and security issues.
Reply to this answer
Add your answer
Answers are reviewed before publication.
Related Discussions