, , ,

On being a “community taught” developer

Person in Red Sweater Holding Baby's Hand

This is a post from a place of humbleness and gratitude. This has been my journey within development and it might be different from yours. Take what is helpful, learn, and pass on the gratitude.

Web development is a wild career path, and encompasses a lot… Like, waaaaaaay too much to encapsulate even in a series of books. The technology is always changing, growing exponentially, and we are time-bound people trying to keep up.

Over the years (13 and counting as of the writing of this article!), I’ve heard the term “self-taught developer” used to describe:

  • how someone got into web dev
  • a status, for better or for worse
  • a badge of pride
  • a feeling of self-deprecation of not being a classically trained Computer Science graduate
  • so much more (how do you, dear reader, use this term in your own life?)

However, I think the term “self-taught” is probably inaccurate, almost impossible at the present. To me, it would mean locking yourself away with a computer, reading through several open-source code bases by yourself with no guide, no colleagues, no teacher, maybe just the reference manual (not that we’d read the friggin’ manual anyway, amirite? 😏).

It just doesn’t seem accurate.

So, what does?

I prefer the term “community-taught” when I talk about myself as a web developer.

It rings truer.

It seems a more honest reflection of how I have learned, skilled up, connected, been inspired, been challenged, and made my living for more than a decade.

Recognizing what I’ve put into the journey

Don’t get me wrong, this isn’t to say that I don’t feel that “I did this”; I did.

I’m the one who showed up 30 to 60 minutes early to work for a year so I could learn to code HTML, CSS, JS, and PHP on Codecademy and Free Code Camp.

I’m the one who stayed in at night to work on client projects after a full day at work so that I could eventually turn a side-hustle into gig that would support my wife and I, and now our two daughters.

I’m the one who didn’t settle for learning only static sites, or just WordPress, or just React, or “just whatever hotness”… I’m constantly learning all sorts of tech.

I’m the one who has advocated for me, even with (at times) crippling imposter syndrome.

I’ve put a lot of time, mental energy, time away from family (even being in the same room, working), stress on myself, and more to get where I am.

I’m super proud of all of this, and I should be…

but

I didn’t get here alone, and you probably didn’t either.

In fact, in all of the above not-so-humble brags, it was never “just me”.

There were also folks (the community) who made free content and courses I could access.

There were mentors, bosses, and clients in that community that gave a chance.

There were libraries with freely available resources for me to check out.

And, most importantly, a life partner who believed in me, encouraged me, and gave me the space, time, and grace to learn, fail, and improve. I could have done this without her. 🥰

So, why specifically would I say that I’m “community taught” instead of being just “self-taught”, given the above?

Let’s see…

Open-source focused

While I don’t have the experience of working on proprietary, close-sourced code, I do feel like it would be incredibly difficult to do on my own time, bookending my days. While there are more resources now to do this, there were much less when I started my coding journey in 2012. Free and open-source software (FOSS, or sometimes just OSS) provide a very hands-on, playful, and “figure it out” way to start on a coding and software engineering journey.

Below are the Four Freedoms of FOSS

  • The freedom to run the program for any purpose
  • The freedom to study and modify the program
  • The freedom to redistribute copies of the original or modified program
  • The freedom to distribute modified versions of the program

The second freedom is really what has helped me move forward. Whether it’s working with browser languages like HTML, CSS, and JS, server languages like PHP, Ruby, or NodeJS, or anything else I’ve played around with like Python, Go, Rust, etc., the ability to open up a code base to see how a program works is amazing.

And, while I came up in WordPress where one of the core tenets is “don’t hack core”, it is really helpful to dive into any framework and see how the internals are working

“What happens if I…?” is the key to playing with and understanding software.

Online training and references

Like El Guapo, I would say there is a “plethora” of resources available for open-source technologies that I can’t imagine living without:

  • All the language and web docs like MDN, CanIUse, even W3Schools, PHP documentation, etc.
  • Framework docs like the WordPress Codex and now developer docs, Laravel docs (beautiful), etc.
  • StackOverflow and now ChatGPT
  • Dev.to, Medium, ✨ personal blogs ✨, and other platforms that give voice to developers sharing knowledge in written form
  • YouTube and Twitch for everything visual and streaming with OSS demos and help
  • Github Issues and even Trac for seeing how folks are discussing a particular feature
  • Discord or Slack communities for connecting with folks directly

We live in a really amazing and wonderful time for open source. If I have ever have a problem, I know I rely on the FOSS community to have a discussion, create a proof of concept, and generally provide a solution that they’re willing to share.

