Project Week 1 — MakersBnB
Last week was our first group project week. Our task was to design a version of ‘Air BnB’ where we should be able to display and list ‘spaces’, detailing name, availability date and description. As a user you should be able to list your spaces for other’s to hire, and you should be able to make a booking request for space, choose a night you wish to stay, and have it confirmed by the owner.
This was the first group project we had done so far at Makers, and the aim of the week was NOT to complete a successful ‘Makers BnB’ program, but to practice and consolidate technologies we had learnt over the last 5 weeks, practice working in a team environment and to develop good working practices for attempting to deliver a project. The coaches made it quite clear that they did not care whether the project was finished or not, and did not necessary want it ‘flashy’ and looking great, if it did not have clean code, based on a solid testing framework.
I thought this week was an excellent compliment to the previous weeks ‘pair programming’ format, where we followed clearly designed instructions and walkthroughs. This time, we were formed into groups o f 4 and 5, and had to derive our user stories ourselves, from a provided specification, and work out our own processes to deliver. Based on advice from the instructors, we decided to write the program using Capybara for our testing framework, Ruby as the base language, DataMapper for working with databases, Sinatra as the local server and CSS/JQuery for some front end (if we got that far). While some groups decided to explore new technologies such as Node, we decided against this, as we could see no benefit to struggling through trying to learn a new technology, when it was best to try to practice some of what we had already learnt, and try to make our code as clean and elegant as possible.
The week was in short, extremely beneficial and good fun. We learnt how to use GitHub within a group setting, and learnt how to set issues, linking them to Waffle.io to provide a ‘project management’ framework for our project. We held morning standups each day, and discussed issues and best practices for the day to come. We also implemented for the first time, pull / merge requests from multiple people working on the same project code, and discovered the joys of code review and dealing with merge conflicts (of which there were surprisingly few).
From a personal perspective, it was great to go over hosting a locally served site on Sinatra and working with databases again. We created a number of tables within our database, linking them with one to many table associations in DataMapper and iterating over arrays to abstract the required data for certain pages in our site, for example to display name, availability and description on the ‘make a request’ page. I am still struggling with testing in Capybara and RSpec so it was really good to go through this again.
One of the hardest elements of the week (as is often the case) was learning to deal with your frustrations with group dynamics and working as a team. A certain member of the team would often be late in the mornings, take exuberantly long lunch breaks and generally omit an aura of disinterest and not really caring that much. In addition, I had to deal with my own frustrations when I didn’t understand some aspect of the code, and allow more capable members of the team to explain and go through things with me. Overall, we had a really great group, and whilst we didn’t deliver a flashy looked, fully styled and responsive web app, we were proud of the functionality we delivered and the professional approach we made to testing and writing clean (or as clean as we could make it) Ruby code.
We also learnt a lot over the week, which we can and will be sure to apply to the next group project we undertake. We learnt that although our User Stories were robust, we should take more time developing associated and subsidiary tasks, writing them up as issues to Waffle. Whilst it is important not to try and plan the entire project at the start, as this will inevitably change, we will ensure that we will plan more than we did, for example, clearly lay out our database and table structure, and our page and route structure. At the end of the week, we delivered a full review of our progress and following the XP principles, provided honest and constructive feedback to each other. You can sit through all the formal classes and training that you like, but you can not emulate just getting on and working in a group to build a program. I learnt so much this week, and although it was tough, and at times frustrating and tiring, I a glad that we did it, rather the Makers Academy original format which was to allow people to ‘break’ for a week, in order to go over work and consolidate previous learning. Although, having a couple of days to do this would be good, being forced into a group environment and learning the way we did, was extremely beneficial, as without doubt, left to consolidate at home, would have lead to ‘life’ getting in the way, and I would not have achieved as much.