February 16, 2016
I learned how to start a project and lay the groundworks for a CRUD funtional project today. It took a matter of minutes and a handful of commands.
Needless to say, I was blown away.
It taught me a huge amount of respect for the way that they've been teaching us fundamentals here at Turing.
About a month ago we built this project called HTTP Yeah, You Know Me. It was designed to mimic a basic web game and teach us about HTTP protocol and verbs and parameters and other web-based vocab words. What it did was slowly drive everyone insane until they figured out how to print some basic text to the browser based on certain conditions. It was a little guessing game. It was impossible. OK, not really, but it was very, very hard. Parsing HTTP requests in Ruby when you barely know what Ruby is can be challenging to say the least.
Just a couple weeks later, as pre-work for the next module, we quickly built a project called Web Guesser. This was a very very basic Sinatra app with one view and all of the logic built into the controller. It was also, pretty much the exact same as HTTP YYKM. We were able to build on the super-basic, but super-behind-the-scenes, knowledge we gleaned from the first project to improve efforts on this next one.
I'm not even going to get into jekyll and the evolution of this blog. Needless to say, more "doing-it-the-hard-way" seems to have happened.
Finally we started in on our first real Sinatra project. We were able to put together our routes, controller, models, and views to make a really dynamic site that mimics Google Analytics (at a very basic level). We needed to pull in our knowledge of HTTP requests and headers, build on the basic sinatra knowledge, and make everything work together with a powerful, but obviously limited tool - Sinatra. It's crazy to see how much power could come out of a simple gem like Sinatra, especially in conjuntion with database tools. However, the whole time I just felt like we were still building to one more thing.
So many other students here just repeated the refrain, "Just wait until you get to Rails." So I knew it was going to be cool, but I didn't realize how powerful it really was. In Sinatra I wrote a bash alias to setup the project folders and basic files. Rails does that after a single command. Rails gets your database stated and set-up with practically no effort. It makes simple things like a Web Guesser project seem absolutely trivial. HTTP YYKM was nigh impossible just a few weeks ago when trying to build it with only Ruby. Now that whole thing could be built in just a few command line prompts and a couple simple methods.
Building on knowledge like this may be one of the secrets of this school. Learning exactly what's going on behind the scenes might not be absolutely essential, but it enhances understanding of future topics. I think it also made it possible for us to pick up such powerful tools later, and understand them with little effort. If you find yourself lost on a new topic, dig down. Go deeper. Find out what's actually going on at the simplest level. Bring your understanding up from the very bottom. Would I have preferred to learn how to build Web Guesser in 10 minutes? Sure. Would I actually be any better at coding? Absolutely not.