Masha Reko - Apprenticeship Blog

What we have to learn to do, we learn by doing. (Aristotle)

Day 87-93: Gazing into SkillSpace

If I had to choose one word to describe the previous week, I’d say: eventful. So much stuff happened in our SkillSpace, as is the case in every software project as it starts getting bigger and bigger. I’d lie if I said it was easy figuring it all out; it wasn’t - but then again - it is not supposed to be easy, it’s supposed to teach us something. And at that it totally succeeded :)

As the goals for Week 1 weren’t too big (and didn’t produce much value), we had to shift gears a bit and start working on actual features. The plan was to have the entire “skill” part of SkillSpace working (adding, updating, deleting, viewing skills), as well as the search (for users by name and for users that have a specific skill). By the end of the week, we managed to have all that run locally, but not live (due to external dependencies such as obtaining database credentials, etc.). Today we finally deployed, and everything runs like a charm, so we can officially say: Week 2 milestone is reached!

As much as that makes me proud (and it does, a lot!), there is one thing that leaves kind of a bitter taste in my mouth at the end of the day. After so much attention and energy given to TDD and testing in general during this apprenticeship, we still haven’t started testing our app after two weeks of development. (At least not automatically; I do obsesively test it manually every time I change something, even when there is no way I broke anything.) So that needs to change ASAP. This morning we set up mocha and started writing some tests. All in all, before moving on to the new features we promised for this week, all the stuff we currently have needs to be properly tested.

Also, today we talked about doing the “recognition” part in a purely TDD way. Now we are more comfortable with the technology, and therefore much faster and less stressed, so there is simply no excuse for not doing things properly (if there ever was an excuse). I guess last week we were pretty tense with whether we will manage to deliver the features on time, so we only focused on the functional part of the app without making sure it actually does what it’s supposed to do. Thankfully we see the error in our ways, and there is time enough to fix it. After all, that’s another lesson learned from this Masterpiece project: test early and often. Don’t be scared of not delivering, but rather: be scared of delivering the thing that doesn’t work.

Talking about lessons learned, there were so, so many over the course of last week. So much frustration, but so much benefit from it all in the end. For example we spent one whole day figuring out how page rendering works, going crazy, wanting to burn our laptops, barely avoiding a nervous breakdown, but ultimately succeeding. I guess we paid the price of inexperience, which is totally fine and probably a necessary price to pay. Besides, learning the hard way IS learning the right way, after all.

Anyways, once you make all the mistakes you can possibly make, the only thing left is to finaly stumble upon the right solution. And we did, eventually. I’m just so sorry I didn’t take the time to write down all our learnings. It happens way too often that you repeat your mistakes, and you know you solved it once already, but can’t remember how. So today we decided to keep our text editor open at all times, write down the stuff we learn at least in a short, Twitter-style, and then post those at the end of the day or week. I’ll give this idea a go, and we’ll see if it works for me or not when I write my next post.

All in all, yet another Masterpiece week flew by. We did bag a couple more amazing wins, but also failed in some aspects where we definitely could have done better. Those aspects are the main things to fix this week, together with - of course - providing more value and more cool features to our users. So stay tuned for more!