Recently a friend and I from Flatiron worked on a small project together. Although the application is unfinished and not deployed/styled, this was the first big project where we took all the little components of a full stack application that we were learning and put them together and it was awesome. Not only because we were finally able to connect the dots between all of the individual technologies but because some incredibly important lessons were learned along the way.
This assignment consisted of us building some application with a certain number of models, class methods, controller methods and the like. After wiring several of our components together and seeing that pages were correctly being routed to locally and data was being successfully saved, associated, and referenced on the back end, we decided to try and implement some sort of login authorization with the ruby gem devise (https://github.com/plataformatec/devise).
We initially got it working and proper cookies were being created and everything was great and we celebrated and we high fived... prematurely, though. We came to realize that a few lines of code inside of out main routes.rb file threw off every single route we had created up until then. Everything became so messy that we ended up just deciding to scrap the project, rm rf it, and create a brand new repository and generate a new skeleton rails application… 8 TOTAL TIMES.
Why did we do so you may ask? Well, instead of slowly stepping through possible solutions, committing, pushing, pulling, making branches and settling merge conflicts, both of us dove right in, changed things and deleted others, throwing any sense of caution to the wind. Did we learn anything?
We absolutely did. A day before the project was due, it was burnt down one last time and then rebuilt utilizing the previously unutilized git hub methods of saving progress and having a means to revert to safe states of code!
Since this last burn-down we have less time wasted, safe spaces in separate branches to try and implement stretch goals/different technologies as well as ruby gems, and the overall feel of the development process greatly improved in lower levels of stress and higher levels of fun and learning!
Although I would have liked to get it right from the first time rails new was executed in the terminal, this experience and the lessons I have gathered from it are invaluable AND made me a better developer. Ultimately that is what I want: to be an incredible developer and solve interesting problems!