1. 9
  1.  

  2. 6

    I’m glad to see @andrewkkirk documenting this process. For many of us the time spent learning to program is a distant memory, and I think another look at the process, even through someone else eyes, can be enlightening.

    1. 3

      Yep. A big

        1. 2

          It’s been fun to write and see the feedback. It’s amazing how developers can’t really remember the beginning. It’s become so ingrained that they “just kinda do it”.

          Thanks @rob and @steveklabnik!

          1. 1

            Here I was missing out on all these thumbs up. @steveklabnik

            1. 1

              ?

              1. 1

                Awesome! Appeared in both the email and on my screen. Great job. ?❤??

          2. 4

            here is what I learned: Just Build It Already™. But I am glad you’re blogging this. It helps to know what the stumbling blocks are now, and how things have (or haven’t) improved since I learned.

            1. 3

              I used to think that Ruby on Rails was a great tool for building your first web application. In 2008 it was what I used to get my first app off the ground. But either it has changed too much or I have changed to the point where I no longer believe Rails is the best educational tool.

              Rails' magic can be useful, and it’s certainly “cute” in a lot of ways. But when you tell beginners that naming things a certain way or putting a file in a particular location will make their app “just work” without explaining what’s going on you do them a disservice. A perhaps unintended consequence of “convention over configuration” is that all programs start to look like configuration when you stick with all the conventions.

              1. 3

                RailsGirls has been demonstrating the opposite, lately. While it’s true that you have to skim over some things to get started, the power of having SOMETHING up at the end of the day is super-motivating. Rails + Heroku lets you do that.

                1. 2

                  There’s nothing particularly special about Rails in that regard though. Sinatra and Heroku would let you do that. PHP and Heroku would let you do that. Python and AppEngine would let you do that. And you’d probably know a little bit more about HTTP afterwards too.

                  1. 3

                    No, Sinatra forces you to do too much low-level work; it’s why Ruby is better than C, for example, even though you don’t know quite as much about how CPUs work, you get something going, which is better motivation for most beginners.

                    This is something I had to un-learn, as I tend to be a bottom-up kinda learner. Most people are top-down.

                    1. 2

                      We’ll have to agree to disagree. I guess the only way I can really prove that my belief is accurate is to develop a web application training course built on Sinatra that is just as easy and fun as getting started with Rails. That actually sounds like a pretty fun project.

                      I will say this though. I think even though you know that Sinatra requires “low-level” work, to a beginner it’s all low level work. If you tell someone to put a line in a routes file, put a controller in the controllers dir, and then put a template in the views directory, to a beginner that’s no more or less “low-level” than telling him or her to put a template in the public dir, and then write “get ‘/’ { erb :index }” in their Sinatra app file.

                      1. 3

                        That’s fine. I do Ruby and Rails training professionally, as well as volunteer, and discuss these things with many people that do. Empirically, according to our collective experiences, you are wrong. But I don’t have any studies for you, so we’ll just have to leave it as competing anecdata.

                        1. 1

                          Is that because Sinatra doesn’t have generators? Otherwise the beginner webapp you’d build (build reddit in a day!) would not differ much between the two frameworks. That lack of robustness, by intuition, should be more appropriate for a beginner setting (if you’re teaching process and not specifically trying to teach rails) to introduce the concepts. That said, I’d say you probably do want to add something to Sinatra to make it appropriate for beginners, but you’d not have to add much, and if one agrees with that point then what would that addition be?

                          1. 3

                            Yes, generators help quite a bit. Not only do they accelerate the pace of getting something going, the code they spit out is inherently correct; which means a lot less syntax error style stuff at first. Especially given the fact that you’re generating Ruby, JS, CSS, and HTML.

                            I haven’t fully given it a ton of thought, I just know I’ve seen much greater success with rails-based courses, and it seems to be predicated on the speed that you see some sort of useful result.

                2. 3

                  @amb, I still think Rails is a good educational tool (in my limited experience). The value of getting something built provides that first “programming high” and drives you to want to keep chasing that high by learning and building more.

                  Having said that, I’ve experienced that the out-of-the-box functionality of Rails is a blessing and curse. I discussed it in a Ruby Rogues Ruby Nuby video. It makes Rails very powerful and also confusing when you need to understand the nitty gritty functionality.

                  1. 2

                    I’m not saying Rails isn’t a good educational tool. It is certainly working for a lot of people. But to determine whether it is good or not we need to decide what the goal of this education is.

                    I am suggesting it is not the best tool to teach “programming.” It is a pretty good tool for teaching “web application development,” although I have disagreements with the way most curricula are built using it. So much of what you do when setting up a Rails app, at least the way “beginners” are told to, is stuff like “change the value in this YAML file” and “run this generator.” That’s not programming.

                    I’ve volunteered as an instructor at a few RailsBridge (http://workshops.railsbridge.org/) events and I really dislike how little people are actually understanding about what’s going on, because damn isn’t it just so easy to put some pretty pictures on the screen, i.e. “get up and running.” In order to get through the material, I have to wave my hands way too much for my comfort.

                    Anyway I don’t have anything better to recommend at the moment, but I am now seriously considering putting together some material based on Sinatra.

                    1. 1

                      Unless we’re talking about traditional educational systems, where students are required (forced) to learn fundamentals, I don’t think others in my situation would have the stamina/desire/interest if they didn’t get to build and interact with programming immediately.

                      To use an analogy, I could learn everything about wind patterns, kite design, and forces before ever going to fly a kite, But, would I have the drive to do so if I’ve never even felt what it feels like to fly one? I think we need that tangible feedback to drive further exploration and learning, when it comes to programming.

                      1. 2

                        No one is arguing that letting people see the results of what they’re building quickly is bad. However, in most sciences, the fundamentals are extremely important. @amb isn’t advocating constructing the natural numbers from the Peano axioms. He is advocating teaching how to add before how to multiply.