— 18 October 2017 —
It has been one and a half month since GSoC 2017 ended and I would like to note how amazing the whole experience was. I learned a lot about the specific subjects that I dealt with (ACME protocol, X.509 certificates), as well as generally about software engineering and cooperating with other people. As enough time has passed from the completion of the project I think that I can now epitomize what I really kept from the whole experience.
Always create an initial design before diving in the implementation. It seems difficult to do it at first, but when you get used to it, it really facilitates implementation. However it is also very important to change the design and not stay stuck to it when you realise it has flaws (more often than not it will have). Ideally you will be transitioning between a design and an implementation phase in a continuous feedback loop.
It is very important to experiment with the implementation and create a first (or even a second, third …) prototype. This is an essential part of the procedure because by building the prototype you have the time to explore all the capabilities and flaws of the design while also getting a better grasp of the task at hand. Creating a prototype also helps to better understand what are the exact requirements in order to finish the goal correctly and efficiently. Building a prototype might sound like wasted time when you have to complete a huge project. However the certainty and experience you get from creating it far outweighs the “wasted” time.
The only way to really understand something is by doing. Before beginning the project I had no idea about what I should implement. I did not know anything about the project I would extend, nor about the protocol that I would implement support for. I started out by reading documentation but I was still lost. Only when I began implementing and building I started having a deep understanding of what I had to do. So don’t be afraid if you don’t know about a specific subject beforehand. Start implementing and gradually everything will fall in place :)
By contributing to an open source project you publish your work in public allowing everyone to scrutinize it. There are two ways to handle this criticism; either being defensive by not accepting it or being open by trying to use it to improve yourself. I believe that the most important value that GSoC taught me is to accept and even crave for criticism, as it brings you in contact with other points of view that you might have missed.
Hosted on GitHub Pages — Theme by orderedlist