Two months ago on 10/29/2013 I signed up for a paid account at Team Treehouse. Since I actually spent money I consider this my web development “birthday”.
I’ve learned a ton, particularly about
- Unix command line
I’ve developed both on my desktop (Windows = sloooow) and also used a cloud-based development environment, Nitrous.io.
I would call myself an “Intermediate Beginner” at this stage. My knowledge and feel for Rails and the MVC model are growing daily. I don’t have to fumble around looking for the locations of files and I can troubleshoot my errors.
If my Github profile is any indicator of my progress then I think building 10 Rails apps is pretty good.
If I knew then what I know now and could go back in time and do it over again the only thing I’d do differently is make the “Getting Started with Rails” tutorial the first tutorial I did, and then build that app about 5-10 times in a row. There is simply no substitute for putting fingers on the keyboard and coding.
Another thing about the Getting Started tutorial that I like compared to Michael Hartl’s tutorial is the complete lack of TDD (Test Driven Development). Hartl’s tutorial is a comprehensive tutorial aimed at beginning and intermediate level users, so the focus on TDD is appropriate in that context. For the complete novice user (e.g., me) I think that the TDD elements are a major hurdle and a possibly a roadblock to learning Rails effectively.
While building the tutorial’s showpiece, the sample_app, I found myself asking “Why am I doing this? Why am I running this test?” I understand the role of testing in app development, however for a novice who is just learning the very basics of Rails development I think TDD may lead to massive amounts of frustration as it did in my case. I suspended development of the sample_app project and instead did the “Getting Started” tutorial 5 times in a row, which gave me a lot of confidence. When I came back to sample_app the TDD parts of the tutorial made sense and the frustration with the TDD process was gone.
I’m really looking forward to building more apps. My immediate goals are to complete Hartl’s tutorial and to complete Team Treehouse’s “Rails Developer” track by the 1/29/2014.
I’m building the “Getting Started” app again and new things pop into my head. This time I wanted timestamps.
Posted <%= time_ago_in_words(post.created_at) %> ago
I created a “Posts” model and post_controller. This code was pasted in the controller which outputs e.g. “Posted 5 minutes ago” similar to how Twitter timestamps posts.
So yesterday I completed the very basic “Getting Started” ROR tutorial; I did it exactly as the tutorial describes.
I’m beginning to understand Rails a WHOLE lot better, but of course practice makes perfect. Instead of jumping to another tutorial what I’ve decided to do is use this tutorial as the basis to expand my knowledge on other fronts. The app is so easy and fast to build that I can spend the majority of my time learning new things.
With this in mind today I built the app again and this time I incorporated the bootstrap-sass gem that I learned about in another Rails tutorial. Along with reinforcing the steps needed to install a gem I got to work on my CSS skills.
Link to repo of this project
So I just completed Rails tutorial on rubyonrails.org in which I built a very basic blogging application. It took me somewhere between 6-8 hours to complete.
I wanted to deploy it to Heroku and I ran into all sorts of problems. Problems with SSH keys and the repository not being available and some “cedar” error. These are all problems I ran into when trying to deploy to Heroku when I started the Hartl Tutorial. I think I spent about 1-2 hours trying to get it to deploy correctly and I was pretty pissed/frustrated throughout.
This time instead of getting pissed off I’m going to walk away from the computer, come back in a little bit…and not even try to deploy to Heroku. I’m going to build the blog application again; my time is better spent building instead of deploying.
Link to repository on Github
Design Your Own Learning Boot Camp: A 13-Step Guide
I tweeted the link to this post and I’d like to discuss a particular point made in it:
6. Set your hours. Define your dates.
It’s easy as an ambitious learner to feel guilty when you’re not spending time learning. To eliminate the anxiety that you’re not doing enough, specify when you will be learning, and when you can feel comfortable clocking out. For example, you can choose to set weekdays from 7am-9am and nights from 8pm-10pm as your key learning times. The key is to schedule less than you think you need, but to non-negotiable stick with your learning times.
Also: make sure to set beginning and end dates for your boot camp. This enables you to delay gratification and put your head down and work hard, because you have set a date when you can stop.
This point really hit home for me. I’m an easy-going type of guy that tries to not take things too seriously, but if I decide I want to be good at something I spend hours upon hours researching and reading and OBSESSING about a topic. It’s been the same way with this web development thing. If someone did a certain tutorial in 2 weeks, then I have to do it in 1 week. If someone finished two courses on a certain subject then I need to complete 4. If someone got a job as a developer in 1 year then I want to do it in 6 months.
Obsession is a gift and a curse.
I have a saying: “A person’s greatest strength is often their greatest weakness.” The same obsession that drives me to outshine my peers and compete to be the best can also fill me with dread and anxiety. What exacerbates this problem, at least up to this point, is that I was unsure on exactly HOW I wanted to learn. It’s not like school where you have a set curriculum and then you can choose to do extra credit.
I’d like to avoid the anxiety associated with “Am I doing enough???” To that end I’m going to set MINIMUM benchmarks that I want to meet each day and then try to SURPASS them. The minimum benchmarks will still be ambitious, however once I meet them for the day my mind can relax…and then I’ll study for another hour and congratulate myself for going above and beyond.
Today’s benchmark? Complete Chapter 6 in Hartl’s Rails Tutorials and watch 3 videos on Team Treehouse.
My study schedule the past 4 weeks has been 3-4 hours of study during weekdays and 5-8 hours on the weekend. I’ve been able to learn and absorb a ton of material in a short amount of time. However I’m not superhuman; I get tired and/or bored with learning one specific task from the same instructor/source for hours upon end.
If you’re paying attention you’ll notice that instead of devoting myself to one specific task/source I use multiple sources simultaneously. This strategy may or may not work for you.
- Team Treehouse
- Rails Guide Tutorial
- Michael Hartl’s Rails Tutorial
- Ruby Koans
- Learn Ruby the Hard Way
I may spend 2-3 hours on Treehouse and then an hour on a Rails guide. Or spend two days straight on Ruby, get burned out and then switch to another topic.
Burnout is a real concern when you’re studying as intensely as I am. There have been times where I’ve dreaded sitting at the computer to learn, but forced myself to do so anyway because I’m BOUND AND DETERMINED to learn this material. It’s really turned into a bit of a mind game (which I enjoy), e.g. “How much can I study this topic before I balk at the thought of studying more.”
I’ve been intentionally limiting my access to Team Treehouse’s material for the past week because I was getting a little tired of it. Today I sat down to watch some videos and that automatic “OMG, not another video” feeling that I had last week is gone, and I feel like having a marathon learning session…
Hartl’s Rails Tutorial
- Chapter 2 (easy)
- Chapter 3 (easy)
- Chapter 4 (easy)
- Halfway through Chapter 5 (not easy, but not difficult)
I flew through the first 4 chapters, as I had already established a background in HTML , CSS, and basic Ruby through my earlier studies. Chapter 5 is not difficult; I’ve seen most of it before. What’s bogging me down is TDD (Test Driven Development). SO MANY TESTS TO WRITE AND REWRITE AND TEST AND RETEST FOR EVERY SINGLE THING OMG.
I’m not really a puzzle guy. The Koans seem to be written in a deliberately puzzling way which really doesn’t light my fire, but there’s something to be learned from them, so I’ll keep slugging away.
Had to take a 30 minute nap around 8 in order to have the mental energy to study…
Hartl’s ROR Tutorial
- Completed Chapter 2. The actual content was not difficult. I ran into a roadblock when trying to deploy to Heroku and I ran into an SSH verification error that had me on tilt. Found a solution here. Also, don’t forget to close and restart the command prompt.