We Should Stop Saying “Self-Taught” Developer

Community-Taught Is Much Better

Johnny Ray Austin
4 min readDec 6, 2017

I’ve been working in software for well over a decade at this point. When I was getting started, degrees (Computer Science, Information Technology, Electrical Engineering, etc.) were imperative to landing a software development job. Those days are (thankfully) gone and they’re not coming back. The internet is flush with resources available for learning to build software. Because of this, however, I’ve noticed many people deploy the phrase “self-taught” as a means to describe their journey of becoming a software developer. On its face, it’s absolutely harmless (and accurate). The problem is that no one is actually self-taught. If you’ve ever read a book written by someone other than yourself, watched a presentation at a conference or on youtube, followed a tutorial or even listened to a podcast, you’ve learned something from someone else. You may be saying to yourself, “oh, he’s arguing semantics,” and you’d be correct. But I do so in service of something greater.

I’ve had many opportunities to teach programming/web development to others. A common theme that resurfaces early and often is “The Myth of the Genius Programmer.” In Google’s 2009 I/O Conference, Brian Fitzpatrick and Ben Collins-Sussman presented on this topic and discussed it in much more detail than what I can do here today. The idea is that there exists a common programmer archetype which envisions a man (that’s a different problem), alone in some basement, effortlessly producing perfectly indented lines of C code with elegant strokes of his keyboard — using the rarest and most archaic of vim shortcuts. He does this with no regard to anyone else’s ideas or input because he knows everything already. It’s a ridiculous narrative that has very little resemblance to reality.

Photo by Christopher Burns on Unsplash

In reality, software development is hard and often messy. To build non-trivial systems, you need other people involved. You need someone to review your code as well as your strategy, you make mistakes and revert them, you work around naive architectural decisions which were made with limited information, you refactor, rewrite, rethink, fumble, test, argue, compromise and fail. This is how systems get built and shipped. It’s always important for me to destroy this trope in the minds of my students and mentees as soon as possible so that we can focus on the important aspects of professional computing and not myths and legends.

However, if we say we want to be more inclusive, if we say words matter, we must take a hard look inward and evaluate how we, ourselves, contribute to the fictitious lore of software development which makes the profession seem more fantastical than it is.

My aim today is to do the same with the idea of being a self-taught developer. I don’t mean to be confrontational in my assertions, nor do I wish to diminish the hard work and ambition of those who clawed their way into our industry through little more than sheer will and Google searching. However, if we say we want to be more inclusive, if we say words matter, we must take a hard look inward and evaluate how we, ourselves, contribute to the fictitious lore of software development which makes the profession seem more fantastical than it is. It is in service to this endgame that I recommend we replace the phrase “self-taught” with “community-taught.”

The phrase community-taught developer better illustrates not only the non-traditional means of obtaining one’s knowledge but also stresses the importance of others whose materials, presentations and other work has contributed to one’s success. Furthermore, by focusing on the community as a means to learn, we help to reinforce leveraging the community for other things such as development (open source), debugging (stack overflow), knowledge sharing (conference presentations), funding (crowdfunding); thereby furthering our narrative of collective intelligence. Community, (particularly in the form of open source) has been a key component in the acceleration of software innovation over the past decade or so. And we would do well to continue to acknowledge that.

Photo by Aaron Burden on Unsplash

An alternative to considering one’s self would be to say one is self-guided. This retains the emphasis on autonomy. Furthermore, by dropping the term “taught” and replacing it with “guided,” we implicitly acknowledge a wealth of knowledge and content that is readily available and that the individual must successfully navigate it to obtain the desired understanding. However, for reasons stated above, I think it’s imperative that we continue to emphasize community. I want to stress again: I do not wish to diminish anyone’s effort. I only wish to ensure we don’t forget how we got here and that in the grand scheme of things, we’re all standing on the shoulders of giants.

--

--