With rainbow unicorns in our terminals, we were off to a promising start. And by “we” I mean “I”.
You may recall this image from an earlier post:
So what could possibly go wrong?
Well, for one, my computer nearly drowned when I accidentally spilt a glass of water in its vicinity (and on towel day, no less). Then everyone said I should put it in rice. I can’t believe how stupid people can be. I said it was wet, not hungry. But this leads us to my first tip for becoming a better developer.
Tip #1: Always carry a towel with you.
A towel is about the most massively useful thing an interstellar software developer can have.
— Douglas Adams
Also, did you know that Wikimedia had a birthday party this summer? But I couldn’t come, because the party was in San Francisco. I did get a glimpse of the cake, though.
Tip #2: The cake is a lie.
On the rare occasion that it’s not, it might still be far, far away. Never count on others in such pressing matters. Do whatever is takes to secure yourself a cake. Go as far as taking a baking class, if necessary.
But did I finish my Google Summer of Code project?
Well, not the one I started out with, but I did finish a project. After all this learning and coding and blogging and making bad and good time estimates, I have a finished, merged and released project. So that’s pretty amazing. Not all GSoC students get to see their project merged by the end of the program’s coding phase. Sometimes it only happens many months later, and that’s okay. Still, it’s very gratifying to have completed your project on time.
Tip #3: Finish things sometimes. It’s good practice.
Maybe it helped that eventually I ended up working on a smaller project. In some ways it makes time management easier when there’s less time to manage. In some ways it makes it harder; I also ended up starting to make significant progress a bit late. I didn’t know if I’ll succeed. So maybe part of it was just luck.
Tip #4: Have luck. It’s good practice.
Tip #5: Make reliable time estimates.
Yeah, but don’t ask me how.
Making reliable time estimates in software development can be very difficult. Working on an earlier project as my GSoC summer project (the ‘Category’ Filters project), my mentors and I came to realize at some point that we had to deviate from the original plan, because the project turned out to exceed the scope of a summer project. It got too big and complex. Luckily, I had the freedom to set this project aside until the day when someone else picks it up.
Still, working on the final project, the OOUI tutorials, I learned that I can actually be fairly good at making time estimates. I guess it depends on estimating the scope of the project, which can sometimes be assessed pretty accurately. And in the case of my final project, some things took less time than I anticipated. I was also given a lot of trust and freedom, conditions that allowed me to be honest with myself and with my mentors, and make plans which I thought were actually executable. This is what truly enabled me to finish everything I planned on time. This, and all the code reviews and feedback some community members took the time to provide (thank you, Volker!).
Tip #6: Get yourself some awesome mentors.
I’m not going to tell you how to do that, because I don’t think it’s that hard to do (though I do want to stress how important it is), and because it depends on what works for you personally. But if you are a beginner, do try and surround yourself with some teachers and mentors that you feel are right for you, that you feel comfortable around, who help you grow… I think you’ll know them when you see them.
It really helped to have a supportive, attentive, experienced and committed mentor like Moriel. It was also great to have community members reviewing my code, answering my questions and assisting with technical problems. They all made the internship a really great learning experience for me.
By the way, you can read my technical project summary, or final report, here.
This report is great. It has all the best commits.
— Donald Trump
That’s it. I gave you all my tips. Heed the wisdom. I really hope you learned something. As for me, I plan to stick around and keep on working on OOUI and other Wikimedia code, at least whenever I have some spare time.
I even started reviewing other people’s commits, which I hope to gain more confidence with in the future.
Please show your appreciation by clapping many times.