Building Something From Scratch - Final Week
December 13, 2021This week marks the end of the Building Something from Scratch phase of the Encora’s Apprentice program. The last five weeks have been intense, to say the least. There were many late-nights because of evasive errors, compatibility issues, and broken repositories on the same day that a demo is scheduled (ouch!); but there were also a lot of learning opportunities: I learned a lot about teamwork, communication skills, JavaScript and React Native, device emulators, app deployment, among numerous other things. I also had the opportunity to connect better with my teammates, which I consider very important, especially when working remotely.
In summary, this phase consisted of building a software project completely from scratch. It sure sounds difficult, but it was made even harder by using a programming language that none of us had used before. At first, we were completely lost and overwhelmed, we didn’t know how or where to start, but eventually, the project started to come along and take shape. Thanks to the input of people that kindly took the time to test and review our project, the application finally feels more intuitive, the design is more consistent with modern standards and, more importantly, it works. Also, part of our responsibilities was to deploy the application in a live environment, so it is now live and working as a web application that can be accessed on almost any device. It is worth mentioning that because of budget and the little time we had, it was not possible to upload the application to the major mobile app stores like Apple’s App Store or Google’s Play Store.
I would like to take a moment to thank our mentors and staff, without their tips and guidance the project would have been a lot harder. This is where the apprenticeship pattern shines, the insights given by experienced people are effective and accelerate learning.
Now, as part of the final deliverables, today we presented the application’s functionality to the client. Honestly, we were nervous, because the expectations were high and there was no time left to work on more details. Fortunately, everything went well, the client liked the application and there was a general sense of satisfaction because the goals were met. There was a moment of surprise when we were told that the application will begin its test phase with real users in a couple of days, it felt so fast and we were not prepared to deal with a production environment yet, but the challenge is welcome so we immediately started to research adequate hosting plans and databases, complete with fault tolerance, dynamic scaling, etc. Because the next phase starts tomorrow, I don’t know if we will have the opportunity to configure the production environment or help with more details of the application, but I am sure we would gladly help if asked, in the end, it was a fun project to work on.
Remember, it is always good to share your knowledge with others. It enables other people to learn faster, and everyone can benefit from it. Please share your knowledge with others whenever you can, I am sure they will be grateful to you.
Also, regarding the required videos and lectures of this phase, I learned three main things:
I learned about the optimism bias, which turned out to be a very interesting topic because, even though I didn’t have a specific name for it, it has been present many times throughout my life. I sometimes find myself planning a course of action, considering the best possible scenario, and trusting that everything will go as planned, just to fail afterward because of unforeseen obstacles. Now that I have a name for it and learned the specifics, I will try to avoid it and carefully plan and consider the possibility that everything could go wrong. This makes us resilient and is related to an adjective I learned this month, which I will describe next.
This month’s adjective is antifragility, which, as its name implies, is the opposite of fragility. When we think of a fragile object (or person), it usually means that it is not tolerant to change, pressure, or any kind of rigorous handling and breaks easily; antifragility, on the contrary, means that an object or person is resistant to change, tolerates strenuous situations, and gets better with each hard situation. We must strive to achieve antifragility as adaptable people can get the most out of complex situations.
Additionally, there was a topic that was also present during the first couple of weeks of the Apprentice program: the problems that the modern medical field faces, and how is it different from other mission-critical fields. In particular, the field puts too much pressure on the doctors, and mistakes are pretty much not allowed; one of the solutions that the other fields use is checklists, which, even if it sounds too simple, turns out to be a very helpful tool to handle complex situations.
I am very excited to begin the next phase: Open-Source Contribution. I will begin searching projects to contribute, next week I’ll reveal the potential candidates (maybe a few advances!).