Like most people in the WordPress world, I have no formal training with programming. My educational background is explicitly transdisciplinary. As a result, I learned a lot about how to learn things. This has helped me a lot with educating myself in web development.
I’ve written before about how teaching is part of my learning process. But, I have not written about the earlier part of that process — actually acquiring and practicing the skill.
This article is more about process than anything. This is something important to me because I had a lot of trouble learning to read when I was in kindergarten and the first grade because of the ways I am not neurotypical. Being labeled as dyslexic helped teachers, specialists and my parents find different ways of learning that fit my needs.
This experience has made me very aware of the process of learning, and I think it has made me good at learning and teaching. In this post, I want to share my process for using WordPress as a learning tool.
My initial learning was, of course, developer focused, but I have applied this practice of using WordPress as my jumping off point to learn technical SEO, social media marketing, and other skills.
Learn One Thing At A Time
My first attempt to learn Angular was a disaster because I tried to use it with Firebase. I didn’t know Firebase or Angular and I didn’t really understand the MVC pattern at the time.
Later, I taught myself the basics of Symfony by integrating parts of the micro-framework Silex, which follows the MVC pattern, into a front-end router for WordPress, using data from the WordPress REST API. This was a good introduction to MVC, which was easier for me to conceptualize in PHP than JavaScript.
For my second attempt to learn Angular I used Angular to display and modify content from the WordPress REST API. That went a lot better because I was only learning one thing — Angular.
Later, I decided to switch from Angular to Vue. At first, I struggled. I was just starting to learn ES6 and tried to use Vue as my way to learn it. Problem was, I didn’t know ES6 very well. I wasn’t following my own “learn one thing at a time” rule.” Funny because I had decided against trying Angular 2 because I didn’t want to learn that and TypeScript and ES6 at the same time.
What actually worked for me was learning to write VueJS in the old JavaScript. That’s a great thing about Vue — you don’t need to use ES6 and Webpack to use it. Vue is better with ES6 and Webpack. So, once I had learned Vue by using it to display and edit WordPress posts, then I started over in ES6. Later, I added in Webpack, which is amazing magic, I’m still figuring out.
Learning is fun, but that doesn’t mean it’s not hard. Don’t make it harder by trying to learn too many things at once.
A Three-Step Process
I hope you start to see a pattern about the role of the WordPress REST API in my learning process. WordPress has always been a good jumping off point for me to go deep on one thing at a time. I didn’t really know exactly what a REST API was when I started on the WordPress REST API, but I learned in that context and got really knowledgeable.
This is great since modern web development has become about connecting APIs — REST, GraphQL, etc. — to a front-end framework to create a UI or using those APIs to connect microservices that form a larger app.
As a result, I’ve worked out a fairly repeatable three-step process.
When I learned VueJS I created an app to list posts from a WordPress site, show a post from that site, and edit it. I broke this down into three discrete steps.
For the first step, I actually used mock data. Instead of figuring out the best way to make a GET request to a remote API in a Vue app at the same time as learning how to display that data, I hard-coded a JavaScript option with one page of posts, copied from a test site’s API response.
Using that mock data, I create a component to list all posts. Then I created a second component to show one post. Then I added in Vue’s router and used it to switch between the components.
For stage two, I modified my app to use data from a live WordPress site. This caused me to learn about Vue’s lifecycle events so I could find the right event to make the request. Then I experimented with using jQuery.ajax() and then I used axios, which is Vue’s recommended HTTP client. Eventually, I rewrote my little app to get live data from the REST API into my components.
For stage three, I added the ability to create and edit posts. This built on what I had learned before in several ways, which I approached one at a time. I had to learn about creating forms with VueJS so I could create my edit form. Then I had to figure out the best way to integrate JWT tokens authentication into the app. Then I had to add a POST request and trigger it form a Vue click event.
Reusing This Process
This process I outlined, using VueJS as my example, is a repeatable process. If you asked me how to learn Ember, which I don’t know anything about, I’d tell you to make a basic app to show a list of WordPress posts and a single post, from mock data. Then I would tell you to add a router to switch states between those two states of the app. Then I would tell you to do that over with a remote API as the data source. Then I’d tell you to add an edit post form and use it to edit data on the remote API via a POST request.
To be clear, I have no idea how to use Ember, but that’s how I’d learn it. This system works, because it breaks down each part into a small project with an explicit problem that I can Google.
As of writing this, I’ve never used GraphQL, but when I do need to learn it, I will flip this process. I’ll install the GraphQL plugin on WordPress and use it to get some mock responses and plug that into a basic VueJS app to show a list of posts and single posts. Then I will modify the app to get the posts via GraphQL. Then I will figure out how to edit posts from the app using GraphQL.
Learning About Learning
I hope that after reading this article, you’ve been able to understand my system. If my system works for you that’s great. I encourage you to apply it to a new technology you want to learn.
Of course, my way of learning is not right for everyone. It would be offensive for me to tell you how to learn. My real point is that learning is a process and learning requires a system. I started this article by arguing that it is very important to learn one thing at a time. When I violate that rule, I get frustrated quickly since I can’t understand one thing without the other and that creates a feedback loop that leads me to feel overwhelmed and frustrated quickly. These are emotions that are not conducive to learning.
Without a learning system in place, it’s easy to start feeling lost. It makes sense since, in that situation, you have literally gotten lost. How do you know where to go and what to do next without a system to tell you what to do next?
So, most of all I hope that by reading this article, you’ve started to think about your learning system. If you haven’t thought through what is your ideal system, borrow mine, try it and refine it to fit your own needs. But please, be kind to yourself and have a system so that you are set up to succeed.
No Comments