Last Update: 05.02.2019. By Jens in Newsletter
The second step for a successful learning path is the scope of what you will digest. For us devs, it’s the apps we build while learning the new language or framework. If it is too big, you’ll fail. I did fail many times. Once I head out to build an MMORPG with 3 co-workers. That was an ambitious goal. 4 guys wanting to build a game of the scale of World of Warcraft. Maybe we even removed the first m (massive) and just build a multiplayer RPG, I don’t remember that.
What I do remember is that we all started out as experienced devs, yeah, but none of us had ever coded a game, nor worked with 3D graphics and alike. We had some ideas what we needed like maps, terrain handling, movement of player and npc and what else. Even simple dialogs were hard at that time in the 3D world.
Anyways, I think we worked for around half a year on that until it died. The first guy almost directly quit from the beginning. He actually never coded anything, so it was three of us. For that, we got pretty far. You could walk with animation on a terrain, almost endless and parts generated, with smooth terrain transitions, place objects and it even had a nice water animation effect. In the end, a lot of the motivation died because it was so slow and we finally hit the problem of having 3D models. Yep, we even tried to do them ourselves with no clue.
Essentially, the scope was way too big and the approach did not work.
What works better on the other side, is to reduce the scope a lot to almost ridiculously small as I did with my recent Mac app. It still sums up because like with estimation, we forget or ignore to count in a lot of details. I recommend also to build something where you have the domain knowledge. For example, a simple Kanban or Todo app. Simple logic, simple rules. A bad example is building a financial calculator when you to learn the business logic alongside. Focus on one thing to learn, not multiple.
In my case, this was a small reminder app with playing a sound. Let’s look what was actually involved:
When I got that many steps, I usually break the scope down into smaller scopes and tackle them in a row. For my example it looked like: 2. Run an empty app
4. Turn it into a menu bar app
6. Add a menu button which plays a sound
8. Add one timer
10. Add a series of timers (start a new, when one finishes for the next interval)
12. Add timers logic plus preferences
14. Make preferences configurable
16. Deploy app
So, instead of one to big scope, I sliced it up into multiple smaller ones. And for each of them, I go through the learning process.
-