Hi there, I’m fairly new to the WordPress world and want to dive right in. I’ve been really interested in WordPress and the idea of eventually working towards becoming a front-end developer (while still utilizing the power of WP) but I have no idea where to start. Any advice for me?
This was part of the message I got from Adam, an aspiring WordPress developer who asked for some friendly advice on getting started with WordPress development. Instead of replying only to his email, I wanted to write this post for him and anyone else who would appreciate advice on the same topic. Adam has asked some great questions that a lot of people spend days, weeks, even months, searching for answers to. I’m not a guru at what I do but I believe my experience going from a complete novice to developer is a path that applies to many people.
I’d like to share my opinions on getting started with WordPress development as a new user who has no experience (or very little). I’m going to discuss things that I think are core requirements and will make your learning process much easier. Basically, I’m going to make this post one I would have wanted to read when I was starting out a few years ago.
What to Learn
Once you decide you want to learn development, you need to know where to start. Like with many jobs, you must have first develop a foundation on which to build your expertise. Here are the areas I encourage you to study and become somewhat comfortable with to start your WordPress development journey.
HTML & CSS
HTML (HyperText Markup Language) is the most basic of the languages you will need to learn. It’s important because:
- It is how every web page is organized (elements such as divs, spans, etc.)
- It is how search engines better understands your content (headlines, schema data, etc.)
- It effects the styling of the site (CSS)
CSS (Cascading StyleSheets) is how you style and structure your HTML elements. Adding things like borders, margins, paddings, etc. are all handled via CSS.
HTML and CSS are not difficult to learn. There are HTML elements you will use all the time (i.e. divs) and there are those you’ll use infrequently. Learn the different elements, how to add attributes such as classes and IDs, and how to keep your markup clean (proper indenting and nesting). For CSS, learn the basics of associating styles to various elements and style priority/specificity. For example, .mydiv { styles }
is more specific than div { styles }
and will take priority.
PHP
Out of the box, WordPress is a content management system developed for creating and distributing content (i.e. blogging). It includes tons of built-in functionality. Under the hood, PHP (a recursive acronym – PHP Hypertext Preprocessor) is the primary language powering this functionality. PHP is a server-side programming language (is executed by the server rather than the browser). Learning some PHP basics will allow you to have a better understanding of what is happening when you look at code. Know how to print things to the screen, how to store data in variables, what functions do, how to work with arrays, and even some time familiarizing yourself with the concept of object-oriented programming (this can come later, though).
PHP is a necessary part of any WordPress development. Whether you’re building plugins, themes or doing basic client work, understanding and knowing how to write PHP is what’s going to let you really customize WordPress.
Javascript/jQuery
Javascript is a client-side (executed by the browser rather than the server) scripting language that adds additional functionality to your site. jQuery is a Javascript library that is intended to make Javascript easier to work with, hence its slogan “Write less, do more.” I’m no JS/jQuery pro and that’s because I don’t have a frequent need to write it. Most of my work is PHP-based. However, JS is a great tool to learn and is very versatile.
Browser Tools
By “browser tools”, I mean understanding the tools your internet browser offers for development. For example, if you right click on any element on a web page, you’ll have the option to inspect the element. Inspecting an element will show you its HTML markup and styles being applied to it. This is very helpful for testing how your content is being rendered (i.e. loops) and how your styles are being applied.
Additionally, you can check to see if your JS contains any errors by viewing the “console”, which is a tool you can use to test JS right from the browser.
Getting familiar with browser tools like Chrome’s Developer Tools is essential to improving your development.
Git & GitHub
While Git and GitHub aren’t the first things you should start learning, they will certainly make your work easier down the road. Git is a system for version control, which will allow you to track the changes made to your code. This is great because you can refer back to your projects at certain times and even roll back changes that don’t work or aren’t needed.
GitHub is a website that is used to store your Git projects. It also has some great features, like the ability to manage all of your Git projects in one place, collaborate with other developers, submit and accept pull requests for projects and view your projects in a user-friendly interface.
Git is a tool used from your computer’s command line but there are Git clients out there (GitHub offers one) that let you avoid using the command line. However, I’d suggest spending some time learning at least the basics of using Git in the command line.
Software
Like with most fields, development has a few “tools of the trade.” When starting out, you don’t need a lot. A good text editor and FTP client will get you going.
A quality text editor will make writing code much more efficient. My favorite is Sublime Text.
A FTP (file transfer protocol) client is what you can use to transfer files between your local machine (computer) and a remote server. There are a number of good options out there. One of the more common ones is FileZilla, which is free.
WordPress API & Codex
Moving on to WordPress-specific development, understand that WordPress itself is a big API (application program interface). This means that WordPress provides code specific to working with WordPress only; it cannot be used outside of a WordPress environment. The place you refer to when you need to use WordPress code is the WordPress Codex. There’s far too much for me to explain here but, in short, if it’s used in WordPress, it will be in the Codex. Once you spend some time learning the core requirements (HTML/CSS and PHP), you can start to go through the Codex.
One of the best things I did to learn was read through the Codex. Literally, I just read through tons and tons of information. To this day, I am always looking through the Codex to learn new things and brush up on things I’ve used in the past. Here’s a list of places to start:
- Getting Started with WordPress (Codex)
- My post on WordPress hooks
- WordPress functions reference
- Available WordPress APIs
Where to Learn
You can learn HTML, CSS, JS/jQuery and PHP in many different ways. To start, head over to W3Schools and begin sifting through their language sections. W3Schools won’t provide the most in-depth material but it’s great for getting a grasp on the basics. For overviews, it’s great. Also, if you’re interested in spending a bit of cash on learning, you can check out Treehouse, which offers a ton of great courses to learn various programming languages and technologies.
Most importantly, to really learn, you have to read, read and read. Grow a list of blogs to follow that are related to development. They should include things like tutorials, reviews, etc. Blogs that share and explain code are huge for learning how to code. Here are a list of some of my favorite tutorial blogs:
You can also read this blog! 😉 Really, though, I post a lot of tutorials with code explanations.
Also, read and write code! This may seem obvious but the only way you’ll every grow as a developer is to write code and lots of it. Read code on GitHub, try to understand what it’s doing and then try to use some of the same ideas in your own code. Reading code from excellent developers will show you what good code looks like and implementing it will reinforce the concepts. For example, I love to read through Pippin Williamson’s code. Pippin is my developer idol because he really knows his stuff, he creates awesome products and his code is excellent (well organized and documented). I read code from projects like Easy Digital Downloads to see how Pippin and his team create.
Keep a Development/Learning Diary – A Blog
EngageWP is my blog. I started it, primarily, to document things I learned while developing for clients and personal stuff. Starting your own blog/website as a developer is required for the obvious reason that you build websites and, therefore, should have your own to display that. It will also highlight your work as a developer and, typically, convey the services you offer. However, it’s also very important because:
- It becomes your personal repository of things you’ve learned. Once you’ve documented how to do something, you can easily refer back to it in the future if you need to do it again.
- It builds your online presence. By publicly sharing the things you learn, it helps others and establishes yourself as someone who is helpful and knows their stuff. The content I share has netted me excellent clients and feedback from readers who show the utmost appreciation. It’s a win-win.
- It is your personal, development playground. Sure, you can (and should) create a testing site to play on but your blog is your main website. You’ll eventually find yourself spending a lot of time to build and improve your website and this will significantly help your learning. I’ve learned a lot building this blog and it has made me a better developer.
Development is not an overnight skill
I tried to keep this post as focused as I could to avoid overwhelming a new user who would like to get into actual development. There are countless of other things that can be learned but these areas are what every WordPress developer should know.
Aside from the technical skills you must learn, you also need to know that becoming a developer is not a quick process. There’s so much to learn. In fact, the learning never really ends; there’s always something new to learn.
The most important piece of non-technical advice I can give is to remain patient. You will try to code things that you just can’t get to work. You will attempt to do things that are above your skill-level and you’ll feel overwhelmed. You’ll get frustrated and you will feel like quitting. But grinding these things out is necessary to becoming a better developer. Spending days trying to code something that experienced developers could do in 10 minutes is just part of learning. With the more code you write, you’ll begin to pick up on ways to do things better and the more you will memorize. Eventually, you’ll have the experience and knowledge that lets you code that feature in 10 minutes. Eventually, you’ll know certain functions like the back of your hand when, before, you had to look it up every time you used it. Best of all, when you do finally get your code to work, you will feel like a champ!
Best of luck!
John Locke says
Hi Ren:
Just wanted to stop by and say this most recent redesign looks great! You’ve also been on fire lately publishing lots of great material. Keep doing such great work !
Ren says
Thanks a lot, John! Your feedback means a ton. I’m very critical of my designs so I’m glad you like it – that lets me nitpick a little less.
I also have a few more posts in the queue so stay tuned! 🙂
Holger Govertz says
This is a great article, and my story. It is possible to learn online, it will just take longer before all the bits and pieces comes together.
In WordPress, there’s so much support to get from the community, and if there are money to spend, then places like Udemy, Tutsplus, O2geek, WP-Sessions and many more, deliver top quality courses, just read the reviews first.
In five years I’ve managed to come from complete zero to confident, learning English a the same time.
Today I’m a convinced user, I just love WordPress, and everything about it. The whole open source culture, so many people supporting each other, with out expecting anything in return, what’s there not to love?
Ren says
Hey, Holger. Thanks for the comment! I couldn’t agree more about the open-source community. As people who have taught ourselves how to code and work with the software, having the advantage of an open-source community like the WordPress community is such a great asset. Without folks who release free code and tutorials, I wouldn’t know what I know today. We can learn tons from just browsing free projects on GitHub and that’s an amazing thing. That kind of community exists to encourage and promote others and is the community I’m proud to be part of and give back to. Sure, the WordPress community has its quirks but it’s a community of people and that’s what you get with people. Ultimately, though, the WordPress community (as are many other open-source communities) is very supportive and a great asset for anyone learning development.