Masha Reko - Apprenticeship Blog

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

Day 94-114: Masterpiece Reflections

Finally, I’m back to blogging after exactly one month of hiatus.

I know I promised not to stop writing while working on the Masterpiece. I thought short posts to keep you updated on the progress and document my learnings were totally doable, but alas, I failed to make that happen. And there is no one regretting it more than me. You would think that the days when I haven’t written anything were the days when nothing interesting happened - but in truth it’s just the opposite. Perhaps my thoughts on those days were a bit to hectic to be put into words. Or perhaps I was just so consumed with coding, that time flew by before it even occurred to me to blog. Whatever the case, the only thing I can do now is wrap up this apprenticeship with a couple of retrospective posts, and try - as much as possible - to make up for not blogging regularly in the past two months.

Firstly, I’d like to dedicate this post to our Masterpiece, Anastasia’s and my dearest SkillSpace.

It’s been an eventful two months, and I don’t think I can stress enough how grateful I am for having Anastasia by my side through it all. For technical and non-technical stuff. For pairing/mob sessions, meetings, presentations, and even coffee breaks in between. I think we turned out to be a pretty good team that in the end did a pretty good job. There were unexpected problems, of course, as is the case with every software project. No matter how careful you are, you can never foresee every possible outcome. To quote Doug Linder, it’s like looking both ways when crossing a one-way street, and then getting hit by a plane. But it is what it is. You fix it, and you move on. And you try not to stress too much over it. Having a teammate by your side certainly helps with that.

Since it’s called The Masterpiece, we tried hard to apply in this project everything we learned about Software Craftsmanship so far. I wanted it to be something that both me and Anastasia will be proud of in the end. Something that will not just work, but that will also be beautiful “under the hood”. That part was hard. Really hard. When I code, I don’t usually think about beauty. I focus on making it work, with an intention to refactor later. But when all is said and done, if the solution is not beautiful, then I know it is most probably wrong. With that said, we spent one whole week getting the code in order, and it was then that I wished I thought a bit more about beauty earlier. After all, why wouldn’t we just do it right the first time, instead of doing it over?

Refactoring

However, spending a week on refactoring was by no means a waste of time. Maybe it brought the least value to our end users, but certainly the most to us. It was then that I discovered the concept of dependency injection, which opened some new doors for me. I did learn about it before, during one of the Software Design courses, but now I finally saw the actual benefit of it, and how it makes my code more testable. We struggled a lot with unit tests because our units were maybe a bit too strongly coupled, but thankfully dependency injection carried most of our problems away. Ultimately, I learned that my code should be a bit more like me - somewhat shy (not revealing more than is necessary) and as independent as possible (not relying too much on external dependencies) :)

You know, I feel like I learned so much during this apprenticeship, but definitely the most while working on SkillSpace. I came to HolidayCheck straight from University, used to gaining knowledge from books and lecture slides. Naturally, there were times in the past six months when I did the same, and the results were quite good. But if there is one thing I learned during the Masterpiece phase, it is that nothing compares to practical work. Learning the hard way is learning the right way. It’s all about making your own mistakes and learning from them. And as good as they are, ultimately no book can give you that.

All in all, it’s been a fun ride. And a successful one at that. I read somewhere that programming is like pinball - the reward for doing it is the opportunity to do it again. Apprenticeship is close to its end (only 3 days left), and our new teams await. Hopefully everything we learned from SkillSpace will stay with us during the challenges to come.