- A roadmap to becoming a modern WordPress Engineer
- 42: Or, the key skill needed for everything
- Who is a beginner for this roadmap? Understanding & getting to the beginning state
- The goal of this roadmap
- The constraints for the roadmap to WordPress Engineering in an Agency environment
- The constraints to the roadmap to WordPress Engineering for Freelancers
- Deliberate constraints for effectiveness of the roadmap
It is important to view knowledge as sort of a semantic tree — make sure you understand the fundamental principles, i.e. the trunk and big branches, before you get into the leaves/details or there is nothing for them to hang onto.
I find that a lot of developers have collected a lot of leaves (got a lot of details right) but without solid fundamentals, they frequently are lost and confused, the moment they have to solve an ill-structured problem.
So, for me a beginner is someone who doesn’t understand the absolute fundamentals deeply enough to use it to solve ill-structured or new problems that they have never attempted before without depending on StackExchange or Google, except for figuring out the details.
The fundamentals of WordPress Development
I went through this in the reverse order. I also picked up the details first, at times, without understanding the fundamentals. I was a cowboy coder. However, I kept an attitude of asking why, all the time which led me to deeper into concepts and led me to the absolute fundamentals that a WordPress developer must know when they begin:
- The Content in Content Management
- Content Structure & Semantics
- Web Technologies & Internet
- Objects in Computer Science
In my opinion, if your concepts with these things are absolutely clear, you could pick up any CMS or framework written in any programming language and still build websites or web applications.
1. The Content in Content Management
I find that WordPress developers struggle a lot with the most important concept involved in WordPress development. I’m not talking about building simple themes or a simple plugin. I’m talking about engineering really complex solutions using WordPress. I’m talking about building products similar to WooCommerce (for example). That concept is content. Remember, WordPress is a Content Management System. Everything in there is for creating, manipulating, processing, publishing (distributing) content.
A lot of people have made a case for WordPress as a complete application framework that can be used to build anything. I don’t think that is completely true. WordPress is a really advanced but simple system for managing content. With so much to do, it naturally ends up having a lot of readymade building blocks that can give you a headstart. After that, however, your life could get really miserable if you are trying to do something that isn’t really related to content. There are other, better suited solutions for that.
What WordPress does, by definition, is give you a lot of basic and advanced building blocks for building a content management system tailored to the exact kind of content you are dealing with. I find a lot of developers struggle with WordPress because they don’t understand the fundamental concepts and mental models used to describe and understand content.
2. Content Semantics
The whole internet as such is just an attempt to manage humanity’s thoughts and information packaged into content. On the internet, content is distributed in multiple formats. A whole separate lucrative business revolves around making sense of all this content (Google). Another lucrative business revolves around fooling or enhancing how search engines understand content.
That brings me to the second core skill that beginners lack, a decent understanding of semantics. Without semantic information, content can be pretty useless and with it, it can suddenly get transformed into ideas that really change the world. More on that later, but most of the training I have conducted in the past has been about finding out the meaning (another word for semantics) of concepts, terms, technologies that a WordPress developer works with on a daily basis.
On a more practical note, SEO, Semantic HTML5, WordPress’s information architecture, the real difference between taxonomies and meta, etc are things that that’ll come to you easily if you understand semantics.
3. Web Technologies & the Internet
The third thing, that I actually find to be surprisingly common, is an absence of clarity on web technologies. Very few WordPress developers know what the internet is, how it works, where is it.
If they did, they’d know exactly how servers, caching and security work or what HTTP is and why it is RESTful. If they did, they’d be surprised why the REST API seems like such a huge deal.
4. Objects in computer science
Object Oriented Programming intimidates a lot of developers, even though it is one of the most natural and simple concepts in development. Struggling with caching or databases? It all boils down to your understanding of objects (and classes of objects), and how, why and where they are stored and used.
A note on Reasoning & Logic
That’s something that I consider pre-beginner. If you don’t have enough reasoning or logical thinking skills, there isn’t much you can do even if you learn every programming language, tool and technology on earth.
There’s an exception if you are working in factory like environment where someone else works on the logic and reasoning and you are just a cog in the machine that implements such logic. However, my interest is not in creating mere cogs for a machine. We’re trying to understand how to become a Baap developer or an Engineer.
Everything else is more or less, just a skill that can be learnt, by rote, by enough repetitions of well-structured problem solving.