You’ll never graduate to fixing problems if you don’t first understand the system. That’s how the pros became pros.
I was having trouble with my website the other day. It was an issue unlike any I’d ever seen. My mind started to fill with all those familiar thoughts:
- “Real developers don’t have these types of issues.”
- “Maybe I should stick to guitar, or retail sales.”
- “I’m too dumb to figure these things out”
I pushed back with a bit of truth: I am a real developer, and the way all of those other developers got to where they are today is by not giving up when they mysteriously borked a table in their database. I can figure this out. Today’s as good of a day as any to learn something new.
Web development (and I assume this applies across most of software development) is as “simple” as understanding how the pieces fit together, and isolating problems by tracing through the connections.
Just like a good auto mechanic can explain everything that happens between gas pedal and tire to make a car accelerate when you push the pedal, the best developers out there have at least a rudimentary understanding of everything that happens from browser to server and back to make your web site look the way it does.
If you are a WordPress developer, that includes steps like how WordPress interacts with the database, and how to isolate issues to specific database tables and indexes.
This week in my never-ending journey to be the best web developer I know, I learned that the wp_options table contains an index named wp_user_roles that, if messed up (in my case, prefixed incorrectly by a naughty backup plugin’s importer script which shall not be named), makes even the most admin of admins appear to the server to be just an average joe with a subscription.
As Yoda might say “Locked out of my website I was.”
Hours of wanting to punt my laptop through my office window later, I stand before you a man with a far more rich understanding of not just the truths in that above paragraph, but also of WP-CLI, MySQL, databases, and WordPress in general.
Take that, internal monologue. I am a real developer.
Logged back into my website I am.