WDI week 9: pair project week


I actually worked in a group of three for our pair programming project, so we did a bit of pair programming, but also took turns working on stuff individually. This probably made it a little harder to coordinate but we managed to mostly get our app working.

The idea was to build an online version of the Myers-Briggs Type Indicator (MBTI) assessment, which would require users to answer a set of quiz-style questions, then let them see their score visualized in charts at the end.

There were several parts to this task. Firstly, we set up a login through Facebook, as none of us had done this before and we wanted to find out how to do it. We needed a login so we could store a score in our database linked to a particular user.

Then there was the logic for calculating the results. We found a paper copy of the MBTI quiz, which we used for the question content, and then had to translate the scoring system into code. We wrote this in CoffeeScript because this app is very front-end heavy - most of its logic runs in the browser. It works by keeping a running total stored in JavaScript variables, before sending the final score to the server via an AJAX request.

There's a tiny bit of server-side Ruby logic which determines the result we want the user to see, as what gets sent from the browser is numeric data, and we needed to match this to a corresponding four-letter result.

To display the result visually, we used Chart.js. Getting this right was only partially working by the time we finished, so the app still remains a bit of a work in progress.

Although my group worked much more closely on this project than the last one, we still ended up dividing the work out more than we should have. I was determined not to do the front end and visual design this time (something I'm inclined to focus on too much as it's where I feel most comfortable), so I instead took care of the models, Ruby logic and some of the AJAX.

We used Tuktuk for the UI, which is a little front-end framework. I'd like to play around with it for other projects at some point, as it seems like a nice, lightweight alternative to Bootstrap or Foundation.