Learning to Code, Cont'd

John Vandivier

This article will be helpful to you if you want to get involved in web development or a related field.

This article basically extends my <a href="http://www.afterecon.com/other/programming-skills-flow-chart/">programming skills flow chart article. I have also <a href="http://www.afterecon.com/other/intro-to-rails-deployment/">written an intro to Ruby on Rails.

Let me cut to the chase. Here's how I think you should learn to program:

  1. Learn basic Wordpress with a wordpress.com site.
  2. Begin learning advanced Wordpress and basic web administration by getting a godaddy.com account with a Wordpress hosted site.
  3. While you are learning advanced Wordpress, start coding from scratch some of your own HTML and CSS.
  4. After getting some basic HTML and CSS down, learn Javascript.
  5. Then learn at least one Javascript library, if not more. Most importantly, learn jQuery.
  6. Then learn PHP. Also about this time you will want to learn how to write Wordpress plugins from scratch, which uses PHP.
  7. Then learn SQL. You might even learn SQL before you learn PHP, it depends on what you are coding. I think most people will want to learn PHP first, but I actually learned SQL first because I am into data analysis stuff which most web developers and admins will do a lot less to none of.
  8. (Optional) After that you can start branching out to advanced web languages (Ruby on Rails, etc) or head toward offline languages (C, etc). You can also learn a PHP library, an alternative database framework like NoSQL (MongoDB, etc), or something else like websockets.
Point 8 is optional because they add performance but not function. As far as I am aware, any function which can be accomplished by any programming language can be accomplished by knowing 1-7 well enough, except where the problem is performance capability rather than functional capability. Performance means many things, but two important kinds of performance are development speed and speed or capability of the produced program.

With Rails or a PHP library, I can use something called scaffolding which does something that could take over a hundred lines of code in pure PHP. This is better performance from the development speed standpoint. In C and C-variant languages I can write a program that executes much faster. <a href="http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/">Web apps are slow in part because of the processing difficulty of the languages. When an app is slow enough it will time out, crash, and cease to function.

So while I make a distinction between functional capability and performance capability, the two are very much related. If performance is low enough then function will cease. Let me be more clear:

    • HTML5 allows 3d rendering.
    • C-variants allow 3d rendering.
    • Regarding 3d rendering, I would say the two are functionally equivalent.
    • However, C-variants perform much better at 3d rendering, so they are not performance equivalent.
    • If we develop a full-blown real-time 3d networked video game app with highly detailed images, the processing difficulty could become so great that an HTML5 app would crash, while the C-variant app would continue smooth performance. This shows that at some point performance differences imply functional differences. We can call this special kind of functional difference a performance-induced functional issue.
    • Performance-induced functional issues are distinct from what we could call
real functional issues.
    A real functional issue would be said to exist if HTML5 did not allow 3d rendering.
  • You might want to visit step 8 to eliminate performance-induced functional issues, but I don't know of any sort of other functional reasons to go there.
  • Let that sink in for a while. Pretty much any program you have ever seen or can imagine can be rewritten into HTML + libraries. Mind blown.