I was just thinking about the problem of elitism and gatekeeping in the software community. You know, the “You’re not a real programmer if you [use Notepad++ || only code HTML and CSS || only know Python || still use Windows* || don’t know about pointers || etc etc etc]” arguments. Most of these boil down to a pissing contest about who can use the most bare-metal programming language, do bit hacking to get a .0001% increase in optimization, and use butterflies and wind currents to write their programs.
So, where do you draw the line? How high-level do you have to get before you’re “not a real programmer?”
*Yes, I’m a huge Linux advocate. But come on. You can program on Windows. I personally don’t like doing so, but you can. If you have to bash on someone for using the OS they know, it’s because you don’t feel secure and confident in your own skills. All you’re doing is making someone feel like trash and not want to build things. It’s immature. Cut it out.
My initial reaction is that, if you’re writing code to tell computers what you want them to do, you’re a programmer. It doesn’t really matter how many layers of interpreters you have to go through in order to get the command across. My line is drawn past HTML and CSS (that’s legit), but before Wix (…picking out templates and arranging a couple things isn’t programming).
What about Dreamweaver? Are people who use Dreamweaver programmers? (If you’re cringing, it’s likely that you too have not used DW in a few years. I hear it’s gotten loads better. I still don’t really want to touch it though. Bad taste in my mouth.) They don’t necessarily write the actual code, but they are using creativity and intelligence to design and build software.
If you think the answer is, “No, that’s not real programming,” I ask: what about programs that are really just a couple library calls stitched together? Sure, you have to know what they do, and you have to know some syntax to get them to cooperate, but is that programming? What about Excel macros?
This is a loaded question, because “programmer” is an identity tag. There are lots of levels of expertise, and people put loads of effort into learning. They also often put effort towards feeling “worthy” of the label. To let someone else just waltz into your exclusive club of smarty-pantses feels like some kind of glove-slap. But the only reason you feel weird about letting someone new use the label is that you wanted to be in the club at one point, and whoever was already in it made you feel weird about not having “earned it.”
This is pointless. It’s so pointless.
My line, you might notice, isn’t too solid. Programming is a skill; to call yourself a programmer you need to have invested at least some time in learning how to tell computers to do things. But telling computers to do things is something everyone does, every day, even if it’s just posting cat pictures to the Internet, and one intuitively understands that that isn’t programming. So the definition of programming needs another component: you need to be using creativity to build something for someone else to use. I also feel that you should have a modicum of closeness to the computer that the average user doesn’t see. You should be typing code of some sort, probably. Yet at the same time, I still consider Scratch users programmers.
This is all kind of weird and fuzzy and I don’t have a solid answer. Let’s aim for something a little more abstract.
Who is a hacker?
This feels like easier ground to cover. A hacker is someone who makes stuff, usually involving code, always involving skill and creativity. So, can Dreamweaver users be considered hackers?
I’ll admit, I have the same knee-jerk response of “no,” but that’s because of my opinion on Dreamweaver. Let’s try again.
Imagine there’s a program that uses a WYSIWYG editor to build software, and it actually somehow outputs sensibly-structured code, which you may or may not have to tweak. You need to tell the computer, through this editor, how you want things to look and what they do. You design the visuals and the functionality yourself. Is someone who uses that a hacker?
I think yes. I wouldn’t consider that person a programmer, unless they tweak the code a lot. But I’m willing to extend the label “hacker,” because they’re building something.
In other words, I consider designers hackers, particularly if they design functionality as well as visuals. A solid designer goes to a programmer with a startup idea and both contribute substantially to the final product–they’re both hackers.
So, I know there’s someone who disagrees with me. ESR’s “How to Become a Hacker” FAQ, linked in the sidebar from the glider symbol, outlines the minimum amount of skill he considers necessary to be thought of as a hacker. In fact, my most well known post is linked from that guide, and probably a lot of my readers got here from it. But I think the guide, while helpful and very much in the hacker spirit, is showing its age just a bit.
Similarly, I think using “hacker” as a title of status isn’t the way to go these days. Once upon a time, this made sense. These days… ehh. Especially the idea that you have to be called a hacker by a “well-known” hacker. The community’s too big for us to define that kind of thing now, so what it gets us is this scrabbling for status, and an in-group. Does making “hacker” a title help our cause? Does making an in-group speed the creation of open source software?
It did once, because few people wanted to be part of the group, and hackers needed something to be proud of because no one else held them in high esteem. Times have changed. It’s more important to welcome new members than it is to describe an elite.
But wait, don’t you have to contribute to open source to be a hacker?
… Good question. It’s been part of the definition for ages, and for good reason. But we have to respect that in a lot of hackerly fields, there’s not too much of an open source infrastructure. There’s no official way, that I know of, to go post a functionality spec and some back-end code online and say, “I’m looking for a volunteer visual designer for this open source project,” and get one. There’s not really a GitHub that’s geared toward PSD files and so on. I think Adobe’s been trying to make something similar, but I have my doubts about the prognosis of this attempt. (You can use GitHub for this kind of thing, technically, but it’s not usually done. There’s no community that thinks of that as normal. Ergo, no infrastructure.)
I think we can loosen up on this a bit. Let’s say that, in order to be a hacker, you have to be helpful to other hackers. Open source produces better software, yes, but much of its function is just hackers helping each other build stuff. This addition to the definition seems to cover the chaotic-good benevolence that’s kind of integral to hackerliness. So, if you’re a designer and you provide friendly critique and advice, write articles/draw tutorials/make videos about your work, contribute to public domain or creative commons, maintain documentation for your tools, or anything that kind of runs in that vein, consider yourself a hacker.
So, to be a programmer, I think you should be writing code. Don’t care what language, what editor, or even if it’s very good quality code.
To be a hacker, you should be using your skill and creativity to build new things, usually with code but not always, and you should help others who are building things.
One more thing. Your learning shouldn’t be stagnant, for either category. A programmer who’s been spewing out bad COBOL since the eighties is barely a programmer, and definitely not a hacker. And a hacker who’s not refining their technique through focused practice and frequently poking their nose into the bandwagon to see what’s up with the newest shiny tech or trade technique or tool, is just… not a hacker, by definition. You have to be building stuff to be a hacker, which means you’re refining your skills as you do so. Technically, you could be writing the same CRUD app over and over and over again, but even that has some room for improvement, and it’s really really hard to imagine creative builder types limiting themselves to that for long.
These are just my views. I think a lot of the friendlier people in the community would find them reasonable, though.
Competition and impostor syndrome
I think the lack of this elitism is why I’m happier in design classes than programming classes. It’s not that I like design *better.* It’s that I don’t like programming classes, because the air tends to be heavy with the feeling of judgment.
Ever try asking a question on Stack Overflow? 80% chance you’ll be told it’s a stupid question, you aren’t using the right language and framework, you should have Googled x y and z, and your coding style is crap too while we’re at it. Sure, you shouldn’t ask other hackers to fish you answers that out of the API docs, and if you’re asking other people to read your code snippet then you should bother to indent it and comment anything that’s not obvious. I’m not talking about stuff like that. Even questions that seem to me perfectly legitimate get this kind of treatment. It’s just hostile and unnecessary.
I’m a girl, so this judgment stuff goes double for me. I’ve had people kind of assume I’m studying CS/programming because I want to snag a guy who’s going to get a good job, so if I wanted to prove my legitimacy, I’d have to work extra super hard. Some people are just… like this. You can try to live up to the ridiculous standards they set for you before they’ll give you basic peer respect (but you stay probation indefinitely–there’s no good faith if you have an off day), or you can ignore them, which usually just makes them more angry and hostile. I tend towards the latter because the former is too much work, but keeping them out of my hair feels like defusing a bomb. Everything I do is examined extra carefully, in case there’s something wrong that can be pointed out. The same thing happens to anyone who isn’t white, especially if they’re self-taught. You’re incompetent until proven otherwise.
Designers are more chill–they aren’t so competitive they feel the need to cut each other down. There’s still a lot of skill-based insecurity and comparing everyone else’s work to your own and trying to improve, but they aren’t nasty to each other the way so many programmers are. I can relate. No matter what, I always feel like I haven’t built enough, I don’t know enough, I’m not good enough. This isn’t new, really, it’s just something creative types have to deal with and practically everyone has the same self-dialogue. But when people can’t deal with this by dismissing it and just continuing to work, and instead decide to handle it by throwing their insecurities onto someone else, you just get this warped echo chamber of impostor syndrome and a really toxic environment.
I think a lot of the problem is that not everyone in the field realizes we’re a creative field, not a science or engineering discipline. If we all knew that, we’d know about this dynamic already because all the other creative fields have already been there and done that and learned how to deal with it. I happen to be an artist, writer, musician, cook, and designer as well as a programmer, so I’m fortunate enough to recognize what’s going on, which gives me some protection from it. (Notice I’m not a mathematician, chemistry whiz, or engineer. Funny how that works, isn’t it?)
Where’s this coming from?
This train of thought is heavily inspired by my getting more into freeCodeCamp. I’ve been reading their Medium articles off and on for… gosh… two years? Or more. But I didn’t get involved with the actual organization or their tutorials and stuff, because they’re very web focused and I wasn’t sure that was the direction I wanted to go. (If you’ve been here a while, you might remember I was more focused on mobile apps and desktop programming.)
Anyway, fCC is very anti-elitism, and I really like that about them. It’s why they’ve always been my favorite Medium column/publication/whatever they’re called. It’s very much an “anyone can learn this, yes you are smart enough so no excuses, come here and I’ll show you” organization.
I think this helpful non-competition is something the rest of the field should adopt. It’s not going to devalue your skills, because they have objective value. You can still be proud of how much you know without being a jerk about it. Actually, truly skillful hackers will be held in even higher esteem if more people learn to program, because they’ll recognize the difficulty of what you’re doing and want to emulate you.
Can we just drop the popularity contest?
Someone out there is going to read this and think I’m not a senior enough hacker for this request to be taken seriously, that I don’t have enough cred myself to kick the door open for other people. I don’t think I have to explain the irony.
Anyway, I guess this post isn’t really for those people anyway. It’s for my larval-stage readers, who are the worst affected by this phenomenon. I just want to make you aware of this message that’s constantly being thrown at you, and let you know it’s total bull.
Make stuff. Learn things. Help people.
You’re a hacker. It’s what you do.