Reinventing the wheel.

So, as a part of my quest to teach myself Japanese, I figured a great approach would be to write an app to help test me as I learn things. Yes, there are plenty of apps out there. None of that is a good reason not to do this.

Firstly, none of the apps I tried did all of the things I wanted. Heck, even sites which recommend tools can't recommend just a single one. So, while the "perfect app" may be out there. It may not be, and it may take far too long to find anyway.

The second reason is a bit more pertinent though. I'm a software developer. It makes a ton of sense to mix what I do daily with the new thing I'm trying to learn. It forces me to break the problem of learning Japanese into the same sort of logic I'm familiar with. Simply writing this app and testing it should reinforce the learning. Which says nothing of what I hope the end result will be.

And this all brings me back to reinventing the wheel. No individual thing I'll be doing in this project is anything new. Common sense tells us not to "reinvent the wheel". But I think that is horse shit. There is a time and a place for that thinking to be sure. For instance, part of my training will be using the software to track progress in learning. I've written serialization code in the past and it isn't critical to the task of teaching me Japanese. So, I'll download something from NuGet or reuse my own existing code.

But, if wheels are critical to your product... then damn right you should at least have experience making wheels. Firsthand experience. You may never sell your wheel or even create more than one. But you should recreate them enough that you understand them so that you make informed decisions about their use.

Similarly, writing an app to help test me and track my progress will help me learn Japanese and help me understand what the other apps are trying to teach me. It doesn't mean I'll release another junk app out into the store just because I spent the time to build it. Though, who knows? Maybe I will. That will depend on how useful I end up finding my app, how much polish I think it needs, and if I can find a better resource or not already available.

The point is... I don't NEED to write an app to do these things. I AM reinventing several wheels. BUT it isn't a waste. It easily could be in other circumstances. But don't write off reinventing something without thinking about whether or not you'll benefit from the experience.

Comments

Popular Posts