On our journey to become master craftsmen and women, we must always remember to revisit the fundamentals. Sometimes, the hours spent learning and becoming better at a new job leaves us little time to revisit the fundamentals. Without the room to make and learn from our mistakes, we risk, as best, stagnating and at worst, reinforcing new, bad habits. We must remember to engage in deliberate practice and avoid stagnation.
I agree with this apprenticeship pattern whole heartily. It can be easy to fall back on our established skill set and neglect the need to practice the fundamentals and not let our basic skills flounder. I have experienced this phenomenon first hand last summer.
The Bachelor’s degree program requires that each student completes a certain amount of subjects that do not, necessarily, pertain to our major. I had managed to get through the initial interview process with the placement agency; rigorous phone interview; and the first three hours of a gruelling interview. The final interviewer entered the room with some paper and a sheet of coding problems. He sat down and asked me to solve some of these problems. I failed.
I have gone over this interview over and over in my mind. My biggest folly was forgetting to Practice, Practice, Practice. The questions presented were terribly difficult, but my lack of studying became evidently clear at the time.
Before this pattern, I had never heard of a Code Kata. Applying the discipline and mindfulness involved in martial arts to the craft of code seems obvious now. I will be actively seeking out these Code Kata websites and practicing the fundamentals of my craft.
I am not sure there will be a time that I attend a public performance Code Katas, but am happy that I am aware of their existence. This seems to be a bit more than this pattern is attempting to convey, but for those that this speaks too, I imagine that a public Code Kata may be exactly the type of event that they need to engage in the behavior of Practice, Practice, Practice.
I have already begun to find exercises that test the boundaries of my understanding. I am aware of most of the gaps in my understanding and am aware that there are things that I don’t even know that I am unaware of. I believe that this state of understanding best prepares me to gain new skills while not letting my established abilities languish through misuse.
What did I learn this sprint?
With each passing sprint, our team is able to find better and easier methods to communicate and accomplish our tasks. Each of us has our specific responsibilities and we each make sure that our tasks are done. We also made great strides sharing our repositories using gitlab. We each were able to pull the latest AMPATH builds as well as having a teammates merge request accepted by the application owners.
Refactoring the Online Tracker
Our team was tasked with separating the online status marker with the logic that determines whether or not there is an active internet connection. We were to refactor the existing code to provide a clear distinction between the display and controller. Once completed, we packaged up the change into the proper merger request and sent it to AMPATH.
After some minor adjustments to make the request pass the tests, our update was accepted and our teammate, Jason Knowles, now has a contribution credit to the AMPATH application.
Dealing with Pouch DB
Installing and configuring Pouch DB proved to be a particularly difficult task. Our team discovered that some of the customizations made by the AMPATH team add a layer of difficulty to installing other third party modules.
After some setup, we were able to get Pouch DB up and running within the AMPATH application. We also provided a node with which to interact with the database instance. We could also create temporary records that existed in memory. When we tried to write these records to a permanent file, we ran into problems. There was errors regarding the CORS pattern that we had to use to connect to the AMPATH test server.
Having discovered that the CORS module could be disabled once a connection was made to the test server. Once we disabled this, the records that were giving us trouble we successfully creating permanent records.
From here, we decided to reach out to the AMPATH development team next sprint and show them some workflows to be created next sprint.
What did I do this sprint?
I completed tutorials for both Pouch DB and Encrypt JS for use with the upcoming sprint. We need to establish a strong understanding of how the modules work and the development tools they provide us.
I offered answers to some important questions my team had about the appropriate usage of subscribers, observables, and promised. We had extensive conversations about callback functions and the concept of a function as a primitive data type.
Each of these concepts requires a little bit different way of applying things we have already been taught. I provided insight and answers into their application in the context of Pouch DB specifically and asynchronous requests.
What Can We Do Better?
The next sprint, we will be focusing on furthering our momentum as we learn more about the intricacies contained within these modules. We must learn to better communicate among the groups within the class. We have gotten better as not overlapping work but there is plenty of room for improvement.
We can also leverage the tools given to us in a more productive manner. Trello, for example, has not proven to be the useful device that it has first seem to be. We should also be using the other items as well.