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
I think what's important is having a complete abstraction layer to be able to work with. Learn the highest level that can serve your purposes without requiring you to do dig beneath it. For example, every general-purpose language (such as Java, Ruby or JavaScript) provides a complete abstraction layer to build with. While these high-level languages may be implemented with lower-level languages, you don't need to worry about these details when coding. You can build a wide range of applications in Ruby without ever touching the C code that it may be interpreted with. Ruby is not a leaky abstraction, Ruby is a complete package. In certain cases a specialist could use his knowledge of the lower level details to optimize code, but this is not something a beginner needs to worry about. Learn how to build applications and later you can learn advanced optimization techniques. After all, "Premature optimization is the root of all evil". 1
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.