Dev Bootcamp: Phase 1, Week 2, Day 5

Friday is check-in day, which means getting into your check-in groups and each spending two minutes talking about whatever’s on your mind. Everybody has to take their two minutes, but you’re welcome to just spend the time in silence if you don’t have anything you want to talk about. They can be quite emotional: everyone is struggling to balance more learning than should be possible into just nine weeks, with some tiny semblance of a social life (which usually just ends up being a couple of drinks with your cohort after spending 12+ hours with them coding).

The whole of DBC did a much-needed 5-10 minute sweep of the whole office – the whole ‘three dish rule’ seems to completely fall down due to a combination of laziness and programmer logic:

  • Person 1: number_of_dishes != 3, therefore I don’t need to do the dishes
  • Person 2: number_of_dishes != 3, therefore I don’t need to do the dishes
  • Person 3: What three dish rule?
  • Person 4..n: number_of_dishes != 3, therefore I don’t need to do the dishes

We had our first group project today: we broke into groups of three and four in order to build a Flash card application in ruby. Our group spent most of the morning talking about user/control flow, design patterns, and splitting responsibilities. I took on the solo challenge of building the game logic, while the other part of the team worked on the Flash card file loading/parsing and game setup.

This week I’ve been focusing on SOLID principles and keeping both my methods and classes small and focused. It was quite painful looking back at my Sudoku and Boggle board challenges from last week, seeing a huge ‘solve’ method surrounded by a handful of helpers. However, I was quite proud of my solution today – my ‘run_game_loop’ method in my ‘GameLogicController’ class, for example, makes its intentions very clear, even to someone who doesn’t know any programming:

  def run_game_loop
    until game_over?

Leave a Reply

Your email address will not be published. Required fields are marked *