Confidence vs. Skill
In Three Stages
Learning is Hard
I started my career as a web designer. Soon enough, I learned front-end development skills. Starting with simple HTML and CSS, I built myself into a front-end developer by trade. I spent the next five years plying that trade, using my design acumen to create fun and useful interfaces.
During that time, I always wanted to learn how to make things “work.” I wanted to know what was behind all the interfaces I’d built over the years. I wanted to understand how things operated behind-the-scenes. I wanted to learn PHP.
Last year, I was assigned “Project X” as a full-stack developer. It was my first project I lead, and my first foray into backend web development. I had a great team around me, and some great mentors, so I felt optimistic, but the sheer amount of “firsts” involved made me nervous.
An Embarrassing Story
We’re friends, right? Phew, just checking. This is terribly embarrassing, but it proves how little I knew about PHP when I started “Project X.”
Before I landed my current job, I was interviewing at an E-commerce shop. It was going well. They were super nice, interested in me, and I felt comfortable. Then, the interviewer asked, “Ok, Glen, if you don’t get this, I’ll just ask you to leave right away [friendly laughter]. How do you instantiate a class?”
I couldn’t answer the question. Luckily, they were nice and didn’t actually ask me to leave on the spot.
I just sat there, half-horrified. As embarrassing as that was, I didn’t feel bad. I didn’t claim to be a back-end developer. I knew Wordpress. Wordpress doesn’t teach you the basics of PHP if all you’re doing is theming.
Everyone starts somewhere, right?
1. Overconfidence
I started learning how to write PHP by learning Laravel last year. I worked through lots of tutorials, read a ton of blogs, and watched as many Laracasts as I could.
At first, it was overwhelming, but exhilarating! Within the first 30 days, my confidence soared: I was doing it! I‘d cobbled together a working prototype for my application. It had users, routes, views and controllers. All the brainy back-end stuff I’d seen in other people’s projects was there, and it worked!
My confidence bubbled as I enjoyed my newfound skills.
2. The Bubble Bursts
As my application started to get more mature, the cracks began to show. That router file made so much sense when there were a couple URLs to route, but it’s transformed into an unmanageable behemoth. I still have “users,” but now I needed to remove their usernames from the database and just use email addresses. The front-end pages I set up displayed just fine, but now I needed to integrate third-party API’s.
As these new concerns piled up, my confidence suffered a death from a thousand paper cuts. Even though I had built a working application, I came to realize there was a lot more I needed to learn to finish it. What’s worse, the code I had written started looking amateurish. I didn’t know how to complete my project, and wondered if I should just start over.
Known Unknowns
As everyone’s favorite Secretary of Defense once said, “There’s known unknowns and unknown unknowns.”
That Rumsfeldism is bullshit when it’s used to justify a war in middle-east, but it perfectly describes how we learn.
When you’re learning something new, you don’t know how much stuff is out there to learn, or how hard it’ll be to learn them. After you master the basics, you might think everything will be that easy.
A Skill-Set is an Ecosystem
A new skill-set has a lot of baggage that comes with it. Learning PHP means learning a bunch of stuff too:
- How to talk about PHP: The lingo, buzzwords, and context.
- Where to look: Finding great resources online and offline.
- What’s possible: What have others built (and how)?
- Identify the “wheels”: How to avoid re-inventing them.
If you’re like me, the first handful of features propped your confidence up. As you start to understand the ecosystem, you add tools to your tool belt. You’re exposed to best practices. You get a better idea of scope. You can start to speak the language and some of those Martian StackOverflow posts are now legible.
The trade-off is that the holes in your work become clear, which can feel pretty overwhelming.
3. Familiarize & Normalize
At first, you’re focused on “how” questions. “How do I create a user?” “How can I make my first homepage?” It’s no coincidence that many introductory tutorials nurture this curiosity. When you’re just getting started, you don’t spend any time learning “why” things are, just “how.”
Learning “how” is easy in comparison to “why.” That’s what documentation is for. Learning the “why” is a never-ending process, but it’s what normalizes your confidence and skill. As you understand more about the ecosystem, it’s easier to problem-solve.
A New Kind of Confidence
A key part of never-giving up is developing confidence in your ability to learn. If you understand that we will never know “everything,” you can find solace in our ability to learn and problem-solve.
With that ability, and time, anything is possible.
Knowing is Half the Battle
I hope this sounds vaguely familiar to those of you who have learned a new skill-set. Take solace next time you’re feeling overwhelmed, and temper your ebbing confidence when you start to get the hang of it all.
Have your own story to share? Think I got it wrong? Let me know @glen_elkins.