Abstraction and Programming
This module consists of a few posts on what to learn and use for Web Development. It then provides some resources for learning Web Development with Ruby on Rails.
This page discusses how much programming you need to learn to create web applications.
Question: When every technology is built on levels beneath it, what is the balance of prerequisites one should learn before jumping into a higher subject?
The Complete Layer
Ruby or Rails First?
If a level does not form a complete abstraction layer, you will need to learn more than one layer to create things. Yet you can often choose between learning the higher level or the lower level first. For example, one could start learning Ruby on Rails before even learning Ruby, the language it's written in. While this is possible, I don't think it makes sense for people new to programming. Instead you should get used to programming by creating simple Ruby programs before getting lost trying to tackle a complex framework in a language you don't understand. After you've coded with Ruby, you can then tackle Ruby on Rails one part at a time.
SQL or ActiveRecord?
SQL is used to communicate with databases, but Rails provides an alternative library, ActiveRecord, to generate the SQL for you. ActiveRecord does not form a complete abstraction layer since there are useful database actions it cannot do. A professional Rails developer will need to learn both ActiveRecord for concise and clear code, and SQL for advanced queries. What should a beginner learn first? As discussed before, I think beginners can start with ActiveRecord since it will be easier for them initially and it can perform all the requirements of a basic app without any hand-coded SQL. Programming students can learn the syntax of SQL later when they need it.
People can learn what they need or what they're interested in, don't make them learn what was necessary in the past. People who remember the past too much are doomed to repeat it.
1. Donald Knuth, about optimizing your code too soon. Not saying he would necessary agree with my application.