Reflections on the fifth week of the Makers course
Was this the toughest week of the Makers bootcamp yet? It was certainly challenging, but not because of any particularly complex coding problems. Indeed, the code we used was very similar to last week. The challenge instead came from a new way of working: we broke from the usual routine and spent the vast majority of the week working in groups to produce a clone of AirBnB.
The week got off to a good start, with a positive code review session of the ‘chitter’ weekend challenge We then went into the weekly kick-off where we were given a whistle-stop tour of agile workflows and extreme programming. After that, we were put into groups. It all felt a bit odd — I’d grown reasonably comfortable with the daily routine, and this was a dramatic disruption. Although I was slightly apprehensive, I was also looking forward to seeing how I’d get on working in a coding-based team environment, especially as this is almost certain to be a feature of any future career in the sector.
The three other members of the group I was placed in were all people I had enjoyed working with during pair sessions (though that description thankfully accounts for pretty much everyone in the cohort), and we spent Monday afternoon having some good, open discussions about the project. I’m quite confident working in groups, and it all seemed very positive when we were talking together: however, when I switched my laptop off at the end of the day my mind was racing and dominated by the question: how on earth would we collaboratively build software?
One of my concerns was quickly allayed: we hadn’t used git branching and merging very much prior to this week, so we practiced using this as a team on Tuesday morning in order to set up the basic database infrastructure that our AirBnB clone would use. This went well and I think the whole group breathed a sigh of relief that the collaborative git workflow was not going to be excessively painful! Putting the code together in this fashion did feel slower than usual at first, but by the end of the week this was no longer the case.
Tuesday afternoon was really hard and often frustrating. I paired with a group member who had put in a lot of effort the night before to produce some code and tests for a couple of user stories. We needed to think about how to make this code work with the new database we had set up in the morning, and to move the code (which was in an entirely separate local repo) into a branch of our main repo. We spent a long time debugging, and then had an even more frustrating time finding out that the debugged code threw up even more bugs when it was introduced to the existing project. It was a difficult afternoon, although we worked hard to try and fix the problems. I learned a lot about debugging but perhaps even more about team work: maybe I should’ve suggested sooner that we manually merge the code step-by-step rather than trying to do it all at once (the former approach would have allowed for more refactoring and code enhancement, to break up the monotony of debugging). I felt quite stressed by the end of the day, and spent a long time reflecting on how I could tackle problems better without getting as frustrated.
I feared that Wednesday was going to offer more of the same, as for various unavoidable reasons our group couldn’t meet until 10.30am. However, we had quite a good stand up to start the day and began to assign tasks in a more logical fashion. Prior to this, I had worried that we lacked a clear plan for our project, which I later discovered was a concern shared by others in the group. Although we eventually stumbled on a good formula for assigning tasks, and developed a pretty effective workflow, a clearer plan at the outset would have helped to smooth the first half of the week. In retrospect, this was all a good learning experience: though it was difficult to get through, I probably learned more from getting a few things wrong than if everything had worked perfectly first time.
Anyway, half of us went away to work on the backend and the other half worked on the frontend. I had a decent pairing session and began to feel a sense of progression with our project (and more sense that I was contributing), though it sometimes felt a bit unnerving working with code that I knew other people were working on, even if theoretically they were changing different sections.
Just as the group work was getting into a groove, I had an absolutely terrible, but also surprisingly inspiring process workshop on Wednesday afternoon. Unlike last week I dwelt slightly longer on the instructions, trying to read between the lines, but ultimately misread some of the instructions and ended up wasting a fair bit of time on a futile approach. My observer did chip in with some advice, which was much appreciated. I made some good progress, but in the last few minutes suffered from a bit of brain fade and forgot how to use hashes properly in Ruby. I wondered if I was suffering a little bit of mental exhaustion from the intensity of our group work. In any case, my observer was really kind in their feedback, focusing on what I did well and suggesting that I had only really made small-ish errors which could be easily fixed next time. We had a good chat and I felt compelled to offer public thanks in the Makers ‘appreciations’ Slack channel! When it was their turn, my observer also ironically became blocked on hashes, and I was able to feedback afterwards a possibly different approach (which worked), so that brought back a bit of confidence.
I spent some time on Thursday morning talking to my mentor (who has now finished the Makers course). It was a much-needed chat: my mentor is a very chilled individual, and he shared some of his more difficult experiences from the course. Interestingly, very few of them revolved around coding. I worked solo for most of the morning and got a lot done, before having a similarly productive afternoon of pairing. We got some of the most important bits of our code sorted, which was good because the Friday deadline was looming! Thursday was probably our best day as a group so far, with a good routine and a clearer sense of who was doing what, and how each task fed into the bigger picture.
On Friday I spent a difficult few hours trying to get a bunch of failing tests to pass for our code (the tests were a bit of a patchwork quilt, cobbled together from different branches). I knew that technically we didn’t need to get the tests passing as our app worked, but I was uncomfortable with RSpec’s sea of red messages. I realised that I couldn’t get the tests to pass until the ‘logout’ function code was ready: this appeared around lunchtime and by 2pm the RSpec tests had gone green. We had an app, and we had a suite of passing tests! We met as a group at 2.30pm to put together our end-of-week presentation and make some cosmetic changes to the app. Our presentation to the rest of the cohort went well, with everybody in the group playing a part. The other presentations were also interesting, demonstrating a variety of different approaches to the same problem. Once all the presentations and the final end of week retro were over, I was exhausted and glad that the bank holiday weekend had arrived…