On the convergence of web frameworks and WYSIWYG editors, and what it often means to "learn to code"
You're at a coffee shop with a friend. At some point in the conversation, your friend tells you, "I'm learning to build."
"Build what?", you'd ask. "Build houses? Build up your self-confidence?". "I'm learning to build." is not an independent clause. Nor is "I'm learning to code".
What are you learning to code? Websites? Apps? 3D models of cats? Learning to code for the sake of learning to code is a road to nowhere. Vinicius Vacanti laid this out quite well in his post, "Why you will never learn to code."
I don't have numbers to back this up, but I'd guess that the majority of people who endeavor to learn to code are learning how to build websites. If that's true, they'd probably be better off saying, "I'm learning to build websites", because for basic websites, the "coding" part is much less of an obstacle than it used to be.
This website is built on Ruby on Rails. The premise, and promise, of Ruby on Rails is "convention over configuration", which means that as long as you call stuff by the right name in your app, the framework will do most of the heavy lifting for you.
While Rails can be extended and customized to build big, complicated websites—think AirBnb or the original Twitter website—"convention over configuration" makes it extraordinarily easy to build basic websites. I had to write many more lines of "code" just to get the style of this website right than to make it actually run.
For example, to add pagination to this website, I did the following:
If you're not familiar with web development, that code will seem pretty opaque to you. But really it won't take long to learn. Ruby on Rails is getting to be so beginner-friendly that, for simple stuff, you can barely call it coding. Whereas Squarespace has end users click buttons to make things show up on a website, Rails has end users type stuff in. In other words, if Squarespace is a WYSIWYG "What You See is What You Get" editor, Ruby on Rails is practically WYTIWYG: "What You Type is What you Get".
Designers often learn CSS so they can implement the work they did in Photoshop. SEO experts learn HTML in order to help with website optimization. Analysts learn SQL in order to run data queries. All these things are code, and just because you know or don't know how to do all three of them doesn't define whether or not you're a "coder".
For those of you who are planning to build websites, just know that web frameworks are so user- and beginner-friendly now that you need not view "learning to code" as an all-or-nothing endeavor. Sure, you'll need to learn a little syntax, and in the beginning you'll just have to have faith that, in spite of appearances, using the Terminal does not require the ability to see the Matrix. But it need not be a long drawn-out process that ends in epic triumph or abject failure.
A little code can go a long way. Heck, if you're reading this post a few months after it was written, just a tiny bit of code got you to the second page of this blog.