“Earning Your Labels”

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.

“Real Programmers”

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.

C, Java, Perl, Python, and Lisp as the main languages one should learn definitely seems outdated. These days you’re probably better off learning JavaScript, Kotlin instead of Java, Ruby or Python, and… probably still Lisp, but maybe one of its dialects. And HTML/CSS, obviously. A lot of us don’t need C any more. Software is increasingly hosted on browsers rather than as native applications, and if hacker time is valuable as the guide purports, then we shouldn’t spend it on learning a complicated language unless we intend to specialize in what it’s used for. There’s something to be said for knowing the kinds of things C would teach you, but it seems a stretch to call it necessary.

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.

Open Source

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.

Advertisements

2 thoughts on ““Earning Your Labels”

  1. The “How To Become A Hacker” article kind of killed my learning process back in the day, and in a really dumb, unintended way.
    When I read about C being extremely powerful and NOT a good first language, my first thought was:
    “I WANT THIS”. It has to do with macho culture and ego or something like that I guess.
    So yeah, I tried to learn programming from C. And I failed. Hard.
    And that was the end of my programming career.
    Lately I’ve been cringing so hard thinking about this I decided to look up some sort of updated guideline and start from scratch. This post was really helpful in that regard. It’s also a much needed voice of reason regarding the whole elitism thing. Maybe once it was a quirky thing, some sort of military-like “the abuse will toughen you up” process, but these days it’s just out of control. I feel relegated to lurking, and helpful criticism is at a premium. Let’s hope this inclusive way of thinking catches on, for all our sakes.
    Cheers!

    Like

    • I can totally see where you’re coming from, and I don’t think it’s unusual. Good on you for trying again!

      FreeCodeCamp would be a decent starting point if you don’t have a specialty in mind. Web is kind of the universal platform for programming these days and it’s worth being able to code for it even if you eventually go do something else.

      If you go the web route you should also know about a site called CSS Tricks. It’s where I learned Grid and Flexbox, and am learning jQuery. Friendly writing style, very clearly laid out.

      If you’re still hungry for a challenge, but a saner one, I suggest Clojure for the Brave and True. (I’m still trying to get around to this one myself.) This is still a big leap, but probably still not as bad as C.

      If you’re not quite fool enough to try learning a functional language right off the bat, there’s always Zed Shaw’s Learn Python The Hard Way. I always found him slightly haughty and condescending but his instructions are very clear.

      The text of both the abovementioned books is free from the authors’ web sites if you search for it.

      Hope that helps! Let me know if you hit a snag or if you have any more questions–and of course news that you’re doing well is also welcome! If you start a project you want to share, I’ll feature it here so you can reach a bigger audience 😉

      PS: have you thought about starting a blog to track your progress? *innocent face*

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s