The Andela Boot camp Experience: Day 2
Having been through the greatly humbling experience of studying for the home study test and the incredibly self-reflective one on one interviews with the Andela team, I was selected to go on to the third level of the interviews. Enter the boot camp.
The Andela boot camp is a highly engaging and collaborative selection of challenges and goals. These are coupled with online lessons from teaching facilitators. These are all aimed at introducing candidates to new working concepts. From the “Growth Mindset” a lesson that teaches candidates to look beyond their experience for inspiration and innovation to “Test Driven Development” a concept that requires developers to write tests for their projects before implementation, the boot camp is certainly quite the experience.
The first day of the boot camp was an intense experience. Meeting and working with new people was exciting. The team leaders briefed us on how what to do, i.e. which tools to use, what was expected of us as well as a few other tips on how to ensure that we go to the next level. All this was done online. During the online call, I thought to myself, “I’m sitting with some of the most brilliant people in the country in the field of computer science”. It was a very intense experience indeed. We were also issued tasks to fulfil in the form of daily challenges. These were to be our daily milestones as well as the basis for evaluation for selection to go to the next level.
Despite the seeming simplicity of the tasks, implementation was a whole new challenge. Perhaps the deception was in the simple straight forward and concise language used to describe them. I remember looking at the document and thinking to myself, “This will be a breeze!”. Several hours later and it was quickly becoming clear that these were not your everyday tasks.
I was required to create several accounts on collaboration websites and tools. By the time I was through with that, my head was spinning. I was barely able to keep track of what tool did what. Some of the tools were familiar, others were quite new to me. I’d never used Pivot Tracker before. Even then, I soldiered on. I was able to complete most of my milestones for the day despite passing the given deadline. At the end of the day I thought to myself, this wasn’t so bad. If I can do this, I can most definitely do anything.
Enter day 2. Whereas day one was all about introductions and going through the ropes, day two was the real deal. There was no online conference call this time. We simply got together on Gitter, another great tool. The challenge for day 1 had been to create a wireframe as well as an HTML and CSS prototype for a shopping list application and submit them to a github repository. Day 2 was a lot more hands on in terms of development. The challenge involved creating a “CRUD” as well as a Login system for the application from the day one challenge. I was introduced to a new concept, “Test Driven Development” abbreviated as TDD.
TDD basically means that developers write tests that must be passed by individual units of development code before the code can be written and run. This approach ensures that every aspect and therefore the whole of the program or application being developed work exactly as intended. This was certainly a new concept for me. I was used to simply laying out a list of tasks and functions that I wanted the application I was developing to do. Then simply writing the code and checking off completed tasks until the application was fully developed. I suppose it’s the same thing in a way. However, TDD requires one to actually think about the application in even greater detail before coding. My previous approach meant that I thought about the main aspects of the application in broad strokes however TDD requires one to actually think about every aspect of the application in great detail. This means instead of writing an outline along the lines of: create authentication system, create crud, create UI; one has to think about and create a test for each of those components. This can only be done by breaking each one further into its sub components. All this is done before any code is written.
This is certainly an interesting concept. One that I currently struggle with. The down side is that I am currently working a lot slower. Having to break down my code into small testable units and then proceeding to create a test for each one means that I don’t get to simply zoom through my coding anymore.
On the other hand, it means that I’m very familiar with every aspect of my application and get to work in a modular fashion which in my experience is a definite plus. Especially when it comes to adding functionality to the application. I am still torn about TDD at the moment as I’m yet to fully learn all the best practices and advantages it has to offer. However, the merits certainly out weight the disadvantages.
Besides this new exciting concept, day 2 had a few other challenges. I realized that there was even more research required to get through the challenge. It became quite obvious that the challenges weren’t meant to be faced individually. To do so was to invite failure and despair. To complete the challenges, a great amount of collaboration is required. I am currently writing this through the seventh season of Game of Thrones, a series I have a more than a healthy attachment to. It brings to mind a comment by one of the characters, “In winter, the lone wolf dies, but the pack survives”. The Andela boot camp is certainly no winter but for the lone developer, there is only failure.
I learned a lot on the second day of boot camp. I learned that planning and foresight are the best way to get through challenges. I suppose in hindsight that these are principles that apply to life as well. However, the Andela boot camp especially teaches one to learn that time management is a factor in success. I look forward to day 3.