This article was originally published on this site

A week ago, I published my thoughts on the block system from a developer’s perspective. Taking a weekend-afternoon deep dive into creating custom block types meant learning some tough lessons and familiarizing myself with a programming language I had little experience using.

Programming has always been a trial-and-error affair for me: write code, refresh the browser, read the error message, and attempt to fix the problem. Then, simply rinse and repeat the process until the program is not broken. Those mistakes are woven into the art of coding, the layers underneath that poetry on the visible canvas.

I have absolutely made the same mistake twice. And, thrice. Probably a lot more than that if I am being honest with myself and you. Eventually, I stop making those same mistakes, and some method or procedure is permanently seared into my brain.

I have written a few hundred WordPress tutorials in the past decade and a half. I am a twice-published author of development books and served as a tech editor on another. However, I am not much of a reader of tech books and documentation. For one, programmers are not necessarily the most engaging writers. Plus, book smarts can only get you so far. You need the street smarts of programming to become good at it, which means learning from experience.

While I firmly believe that reading is a central part of that, there is no replacement for getting your hands dirty. Building things, making mistakes, and learning to fix them is what makes programming fun.

Working on open-source software like WordPress is one of the best ways to do that. There is no upfront cost, assuming you have access to a computer, a prerequisite to programming of any kind. There are usually people willing to lend a hand or answer questions, and there are always problems to solve for those ready to dive into them.

As WordPress Executive Director Josepha Haden Chomphosy chatted with Matt Mullenweg on the Openverse project a couple of months ago, there was a moment that I found myself nodding my head in agreement.

Because, of course, you know, contributing and being involved with open source is probably the best way to learn a technology, better than any college degree.Matt Mullenweg, WordPress Project Lead

I have learned more about WordPress, PHP, HTML, CSS, and JavaScript by contributing to open-source software than I ever learned in a college course.

I grew up in a generation that was told that we must get a college degree. It was an integral part of the American dream that would result in suburban life in a neighborhood with perfectly aligned rows of houses, ending in a cul-de-sac. It was the first step toward a two-car garage, white-picket-fence, 2.5 kids, and a dog. College was the promise that my peers and I hinged everything on. It was expected of us, and so many of us did our duty.

Here is the thing that our parents did not know. The internet would change everything.

I graduated high school in 2002. This was during that stretch where the online world was exploding. All of the world’s knowledge would soon be at our fingertips. Today that is truer than ever. Anything you will ever need to learn about writing code is available through an internet connection.

My experience with college-level courses in programming was mixed, but I learned a necessary life lesson from them: I was not cut out for a degree in software engineering. I am glad I wised up early on and pursued a different degree, saving myself some time and money.

I rocked my half-summer C programming class, my introduction to writing code. I also had a passionate professor who once worked on U.S. missile projects as a bug-tester. It was probably not the most glamorous job, but he always made it sound exciting because he loved what he was doing. Our class was tasked with building various programs throughout the course, but we usually had a choice in what we were building. For my group’s final project, we created vending machine software.

I was on the fast track to becoming a software engineer after that first class. I had built a way for merchants to get paid for delivering sugary treats and soft drinks to customers. It was capitalism meeting programming, and I had a taste for it.

The fall semester rolled around, and I was motivated to move beyond the realm of procedural programming in C. Java, an object-oriented programming (OOP) language, would be my next challenge.

The most advanced thing our class built for an entire semester was a basic calculator. I skipped nearly every lecture because I could not stay awake watching the professor chicken-peck his way through programs for three hours every week. I attended the mandatory “labs” — basically a fancy way of saying an extra class where the professor’s assistants would teach the actual coursework.

Needless to say, my fire died down. While calculator programs are handy tools, I wanted to branch out and build things that mattered.

You know what reignited my flame for programming? At first, it was general web development. But, WordPress was what I really became passionate about. And, I have not looked back since I started using it in 2005.

WordPress was my gateway into a world where I could create things that interested me. I could jump ahead into a project far more advanced than my skill level, trial-and-error my way ahead, and eventually build something that others found value in.

Unless universities have changed, most teach step-by-step foundational lessons to their pupils. Some students may luck out and land in that unique professor’s class who gives them leeway to explore various ideas. However, there is no substitute for creating something of your own, solving a problem that you see.

And, that is what programming is all about — solving problems.

In 2007, I released my first WordPress plugin into the wild. It automatically listed all of the subpages of the currently-viewed page. Dozens of similar plugins have been written since and probably before (it seems WordPress would have a simple “list subpages” function by now).

Last week, after writing a new plugin, I was reminded of the free education that the WordPress community has given me over the years. Some of it has been reading documentation. Some from WordPress Stack Exchange answers. Other bits have been studying from those who came before me, building upon their open-source code. All of it was from other people giving something back to our community.

This is not necessarily a knock on college. Some people perform better in that structured environment. However, there is no discounting the experience you get from contributing to something bigger.

If you are one of our readers thinking about getting into programming, just dive in. Make some mistakes. Build. Learn.