CodeClan Week 5: Ruby Project Week!
Loading : [█████░░░░░░░░░░░ 31.25%]
The Ruby Project Week
At this point of the course, the cohort had all the tools required to build a simple web app. To make things a little easier, the instructors provide a number of pre-defined briefs, written as a list of requirements to the application.
I have selected the brief to build an app for tracking the inventory levels of a shop. As I am really into my coffee, and this magic bean juice has been keeping me functional on a day-to-day basis, I decided to have this project pay a little tribute to this wonderful drink.
And so, my project is designed for coffee distributors to track the stock of their products. For those interested, you can find the source code here. All in all, I am quite happy with how COFFEE turned out. I have continued to improve it even after the project week, with a few features still in progress (e.g. filtering by one of the products’ details).
At the end of the week, each student got to present their work to the rest of the cohort. It was very interesting and inspiring to see how people took the same brief in slightly different directions, with various choices on functionality and design.
About project design, and visual design
As mentioned in the previous blog post, planning this project out was half the battle. For myself, I had definitely started off with an overly complicated plan for my data structures. Shortly after then getting into writing the code, I found that this plan was going to cause considerable complications down the line. As a result, I ended up scrapping my initial plan, and creating a new, more simplified structure for my app. Lucky for me, there wasn’t any regret in having to scrap my original plan, no ‘sunk cost fallacy’, I was glad to have learnt that overcomplicating plans is not necessarily the way to go. After all, we were frequently encouraged to aim to deliver a well polished minimum viable product, rather than a very feature-rich program that is still rough around the edges.
The back-end of the project was fairly straightforward, as it was not all too different from the exercises that were given out during the weeks leading up to the project. One thing proved a bit more of a challenge, however. Returning from the time of the pre-course work, which feels almost like an eternity ago, was none other than CSS itself. One of our instructors compared CSS to Marmite, saying you either love it or hate it. For myself, I am not sure which camp I am in at the moment. There are some situations where CSS seems a little unintuitive, but I am confident that with enough practice it can become fairly easy to use. Nevertheless, none of it distracts from the fact that I am not a visual designer. My first proper app looks very cartoonish, and I was definitely aiming for that theme, but I highly doubt that any professional designer would approve.
It’s open season for bugs
During this week, it was nice to be surrounded by the people in my cohort. It was very helpful to be able to ask others for opinions, and to be able to get a fresh pair of eyes to help and track down particularly persistent bugs. It was also refreshing to take a break from my own project to try and help others debug their code. I found it impressive how sometimes it is easier for an outsider to spot bugs, compared to the person who has been writing the code, simply because their mind is not too focused on details.
If it ever came to the case that a bug was so persistent, and I was making no progress at all, our instructors were always there to help. We were encouraged from the start to make sure that we introduce them to our code properly, since it is practically the first time they are seeing it. In the few times I have asked for help, I therefore had to think about how to explain the structure of my program, what I am aiming to achieve, what I think my code is doing, and what I think is going wrong. Explaining these things to an ‘outsider’ was a good skill to practice, and a few times I found that simply by explaining it in that fashion, the answer to my problem would naturally come to me. In a way, it’s almost like ‘rubber ducking’.
The weeks to come
With it being the festive season, my cohort has a two week break. We were given a few pointers on what to possibly do to keep our ruby skills fresh. For myself, I have decided to try and create a program for one of the other briefs. While choosing the original one, I was not aware that I was choosing the simplest one (in terms of data-complexity). Because of this, it would be nice to challenge myself on a slightly trickier project. Other than that, there’s always codewars.
After the break, we will be starting the JavaScript module. I am particularly looking forward to this one, because during the Ruby project, many people mentioned that JavaScript unlocks a whole bunch of possibilities when creating dynamic web apps. Hopefully, it will also provide me with more interesting things to blog about!
With this I would like to thank all of you who took time to read these posts, and wish everyone happy and restful holidays. Safe travels (if you intend on doing so), and a happy new year!