Showing posts with label git. Show all posts
Showing posts with label git. Show all posts

Monday, August 31, 2015

3 Ways to Improve TreeHouse's Rails "To do App" Course

I have spent many, many hours working through TreeHouse's Rails Track.  I love TreeHouse.  I have raved about TreeHouse on this very blog since I started it around three weeks ago.  I like Seifer and enjoyed his Ruby basics course.  I waded through many hours of TreeHouse to finally be able to work with Rails and I have been looking forward to it for weeks!  I am about halfway through this course and it is really disappointing.  I was initially thinking of writing a fairly negative review of the course and opening up on it.  However, as an educator of well over 10 years myself, I understand that teaching people stuff is hard.  Therefore, I decided to spin this and make it about improving the course instead of attacking it.

Before I start, let me say that I have about 100 hours into coding and am basically new to it.  That said, I have finished the first three chapters of Hartl's work on Rails.  So, if you are a little more advanced, this course might be a better fit for you than it was for me.

(1) Slow it down!  When Seifer introduced us to Ruby, he was slow.  Something has happened between then and now.  He is now super fast.  There is very little explanation in between the commands and some of them are performed too quickly to even keep up if you are simply typing as fast as you can!  At times it feels like this tutorial is more about him making the "To Do" app rather than about teaching the students.  Again, I am an educator.  I know how grueling it can be to crawl through material you are very familiar with.  That said, this is simply too fast and if students can't follow along they are going to quit on you.

(2) Divide it Up!  In this tutorial, there is a lot going on.  It could easily have been divided up into more sections with more context.  In this course, he deals with gems such as capybara and rspec.  I have divined through watching and doing that these are gems meant to help test your app as you go.  We need more explanation about what they are!  Where did they come from?  Why are we doing this?  Leading up to this, we took entire courses on the command line and on Git.  Now new gems are thrown at us and if you are like me you don't have the faintest idea what they do or why we are utilizing them without reading between the lines in the course.

(3) Testing based development needs explanation!  Throughout the process, you will develop an app, but more time will be spent programming tests to make sure your code works.  You will probably make more tests than app before you get done.  The tests are complex and very confusing and there is scarcely an introduction to the whole process.  This is very frustrating for the newcomer.  I read in the forums that testing based development is a good practice and eventually helps to develop more efficient and error free software.

I am sure that's true, but if you are new it's really clouding the issue.  I teach college students history.  There are countless "best practices" that I have to overlook in the name of teaching them on a basic level that they can grasp and do.  Would it be nice if I could teach them the ins and outs of citations, historiography, and deep reading of primary materials starting on day 1?  Yes!  However, if I try to go into all of that in a 200 level course, nobody will get it and nobody will like history.  In the name of trying to familiarize them with best practices and save time, everyone hates it and before long they won't be interested in anything I have to say!  I think testing based development needs a lot more context here.  Seifer never explains what it is and so we are left not sure what we are doing and most likely not doing it very well.  Teach us to crawl before we walk!

At the end of the day, I still love TreeHouse and I think Seifer is a fine instructor.  I just think some decisions were made that were not consistent with the rest of this course.  In Ruby Basics, Seifer is slowly showing you how to make Ruby print text.  5 hours later, he reappears and is absolutely crushing you with fast moving Ruby on Rails lessons that are pretty demoralizing.

Thursday, August 27, 2015

TreeHouse Git Basics by Tommy Morgan Course Review

Git is confusing to new programmers.  It is "version control software" and my only introduction to it prior to this tutorial was through the early chapters of Hartl's Rails tutorial.  While "version control" sounds like a scary thing and is really confusing at first, this tutorial is so strong at helping to clear up any confusion about Git which at its core simply helps track changes and empower programs to collaborate by allowing them to work on the same code separately.

This tutorial gives you everything you need and explains things in clear and precise terms.  Morgan not only tells you how to use Git, but explains how Git helps to both track many iterations of a project over time and how it can enable collaboration and sharing through GitHub.  Going into this, I had a rough idea that Git helped to save your work and could allow you to go back in time if you messed stuff up.  However, the finer points of branches, merging, pushing, pulling and the reasoning behind the software were lost on me.

In a relatively short period of time, Morgan gets you competent with Git and explains why you need it.  The illustrations of branches, remote repositories, and the art of pushing and pulling are just perfect.  If you are confused my Git, or even feel like you are almost there but need a little more explanation, you need to do this tutorial.  Additionally, Morgan works you through an introduction to GitHub.  GitHub is going to be crucial if you are going to share your work and become part of the programming community, but it is intimidating if you are brand new.  Morgan guides you through it and even shows you how to set up your own public repositories.

I came out of the course with the ability to explain what Git does and understanding everything from basic commits (saving your program to the repository) to what happens when Git is merging different versions of the program and how the programmer resolves conflicts between versions.  The course also features numerous opportunities to practice the commands and features manageable videos.  If you read my other reviews, you know I really loathe long videos and this section tops out around 6 minutes.  What this means is it is nicely broken down into teaching and practice.  I think it achieves a nearly perfect balance in this.

As a teacher, Morgan proves that you don't have to wear a funny hat or pack your lessons with jokes to be effective.  He is pretty low key,  but pulls this off admirably.  Taking me from loosely aware of Git to confidently understanding its purpose and being able to execute most basic commands is all I could ask from this course and it delivers strongly.

Well done TreeHouse!

Code Report!

Resources in Progress:
Total hours into Programming: 98 (4 since last time )
Days into Programming/Hours per day: 2.8 Hours Per Day (Goal:3.0)

Progress on Gaddis' Starting out with Python: Done With Chapter 1, Appendix A,B


