1. 19
    im not a programmer culture programming heatherbooker.github.io
  1.  

  2. 24

    I can appreciate the sentiment of this article, but it does border on encouraging incompetence. I know people who really treasure that they’ve always been “nerds” and “into computers and programming”, but were actually very ineffective. But, I’ve seen the other way too, where people clearly are just interested in trying to skate by with an easy gig, minimal effort, no extra effort at learning new things or gaining useful skills unless required.

    I feel like hard work, competence, and initiative is all that is expected. These are hard to define in practical steps, but easy to spot when you see it.

    1. 10

      I agree. Imposter syndrome is very real, and I understand that many people don’t want to be the stereotypical nerd-cliche programmer or a math-major computer scientist. It’s a wide field and there’s room for everyone.

      But the author of this article even goes so far as to say they do not understand functions of their job, or things that they have been shown how to do repeatedly. Which is honestly not something I feel you should be telling everyone on your blog.

    2. 17

      Imposter syndrome is endemic in our industry because there are like 50 different types of “nerd”.

      At first there was the IT guys at school who I adored, and I emulated them, and it was good.

      once I was old enough to join a company myself I found the old greybeards who shunned microsoft/apple and wrote C/Perl and arcane AWK, and they became my idols, and I did everything I could to emulate them.

      Once I was close to them I was aware another paradigm of people who did project Euler for fun!

      Once I was there I found people who made demo-scene stuff and reverse engineered binaries, and saught to emulate that.

      Once I was there I saw the new age of kubernetes and full stack web devs and felt like “that is what programming is”.

      I guess the answer here is that you don’t have to know every tool, you can’t know every tool, you can drill down in a specific area as much as you like. The tools we have are optional, mostly, so if a person extolls the virtues of emacs over vim, or Rust over C++, we owe it to ourselves to listen, but not to punish ourselves for not knowing everything or fitting into a stereotype.

      “You do you”, we’re all just code monkeys. It’s very difficult to have any sort of confidence in such an ever changing and young industry.

      1. 17

        I started reading the article and was sympathetic. There’s nothing wrong with using a Mac (I’m using one now, and since OS X released the idea that ‘real programmers’ don’t use a system that is a certified UNIX workstation is a bit odd). I don’t write shell scripts often and use AWK even less often, so I generally need to look up some docs whenever I do. There’s a load of stuff that a lot of programmers either don’t do often or have never needed to do in their career path that they shouldn’t feel ashamed to now know how to do without looking it up. Programmer is a pretty big field now and there’s room for experts in a large number of non-overlapping subsets. There’s also a great deal of value to the profession in people who really understand business logic and can communicate it clearly to programmers, yet would struggle to write a simple program on their own.

        I found that I became a lot less sympathetic as I got further down the list. It moved from things that she really had no need to know unless she chose a different career trajectory to wilful ignorance. I’d be really nervous about hiring a programmer who professed an aversion to reading and planning. I’d be pretty nervous about hiring a front-end web developer who couldn’t write CSS: it’s not difficult (though doing it well is) and even if it’s not your main area of expertise, you’re likely to be working closely with designers who live in that world and need to have a common vocabulary for communicating with them. You can’t develop that without writing some CSS and reading some HCI texts (books, articles, whatever), just as they can’t develop it without trying to write some code. I wouldn’t want to hire a designer to write the logic of an application any more than I’d want to hire a programmer to design the interface but I would want to hire designers and programmers who understood what the other jobs entailed well enough that they can work together. The second half of the list tells me that she doesn’t want to be that kind of programmer just as the first half tells me that she doesn’t want to be a greybeard who considers anything invented after 1985 a waste of time. I’m left wondering what kind of programmer she does want to be and with the sneaking suspicion that it’s one who gets paid but isn’t expected to collaborate with anyone else or write maintainable code.

        1. 11

          I has exactly the same reaction as you.

          First few points - Mac, ok. Homebrew - well I use macports, but same. Use mouse - sure, a lot of great programmers use mouse. Acme is even a mouse centered editor. But the next one - using Vim with FZF, and combining that with mouse is where I started to slow down. And using FZF without knowing how to use it. Why not just use a proper IDE, I would have understood it. But this seems just … I don’t know… lost? And after that things like not wanting to read. And a webdev that doesn’t know css. And finally - a webdev that doesn’t know what a server is?

          I definitely didn’t start thinking that the person isn’t a programmer or for some reason could not be called one. But the whole thing has something off about it. Like “I am a surgeon, but I don’t know what is a function of a heart and can’t remember what scalpel to use without a nurse telling me; I been working as a surgeon for X years thou and can push a button on a machine and it does the job”.

          Something is a bit off. The best way to describe my reaction is - I surely agree that everyone is different, surely agree that this person should do what they want and as long as it works all is good. But at the same time I wouldn’t want to validate or encourage the values expressed in that article.

          1. 1

            I really don’t get how “I use a package manager” is a sign of weakness? Because you don’t have patience to waste a bunch of time doing stuff that’s already been automated? IDGI

      2. 11

        I’m sure the author would be horrified to hear it (just a guess here of course), but this article quickly deteriorates into a celebration of ignorance that is positively Trumpian.

        Edited to add: I suspect we’re being trolled. Not for lulz either, but in the hope of producing some “examples of toxic techbro”

        1. 7

          I don’t think the author of the above post is trolling. It’s one of many blog posts on a personal blog, all written in a similar style, with a real name and real-looking resume attached. Several blog posts and the resume are consistent with someone who got interested in programming relatively recently, and learned about programming in the context of producing web applications, which means it’s very likely that there’s a lot of context around every other kind of programming one could do that she didn’t learn or only learned minimally. This is the sort of post I would expect someone who is aware of and a little embarrassed about their ignorance of their field to write. I agree that it comes across as un-thoughtfully maligning some of the areas of programming that they don’t understand, but I don’t think it’s insincere.

          1. 1

            Fair enough. I guess I just prefer “I don’t know this and that’s OK” over “I don’t know this therefore it’s not important”

        2. 9

          Frankly, my first reading of this had me gritting my teeth and hissing, but I couldn’t figure out why. A second read, accompanied by some background research, and I think I’m both less apoplectic as well as more understanding of what set me off.

          First, something the author points out that I really agree with is her comment on flow:

          I just make forms. No genius required. I have no right to complain about noise or interruptions.

          There’s definitely a lot of truth to this, and I think that many developers (myself at times included) puff up their chests and make a mountain out of a molehill when it comes to what we do. This is exacerbated by picking tools that require more concentration than just a <form> element, even though that’d be sufficient. I think this admission of the author is totally worth reflection by all of us.

          I also have great sympathy about not knowing how to write bash scripts (I hadn’t really done so myself until a few years ago, and I honestly haven’t done it in anger until the last few months) and AWK scripts (I can semi-reliably print out the first column of a line using AWK without cracking open references right now).

          I don’t think the author is a bad person for writing this. I think that the writing style may account for some of the abrasive flippancy that I interpreted when reading it. I also don’t know pretty much anything about this author, the circumstances of this post, or many other things that might be extenuating circumstances come interpretation time.

          For somebody starting out in their career or looking to grow, I think there are three things you want to learn from in this post:

          Have shame! Use that discomfort to identify places to grow.

          There are mentions in this post of places where the author didn’t know something (say, certain computing concepts) and identifies that “real programmers” know those things. If you are a real programmer, or even if like me you’re just somebody trying to avoid working retail or digging ditches, your privileged position means that you are kinda expected to learn about that stuff. You should feel bad that you are ignorant of things or unskilled, but you don’t have to remain that way! That dovetails neatly with:

          Be positive and patient with yourself! View your ignorance as a chance to learn new things and your lack of skills as a chance to improve.

          Nobody is born knowing how AWK or CSS work! That’s a great chance to explore more and learn how to do your job more easily. Not being sure about how to reliably invokessh or scp means that there’s a new skill you can master and accomplish! Life would be really boring if we were stuck with the skills we were born with–programming is a career with a lot of variety and opportunity for exploration and learning! You just have give yourself the time and room to study up on what’s useful, or have a clear articulation of why you’re setting something down.

          Learn about the history and the philosophy of our field. It’ll help you help yourself and others better!

          The author mentions not really knowing about Ada Lovelace, who is considered by many to be one of the protoprogrammers (seeing as how she didn’t actually have any of Babbage’s machines to actually run a proposed program). There are other figures, like Grace Hopper (who, with her team, created FLOWMATIC) or John McCarthy, similarly not mentioned. These are people that started with computers much more primitive than anything you’re likely to run across in your career and yet who accomplished a great deal and shaped the world for decades to come! You have everything you need to do the same, and knowing about the people that came before you can provide inspiration and perspective.

          When the author uses tools like Google, Skype, and other social media, they mention doing so instead of Tor or Signal or other options “real programmers” use. These other tools are often harder to use and have smaller networks, but tend to offer other advantages in terms of being secure or being able to be run without depending on others. Computers have been around for almost a century now, and yet a lot of people still aren’t comfortable taking charge of their own security or technology–those people are beholden to folks that they’ve delegated to. It’s important to understand both why they might make that bargain, and also to be aware of how you can spread information that can give those people the option to emancipate themselves.

          ~

          I think there’s a lot of positive discussion we can base off of this article, even if at first glance it raises our hackles.

          1. 8

            What’s this about programmers not using Macs? In my jobs over the last 9, 10 years, over 95% of the Engineering department were using Macs. You go to (frontend-ish) conferences, and the majority of the laptops you see are Macs.

            1. 2

              That is a relic of old times back when the manual for Apple hardware was printed on drool-proof paper. The introduction of OS X changed things, suddenly people got to play with a real - and really shiny - unix instead of a cobbled-together cooperative multitasking crash-happy toybox. It should be clear that plenty of developers went from Windows and Linux to OS X so this statement does not make sense these days. Things may change again if Apple goes further down the road of making macOS resemble iOS with all the restrictions that involves.

            2. 7

              This article is exactly the level of competency I have been expecting from all of my non-computer friends.

              Maybe it’s because my “non-computer friends” were still spending every waking moment on their computer playing games, they just weren’t interested in programming (or chess or internet privacy…).

              Now my (new) “non-computer friends” send me text messages to ask how to change the keyboard layout (on windows - my grandma would have googled it or fiddled around until she found the small EN in the corner, she would be 90 now but she died some years ago, still when she was 80 she was happily learning photoshop and tinkering with digital cameras and googling any problems that came up, solving them herself most of the time).

              After moving abroad I’m starting to realize there’s a lot of people who didn’t grow up with a computer and it’s more common than I thought for young people to fear them, maybe it comes from being burned by jokes and expectations about being “digital natives”, a narrative that didn’t play out as expected… or maybe it’s just a timeless thing - fear of inadequacy, fixed mindsets and prejudice.

              Long story short; I think I need to re-calibrate my expectations of other people.

              1. 6

                My positive takeaways:

                • Be careful about making people feel bad for being different. There’s no need to tease people about their hardware, OS, or editor.
                • Be careful about making people feel bad for lacking knowledge. https://xkcd.com/1053/ comes to mind: everyone needs to learn a thing for the first time, so we should make that process enjoyable.

                My negative takeaway: I see the author describing all the things they don’t know in a ‘joking’ or ‘flippant’ tone, and end up telling myself the story that they might be “wearing their ignorance of the topics as a badge”. The idea of joking about “things one don’t know” makes me pretty uncomfortable.

                1. 5

                  As a professional programmer of 8+ years, I feel like this describes most of my coworkers over my entire career.

                  1. 4

                    I think some in this thread are getting stuck on particulars (like the CSS point) and missing what I think is the bigger picture. Programming to me is an umbrella term, as is a “programmer”. At the end of the day, I consider the author to be as much a programmer as anyone else who has programmed. She evidently likes programming as a way of “doing”, which is perfectly fine imo. Granted, in a professional setting, planning is most likely preferred to doing, but the main idea of the post is that not all programmers have to be one and the same in terms of passions and motivations.

                    1. 3

                      To me, the CSS point, the server point, combined with the not-wanting-to-read and not-wanting-to-plan points pushed it into wilful ignorance. Programmer is a ‘knowledge worker’ job. Seeking out and gaining knowledge are a core part of that job.

                      I’ve followed a fairly non-traditional career path and I frequently find large areas that my colleagues know that I don’t and vice versa (and that’s a big part of what makes it great to work with them). I have no problem with people not knowing everything. I don’t have a problem with people not knowing a large amount of the huge umbrella of things related to computer science: it’s a huge field and no one is an expert in everything. Once you’ve identified something that’s relevant to your work (CSS and knowing what a server is, for example) you have a choice.

                      Our management is very keen on ‘growth mindset’ as opposed to ‘fixed mindset’. I’d always found it a bit silly because ‘growth mindset’ seemed like a synonym for ‘not actively choosing to be a numpty’, but this article is a perfect example of fixed mindset: she doesn’t know a thing and has decided to be happy to define herself in terms of that as an intrinsic limitation. Someone demonstrating growth mindset who identified important gaps in their knowledge would seek to address it, not say ‘it’s okay to be ignorant of things that are relevant to my job’.

                      Note that this doesn’t apply to everything on the list. If bash isn’t the right language for automating tasks with your workflow, you don’t need to learn how to write shell scripts. All you need to know is that shell scripting is an automation tool that you could learn to use if you are ever in a position where you have a problem that requires running a bunch of tools and your favourite scripting language isn’t available.

                    2. 3

                      If we are playing a “find your pet peeves in this post” game…

                      Real programmers embrace all the manual dirty work they have to do configuring and trouble shooting basic functions on this or that linux distro. I just want shit to work.

                      This ain’t 2001. I use a GNU/Linux distro. It works on my off the shelf computer I got from the store next door. On average I spend zero hours a year troubleshooting it. I say again, this ain’t 2001. It’s 2020.

                      I never managed my own memory. I’ve never used C or C++ or C# or C- or C%. C#

                      I can’t even.

                      1. 3

                        Hm, does knowing a lot of small facts about computers make you a programmer? I think if anything makes you a programmer it’s the ability to come up with the simplest solution to a problem.

                        1. 1

                          A webdev who still doesn’t know what a server is after 4 years? I find that hard to believe… This might just be an ad for the organization that is being referred to at the bottom of the page.

                          1. 2

                            Nah, RC is just something a lot of alumni tend to plug in their blog layouts. @pushcx does the same and he runs Lobsters.