This week started with getting a surprise project: Clone Wars on Monday afternoon with the requirement to have it finished by Thursday morning and presentable by Thursday afternoon.
The project was working with a team of two other students to take a local business's website, pull out the contents with Nokogiri and Mechanize and then recreate it with Sinatra and a SQLite3 database.
Our group had a few constraints - the largest of which was time. Since we didn't know about the project before Monday, many of us had scheduled other appointments (doctor, mentor, etc) and I, personally, had my mother flying in to Denver. So we really only had two days to complete the project and couldn't work as a group after 5:30.
What I Learned:
Sinatra: I feel like my focus with the project didn't extend to learning much about Sinatra that I didn't already know.
SQL: I learned a lot about translating between SQLite3 and PostGreSQL as a function of pushing our project to Heroku. I worked with one of our teachers, Jorge (https://twitter.com/novohispano) to get the project Heroku ready. We did a LOT of fail, read the logs, google-fu, minor change and then check. A lot of issues came from SQLite3 commands not translating into something that PostGreSQL could use. One critically cool thing we did was creating a rake task for the migration of the information into the database.
HTML/CSS: I learned a LOT about inspecting elements and formatting from this project. We pulled straight html from the website - which was in XHTML… so a lot of what we had to do was clean up the formatting. I also learned to pull color hex codes from Gimp.
What Was the Most Confusing Part that We Hacked Together?:
Am I allowed to say 'All of It'?
How are you Feeling about Writing/Using Feature or Acceptance tests?
Well. At one point I wrote some great tests. But then, with the time constraint of having something that wasn't completely embarrassing deliverable by Thursday, I started rushing ahead without tests.
Boo this developer.
I really enjoyed a presentation by another group of students explaining how they created acceptance tests first thing to make it clear what they wanted to accomplish at the end. I very, very much want to do acceptance testing first on my next project.
If you had another week for Clone Wars, what would you build?
I don't even know if I would build so much as clean up. I like what we created, which was a scraper that could recreate a website - but every part of it needed more love and attention. I would have wanted to clean up with the scraper so that it could be used without a lot of human correction. I would want to add validations and protections on to information going into the database. I would want to build up the testing suit so that it could help in pulling other websites… I would want to delete outdated code that we left in the project… etc etc etc
What was different about working in a three-person group?
This actually wasn't the first project that I worked in a group of three for… but it was the first project without clear step by step directions. Defining objectives as a groups is hard. When I work on my own, or with other people, it's easy to correct errors in judgement. But with three people, it's hard to recognize when you've gone down the wrong path and then correct it.
With a larger group, taking the time to write acceptance tests might really help at the beginning of the project. I'd also like to look into using pivotal tracker or creating github issues to define reasonable expectations… but an acceptance test is a little bit more grounded. In writing the code to create the test, you get an idea of how large your expectations are.
That said, I was super impressed by my group. We kept our spirits up really high and it ended up being very fun to work with my teammates :)