Progress on Shaw's Learning Ruby the Hard Way: Finished Exercise 1-13

My Text game: 3 hours, 118 lines

TreeHouse (2558 Points, 32 Badges)

Code Academy Points: (733 points, 74 badges)

Progress on Hartl's Tutorial Ready to start Chapter 3! 

Resources Finished:
Josh Kemp's No Degree, No Problem 8/14/2015

Chris Pine's Learn to Program 8/9/2015

TreeHouse Make a Website Track 8/17/2015
TreeHouse Ruby Basics 8/20/2015
TreeHouse JavaScript Basics 8/22/2015
TreeHouse Console Foundations 8/24/2015 
TreeHouse Git Basics 8/25/2015
TreeHouse Installing a Ruby Environment 8/26/2015

Code Academy Make a Website Course 7/29/2015


Code Academy Ruby Course 8/5/2015
Code Academy HTML and CSS Course 8/24/2015

Friday, August 14, 2015

Git Immersion Tutorial

So I broke down and purchased Josh Kemp's "No Degree, No Problem" (more on that later) and one of the early lessons I kind of skipped over was a brief tutorial on the version control utility "Git".  As I understand it, this is simply a way to track the changes to your programs as well as collaborate and share your work through GitHub where folks can presumable browse and edit your work without destroying all past versions of it.

Git is one of those things you just have to learn about and it does make some basic sense.  The tricky part about it is that you have to work on a terminal to use it and it works best with its own Terminal (GitBash).  Does everything need its own terminal, really?  However, I was able to work through the first 12 or 13 lessons as well as establish my own SSH key with only mild frustration and a few searches of Stack Overflow.

Do I totally understand Git and how it works?  Hell no.  However, I have a broad sense of how it works and have now worked through it twice on a basic level, the first bring when I did the early portions of Hartl's tutorial.  I do plan to finish that, but I am working on a few earlier steps first because it has a bit of a reputation as a beast of a tutorial.

Are you on GitHub? I would love to see some work and check out how people use it if you are!

Total hours into Programming: 62 (3 today)
My Text game: 2 hours, 107 lines

Progress on Shaw's Learning Ruby the Hard Way: Finished Exercise 1-5

TreeHouse (228 Points, 4 Badges) 
Code Academy Points: 568
Code Academy Badges: 60
Code Academy Skills Finished: 2 (Make a Website, Ruby)
Progress on Hartl's Tutorial Ready to start Chapter 3! 

Resources Finished:
Josh Kemp's No Degree, No Problem 8/14/2015
Chris Pine's Learn to Program 8/9/2015 

Monday, August 3, 2015

Toy_app Done!

I finished chapter 2 of Hartl's book which is a great feeling!  Everything worked and I even had the chance to correct a few mistakes.  I also learned from a few different Stack Overflow questions and am really beginning to feel like I could perhaps do this unguided one day.  Whereas I was feeling pretty defeated a couple days ago, making slow and steady progress through the Ruby on Rails tutorial book has been rewarding.

That said, chapter 3 is really where it begins.  The earlier chapters essentially say that you will not pick much up in terms of deep understanding jut by doing them, but they do give you some momentum.  I am also getting more and more comfortable with git, bitbucket, and heroku.  I even got my app to display and work on an actual browser!

Python has gotten a little more sticky, but I have made it to around 40% through that Code Academy tutorial.  I have gotten to the dictionary portion of the tutorials and am trying to work through how to print the key with the values from two separate dictionaries in one output.

I also notices that I have made it over 40 hours on this journey so far.  Going from no knowledge at all to a decent foundation in basics in Ruby and Python as well as a solid foundation in Ruby on Rails is a pretty good start.  While I love the idea of working as a programmer, coder, or developer I am not relentlessly and desperately pushing for that at this point.  First things first, I want to be literate enough to code some of my own small programs.

Total hours into Programming: 41 (6 today)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 447
Code Academy Badges: 50
Code Academy Skills Finished: 2 (Make a Website, Ruby)

Friday, July 31, 2015

Ruby on Rails Tutorial: Day 1

After a very confusing intro to Ruby on Rails via Code Academy (where I somehow managed to "complete" 24% of the lesson), I was not feeling so confident about apps, Ruby on Rails, or much of anything really.  Tonight, I started Michael Hartl's Ruby on Rails tutorial book which seems to be a real standard in learning the ropes of Rails.  I spent about 2 hours with it so far and have completed 1-1.4.1.  This doesn't seem like much and at the end of the day it is a very small chunk of the tutorial, but I am trying to take my time and really learn it.

So, how is it for the complete newb?  I like it a lot, actually.  I am actually working in an Integrated Development Environment, and it is really explaining in detail what is going on at every stage.  I was introduced to Cloud 9, Git, and Bitbucket today and I have a pretty solid concept of what version control is and why programmers do it.  Hartl does a nice job of explaining what is pertinent to the new coder without speaking a different language I would never understand.  I was also really happy to recognize some of the formats I had learned from the Ruby Code Academy tutorial and understood what was going on when instructed to place a method within the controller.  I also now have a clue what a gem is and understand what is happening on some basic level when rails designs the framework for your new app.  So far, I really love it!

I also worked through a few lessons on Python this morning which were much easier and faster than my early Ruby lessons.  I am enjoying the learning process and have actually had a few moments today where I knew what to do without making many, many mistakes and having to scratch my head in frustration.  Good day!

Total hours into Programming: 30 (4 today)
Progress on Hartl's Tutorial 1.4.1
Code Academy Points: 368
Code Academy Badges: 43
Code Academy Skills Finished: 2 (Make a Website, Ruby)