The Firehose Project - Week 2

Week 2: done and done! My second week of theFirehoseProject has come and now gone. It’s been an interesting week with some really valuable lessons learned. It’s amazing still how much I have been enjoying coding. It’s the part of my day that really brings me a sense of accomplishment and fulfillment. There is really a sense of joy and appreciation when you can see the things that you are building erect right in front of your eyes. At this point I can look back on my previous week of code and see what basically amounts to a time lapse photo of a skyscraper being built.

I’m currently on the Nomster app and have made some really good progress in the last week. I started with nothing and now I’m about 80% through the application. I mentioned that looking back on your code is like watching a time lapse of a skyscraper going up because I looked back today and wanted to see where I was a week ago with the app and compare to where I’m at this week, it’s pretty incredible. It feels good and even with the periodic smashing of my skull against the wall I still just want more and more.

So what happened this week? What did I learn? There were a couple of big moments this week. The first being was that I met my mentor, a veteran programmer and an all around likable guy. I’m pretty excited to have a mentor to push me and keep me on track with what I need to working on and from there someone who will help build my skills beyond the course curriculum (which I assume is the biggest purpose of a mentor; growth beyond). Our first interactions was admittedly filled with technical difficulties but we muddled through it learning what we need to do to improve the this weeks session. Even with all of the technical difficulties we managed to do some coding together and jump right into the deep end, by the end of the night I was done with my first coding challenge and even learned a few things that I hadn’t known before hand; win win. First session with my mentor over with and I feel like it’s going to be a good 13 more weeks.

Now the skull against the wall stuff. What valuable lessons did I learn this week? Well a few actually. Week 2 has shown me that one missed character means much more work to do in the long run, especially if that character doesn’t actually break the program in the moment of the mistake. The character I missed was in the ‘routes.rb’ and it was just a simple little ‘s’ at the end of the ‘resources’ path which provides crucial CRUD methods to use in the routing of your application. My mistake was missing the ‘s’ which resulted in not having the available CRUD methods. While this wasn’t an issue right away since we weren’t using them until later, they became a big issue later; confusion ensued. After smacking my head against the wall and figuring out what the hell was going on I found my problem and I fixed it. Guess what happened though as a result? I understand CRUD routing where before it wasn’t clicking. With that little mistake it all was clear to what ‘resources’ does in the routing table. Lessons learned: Use your mistakes as learning experiences. CRUD routing is important for functionality.

Speed typing is not your friend and there is no spell checker. I’m used to cranking out words and words of information on a daily basis cranking through the keys and only stopping when I see little red squiggly lines underneath my misspelled words. You can’t do that when you’re coding. One subtle spelling mistake can lead to a length bout of face to desk to figure out why it’s broken now. Then to only realize it’s because you were going to fast.

Lesson learned: Taking the time to read what you are typing and then double checking your code can lead to a massive reduction in headaches later on.

Follow the order of operations! I’m the type of person who will take a perfectly step by step approach to do something and try and figure out a way to tweak and do it in fewer steps. News flash it doesn’t always work. When developing we are working with two environments; one local (development/test) and one on the web (production). With the production environment we use Heroku to host our applications and it’s brilliant and very friendly to the coding n00b. However, you can’t cut corners when you are trying to push to your production environment; there’s an order damnit! Me being the ever hacker of reducing my steps thought I would be clever and skip a step to get a leg up since I knew I was going to have to do it anyways but you can’t, it breaks your application. It took me a little bit to figure out what I did and then I realized I can’t rake my database until after I push my modification to heroku otherwise it doesn’t work.

Lesson learned: There is a standard order of operations when pushing to heroku for a reason, just follow them.

Obviously I must be a glutton for punishment so I jumped in to do some coding challenges on my own. Holy shit do I feel way in over my head when I’m just doing raw ruby code. Honestly, I’m struggling with it. I feel completely out of my element and I’m pretty sure that’s a good thing because what it means is that I’m learning. Wanting to impress my mentor by the time our next session was done I wanted to crank through as many of the prep and coding challenges as I could and I didn’t get anywhere near where I need to be. When I do manage to complete a challenge I do get a remarkable high when it’s done and I fully understand what it is that I was suppose to be doing. Until that point I’m really just trial and error to figure out what the hell I’m suppose to be do. Lesson learned: Raw ruby is my weakness right now, I need to work on that.

The proving ground lesson, lesson 39 of the Nomster application. From what I was told and how it was described to me that this will be the culmination of what you learned up to this point and if you get this you will have a firm foundation of building any CRUD application. I was nervous coming up to this lesson and wasn’t confident in my ability to know what I’m actually doing. As it turns out though, I kind of do. Bored and without my development machine at work, I attacked the problem old school; pen and paper. I took multiple sheets of paper and wrote out all my steps and all the commands and code I will need to write to get things working. This proved to be an interesting way to code, I had to think logically how everything was going to work, really think it out. This proved to be valuable because when I got home I cranked out 75% of lesson 39 in under 2 hours. AND IT WORKED! Then the following day I wrapped it all up. The only thing left to do is connect my AWS account to it, which I’ve already fleshed it out. This has left me super stoked and confident in my ability to build a simple CRUD application.

Lesson learned: You never know what you are capable of until you are tested. When you complete the test your confidence grows.

Overall week 2 has been intense and filled with a lot of valuable lessons. The challenge keeps me coming back and the wins keep boosting my confidence. Oh and lets not forget about the valuable lessons you can learn from making mistakes. With what I have learned this last 2 weeks I can see a mountain of possibilities I can’t even imagine what the next 13 weeks will have in store for me. What I do know is that I’m excited for all the upcoming challenges and experiences.