Mentors and guides along the way

While I’m not sure that I’ve ever officially had a “mentor/mentee” relationship with someone, there have been countless folks who have taken time with me over the years to meet and guide me forward. There are also others who have selflessly written and given back to the wide WordPress, Laravel, PHP, JS, etc.

Two major influences in my development and professional career are:

  • Tonya Mork pulled a bunch of us together over ten years ago for the WordPress Developer Community. I was able to help do some content work on here KnowtheCode.io site. She is the epitome of someone who is generous, deeply knowledgeable, a fantastic teacher, and gives back graciously.
  • Nick Ring was my first real boss after I started developing. I’d been freelancing for five years before I’d started working on a team. Nick taught me about working well with clients and other departments. We had a great dynamic at TheDigitalRing, and I learned a ton from the designers, project managers, and others who I worked closely with. Nick also taught me how to look to long-term stability of projects and not chase the shiny object in web dev.

The list goes on…

Pretty much everyone at Strattic. What an incredible experience getting to work with Miriam Schwab, Josh Lawrence, and Zeev Suraski. Being able to chat with them and see their vision for building a tech company. Amitay Molko and Tzipporah Witty made me a much better developer than when I got there (hehe, they might say I’ve still go a loooooong way to go, but I’ve improved, I promise). I learned a ton about QA and testing from Mir Roskind and Wendy Erdheim that I had no clue about, I needed that good kick in the behind… Also our team was hilarious, just wacky.

Even after the acquisition by Elementor and moving internally to the platform team, I learned so much about software design from Nurit Shahar and unit testing from Shay Zafran (thank you both for your unending patience with me).

And to all the awesome folks who built, worked on, taught, and tutored on the Genesis Framework: Brian Gardner, Carrie Dils, Bill Erickson, Sridhar Katakam, and more. I wouldn’t know half of what I know about WordPress and PHP development if it wasn’t for y’all.

Ok… I’ll stop gushing… But you get it. These folks all gave generously of their time, knowledge, wisdom, and helped me get to where I am today.

Continuous learning

One of the aspects of software development that I love is the requirement to keep learning, growing, and refining your skillset (yes, I feel this is an actual requirement of the job). I’ve written about this before, and feel very passionate about the continuing education part of my work.

There’s always some “new thing” coming up, and there’s always depths to explore in the “old things”. While this drives people nuts sometimes about our industry (remember JavaScript framework fatigue?), I believe it keeps us fresh, agile, and open-minded to what’s possible with our code and projects.

While I started with HTML, CSS, and PHP, learning JavaScript also taught me more about how PHP works, and informed me more about proper semantic tagging and what CSS was available, and what needed to be done in JavaScript. Of course, that information has changed and grown over the years as PHP, JS, and CSS continue to grow and evolve.

Essentially, by learning and understanding one language, I’m able to know what I already know at a deeper level. I found the same happened to me when I learned Spanish as well: my knowledge of English deepened.

All of these web languages and frameworks are open source and for the most part driven by a community or people passionate to contribute to the growth of the languages and the open web. Which brings us too…

Giving back

None of this would be possible without the community “giving back”. While that phrase “giving back” means different things to different people, communities, and businesses, generally giving back to a project and the open web consists of:

  • writing code to expand a language or project
  • documentation and walkthroughs explaining what the language or project does and how to use it
  • speaking or teaching about the language or project to a class, workshop, or conference
  • testing the code or project via unit, end-to-end, or manual tests, etc.
  • actually using the language or project in your work
  • giving feedback in the form of bug reports, feature requests, and pull/merge requests

There are so many ways that I’ve been able to give back to projects, I’m thankful we’re living in a time where contribution is easier than ever. Issues, PRs/MRs, conversations on Github or Slack, all of these give back and enhance peoples’ learning and participation in the community.

Hopefully, it’s all a virtuous cycle.

Gratitude

And that is where this idea (and this post) of a “community-taught” developer ends up and hopes to continue: a virtual cycle.

The dev community is not about me, it’s about us.

My contributions do not end in the project I’m working on, but move on to our project and others that might gain inspiration or be forked from another project.

All of this doesn’t stop with me and what I write, it goes on.

I’m thankful that others have shared and poured into me, and I hope I do the same.

I didn’t get here by myself, and I don’t suspect you did either.

Thanks, and continue to be open and giving as you have openly received.


Photo by Hannah Busing on Unsplash