Aurora - behind the scenes.
Hello again!
Now that the internship is almost over, it’s time to talk about some technical stuff.
Ruby on Rails
The first challenge for the back-end team was to learn how the Ruby on Rails framework works.
We had never had any meaningful contact with the framework before. Although it’s not that hard to learn, it is different from what we were used to work with. So, after our first week, where we had some introductory talks about what we were going to use, we finally started to learn the dos and don’ts as well as how some of the magic 🎩 ✨ 🔮 behind this framework happens.
First challenge completed? Not quite… learning is a perpetual process. But fear not! The amazing team of mentors 🔥 🚒 is always available when we fail to find the answer in Stack Overflow.
Planning the API
Second challenge: Design an API. How do we do it? What data should be sent back and forth? How do we document it? Which endpoints should be created? Those were some of the questions that popped in our minds when we first started to dig in this task. After some thought and advice, we concluded that the API must have consistent responses. The endpoints and their respective HTTP methods should clearly state what’s going to happen to the resource. To specify which endpoints were going to be created and how they were going to be named, we tried to follow the best practices for web API design. After some trials and errors (many, many errors) the API design was conceived 💪🏼 🎉.
During the API development, a staging server was needed, so the Android team could also use it.
Since none of us had any experience in DevOps, Heroku was our first choice, as it eases a lot of this process. But we wanted to get the most from this internship. So we asked our mentors ( 🚒 ) if we could have a DigitalOcean server which would be used for staging and production. With their help we managed to configure the server using Ansible, set up deploys with Capistrano and continuous delivery with Wercker.
Tests, tests and tests.
Last but not least, testing. In university we all hear that writing tests is important, but this internship showed us the hard way its relevance. 😥 In the second week our mentors gave us a talk about how to test Rails applications with rspec. We soon started testing all the features implemented until that point. But, because of the short development time, we made the risky decision of prioritizing new features instead of solidifying the already implemented ones 😎.
We later realized that we lost more time searching for bugs than we would have if we tested everything from the beginning. 😶
In conclusion
In addition to overcoming all this challenges, we also lent a hand to our fellow designers 🎨. We assisted them setting up the local development environment. Taught them how to work with git and also helped them solve any issue that could have come from this.
In the end, and thanks to this challenging project, we can safely say that we learned (sometimes the hard way) a lot about software development processes, along with new technologies and tools.