Week 4 - What I Learned
November 08, 2021This is, hopefully, my last week of intense content consumption at the Apprentice program. If I’m not mistaken, the next weeks will be more about coding and practical exercises; and, despite preferring getting hands-on with problems instead of theory, I enjoyed these past few weeks because I learned tons of new things and the thrill of getting to learn about very diverse topics each day made it interesting.
The main topic this week was Pretotyping. That’s right, with e, not with o. Pretotyping, as opposed to prototyping, is a technique that tries to validate an idea with the least amount of effort, time, or money possible. Its name is fitting, as one of the main properties of pretotyping is to stop before prototyping, that is the reason for the pre suffix; this does not mean that you can’t have a working product or a quick demo, instead, its goal is to search for cheaper, quicker alternative ways to test your idea. Once you think deeper about it, it makes sense; the results should be obtained very quickly so that ideas can be taken to the next level or dispose of them rapidly which leads to many failures but also some great successes thanks to probability. This week, I tested three ideas using pretotypes and it led me to feel the quick-paced mentality of innovation; the three ideas were: a bridge between a proprietary POS for restaurants and independent delivery services using WhatsApp, a mobile app to help calculate costs, profits and product prices; and a chat bot for searching open-source projects in GitHub. Click here to learn more about each one.
Another interesting topic this week was the Chaos Engineering methodology that big software companies use to get better at error handling. At first, it was hard to grasp because it goes against common sense and what every developer tells you: never test in a production environment; it is so deeply ingrained in developers’ minds that it seems fundamentally wrong to take an opposite approach; but, learning that Netflix engineers do it every day and they even wrote popular tools to do it, certainly opens my mind to the possibility. Curiously enough, collectively their tools are called the Simian Army, starting with Chaos Monkey, Chaos Gorilla and finally Chaos Kong, each wreaking havoc at different scale and, wait for it, in the production environment. It all makes sense when you learn about the overall goal of this methodology: adapting the software to handle errors gracefully so real-world errors and their impact are minimal when they appear. Related to this methodology, I also learned about unit tests and code coverage, because errors are not just handled in production. In fact, ideally errors should not reach production, so it is imperative to have quality control resources to minimize errors getting out; code tests are one of these resources, so it is important to learn how to use them correctly. Also, code coverage is about analyzing how much, in percentage, of the current code base is currently tested to get an idea if the tests are enough or more are needed.
Although I am not a physicist, I got to experience a couple of classes taught by Richard Feymann, this iconic character is well known as an insanely good physicist, teacher and scientist. With the help of a video, I was able to learn more about the scientific method with his explanations, also about how his mind works and how it processes information, an innovative methodology which led him to win a Nobel prize in Physics. Sadly, Richard Feynmann passed away not too long ago but his legacy is here to stay. Other iconic characters this week include Seth Lloyd, which explains how the universe is made up of concepts that can be represented and processed with computers, and Stephen Wolfram, which explains how the world is composed of simple rules that combine to create the complex environment we are living in. Interestingly enough, these two brilliant minds have similar interests, and their research is focused on the same core concepts: the world represented by a computer. As a side note, Wolfram has already progressed a lot with his research. He founded a company and its main product, WolframAlpha, is a popular tool used by scientists and students. Just recently, the company launched its most ambitious project: Wolfram Physics, which gives the impression that we are getting closer to modelling the world using computer, even if it sounds futuristic and borderline impossible.
Next week, I will be working with a team on a real-life project. I have worked with a couple of decently-sized projects before so I am not getting in with zero knowledge, but still I am anxious about what will happen and excited to start coding!
See you next week, more updates to come!