Web Retreat Aberdeen – there is another way

“We all face challenges in our day-to-day life, and we all have our own ways of dealing with them. But what if there’s a different way? What if we collaborate using more unorthodox methods? That’s what this year’s Web Retreat has taught me; there is a different way.”

Web Retreat has a simple method:

  • Split the group into pairs to solve the challenge
  • After 45 minutes stop and throw your work away
  • Stand up and discuss the pros and cons as a group
  • Change partners
  • Repeat

This encourages the great ideas to seed throughout the group whilst leaving the bad ideas behind. More importantly, it educates the group as a whole. So next time you’re part of a group facing a challenge take a step back and think. Can you afford not to throw it all away and start again?”

(Intro by Ray, our front-end developer)

On Saturday, I attended Web Retreat, a full-day of coding for Web Developers to learn and practise through a series of 45-minute challenges. The day is an adaptation of the global day of Code Retreat, where developers from all across the world focus on improving the skills they have rather than ‘getting things done’.

Challenge One – Clean it up
For the first challenge I was tasked as being the driver (person coding) and my partner, the passenger, was only allowed to make code suggestions but not allowed to actually write any code. The source code we were given, a JavaScript implementation of Conway’s Game of Life, contained many deliberate errors, poor mark-up and random btk variables that were both unclear and confusing.

We got to grips with the code base that would be used throughout the day, discovered what parts could be thrown away and figured out how it all worked. By the end of the first forty-five minutes, I had removed 80% of the unused mark-up, fixed the mouse offset and not much else.

Delete your code!

Challenge Two – Make it responsive
I would class myself as ‘experienced’ in making websites work on smaller devices, however, this time as the passenger, I was working with someone who was not sure where to begin. This challenge was extremely beneficial for me, allowing me to explain how this should work to my partner. We started off with Bootstrap and by the end of the challenge had managed to get the grid squares of the game of life to expand with the width of the browser, having started with a table-based layout.

Challenge Three – Constraints
The third challenge again tasked me as the passenger, and the group was given the Constraint Card Focus On Speed for the code. This constraint would see the room try to optimise the code to get the page load time to as low as possible. Each team was also given another constraint card but unfortunately, we received One Button.

This constraint would see us try to refactor six buttons (run, once, pause, faster, slower, normal) into one. It was quickly decided that we only needed a start button and could use the keyboard to perform the other functions. This was nearly finished when Ian, the Web Retreat facilitator, decided that a keyboard key was also a button so this was technically cheating!

As we went back to the drawing board we realised that there was nothing saying these six functions had to be performed, so decided that we would go one better and use no buttons and have the game start on page load!

Challenge Four – No loops
What? How? Why? I have been learning JavaScript for over four year's now and even though I recognise I am no expert, I would say that my knowledge is greater than what would be known as a beginner. This challenge completely broke my brain. The removal of a loop is something that would seldom be done within a client’s site and I simply didn’t know where to start. A frantic Google search and checking my usual references didn’t help. Forty-five minutes later and I don’t know if I made the code better or worse. I later learned that I should have been using recursion to tackle this, which seemed logical in hindsight!

Challenge Five – Two constraint cards
For the day’s final challenge my team picked two more cards – More Sound and One Image. As the Game of Life grid squares were using images, it was simple for me to replace the images used with CSS and in order to add sound we used an HTML5 audio generation library to create a sound every time a new grid square was activated.

Having never attended a coding event before, the day’s structure of short challenges before deleting the code has allowed me to gain valuable problem-solving experience and also highlight the areas where I need to work on.

The most important thing that I have taken away from Web Retreat is that when faced with a difficult problem that requires a logical thought process, there are literally thousands of ways to solve the exact same problem. However, through collaboration or simply taking a step back to analyse the task in hand can encourage more elegant solutions to be generated.