[HN Gopher] Programming is hard
       ___________________________________________________________________
        
       Programming is hard
        
       Author : zuzuleinen
       Score  : 336 points
       Date   : 2021-04-06 14:03 UTC (8 hours ago)
        
 (HTM) web link (dorinlazar.ro)
 (TXT) w3m dump (dorinlazar.ro)
        
       | AtNightWeCode wrote:
       | Writing a topic about programming without mention the term TEAM.
       | Of course programming is hard for you.
        
       | iandev wrote:
       | Is it possible that programming is both hard and easy? I somewhat
       | feel that this post lacks the nuance that it complains of the
       | other side lacking.
       | 
       | I'm of the opinion that anyone that thinks you must be of some
       | special intelligence to become a software engineer is wrong
       | because frankly it's no harder than many other careers. However,
       | I do side with the author that we shouldn't be dismissive and
       | pretend it's extra easy either.
       | 
       | I want some nuance. As with all things, programming is easy to
       | get into, hard to be great at. Doing it doesn't make you
       | particularly special. Working hard and getting better at
       | _something_ is what matters.
        
         | Ashanmaril wrote:
         | I think programming is easy to get into if it's just something
         | you enjoy (which could apply to anything, really). Throughout
         | getting my CS degree it seemed like there was a pretty clear
         | line between the people were going through the motions of the
         | courses and making it through based on what was taught and the
         | information provided, and the people who just enjoy programming
         | and do it for fun in their free time. If you're the latter,
         | you'll probably naturally pick up the required skills cause
         | you're engaged and want to learn more.
        
       | sanderjd wrote:
       | This is a really interesting time capsule to me.
       | 
       | > _Most beginners in programming eventually end up with the same
       | ingratiating message: "Programming is easy, everyone can do it"_
       | 
       | This was _not_ the message when I started programming. The
       | message was much closer to it being something that is only for
       | extremely smart and dedicated nerds. The message has been
       | conscientiously shifted through dedicated messaging campaigns,
       | for better or worse.
       | 
       | As I learned to program, I thought the message at the time seemed
       | wrong, that it seemed easier than the conventional wisdom
       | suggested. But during school, that developing opinion was
       | tempered by experiences I had working in groups with or tutoring
       | people, some of whom just never seemed to get it; they were smart
       | people and could understand the answer once arrived at, but never
       | seemed able to independently get to the next answer. Some of
       | these people are very successful with doctorates in other
       | technical fields, but still really don't _get_ programming.
       | 
       | So my conclusion is that programming is neither uniquely hard nor
       | at all easy, but definitely has some interaction with how
       | individual people are wired to think and learn. This doesn't lend
       | itself to nice slogans in an ad campaign though.
        
       | dt3ft wrote:
       | So is running a blog which can handle 100 people simultaneously
       | viewing it... :)
        
         | naavis wrote:
         | If this is a quip about the site being down or something, it
         | seems to work fine here.
        
           | dt3ft wrote:
           | I got no response at all the two times I tried to reach the
           | server.
           | 
           | Edit: still no response from the server. 10th time's the
           | charm? :)
        
             | naavis wrote:
             | Maybe you have connection problems? Still works totally
             | fine here. Loads faster than most sites.
        
               | dt3ft wrote:
               | Unreachable from Zurich, Switzerland. Tried with
               | Geopeeker and it did not load from Virginia either.
        
       | franklyt wrote:
       | I don't disagree with or dislike the article, but I feel the
       | author could have included some examples of what he considers
       | programming, and what he considers hard, as he listed quite
       | extensively the things he doesn't consider programming or hard.
        
       | contrarian_5 wrote:
       | everything is simple and easy once you understand and master it.
        
       | jkingsbery wrote:
       | While it is true that there are lot of resources for people
       | getting started and getting into programming, and that "Beginners
       | walk a very fertile ground," I think that misses the point.
       | Something about our industry and trade has been exclusionary.
       | Perhaps unintentionally. The "anyone can program" movement seems
       | to me to be in large about about addressing this - you don't have
       | to be a particular gender or ethnicity to write code (either just
       | for fun, or for a living).
       | 
       | It is true, as the article points out, that programming is hard.
       | But we teach lots of things in school that are hard that no one
       | will do professionally. Calculus is hard too, but more people
       | take AP Calculus in the US (based on https://secure-
       | media.collegeboard.org/digitalServices/pdf/re..., around 400k)
       | than take AP Computer Science (based on same, around 188k). I
       | don't think Calculus is that much more valuable, nor is Computer
       | Science that much harder, to justify such a large gap. The point
       | is, even among STEM subject, there's a taboo around computer
       | science and programming.
       | 
       | But it is equally true that it's not helpful to tell people that
       | programming is a walk in the park, and the article does a good
       | job explaining that. Perhaps better than saying "programming is
       | hard," or "programming is easy," we say "programming is worth it"
       | and leave it there.
        
         | dkarl wrote:
         | > The point is, even among STEM subject, there's a taboo around
         | computer science and programming.
         | 
         | I really thought this was no longer true, but it rings true to
         | me as someone who was in school in the 1980s and 1990s. Back
         | then, being into computers was a social liability. It was way
         | worse than being into math and science. Math and science
         | weren't optional, and they were important for college
         | admissions, so being good at them didn't prove you were a
         | weirdo who actually liked that stuff. You were just taking
         | advantage of your intelligence to succeed at something that
         | everybody else wished they were better at, too. (Assuming, of
         | course, you didn't cop to thinking calculus was SUPER COOL.)
         | 
         | Being good with computers, on the other hand, demonstrated a
         | kind of stupidity that outweighed the intelligence it required.
         | 
         | To understand how it could be socially negative to do something
         | that everybody assumed required a lot of intelligence, you
         | could, from a narrow point of view, compare being good with
         | computers to going to jail for beating up a police officer.
         | Being strong and tough was a desirable attribute, just like
         | intelligence was, but that particular way of proving it was way
         | worse than not being strong at all. It showed a different kind
         | of weakness that cemented your identity as a loser, somebody
         | that a "good" person was better off not knowing. Even if it
         | made you seem mysterious and fearful, at the same time, it made
         | you "less than" and socially irrelevant.
         | 
         | I thought this was changing in the 21st century. When I look at
         | people under 35 in the industry, I don't see signs of having
         | grown up under that social stigma. I might be missing it
         | because of other generational differences, though. I'm curious
         | what others think.
         | 
         | > Perhaps better than saying "programming is hard," or
         | "programming is easy," we say "programming is worth it" and
         | leave it there.
         | 
         | Maybe "programming is necessary" or "programming is
         | ubiquitous?" Maybe the best way to remove the stigma is to
         | convince kids that people who struggle with programming will
         | wish they were better at it, rather than being able to dodge it
         | entirely. Let's turn it into something that everybody wishes
         | they were a little bit better at, so they don't automatically
         | look down on people who succeed with it.
        
         | quintdamage wrote:
         | I took both AP Calculus, AP Computer Science A/CSP. CSA has you
         | work with miniscule Java problems while CSP had you do things
         | like define "big data" and what IETF stands for. Despite
         | getting a 4/5 on the exams, I don't feel like they resembled
         | anything like my introductory classes at a state university,
         | and don't really seem to apply to either the academic wing of
         | computer science nor software engineering. I'm sure part of
         | that is likely due to teaching, as I preferred my highschool
         | math teachers to the technology/computing teachers, but the
         | curriculum seems misfocused at best.
        
         | the_only_law wrote:
         | > Calculus is hard too, but more people take AP Calculus in the
         | US (based on https://secure-
         | media.collegeboard.org/digitalServices/pdf/re..., around 400k)
         | than take AP Computer Science (based on same, around 188k).
         | 
         | FWIW my school didn't offer AP Computer science till the year I
         | graduated, where AP Calc had been a thing for much longer.
        
       | zabzonk wrote:
       | > being a senior at 22
       | 
       | WTF does "being a senior" even mean?
        
         | majewsky wrote:
         | "Junior" means you implement designs prepared by someone else.
         | "Senior" means you are the one making the technical designs, to
         | be implemented either by yourself or by someone in your team.
         | 
         | In these definitions, "design" refers to the overall structure
         | of a program or system. The level where decisions like "do we
         | hit the DB for every query or put a cache in between" are made.
        
           | BlargMcLarg wrote:
           | These separations are completely arbitrary in practice. I've
           | seen many seniors not doing any technical designs, and I've
           | seen many juniors expected to stand on their own two feet
           | when it comes to making technical designs, sometimes to the
           | point of requiring those skills before getting a job.
           | 
           | Reality is, the title means hardly anything anymore except
           | "this person has this many YoE" and whatever value the
           | company attaches to the title in a given context. That's what
           | has made the title so watered down.
           | 
           | Additionally, many graduates can make technical designs. They
           | won't be the best. They won't think of everything. They
           | likely don't have the foresight to think of problems
           | happening along the way. But they are being taught how to
           | convert requirements into a working solution during school
           | years. I have a hard time believing "seniority" is defined by
           | a few years of practical experience in something that was
           | taught in school.
        
         | ThrowawayR2 wrote:
         | > " _WTF does "being a senior" even mean?_"
         | 
         | Having the word "senior" in your formal job title, e.g.
         | https://www.levels.fyi/
        
           | zabzonk wrote:
           | Yeah, like job titles are at all meaningful.
        
             | bluefirebrand wrote:
             | They sure look good on your resume.
        
             | doytch wrote:
             | This is the tongue-in-cheek point that the post you're
             | replying to is making. :)
        
               | zabzonk wrote:
               | Perhaps so, but I have seen innumerable posts here that
               | do take the concept of "being senior" seriously.
        
               | Jtsummers wrote:
               | Go up a few paragraphs to where the author first uses
               | "senior" and the narrative thread to that phrase ("senior
               | at 22") makes a lot more sense.
        
             | spelunker wrote:
             | I think that is the point the original author is making yes
        
             | beforeolives wrote:
             | They are usually meaningful within a given company and
             | become increasingly important as the company grows in size.
             | Comparing titles between companies is usually pointless.
        
         | sturza wrote:
         | Being a senior at 22 is like being a regular teenager who knows
         | everything
        
         | marktangotango wrote:
         | This triggered me. Senior is a title that, like everything else
         | in our Agile world, has been evolving to subsume activities
         | that were once considered to be more specialized. Similar to
         | how "devops" has combined sys admins and network engineers with
         | development, and agile itself has combined "business analyst"
         | with development, Senior now includes "team lead" and
         | "architect". It's a pitiful state of affairs imo.
         | 
         | And we've done it to ourselves. Every time we as a collective
         | have complained that X is a waste of time, this persons job has
         | no value, we don't need them, guess what? The people in charge
         | listened. I personally don't like that this has happened for
         | the primary reason it makes my job harder.
        
         | kemiller2002 wrote:
         | That you get paid more :)
        
       | mybrid wrote:
       | Most people commenting on human nature have no formal education
       | in it. A good place to start is Steven Pinker's, "The Blank
       | Slate, The Modern Denial of Human Nature." Claiming everyone
       | should find something easy is a blank slate statement.
        
       | spenvo wrote:
       | The article has a good message overall but I think this title
       | works against it. A much younger and more impressionable version
       | of myself heard Marco Arment on a podcast around 2010 saying how
       | difficult iOS programming was, and I kind of believed him at face
       | value. It was 9 years before I gave iOS/macOS programming another
       | shot, and I was more productive than I'd been in any other
       | programming language. I agree with the article that telling
       | people programming is "easy" is probably not a good idea either.
        
         | PeterBarrett wrote:
         | In fairness, over 9 years it got significantly nicer to program
         | for.
        
           | gh-throw wrote:
           | Having written for both platforms at the time, I don't know
           | about 2010 but by around 2011 or 2012 it was sure as shit
           | easier to program for than Android. By a long shot. And a
           | breeze to maintain an actively-developed app in the field, by
           | comparison. Maybe there were also-ran mobile platforms that
           | were easier, or not-apples-to-apples comparisons with, say,
           | desktop development, where that's easier, but if you wanted
           | native mobile dev Apple was a piece of cake (pie?) compared
           | to its main competition.
           | 
           | [Edit: Nb my perspective is that of someone who'd never used
           | a Mac full-time before working in mobile development, had
           | never even looked at Obj. C before, was quite familiar with
           | Linux and to some extent Windows, and had a passing
           | familiarity with Java, so if anything my background should
           | have biased me toward Android, slightly. Last time I touched
           | native on the two platforms was, oh, 2017 maybe, and it was
           | still true.]
        
           | spenvo wrote:
           | That's true, by leaps and bounds, really
        
         | billsix wrote:
         | Are you using Swift? Swift was released in 2014.
        
         | slingnow wrote:
         | Not only did the language change significantly in 9 years, your
         | skills as a programmer likely did as well. How can you evaluate
         | the truth of the original statement given these factors?
        
       | hnrodey wrote:
       | Years ago, I recall a line from a fellow who was our then "chief
       | architect".
       | 
       | >Do you program a computer, or do you build software?
       | 
       | Programming a computer is accessible to millions upon millions of
       | people. Building and creating software is a craft for which we
       | are well paid.
        
         | city41 wrote:
         | Yesterday my wife asked me how can I work with music playing,
         | doesn't that distract me? My response was my work boils down to
         | figuring out what to make, then making it. The figuring out
         | part is hard, and requires silent concentration. The making
         | part is usually straightforward and music helps me crank along.
        
           | hnrodey wrote:
           | I like your observation. I've recently said similar things
           | like "writing code is 99% figuring out what the hell this
           | thing should do, and 1% is actually making it do that thing".
        
           | craig1f wrote:
           | I find that playing music occupies the part of my brain that
           | is easily distracted. This allows the productive part of my
           | brain to work without distractions.
           | 
           | Without music, the easily distracted part of my brain starts
           | looking for distractions, which drags the productive part of
           | my brain along with it.
        
             | tartoran wrote:
             | Music gives me momentum and puts me in the moment. In my
             | most productive streaks I listen to music. Then silence is
             | good when evaluating what I've done, cleaning up here and
             | there and some refactoring. It's come kind of call to arms
             | if I needed to make an analogy even though Im not a fan of
             | warfare
        
         | danb1974 wrote:
         | None or low entry barriers are an issue in lots of places. Even
         | making a proper coffee is a craft you can't aquire just by
         | googling around in a rainy evening (throwing hot water on pre-
         | ground beans does not qualify you as a barista). Difference is
         | you can only damage a coffee for the moment, not a whole
         | software suite for many years to come.
        
       | caffeine wrote:
       | Boils down to "people are not equal." Which is true, of course,
       | and immediately obvious if you've ever met, studied or worked
       | with any people.
        
       | reidjs wrote:
       | Programming was the first "hard" class I took in high school.I
       | did miserably in it, barely scraped by with a C. Despite having a
       | ton of interest in it and a desire to learn, it was just so hard
       | to get started. I decided it wasn't for me and studied something
       | unrelated in college. I took a dead end job out of college
       | because I had no idea what to do with my degree.
       | 
       | I randomly met some professional software engineers through a
       | local run club and started doing online classes/coding challenges
       | with them through edX and project Euler. The spark came back and
       | I decided to entertain the possibility of doing this full time. I
       | made the leap and have been quite happy with my decision.
       | 
       | I think I was put off because I struggled so much with
       | programming compared to my other classes. I didn't see other
       | people struggling with it, because the smart kids were the only
       | ones getting called on. In hindsight, most of the class was
       | struggling and I fell somewhere in the middle.
       | 
       | I like the idea of explicitly saying programming is hard. But
       | it's double edged, it will put off many people who may have an
       | aptitude for it because most beginners are full of self doubt and
       | humility. To the authors point, we should work towards changing
       | the connotation around the word "hard" to be more positive.
        
       | tmnstr85 wrote:
       | The metaphor I've been using lately is that programming is like
       | art. Anyone can doodle, it doesn't have to be anything more than
       | a line on a page. But to paint a masterpiece, you're probably
       | going to need to know the inner workings of some language. We
       | don't spend enough time talking about the correlation between
       | programming and the arts. The metaphor is extendable to all arts,
       | like music - symphonies, harmonization, cadence etc. I think if
       | we emphasize this more, we'd find another opening for people to
       | go deeper than the doodle. I worry about lack of access to the
       | arts, it degrades the opportunity for deeper and more meaningful
       | computer programming for future generations.
        
         | ProZsolt wrote:
         | Paul Graham wrote an entire book on this called Hackers &
         | Painters
        
         | bob1029 wrote:
         | Software as art is the most apt analogy I have encountered so
         | far.
         | 
         | If you want to build nuclear reactors, sky scrapers or
         | semiconductor manufacturing lines, go to college for 4+ years
         | and follow the traditional paths.
         | 
         | If you want to compose a symphony or non-trivial software, skip
         | the college and go sit in front of your instrument(s) for as
         | long as you can stand to every day.
         | 
         | To call programming "Software Engineering" and building
         | coursework around that term would be similar to developing
         | coursework around "Music Engineering". The rigor of
         | science/engineering (while certainly at the foundations of
         | everything) distracts from higher-order and more human
         | understanding once you get past the basics.
         | 
         | The entire game with software is managing complexity in a way
         | that is sustainable for the participants. Effectively, this is
         | what art seeks to accomplish as well. Capturing many raw
         | emotions/ideas and integrating them into a single solution.
        
         | agumonkey wrote:
         | There were a few essays about art, paul graham did one
         | (painting ?) also i think it was dick gabriel who had a blog
         | about poetry and programming.
         | 
         | The aesthetics of right abstractions are at play that's for
         | sure.
        
         | RHSeeger wrote:
         | I've always considered it more related to craftsmanship, like
         | woodworking, etc. Admittedly, that is also an art form, but of
         | a specific type. Anyone can figure out / learn how to build a
         | table. But it takes a lot more to build a _good_ table or,
         | better yet, one that will last for a long time, or one that
         | will best suit the needs of the person it's for, etc.
         | 
         | The skill set includes knowing what the different pieces you
         | can use are (dove tail vs other corner connectors, etc), taking
         | the time to plan out what pieces would be best, etc.
        
         | SketchySeaBeast wrote:
         | The metaphor goes further than that - you're not being paid to
         | paint a masterpiece, you're being paid to be part of a 5 person
         | team repainting the sistine chapel. That again is a totally
         | different skillset.
        
           | thrower123 wrote:
           | Most of us aren't even doing that. We're slapping on a new
           | coat of Stonington Grey on the walls and touching up the trim
           | of apartment buildings...
        
             | musingsole wrote:
             | It's important to take pride in your work but also to have
             | a crystal clear image of what that work is supposed to be.
             | Mistaking an apartment renovation for building the Burj
             | Khalifa is the source of so much heartache.
        
               | radus wrote:
               | Today we're renovating an apartment. Tomorrow, maybe
               | we'll want to build it into the Burj Khalifa.
        
         | watwut wrote:
         | Funny thing, that is literally what I was told about drawing
         | realistically - anyone healthy can learn to draw realistically.
         | These days, there is whole pedagogy on how to do it, you "just"
         | have to work hard and follow instruction.
        
       | SunlightEdge wrote:
       | My thoughts... It's interesting that popular(ish) Twitter people
       | that are part of #100daystocode (e.g. Cat McGee ) have shown up
       | here on hacker news. It seems like 1000s and 1000s are part of
       | this twitter movement. There is good and bad with it.
       | 
       | Cat McGee and her ilk, to simplify, are selling programming as a
       | lifestyle. It's not the coding that's the point- it's the
       | opportunities it gives in terms of good jobs, ability to live in
       | foreign countries etc. And they gush over how programming is in
       | fact easy. I can definitely see how programmers might feel uneasy
       | about this trend of tons of people being interested in getting
       | into the industry. Obviously, at some point certain areas are
       | going to be put under a lot of pressure. Potentially.
       | 
       | As the above author notes it's a lot harder to work on a fully
       | functioning 100k line webapp/software than a toy website. And
       | from what I see on twitter, most of the drive is on
       | html/CSS/JavaScript learning.
       | 
       | But in other ways it's a good thing. Even if you are not a
       | developer - writing code can be a real joy as a hobby. And a bit
       | of coding skills can help people in non-coding jobs. Or just to
       | create some thing small. (disclaimer I'm a data analyst trying to
       | become a data engineer). And the Twitter groups like
       | #100daystocode do expose more people to the fun side of coding.
       | Let's face it most high schools fail at that.
       | 
       | On a final point, like writing a novel/script (a demon I know all
       | too well.) there is a dream bring sold that you can live in an
       | exotic location and work remotely. Its more of a realistic dream
       | than writing to be paid, but still people might need to be
       | careful about fools gold.
        
       | falcrist wrote:
       | Getting into programming is easy. It only requires some baseline
       | level of interest. There's no formal certification. You don't
       | need specialized tools. With a laptop and an internet connection,
       | you can be up and running making toy programs on _day 1_. How
       | many other fields look like that?
       | 
       | On the other hand, creating and managing a large code-base is no
       | mean feat. Making production code that does something people are
       | willing to pay for usually takes time and effort.
       | 
       | And as usual, learning to program is one thing. Becoming good at
       | it is quite another.
        
       | Ekaros wrote:
       | Programming can be pretty simple. Ofc, some tools(languages) are
       | harder than others. What is hard is software development,
       | software engineering and computer science...
       | 
       | Quite vastly different fields. And two of the first ones are
       | needed for good software. And the last one if something novel is
       | being done. What is hard is to be in some intersection of these
       | and being able to deliver value.
       | 
       | Programming itself might just be implementing spec or gluing code
       | together, skilled field, but could be done by tradesman...
        
       | rectang wrote:
       | > _You see them at conferences, or with articles promoted, or
       | with other types of media, sometimes playing the diversity card,_
       | 
       | This is unrelated to the general thesis and cleaves the audience
       | for this post in half.
        
         | slingnow wrote:
         | I went to the comment section looking for the first person to
         | take issue with that statement. I wasn't disappointed.
         | 
         | Why is it unrelated to the general thesis?
        
           | jfarmer wrote:
           | Let's not pretend like "the diversity card" is a neutral,
           | just-the-facts-ma'am description of what's going on.
           | 
           | I agree with the OP's premise:
           | https://twitter.com/jfarmer/status/1361134242491633664
           | 
           | I also helped start https://www.missionbit.org/, donate +
           | volunteer with orgs like Black Girls Code, Code2040, etc.
           | Phrases like "the diversity card" serve no rational purposes
           | other than to discourage folks who already see programming as
           | "something for other people".
           | 
           | And yes, I can imagine someone replying: "If someone is
           | discouraged by _that_ then they're going to be in for a rude
           | awakening once them start programming." Now imagine me
           | wondering whether that person is more interested in winning a
           | debate or learning about the actual circumstances and
           | perspectives of their potential students.
           | 
           | Programming _is_ hard. It's also one of the few careers that
           | consistently give people power and autonomy over the
           | trajectory of their lives.
           | 
           | Either the OP wants that world or he doesn't. If he doesn't,
           | fine, say and do whatever. If he does, then he should
           | recognize that phrases like "the diversity card" have 100%
           | downside.
           | 
           | Personally, I'll chalk it up to the OP being Romanian and
           | using words/phrases whose sense is hard to get without being
           | in the US or Canada (maybe UK/AUS/NZ too). For example, he
           | says:
           | 
           | > I'm the gatekeeper now.
           | 
           | Maybe he means it in the sense that most folks in the US tech
           | world mean it, but it doesn't seem like it. The OP seems to
           | care about beginners being more discouraged because they were
           | led to believe programming would be easier than it was.
           | 
           | But the words and phrases he uses signal that he wants to
           | make the environment inhospitable to "casuals".
           | 
           | It's the difference between semantics and pragmatics.
        
             | commandlinefan wrote:
             | Well, he may not have _put it_ exactly right, but the term
             | "gatekeeping" is often (maybe not always, but a lot of the
             | time) applied in the context of diversity or the lack
             | thereof: you're claiming that programming is hard and are
             | therefore engaging in gatekeeping which contributes to the
             | lack of diversity (or so the argument always goes). It's
             | worth bringing up in this post because claiming that
             | programming is easier than it is hurts everybody who
             | attempts it, whether they're diverse or not.
        
               | jfarmer wrote:
               | I'm trying to give the author the benefit of the doubt.
               | The tone of the piece has a definite "buzz off, newbie,
               | unless you're ready to go HARD CORE" tone to it. He might
               | not realize that because he's not a native English
               | speaker and isn't swimming around in North American
               | culture.
               | 
               | Maybe that was his intention, maybe it wasn't. Maybe he
               | thought he was just "telling it like it is".
               | 
               | Maybe you disagree that the article has that tone. If so,
               | I'd politely suggest that the way the tone presents to
               | someone used to "programming culture" might be different
               | than it presents to someone outside, someone unsure about
               | their place in that culture.
               | 
               | Let me put it this way. I spent a lot of my time and
               | energy finding people of all ages and backgrounds who
               | have decided that programming is for other people and
               | convincing them it doesn't have to be. This article makes
               | my job harder.
               | 
               | Compare it to this:
               | 
               | > Some people will tell you programming is easy, other
               | people will tell you programming is hard. Most of the
               | time that's a reflection of how they felt or how they
               | think other people should feel, not how it will feel for
               | you.
               | 
               | > Forget easy or hard. Will it take a lot of effort to
               | become really good? Yes. The question is whether that
               | effort is worth it for you. The only way you'll find out
               | is if you give it a shot.
               | 
               | > With the right effort, you _will_ learn to program. It
               | can be for you if you want it. Let's figure out together
               | whether this is exciting for you. If it is and you put in
               | the work, I'll be there to help you go farther than you
               | thought possible.
               | 
               | None of this "gatekeeper" or "diversity card" nonsense.
               | Talk to the person as a person. Don't talk about your
               | favorite abstract bugaboos as it relates to that person.
        
         | jerf wrote:
         | There are absolutely people out there simply playing the
         | diversity card to get attention. If you are pro-diversity, this
         | shouldn't be something you want to deny exists, it should be
         | something you want to prevent from happening, because it
         | dilutes your interests.
         | 
         | It has nothing to do with the merits of diversity, it has to do
         | with the fact that anything valued by society will have the
         | signal forged by hucksters. Literally anything.
        
           | watwut wrote:
           | Diversity speakers are by far not the only ones who "oversell
           | their own skills". Nor are they they worst oversellers I have
           | seen.
           | 
           | And by that I mean that overselling own skills is incredibly
           | frequent in this field and basically requirement in a lot of
           | sub-cultures. It is just so incredibly common to read two
           | tutorials and then claim yourself expert. It is not like
           | consultants trading in impressions were rare or great expert
           | developer comming in just for us to find we know more or
           | something like that was rare.
           | 
           | But typically, they dont use beginner card nor diversity
           | card, they are guys who do their best to conform to every
           | stereotype of great programmer who play "I am expert" card.
        
             | beckingz wrote:
             | I had a friend who worked for a big consulting company and
             | they told him to become an expert in a topic.
             | 
             | So he googled for 6 weeks and became an "expert".
        
         | sidlls wrote:
         | How is it unrelated to the general thesis?
        
       | seaerkin wrote:
       | Programming is easy. Organizing code is hard. Maintaining and
       | operationalizing programs is hard.
        
       | drewcoo wrote:
       | It's not easy, it's just totally unregulated. Meaning it's easy
       | to "be a programmer."
       | 
       | Want to be a real engineer? There's a professional body for that.
       | Doctor, lawyer, electrician, etc.? Same. Not us programmers.
       | 
       | The big difference between us and them is liability. Nobody
       | expects software to work. Thus nobody gets their pants sued off.
       | Thus we don't need professional accreditation; we're not vetted.
        
       | JustSomeNobody wrote:
       | Programming is hard. Good developers make it look easy. Some days
       | are boilerplate. Some days are exhaustingly challenging.
        
       | pdpi wrote:
       | Mostly everybody can learn to cook, only a few will become
       | professionals, and fewer still will ever get a Michelin star.
       | Mostly everybody can learn how to cycle, but only a few will
       | compete in (let alone win) the Tour de France. Everybody can
       | learn how to read and write, but there's only a handful of
       | Shakespeares and Hemingways among us.
       | 
       | All of these are useful, easy to acquire, everyday skills that
       | can be done at incredibly high levels of sophistication.
       | Programming is easy in exactly the same way all of these things
       | are easy, and hard in the same way all these things are hard.
        
         | sanderjd wrote:
         | Yeah I really think the most accessible and closest analogy is
         | to writing. Everybody writes, few write professionally.
        
       | justbored123 wrote:
       | Programing is just as easy as math.
        
       | Waterluvian wrote:
       | I'm personally convinced that programming is _no different_ from
       | any other skilled job. It's just that it's less tangible and
       | therefore easier to misunderstand and harder to communicate.
       | 
       | I've been doing some deck building at my house and I realised
       | that it's exactly like programming. I'm just some schlub who
       | thinks, "I know saw. I know wood. I know screws. I can do this!"
       | And then I discover:
       | 
       | - I can do this fast, and it'll look like a deck, and work, but
       | not live long, and have a lot of really ugly things that don't
       | quite work.
       | 
       | - I can do it really slow, and patiently, and make a lot of
       | mistakes, waste material, time, and end up with a wonderful deck
       | and a TON of lessons learned.
       | 
       | - I can get an expert team to do it in a weekend, using all the
       | same tools and materials as I would, but because they've done it
       | 100 times before they look like absolute wizards.
       | 
       | - And I can get a team to do it very poorly too, if I cheap out
       | and don't hire the right people.
        
       | microtherion wrote:
       | Maybe "programming is easy" as a motto should be seen like
       | "anyone can cook" in "Ratatouille": Not that programming (or
       | cooking) per se is easy, but that it should be seen as open to
       | practitioners from a wide range of backgrounds and preexisting
       | knowledge.
       | 
       | However, like cooking, programming requires years of dedication,
       | experience, and experimentation to master.
        
       | tectonicfury wrote:
       | Agree with the message, programming is really hard, and the
       | earlier you realise it the better it is. Having "programmed" for
       | the greater part of the last decade, starting out with
       | 'scientific computing' in Fortran and matlab (I was doing
       | chemical engineering), then spending precious time believing (and
       | learning) that C and C++ are 'the' languages and having pop
       | science ideas that Java is slow ('it's GC after all'), only to
       | realise its much faster than C++ if you do 'new' a lot, I
       | realised how less I knew about how hard programming really is.
       | Just a glimpse of the hardships I went through. All this
       | meandering was due to the belief that programming is easy
       | (peddled around by legions of tech blogs and YT channels), and
       | that there's only a little more that CS students learn as part of
       | UG degree curriculum.
       | 
       | Right now I am doing SICP and it's giving me the essential ideas
       | which all CS students learn but which hardly any programming
       | blogs recommend to beginners. Learnt so much already (I am
       | halfway though chapter 2), I now realise it was never about the
       | language, it's the ideas and techniques like recursion and FP
       | that are the core of programming.
       | 
       | There's no need to say that programming is easy, just tell people
       | what they really need to do to be good programmers. And without a
       | strong CS foundation it's very hard.
        
       | paganel wrote:
       | Displaying <? echo "hello world;" ?> is programming, doing some
       | Excel thingies is programming, heck, even doing a
       | 
       | > print 'test'
       | 
       | inside the Python REPL is programming, all this is not that
       | complicated The only issue is that we've stopped calling that
       | sort of stuff "programming", we've started moving the goalposts
       | more and more, and then of course "programming" has become harder
       | and harder: if you don't write tests you're not programming, if
       | you don't to TDD you're not programming, if you're not ready for
       | pair-programming you're not programming, if you're not writing
       | everything inside a container you're not programming etc.
        
         | jspash wrote:
         | That's a bit of a crude reduction, in my opinion. If we are
         | debating semantics, then I would argue that I'm a part-time
         | surgeon because I removed a splinter. I would do more surgery
         | if it wasn't for all the civil engineering I've been getting up
         | to in the garden lately.
         | 
         | Sure, surgeons and engineers have to start somewhere just like
         | programmers. But they also have well-defined gates to make sure
         | true imposters don't get in.
        
       | thiht wrote:
       | > Guys, can we collectively try to make people understand coding
       | is not difficult? > > It is literally googling and fixing bugs we
       | caused in the first place
       | 
       | (From a quote in the article)
       | 
       | I see this dumbshit rhetoric more and more, but do people
       | actually think this? It feels like someone on the peak of Mt.
       | Stupid from the Dunning Kruger effect would say...
        
       | bonoboTP wrote:
       | Why is this always discussed only in relation to programming? Is
       | being a doctor hard? How about an architect? Lawyer? Welder? Car
       | mechanic? Airline pilot? Are they all gatekeepers if they say
       | their job is hard?
       | 
       | There are different jobs labeled as programming, some easier,
       | some harder.
       | 
       | Where does this narrative come from that programming at all
       | professional levels _must_ be easy for _everyone_ , else you are
       | a gatekeeper? Is it anxiety about future automation and the idea
       | that the only remaining jobs will be programming?
        
         | jeffreyrogers wrote:
         | > Is being a doctor hard?
         | 
         | I have a friend who is a surgeon who says he hardly uses
         | anything he learned in medical school and that he could teach a
         | carpenter to do his job. (I think he is exaggerating a bit, but
         | it's a funny anecdote).
        
           | SkyPuncher wrote:
           | My wife is a physician, but not a surgeon.
           | 
           | Most of medicine is relatively routine. A surgeon's skill
           | isn't so much in the 99% of cases, but the 1% that have
           | adverse outcomes. More importantly, their skill comes in
           | identifying the possibility of adverse outcomes and
           | preventing them from ever happening.
           | 
           | Me and you could easily be taught to do a routine surgery,
           | like an appendectomy. However, we wouldn't be able to
           | identify if something requires more treatment or prevent a
           | patient from dying if things don't go perfect.
        
           | 908B64B197 wrote:
           | Surgery is very specialized knowledge.
           | 
           | I'm sure he's using the fundamentals he learned in med school
           | more than he thinks, but yeah everything in psychiatry,
           | pediatrics and obstetrics most likely not.
        
         | tyloop wrote:
         | The people who are doing the work in programming are not
         | assertive on average and are prone to be taken advantage of.
         | 
         | This is not a criticism; in a way you need to isolate yourself
         | from realities of human politics to be successful in the field.
         | 
         | So in the last decade many socially dominant people who smelled
         | the money have invaded open source. They have realized that you
         | can make a living by posing as team leads and not doing much.
         | 
         | The real workers have let them in, have given them power and
         | are now facing the consequences (ha, finally we can use that
         | term, too!).
         | 
         | Other professions like law and medicine aren't remotely as
         | naive. They are acutely aware of power struggles, protecting
         | their professions and won't let this happen.
        
           | booleandilemma wrote:
           | Completely agree. If I had a dime for every project owner,
           | project manager, team lead, or <insert made-up job title>
           | I've worked with who has _absolutely no technical experience
           | or knowledge_ I'd have over a dollar already.
           | 
           | These people invariably majored in something like english,
           | dance, or music studies and then wind up doing project
           | management because, as you pointed out, they're after the
           | money and no one is stopping them.
        
         | maire wrote:
         | The reason why it always comes up is because programmers are
         | relatively well paid yet nobody really understands what we do.
         | 
         | Therefore you get these really silly memes such as if a factory
         | worker's job is outsourced, you can just retrain them to be a
         | programmer. Or the only reason why some downtrodden group is
         | not a programmer is because they were prevented by someone from
         | being a programmer.
         | 
         | The thing that is ridiculous about the memes is that
         | programming is the only field that is completely clear of
         | gatekeepers. You don't have to go to college to be a programmer
         | - the top programming coursework is available online for free
         | (or nearly free). If you want to be credible as a programmer,
         | there are plenty of open source projects that would welcome
         | you. Compare that to doctors or lawyers which really do need
         | college degrees and certification.
        
           | pjc50 wrote:
           | It's not clear of gatekeepers, they're just moved to a
           | different point in the process, and scattered about the
           | industry. You don't hear about doctors being given a mystery
           | patient and forty-five minutes to save their life using only
           | a whiteboard; once you've got the qualifications, they're not
           | subject to anything like the same level of challenge.
        
             | colinmhayes wrote:
             | Doctors have to take board exams every couple years to stay
             | licensed.
        
             | culturedsystems wrote:
             | "You don't hear about doctors being given a mystery patient
             | and forty-five minutes to save their life using only a
             | whiteboard"
             | 
             | That's actually a pretty accurate description of what
             | doctors have to do, at least in the UK. For the first nine
             | years after finishing medical school, doctors have to take
             | a series of exams, including written exams and practical
             | tests, which are primarily diagnosing and proposing
             | treatments for real ("mystery") patients. This is a
             | centralised process, rather than ad-hoc tests at every
             | interview, but doctors do have to continue demonstrating
             | their competence during their careers.
        
             | bonoboTP wrote:
             | That's an interesting point. How _are_ doctors evaluated if
             | they move to a new city or something? How do they know if
             | the candidate is a good cardiologist? Is it purely based on
             | their CV and their previous roles? I admit it 's absurd to
             | imagine that a cardiologist would be asked to label parts
             | of the heart (~fizzbuzz) on a diagram at the interview. I
             | also don't think they look at outcome stats of their
             | patients.
             | 
             | Or is it mainly based on who they know and who recommends
             | them?
        
               | Apocryphon wrote:
               | Maybe the different in processes means that their
               | diploma, medical license, and other certifications means
               | they've been effectively whiteboarded already and do not
               | require re-testing along those same lines.
               | 
               | Would be interesting to consider if it's possible to
               | administer a whiteboarding exam on programmers once, and
               | then consider them solid on the concepts tested if they
               | pass. And if not, then why? Does that mean whiteboarding
               | as it is practiced now is insufficient? Because it
               | certainly seems like for engineers who switch jobs every
               | 2-5 years, they have to be whiteboarded again even if
               | they've had prior experience, even at larger corporations
               | known for rigorous interview practices.
               | 
               | It's as if this industry lacks confidence in its own
               | employment standards, unlike the medical, legal, and
               | other accredited fields.
        
               | bonoboTP wrote:
               | Another example is language certificates. Maybe less well
               | known to the monolingual English speakers here, but jobs
               | in non-English speaking countries often have the
               | requirement to speak English for business contact, to
               | read professional reference material etc. There are many
               | exams and certificates (local ones, or international
               | ones, like TOEFL, IELTS, etc.), and they are nice on a
               | CV, but they will always do a short test if you can
               | actually speak the language. Passing a standard test is
               | not always enough.
               | 
               | It may also be the fact that doctoring is more about
               | keeping a large amount of facts and experiences in mind
               | as condensed expertise, while programming is more about
               | raw intelligence and solving novel problems analytically
               | (although this sounds a bit pretentious and self-
               | important, I know). Cardiology is very unlike logic
               | puzzles. Now sure, day-to-day programming may also not be
               | much like logic puzzles, hence the endless criticism of
               | whiteboard leetcode interviews.
        
               | 908B64B197 wrote:
               | > How are doctors evaluated if they move to a new city or
               | something?
               | 
               | Depends which border they cross. Then there's a lot of
               | red tape and regulation by the local cartel to deal with.
        
           | bonoboTP wrote:
           | I feel like this is also top-down status anxiety from the
           | traditionally high-status people (lawyers, doctors,
           | academics, managers etc.) who really don't like that these
           | prole nobodies are suddenly making good money, without being
           | properly embedded in the elite caste and their manners. So
           | they keep kicking and biting down to say how what we do is
           | really just some blue-collar monkeying around that any
           | janitor could do starting tomorrow, and the real, hard,
           | serious jobs are still in their realm.
        
             | 908B64B197 wrote:
             | Definitely.
             | 
             | Doesn't help that a lot of prominent figures are also drop
             | outs (Zuckerberg, Gates, Wozniak, Jobs, Musk, the list goes
             | on).
             | 
             | Doctors insist on having everyone call them "Dr" and each-
             | others too. They get their prestige from their tittles.
             | 
             | Meanwhile Bill Gates is just... Bill Gates. No prefix
             | needed!
        
           | marsven_422 wrote:
           | Programming is a high IQ occupation and that's why your
           | average factory worked will not learn to code.
        
         | watwut wrote:
         | I honestly think that there are many people who exaggerate how
         | difficult programming is. And people really like to think that
         | if you already dont know a lot, then you are naturally crappy
         | and cant learn. The professions you mentioned require a lot of
         | learning. The expectation is that you go to school knowing what
         | high school taught you, then you learn basics and then you
         | continue learning on your own. The expectation is that there is
         | learning curve.
         | 
         | I think I am good programmer. When I was younger and
         | considering it as a profession, I was told that it is hard and
         | that I should think twice seriously before comitting myself to
         | it. That som of the guys that are already coding are very good
         | and I will compete against them.
         | 
         | There is gatekeeping related to claimed difficulty. There is
         | also perception that either you know it or not, but that you
         | should not expect learning curve.
         | 
         | Also, passionate people of all kinds of professions trying do
         | this exact thing. Whether art or tech or sport, adults go out
         | of their way to signal to kids that "you can do it too, join us
         | doing this thing".
        
         | travisjungroth wrote:
         | I'm not sure. I've been both a pilot and a software engineer
         | and the narratives are very different. I've also helped people
         | get into both fields (owned a flight school, mentored
         | programmers).
         | 
         | I don't think I've head anybody say "Anyone can be a pilot!".
         | Becoming a pilot is inaccessible. There are medical
         | qualifications. It's expensive. A degree helps a lot (or is
         | required) for airline jobs.
         | 
         | Self-limiting beliefs keep _some_ people from being pilots. So
         | there are outreach events (Young Eagles being one) that
         | introduce people to flying. The military recruits at events.
         | But it's more this "maybe you could be a pilot. just consider
         | it." vibe.
         | 
         | Programming is accessible (as the article points out). I spent
         | less than $200 in materials to get a good job as a software
         | engineer. (Throw in $500 for a computer if you want). Self
         | limiting-beliefs make up a much larger component (but not all!)
         | of why people can't become professional software engineers.
         | 
         | I think this leads to people overreaching during the outreach
         | phase. If it's only a few hundred dollars, focus and time, then
         | the only thing stopping you is yourself! Well, no.
         | 
         | Let's just start at the left end of the curve and acknowledge
         | there are adults who can't count to five. They're humans,
         | they're people, they're part of "anybody", but they absolutely
         | will never be programmers. And then it's just a spectrum from
         | there.
         | 
         | The reality (like most realities) is more complex than can what
         | fit on a sticker. Some people think they can't program, but
         | could. You don't have to be great at math, but it can help and
         | they're similar mindsets. An expensive education isn't
         | required, but helps with careers.
         | 
         | Programming is hard. But maybe you can do something harder than
         | you think.
        
         | luckylion wrote:
         | Maybe the difference is that most/all (I don't know about
         | welders, but I guess) of those jobs have literal gatekeepers,
         | i.e. you need some certification to do it.
        
           | naavis wrote:
           | There are definitely certifications for welders, especially
           | if you need to weld something that human lives depend on.
        
           | arcticbull wrote:
           | There's licensing for hairdressers in most states - without
           | having checked, I guarantee you there's certifications for
           | welders.
        
         | odyssey7 wrote:
         | Our profession is misunderstood by the public, and some effort
         | is required to let people know that this is in fact high-skill,
         | demanding work.
         | 
         | Recently, a non-technical executive berated me for not working
         | faster. I wanted to tell him, "would you say that to your
         | accountant, who just worked an 80-hour week to help you meet
         | your obligations on time, continuing to receive new
         | spreadsheets all the while?"
        
           | tyloop wrote:
           | Actually, often you _can_ tell him. It is way harder to get
           | fired than many technical people think.
        
         | Jtsummers wrote:
         | There aren't people out there saying those jobs are "easy" and
         | anyone can do it in the way we have for programming. So why
         | would it be discussed with those other jobs?
        
         | leifg wrote:
         | The answer to that is in the article. The information is
         | accessible. It is _possible_ to become a programmer without any
         | formal certification, all the information is out there.
         | 
         | AFAIK all the jobs you mentioned need a formal certification.
         | You can't become a doctor without going to med school. You
         | can't become a lawyer without passing the bar.
         | 
         | Even if you don't (not sure about a car mechanic, depending on
         | the country), it's a lot a harder to get your hands on a car to
         | tinker with than it is to download some framework and watch a
         | get started video.
         | 
         | That's what the author said with programming is accessible. It
         | is very easy to get started which is often misrepresented as
         | "it's easy".
         | 
         | No one would say "becoming a doctor is easy" because you're
         | never gonna be a doctor from online documentation and YouTube
         | videos so there is no incentive to frame it that way.
        
           | majkinetor wrote:
           | The information is accessible for any other profession really
           | - you talk here about politics not about knowledge.
           | 
           | You can learn to be a doctor or lawyer on the internet for
           | sure. Can you practice it ? It depends. Some self learned
           | programmers can't get a job in some companies too because
           | they don't have formal education.
        
           | csomar wrote:
           | > You can't become a lawyer without passing the bar.
           | 
           | In states where you don't need to go to Law school and anyone
           | can pass the bar, doesn't this make the field accessible? The
           | bar cost $100-$1300 depending on the state + travel costs
           | which is not that far from a good laptop cost to do any
           | meaningful programming.
           | 
           | You'll probably need a $200 laptop and an internet
           | connection. You can do paralegal freelancing in the same way
           | you can do small programming jobs.
           | 
           | Edit: Writing is also accessible. Accounting is also
           | accessible, though if you are becoming a CPA you need some
           | college credits. Online marketing is accessible. Trading is
           | also accessible. All of these can be done _from the comfort_
           | of your couch and only need a laptop with an Internet
           | connection.
        
             | watwut wrote:
             | Afaik, it is extraordinary rare to pass the bar without
             | going to Law school. That test is quite difficult.
        
               | mamon wrote:
               | Test being difficult is not a problem, we want our
               | lawyers to be competent, after all. The more important
               | part is if it is fair. In Poland bar exam had been famous
               | for near impossible questions, which were only answered
               | correctly by applicants that knew them in advance, which
               | typically were family members of already practicing
               | attorneys/judges.
        
               | csomar wrote:
               | But that's beyond the point, right? The question is
               | whether it is accessible. Which for some states it is,
               | and _could_ be done by reading material. The same can be
               | said about programming and software development.
        
               | watwut wrote:
               | My point precisely is that you can't pass just by
               | "reading material". It is too hard for that.
        
             | dizzystar wrote:
             | There are only 4 US states that allow you to take the bar
             | without going to school: California, Vermont, Virginia,
             | Washington.
             | 
             | These states don't allow a random to come from nowhere and
             | take the bar exam. They require you to be an apprentice at
             | a law firm:
             | 
             | https://barprephero.com/learn/take-the-bar-exam-without-
             | law-...
             | 
             | This is CA, for example:
             | 
             | * Four years studying in a law office
             | 
             | * 18 hours per week
             | 
             | * Five hours of direct supervision
             | 
             | * Monthly exams
             | 
             | * Bi-annual progress reports
             | 
             | * Supervising attorney must have five years of active law
             | practice in California
             | 
             | (you can see the reqs for other states in the article)
             | 
             | **
             | 
             | According to this article: https://priceonomics.com/how-to-
             | be-a-lawyer-without-going-to...
             | 
             | Only 60 apprentices in the nation took the bar in the year
             | discussed. 17 passed.
             | 
             | I'm not sure if I'd call that accessible.
        
           | kuu wrote:
           | > "because you're never gonna be a doctor from online
           | documentation and YouTube videos"
           | 
           | You're not gonna become a legal doctor, but I assure you that
           | online you have many many information and videos that teach
           | you the same as they teach you in university. You just need
           | to organize them - and probably some are already part of
           | current pandemic forced online classes
           | 
           | The complicated part may be to obtain corpses to make the
           | practices... /s
        
           | bonoboTP wrote:
           | Alright. Programming is like soccer. The barrier of entry is
           | very low, but it doesn't mean every poor Brazilian kid will
           | be a football genius. But they sure won't be golf world
           | champion. I grew up relatively poor in Hungary. Programming
           | has been a great path to a good job for me, while it would
           | have been more difficult to earn the same as a lawyer without
           | connections.
           | 
           | Programming levels the playing field compared to gatekept
           | jobs where you must be born into a dynasty to really make it.
           | In that sense it's easy. But it will still only be a part of
           | the population who are well suited to do it.
        
             | leifg wrote:
             | Fair point. It's all relative. By that definition it's much
             | easier to become a programmer than to become a lawyer. 100%
             | agree.
             | 
             | Programming has a very appealing second property: there are
             | tons of good paying jobs out there.
             | 
             | And I think this combination of "you can get started super
             | easy" and "you will earn above average" are two dangerous
             | properties.
        
             | throw1234651234 wrote:
             | It's definitely the poor man's "good job" (I say that as a
             | poor man) - med school is just not accessible to most
             | people. At the very least, it's not accessible to the poor
             | without laser-focus and being very lucky for about 15 years
             | between about 15 and 30. Oh, and living on scraps.
        
             | commandlinefan wrote:
             | > it doesn't mean every poor Brazilian kid will be a
             | football genius
             | 
             | This analogy always comes up in relation to programming,
             | but I think it's not quite right: you don't have to be the
             | equivalent of a "football genius" to be an effective
             | programmer. If there was the same market for soccer players
             | as there were for programmers, a lot more people would be
             | professional soccer players - there are so few, and the
             | ones that make it are so far ahead of everybody else,
             | because there just aren't that many spots available.
        
               | bonoboTP wrote:
               | Well, what regulates the amount of available spots in
               | professional football? Why can't people create additional
               | teams and play exciting matches that draw paying
               | audiences? Is the bottleneck that spectator attention is
               | already maxed out?
               | 
               | But yes, the analogy is faulty if the bottleneck in
               | football is the availability of the spots, because in
               | programming the bottleneck is rather the availability of
               | good enough new hires. We may be around the point where
               | CS programmes have grown so much over the years that the
               | marginal additional student may not have that good
               | potential any more (out of a combination of motivation
               | and talent). But a potential reserve talent to tap into
               | could be women, but attracting them to programming has
               | been an uphill battle and is a can-of-worms topic why.
        
               | watwut wrote:
               | > Why can't people create additional teams and play
               | exciting matches that draw paying audiences? Is the
               | bottleneck that spectator attention is already maxed out?
               | 
               | People do create additional teams and play exciting for
               | them matches. That is how amateur leagues work. People
               | create whole additional sports and compete among
               | themselves in them.
               | 
               | The spectator attention is really maxed out, because
               | spectating sport is massively social thing. People do it
               | because of excitement of who win, but massive part of it
               | all is being part of culture, having common topic with
               | friends, feeling like member of big fan club etc.
        
               | dale_glass wrote:
               | I'd say what regulates it is that the quality bar is so
               | high, that the low level is just not exciting. We've
               | become accustomed to the high quality, and now expect the
               | extreme performance and wild stunts the pros manage to
               | pull off.
               | 
               | The same happened with other artistic endeavors. Few
               | people these days really want to see an amateur sing or
               | play an instrument. We have so much high quality music
               | that doing it "okay" doesn't really cut it anymore.
               | Before an okay player/singer might have added to a party.
               | Today, most of the audience will be just waiting for it
               | to end and for somebody to put on some decent, commercial
               | music.
        
               | bonoboTP wrote:
               | Isn't this happening in programming too? Just like anyone
               | can play Ed Sheeran on their wedding and pay one guy to
               | handle the equipment, companies can buy (or download for
               | free) lots of plumbing tools and frameworks made by the
               | few star companies. It's not like the n+1th website needs
               | professional programmers. For tons of (otherwise offline)
               | businesses tweaking a WordPress site is more than enough.
               | 
               | And just like you can watch Ronaldo on TV from half way
               | around the world instead of watching your town's crappy
               | teams, you can also use Google and Microsoft software and
               | services instead of hiring someone from your town. Even
               | very custom software needs fewer and fewer people due to
               | existing tooling.
               | 
               | So the bar is going higher and higher in programming too.
        
               | rubatuga wrote:
               | But to effectively use the plumbing tools, the companies
               | need programmers! And in the near future, there will not
               | be any "automation" of your complex business needs. Every
               | business is different, and every business has different
               | programming needs. At a certain level of scale and
               | complexity, i.e. no longer a mom and pop shop, you need
               | to hire programmers.
        
               | dale_glass wrote:
               | I don't think it's quite the same.
               | 
               | I'm saying sports, arts and music got to such heights,
               | that an ordinary person can consume nothing but the best
               | 0.1%. This in turn means the demand for the rest has
               | plummeted, and being the guy who can play guitar "okay"
               | doesn't really excite anybody anymore. There's a market
               | at the very high end, and nobody wants to pay a cent for
               | anything below that.
               | 
               | Programming is going the opposite way, if anything.
               | There's lots and lots of programming grunt work that just
               | needs to be done by somebody and doesn't take any
               | particular skill. There's rather less need for wizards
               | able to squeeze every possible bit of functionality into
               | 64K, because at this point resources are cheap.
               | 
               | At this point a programmer can get by with being
               | moderately competent and doing little other than gluing
               | frameworks together. Things like music are the opposite.
               | Mere competence is nowhere near enough.
        
               | Ekaros wrote:
               | Programming itself is relatively low on the ladder.
               | Generic CRUD, and clue code doesn't require very
               | specialised skills.
               | 
               | On other hand for that work to be useful proper software
               | engineering and architecture is needed. And these
               | hopefully take input from computer science.
        
               | pjc50 wrote:
               | > what regulates the amount of available spots in
               | professional football?
               | 
               | You're only allowed 11 people on the pitch per side.
               | Believe me, if it were possible to replace Ronaldo with a
               | thousand less-skilled players paid a fraction of his
               | wages, somebody would have tried it.
               | 
               | You could even suggest hiring them for fractions of a
               | match on an internet employment brokerage platform.
               | Footballr.
        
               | bonoboTP wrote:
               | Okay, I agree it's not a perfect analogy but the
               | football:golf = programming:law still holds I think.
               | 
               | But I do agree that spectator sports are more winner-
               | takes-all than programming jobs.
        
               | commandlinefan wrote:
               | To be clear - I agree that programming is hard (or else
               | I'm REALLY stupid), but comparing programming ability to
               | athletic ability always seemed wrong because the world
               | needs WAY more programmers than it needs athletes. I'd
               | guess that there are more professional programmers in the
               | world than professional athletes of any kind. If the
               | "market" for athletes were as broad as the market for
               | programmers, you'd see a lot more comparatively mediocre
               | athletes making a comfortable living at it.
        
               | edgyquant wrote:
               | You don't have to be a football genius to make a living
               | coaching a school team, etc. I think you are being
               | needlessly pedantic
        
             | TheOtherHobbes wrote:
             | Programming is not like soccer and golf, because people
             | with great talent and skill for soccer and golf are all
             | over the media. People who do not have major skill can look
             | at them and compare their own skill level.
             | 
             | But I think the OP (unintentionally) makes a telling point,
             | which is that accessibility is confused with simplicity.
             | 
             | We're seeing this in medicine now. Anyone can Google
             | whatever so they're go to their doctors with Dunning Kruger
             | on max and and say things that are really really stupid.
             | 
             | Or they try to understand what's happening. And because
             | they're spending hours on something the doctor spends a few
             | minutes on, they - occasionally - manage to have an insight
             | the doctor misses.
             | 
             | Either way, medicine isn't quite the ineffably mysterious
             | occupation it used to be. Of course it's not _really_ any
             | less complex, but the wall has been breached a little.
             | 
             | The arts are similar. It's easy to buy some paint, so
             | everyone has a go. It's easy to buy a guitar or synth and a
             | DAW, so everyone has a go.
             | 
             | The skill and learning required to be an expert _becomes
             | invisible_ because beginners try things, get
             | unsophisticated results that make them happy but are a long
             | way short of the real thing, and think  "Well, that's not
             | so hard."
             | 
             | The problem isn't verbal gatekeeping, it's the lack of
             | media representation of high levels of skill and
             | professionalism. They're either portrayed as unimaginably
             | mysterious, as soapy and trite (see most legal dramas), or
             | as "And you can too..."
             | 
             | There are few _realistic_ depictions of the skill,
             | knowledge, and practice required to be a professional in
             | any field. Or of the insights and perceptions that
             | professionals experience, but which untrained people don
             | 't.
        
               | bonoboTP wrote:
               | > There are few realistic depictions of the skill,
               | knowledge, and practice required to be a professional in
               | any field.
               | 
               | YouTube is pretty good for this, both educational
               | channels and edutainment (like Computerphile) and candid
               | videos of people sharing their professional experience.
               | Or code-alongs etc.
        
           | fridif wrote:
           | You absolutely don't need a formal certification to be a
           | mechanic or welder.
        
         | 13415 wrote:
         | The examples you give in support of your thesis are strange.
         | The idea that programming is hard is about as pretentious and
         | wrong as saying that being a doctor, architect, lawyer, welder,
         | car mechanic, or airline pilot is hard.
         | 
         | Almost anyone with a basic level of intelligence and the
         | willingness to put the efforts into it can learn any of the
         | above professions, and programming is not different from them.
         | It's not hard, although there are some hard areas you'd like to
         | get done by a CS graduate or an engineer.
         | 
         | There are professions that are hard or simply require some
         | special and maybe rare talent, but like most other professions
         | programming is not one of them.
        
         | neogodless wrote:
         | I think the question might be "why might someone _gatekeep_ at
         | all? "
         | 
         | As a software developer, I love working with developers that
         | are competent, and especially if I'm learning a lot just by
         | being on projects with them. I do not love working with
         | developers who actively decrease the quality of the code base
         | because they do not understand what quality is. Now, that can
         | be relative, and subjective. I'm quite open to junior
         | developers trying things, asking questions, requesting code
         | reviews, etc. But some people get a senior title and a
         | confidence about their work, and charge ahead generating extra
         | work for those around them. So I'd rather such people were,
         | perhaps, not in the field at all!
         | 
         | In general, though, I would like to encourage lots of people to
         | _try_ programming. From my perspective, it 's super empowering,
         | interesting, deep and can be a great career choice. _Try_ it,
         | and if it interests you, and you find yourself driven to
         | improve, learn new things, and seek mastery, we 're really
         | going to enjoy having you here in the field with us.
         | 
         | There are aspects of programming that almost anyone considering
         | the field could try and learn and see some success at. But it
         | helps to understand that you may discover your own limits
         | (whether by talent, motivation, or opportunity) sooner or later
         | in the field, because there are aspects that are much less
         | approachable. Do you want to spend countless hours preparing
         | for algorithmic whiteboard interviews? Do you want to bury your
         | head in code while stepping meticulously through a debugger on
         | a squeegee hunt for an edge case? Do you want to optimize
         | relentlessly when the scenario requires it?
         | 
         | If software is eating the world, we'll need a lot of
         | developers. And we'll want some that are happy to do grunt work
         | while others forge into the most treacherous waters. But we
         | don't want you to think that _all_ software development is
         | easy, because it 's not.
        
           | waylandsmithers wrote:
           | > I think the question might be "why might someone gatekeep
           | at all?"
           | 
           | We'd always go through the same thing with folks who were new
           | to interviewing with a candidate who couldn't quite cut it.
           | 
           | In the following discussion they'd be hesitant to say no and
           | maybe go into how they seemed nice or whatever. Then we'd ask
           | "Ok, would you want them starting on your project with you
           | tomorrow?" Well, no...
        
         | david-gpu wrote:
         | I think this is typically heard in response to people
         | suggesting "learning to code on the side". You don't hear
         | suggestions of "learning to become a lawyer/doctor on the
         | side". Why is that?
         | 
         | I guess it's probably a combination of software development not
         | requiring a license and people believing that it's easy to
         | learn.
        
           | exdsq wrote:
           | Anecdotal but I know a few people who became lawyers on the
           | side by studying the graduate diploma in law part time and
           | then changing careers. It's not as common, but it's not as
           | rare as you'd imagine!
        
           | throw1234651234 wrote:
           | You _can_ become a mechanic or a pilot on the side though.
           | Even a paramedic.
        
           | booleandilemma wrote:
           | Writing software is closer to learning how to draw or how to
           | carve wood.
           | 
           | It's a thing you can "do" over the weekend, it's fun, and
           | it's practical.
           | 
           | After writing hello world you can call yourself a programmer,
           | which sounds impressive.
           | 
           | It's much harder to even get to hello world for a doctor or a
           | lawyer.
           | 
           | Of course, there's a long road to doing it _well_.
           | 
           | I can call myself an artist for having used a paintbrush
           | before, but I'm not actually an artist by any sane
           | definition.
        
         | ehnto wrote:
         | I have found welding to have a similar community mindset to
         | programming, for some people it's a job, for some it's art,
         | most people think it's too hard for them, getting into it is
         | easy and mastering it is hard.
         | 
         | Car mechanics too, run of the mill mechanics shop doing oil
         | changes doesn't require that much to be competent at, but
         | that's barely scratching the surface. Within the mechanic
         | profession and you can go all the way from oil changer to
         | mechanical engineer. Consider motorsport workshops, specialist
         | restoration workshops, custom fabrication, aero design, engine
         | building, machining, performance wiring, ECU tuning. It's a
         | huge topic.
         | 
         | I find that is the case with almost anything though. Very few
         | things are all that shallow. I have to remind myself of that if
         | I disregard something someone enjoys. Sports fans? Yeah some of
         | it could be shallow, but sports nerds go hard, there is crazy
         | depth to sports fandom. Same with TV shows, video games,
         | telephone pole enthusiasts.
         | 
         | So I guess my overall point is, the question "Is X job hard?"
         | isn't really answerable, since we don't know exactly what part
         | of the job the person is targeting from the question.
        
         | happytoexplain wrote:
         | It's not usually an issue with those professions, where there
         | are more reliable mechanisms both to observe the consequences
         | of not being good enough, and to reject those who would produce
         | such work. Also, there is zero barrier to entry for
         | programming. These are powerful differences.
        
         | [deleted]
        
         | dt3ft wrote:
         | I'd venture this guess: because programming is presented
         | everywhere as something easy, with a ton of "hello world"
         | tutorials which don't even begin to scratch the surface.
         | "Everyone can do it" is thrown left and right. Man are they in
         | for a surprise, when they are introduced to tons of poorly
         | written legacy code used by, say, critical medical systems.
         | Think spaghetti code and text-file interfaces with dozens of
         | systems but on a whole new level, likes of which is hard to
         | even imagine.
         | 
         | Damn right, programming is hard, and it is getting harder with
         | every line of code people write.
         | 
         | Note: in this example, I bunched programming with maintaining
         | together. If you only write code for new features without
         | taking into account existing or legacy code, you're a lucky son
         | of a gun.
        
           | bonoboTP wrote:
           | > I'd venture this guess: because programming is presented
           | everywhere as something easy
           | 
           | I'd say that's an overreaction to the default presentation
           | where coders are genius wizard wunderkind hackers from the
           | movies. I don't know about your experience, but whenever I
           | say I'm a programmer (or more directly translated
           | "informatician") in a mixed group, everyone thinks that' must
           | be rocket surgery.
           | 
           | Perhaps kids in specific countries now grow up being told
           | that it's easy, but I think the 25-30+ years old cohort
           | thinks programming is hard and only for the really smart
           | people.
        
             | dt3ft wrote:
             | I agree that kids are now growing up being told that it's
             | easy. Here's a possible scenario:
             | 
             | 1. we tell kids it's easy in order to get them interested
             | 
             | 2. those who are interested, learn with time that it isn't
             | as easy but love it anyway
             | 
             | 3. those that are not interested, which is probably the
             | majority, still go home thinking it's easy
        
             | screye wrote:
             | > whenever I say I'm a programmer
             | 
             | It's funny to see how different reactions in different
             | cultures are.
             | 
             | In India, being a programmer will be looked at with
             | exhaustion and judgement. Sorta,"Oh you too? Get in line."
        
       | hzhou321 wrote:
       | Programming is easy. Solving problems is hard. Working with
       | people is hard. Learning the culture is hard. Remember to apply
       | common sense is hard. Becoming a master in a easy craft is super
       | hard. The last one requires you to figure out the zen that even
       | masters cannot tell.
        
       | blunte wrote:
       | The thing is, much of the skills it takes to be a decent
       | programmer are skills that we should endeavor to teach to and
       | instill within everyone.
       | 
       | These are things like:
       | 
       | - attention to detail
       | 
       | - development of a sense of when attention to detail is very
       | important and when "just about" is reasonable
       | 
       | - ability to communicate a process in words, especially written
       | words
       | 
       | - ability to identify patterns and recognize that one has
       | identified a pattern (pattern recognition is automatic in animals
       | and especially humans, but it is often occurring subconsciously)
       | 
       | - ability or willingness to ask "why?" and follow that answer far
       | enough to understand the basic reason for something
       | 
       | - willingness to challenge status quo when the eventual benefit
       | may be worth doing things differently
       | 
       | - ability to consider multiple factors at once (time, cost,
       | effort, etc. etc.)
       | 
       | I could go on and on. Suffice to say, much of what makes good
       | programmers/developers are attributes and behaviors which make
       | good humans. Sure, if for example you have a huge inheritance,
       | you could probably get along fine doing absolutely nothing
       | difficult or productive or creative, but that's not really
       | living. So human life involves a lot of the skills on this list.
        
         | junon wrote:
         | I disagree. These are things everyone can apply to their jobs.
         | 
         | Being a programmer involves understanding how computers work,
         | what makes them interop, how networks work, perhaps some basic
         | understanding of electronic engineering concepts, the ability
         | to keep mental maps of insanely complex callgraphs in their
         | head, etc.
         | 
         | This is not something "everyone" can just pick up and do. To
         | reduce programming to a set of soft-skills is what got us into
         | this mess in the first place.
        
           | Jtsummers wrote:
           | That's something being a good, skilled programmer working on
           | larger systems needs to be able to do. That's not something
           | _every_ programmer needs to be able to do.
        
           | blunte wrote:
           | My list wasn't comprehensive, but I think it is a reasonably
           | fundamental set. Without those "soft skills", the developer
           | will not be great.
           | 
           | On the other hand, if someone has most of my list, then they
           | are probably quite capable of learning the more specific
           | things that meet your requirements.
        
           | tectonicfury wrote:
           | They don't tell the audience this otherwise they won't be
           | able to fleece them. "It's so easy to make apps" "Learn X in
           | 40 projects".
           | 
           | I think the problem is also compounded by people who mostly
           | have superficial knowledge of programming (a few frameworks
           | here and there, couple languages etc) and are in the software
           | industry and carry the title of programmers and engineers.
        
             | musingsole wrote:
             | Programming as a topic is a iceberg. Pick some flavor, find
             | some tutorials, accomplish some small things and it's easy
             | to think the rest of the industry is just that process * 10
             | every day.
             | 
             | In reality, it's that process * 1000 plus the addition of a
             | few other processes those tutorials can't expose because
             | they're only needed at the intersection of 50+ different
             | applications. Plus an entirely unaccounted for process in
             | the form of creative problem solving that makes up 90% of
             | the work.
             | 
             | I've had a number of executives plop down at my desk,
             | proudly proclaiming to be a python dev only to see their
             | eyes glaze over and every other word fly above their heads
             | only a few commands into the interpreter.
        
               | ZephyrBlu wrote:
               | For me programming is more like a Mandelbrot set.
        
           | halfjoking wrote:
           | I think the same thing, but most of the hard skills you
           | listed like understanding computers/engineering/networks are
           | pretty irrelevant. Those all can be abstracted in many
           | situations.
           | 
           | Working through complex mental maps is all you need. Thinking
           | through all possibilities and edge cases, and logically
           | ordering instructions to represent a mental model. It's
           | similar to chess where you have to evaluate every possible
           | and unexpected scenario. If you're good at chess you'll
           | almost certainly be good at programming.
           | 
           | If "programming is easy" for some people it's because this
           | one skill comes naturally, and beginners should be made aware
           | of that before they get unrealistic expectations.
        
       | bstar77 wrote:
       | Learning programming is no different than learning to become an
       | artist, a musician, an engineer, a mathematician, an athlete,
       | etc.
       | 
       | Those things are all hard if you want to master them, but not
       | everyone needs to be a master. I can draw, get great joy out of
       | it and benefit from it without being Rembrandt. I can use vector
       | math to make games and not dedicate my life to mathematics. This
       | is also true for programming.
       | 
       | You really don't need to be smart to be a programmer, but if you
       | want to be good at it you need to be smart enough and tenacious.
       | Programming is just a tool to solve problems in the modern world.
       | 
       | The book "The Outliers" was what gave me the confidence that I
       | was smart enough to be a programmer and achieve great things. All
       | it took was a positive mental adjustment. This article is
       | rubbish.
        
       | DoreenMichele wrote:
       | Well, to be fair, I don't think "Anyone can code" is an identical
       | statement to "Programming is easy."
       | 
       | Programming involves having a purpose and understanding the
       | architecture and so on. Writing code isn't, per se, about all
       | that.
       | 
       | Kind of like saying "A five year old can learn to write." and
       | someone having a cow about "A five year old cannot go from not
       | knowing their alphabet to being an award-winning author
       | overnight!" Well, okay, but that wasn't what was meant when
       | someone said "Any five year old can learn to literally _write_. "
       | 
       | Programming is more of a big picture thing and that fact is
       | largely unrelated to the simple fact that, yes, if you wish to
       | write code for some reason, you actually can just look stuff up
       | online.
       | 
       | And I think for some people who are used to needing permission,
       | socially, to do anything, it actually is a significant detail
       | worth commenting on that _You don 't have to ask anyone or get
       | permission to do the thing. You can just look stuff up and do the
       | thing because you decided to do the thing._
       | 
       | I know a little HTML and CSS, but I don't self identify as a
       | _programmer_. I am self taught and it 's useful because I blog
       | and it's helpful for that domain, but, no, I still can't, say,
       | write an indie game (an actual goal of mine).
       | 
       | It is literally true that anyone can code by looking up stuff
       | online and maybe for some people what they are kind of trying to
       | say, to build on a metaphor used in this piece, is "You don't
       | have to go talk to the head chef and fill out forms
       | requisitioning eggs. Anyone can crack a couple of eggs and start
       | cooking!"
       | 
       | Which doesn't in any way imply that cracking a couple of eggs and
       | frying them up makes you the equivalent of a trained chef in
       | terms of the quality of your work, the complexity you can handle
       | and other pertinent stuff (such as ability to manage a staff in a
       | commercial kitchen).
        
       | chadcmulligan wrote:
       | Hard or easy, does it matter? There are a particular set of
       | attributes that are required to be a programmer, I've asked
       | people who've started to be a programmer and given up - some of
       | the reasons are:
       | 
       | - There's too many things to remember, this is true, there's a
       | lot of stuff you have to remember
       | 
       | - It's so boring, I have to sit all day at a screen, this is true
       | - if you don't have an internal representation running in your
       | head and enjoy doing that I can see this would be boring, the
       | tinkerers mind I call it
       | 
       | - Its too hard, something happens and you have to find out what,
       | who cares? probably related to the previous points.
       | 
       | - I don't like puzzles, something I've noticed, if you don't like
       | solving puzzles, then programming probably isn't for you.
       | 
       | Probably more, any others people have noticed?
        
         | Swizec wrote:
         | I am really bad at puzzles and dislike solving them. Just can't
         | be arsed, there's nothing at stake and the lack of reward is
         | boring.
         | 
         | Been programming since I was 9 and it's the best thing ever.
         | Precisely because it's full of problems worth solving.
        
         | banana_giraffe wrote:
         | > I don't like puzzles, something I've noticed, if you don't
         | like solving puzzles, then programming probably isn't for you.
         | 
         | Maybe what you meant by "probably", but I've seen my share of
         | fantastic developers that hate programming after hours, and
         | hate solving puzzles if it's not part of the job.
         | 
         | Not sure what it speaks to. Might just be I've run into more
         | "programming is a job" types than normal.
        
         | Zelphyr wrote:
         | I find that often you're right about enjoying things like
         | puzzles, math problems, riddles, those little 3D wooden things,
         | crosswords. It seems like a lot of programmers enjoy those
         | things. Except for me. I hate most of those things yet I love
         | programming.
         | 
         | Programming is a creative endeavor for me, whereas puzzles seem
         | pointless for some reason. I finished the puzzle, now what? The
         | same goes for computer games.
         | 
         | With programming I often have created something that didn't
         | exist a few minutes prior and that is such a joy.
        
         | emeraldd wrote:
         | I suspect the puzzle point has more to do with the kind of
         | puzzle to be solved than solving puzzles in general. Word
         | puzzles, dexterity puzzles, progressive discovery puzzles, etc.
         | Each of them has a very different appeal. For instance, a
         | really quick way to annoy me is to through a word puzzle/game
         | at me ... ( figuratively of course ...)
        
       | whatever1 wrote:
       | We also have no clue of how to program within specs at scale.
       | Basically every month we have a huge breach at a major company.
       | 
       | CS is at the stage of building enormous bridges based on
       | experience. No guarantees that they can sustain a specified level
       | of stress.
        
         | ThrowawayR2 wrote:
         | > " _Basically every month we have a huge breach at a major
         | company._ "
         | 
         | So many of these breaches are caused by absolutely boneheaded
         | mistakes, some of which are known bad practices dating back to
         | the '90s like SQL injection, that I'd say that, no, we darned
         | well do know how to do this. We are simply failing to hold
         | developers (and their employers) accountable for knowing how.
        
         | majewsky wrote:
         | > We also have no clue of how to program within specs at scale.
         | 
         | We do, but no one wants to pay for it, outside of very few
         | select industries with very high reliability requirements
         | (space travel, medical devices, etc.).
        
         | junon wrote:
         | That's less of a problem with building to spec (security is not
         | a "spec") but instead with employees who are not familiar with
         | keeping data safe, companies that give too much access to
         | regular developers (e.g. Uber, I can attest), or engineers who
         | are underqualified but charming or otherwise smooth talkers
         | that worm their way into security-related positions when they
         | have little to no experience or knowledge in that area.
        
         | [deleted]
        
       | agentultra wrote:
       | The premise of this article is that people say, "programming is
       | easy," when they mean, "programming is accessible," or that
       | anyone can do it with a will and a way.
       | 
       | This is true. What is meant when people generally say,
       | "programming is hard," is that only some especially gifted people
       | have a special talent they are born with to truly master it.
       | 
       | That's complete non-sense. It's the same kind of thinking that
       | leads people to believe that programmers cannot possibly
       | understand the deep complexities of product design, management,
       | or any other skills a human could possess. It pigeon-holes people
       | into a narrow vacuum of skill.
       | 
       | Yes, the skill of programming is technically difficult. I know
       | many programmers, myself included, could probably write a
       | passable implementation of binary search. But I know a good
       | number of our solutions, when verified formally, will have errors
       | in them.
       | 
       | What most people refer to as "gatekeeping," is this idea that
       | some of us are born programmers and others... should not hold up
       | hope that they can learn the skill.
       | 
       | Programming is a skill that is a commodity. The art of it is in
       | being able to think, critically and solve problems using it.
        
         | sanderjd wrote:
         | Yeah, I think there is a general problem (that is, not just
         | with programming) with the word "hard" being used for both
         | "requires unique talent" and "requires hard work". Like, I
         | would say math and physics and pretty much every other subject
         | are "hard" too, but I think most people can learn them if they
         | are willing to put in the work.
        
         | granshaw wrote:
         | I do think that at least as of today, programming (at the level
         | of doing so professionally working on a shared codebase along
         | with 50+ other programmers, not making a mess of things, and
         | doing so 4+ hours a day every day), does require a level of
         | attention-to-detail, abstract thinking, patience, and fitting-
         | concepts-in-the-mind that much of the population doesn't have
         | the aptitude for.
         | 
         | I believe everyone who wants to train enough to program
         | professionally can do so, but many wouldn't enjoy it. Talking
         | to machines is really unforgiving.
         | 
         | It is getting easier over time though so the barriers to entry
         | are lowering.
        
       | TruthWillHurt wrote:
       | Programming is easy, but requires a lot of pre-existing
       | knowledge.
       | 
       | You'd have a hard time consuming an API if you don't understand
       | what a request is..
        
       | Turbots wrote:
       | "Easy to learn, hard to master" - Turbots
        
       | 6gvONxR4sf7o wrote:
       | I expect we won't see these kinds of debates in 50 years. But
       | right now, we're just recently getting past the stage where
       | anyone who programmed a computer was a programmer.
       | 
       | You'd see the same thing if anyone who used a keyboard was called
       | a "Writer." You'd see hello world tutorials demonstrating that
       | all you have to do is press these keys on your keyboard and they
       | show up in your text editor! You can be a Typer! And then what we
       | actually call lawyers would come in and say no, writing a good
       | document requires a ton of work and prior knowledge. And others
       | would say that doesn't matter because I just need it to write
       | work emails and that's more typical of a Typing job. They'd argue
       | because they're all talking about the same job, kinda, and that
       | lets them talk past each other. Vague terms make for discussions
       | that go nowhere.
       | 
       | I hope in 50 years, being able to program hello world will be as
       | universal as being able to type hello world, and the different
       | parts of programming will have clear enough names that we can say
       | the equivalent of: typing is easy, clear email communication
       | takes some writing skill, and writing a good legal contract for
       | your client is hard.
        
       | anuvrat1 wrote:
       | The message I get is that being a developer is sort of easy while
       | being an engineer is hard.
        
       | hunterhod wrote:
       | When I taught programming at a coding bootcamp, my first piece of
       | advice to students was always "Programming can be hard, so it's
       | important to have fun". We would start by creating ascii art in
       | the console, and move into slightly more complicated graphics to
       | become familiar with loops and control flow.
       | 
       | Being able to marvel at the magic of code can get people through
       | those grueling moments where nothing works and the answer isn't
       | on StackOverflow.
        
       | ryeguy_24 wrote:
       | Not much novelty in this concept is there? Tennis is easy. You
       | can hit a ball with a racquet pretty easily, gettin it in is a
       | little more difficult. But when you get to a much higher level,
       | there is spin, footwork, eye hand coordination, endurance, wind,
       | returning 130MPH serves -- hard stuff. At pro level, if you hit a
       | ball with at an angle just a few degrees off, the opponent can
       | use that as an easy winning shot. Things are easy and hard with
       | different circumstances. I think this is a pretty generic
       | statement that applies to many things.
        
         | slingnow wrote:
         | No, but no one is going around making blanket statements (or in
         | the case of the article, tweets) about how easy tennis is and
         | how everyone can and should pursue it as a career path.
        
       | jedmeyers wrote:
       | > And the hardest part is when one has to write the complex
       | pieces from scratch.
       | 
       | Oh, no, the hardest part is to modify the poorly written complex
       | pieces so they continue to function properly.
        
       | thrower123 wrote:
       | Programming is easy if you have the particular kind of brain that
       | is organized in the way that programming demands. If you can
       | visualize structure and remember trivia and pattern match on
       | things, it's not that hard.
       | 
       | A lot of people can't do those things, and they struggle
       | mightily; in some cases they simply cannot do it. Might as well
       | try to be a musician if you are completely tone-deaf.
        
       | liquidify wrote:
       | I think the authors point is generally valid. But...
       | 
       | Personally, I see things as 'programming can be easy or hard (but
       | doable), but only if you have the type of mentality that you will
       | never quit.'
       | 
       | Basically anyone can learn a language if they are exposed to it
       | constantly, and if you are programming or debugging a lot, it is
       | inevitable that you will learn the language you are looking at.
       | And basically everyone could get to that point. They could also
       | learn to communicate basics with their language. But it obviously
       | doesn't mean you can build a rocket just because you have the
       | ability to read language and books related to rockets.
       | 
       | So I think there are some easy things about programming that do
       | apply to 'everyone', and for those things it may be appropriate
       | to say 'anyone can do it'. However, there are certain things that
       | require deep understanding of complex subjects generally only
       | learned by hard work. If you are not the type of person who likes
       | to work hard to learn, then you "can't" do those kinds of
       | programming tasks.
       | 
       | So it is both easy and hard, depending on your mentality. What
       | parts of it are easy and what parts are hard may vary based on
       | aptitude and a variety of other factors.
        
       | baq wrote:
       | programming is hard just like discovering a proof for a
       | mathematical theorem is hard.
       | 
       | software engineering, that's a completely different level of
       | hard. you have to be a good programmer just to begin to
       | understand how to make actually good products, not just toy
       | leetcode puzzles or write only run once scripts.
        
       | hintymad wrote:
       | Programming may still be hard, but it certainly has become less
       | mathematical and less low-level, therefore more accessible. I
       | recall that people talked more about Knuth's books, compilers,
       | and OS before 2010. We have less such discussion now. Similarly,
       | people talked a lot more about consistent hashing algorithms,
       | log-structured merge tree, merkel tree, B+-tree, and etc in the
       | early 2010s. I used to read Hacker's Delight and find it useful
       | in my daily work, but not any more. As times goes by, "hard"
       | concepts and algorithms are packaged into well-designed products,
       | and engineers will focus on building products. The complexity can
       | still be there, but they don't necessary have to do with hardcore
       | programming concepts.
        
         | hvocode wrote:
         | That's a good observation: I think you've observed not a change
         | in programming itself, but a shift in the kinds of things large
         | numbers of programmers are building that get talked about on
         | sites like this. Other forums that I track still talk about the
         | deeper aspects of programming, which reflects more on the
         | community and it's interests than it does any fundamental
         | change in how hard programming is.
        
       | MontagFTB wrote:
       | > you hear about [impostor syndrome] when people actually hit
       | those seemingly unproductive bottlenecks
       | 
       | I have not found this to be the case. My brushes with impostor
       | syndrome come from working with peers who solve a problem or
       | contain a body of knowledge that, on the surface, is
       | professionally intimidating. As a senior engineer with a couple
       | decades under his belt, I can state it is real.
        
       | analog31 wrote:
       | I think the paradox of programming is that it's easy for some
       | people to learn, and prohibitively difficult for others, and we
       | don't know why. If you think something "special" makes it
       | possible to learn programming, like high intelligence, math,
       | abstract thinking, whatever, you will meet people who lack those
       | things and are getting along just fine as programmers.
       | 
       | In my view, programming is easy, doing something useful with
       | programming is as hard as the thing you're doing with it, such as
       | software development. When programming is hard, it's because of
       | the things that generally make hard things hard, in or out of
       | programming: Complexity, domain knowledge, shifting technology
       | landscape, organizational management, etc.
       | 
       | The thing that makes software development stand out is the degree
       | of complexity that it allows for.
       | 
       | An indication that software development is hard, is the number of
       | books and debates on trying to manage it.
       | 
       | Disclosure: I've been programming for 40+ years, but am not a
       | software developer.
        
       | NiceWayToDoIT wrote:
       | What strikes me the most is that over long time I developed a
       | crazy notion, which is a kind of build up of frustration I guess,
       | which can be expressed with following words "this should have
       | been solved by now, and it should be simple, darn it is 2021
       | century..." I do not know how many times I wanted to do some
       | functionality, and then I would realize it is not implemented.
       | 
       | Regardless of what my expectations are for some language or
       | library, simply it is not there, so after banging my head and
       | burning hours trying to solve a problem I would realize I need to
       | use some dirty workaround (and I hate those so much I do not have
       | enough words to describe...)
       | 
       | Just a few example from JS world:
       | 
       | - parser that is simple
       | 
       | - jest framework working fast
       | 
       | - universal planet wide date time
       | 
       | - SCSS compiler that does not require C++ ...
       | 
       | - multipart/form-data request which can be interrupted in nodejs
       | 
       | - ...
       | 
       | For each of above there is some solution, but it looks like a
       | dirty hack ... it seems with time, instead simplifying things we
       | are complicating things that should be simple.
       | 
       | The other day I was pondering, how in any other trade people
       | becoming masters, as they becoming good with their tools, tools
       | are becoming part of their body, so they are focusing more on art
       | and creativity, in programming, except for those rare who are
       | blessed with very good and fast memory, tools are always changing
       | ... as soon as you become comfortable there will be new set of
       | tools... and I should not even start with the whac-a-mole of
       | method and property renaming ...
        
         | pixl97 wrote:
         | Eh, your post reminds me of this
         | 
         | https://xkcd.com/927/
         | 
         | If the points you brought up were simple, it is much more
         | likely they would already be solved. The problem with these
         | things listed is there is a massive amount of complexity in the
         | edge cases.
        
           | NiceWayToDoIT wrote:
           | Exactly :)
        
           | bsder wrote:
           | That may be true, but I also find that too many things get
           | "rebuilt" instead of "completed".
           | 
           | Rust is currently suffering from this in its libraries to a
           | very great degree. Take XML for instance--the Rust
           | alternatives are all missing quite a few features, but so is
           | the wrapper for libxml2.
           | 
           | So, what do you choose when you need one of those missing
           | features? You can 1) try to add it to the Rust libraries, 2)
           | try to add it to the wrapper, or 3) just wrap the C library
           | yourself with the features you need.
           | 
           | I find myself using Choice 3 (which I'm grateful I can do in
           | Rust) more and more because I'm tired of incomplete Rust
           | libraries that _look_ like they do what I want until I start
           | hitting those  "corner cases".
        
       | brundolf wrote:
       | > I said that the programming field is a fertile ground for
       | beginners, and it is. But what's fertile for grain is fertile for
       | weeds too, even moreso. And we need to talk about these people,
       | taking advantage of the fertile ground.
       | 
       | Yikes. What a gross, self-congratulatory rant. The author tries
       | to defend against the term "gatekeeping" by getting out ahead of
       | it, but that doesn't change how deeply exclusionary the result
       | is.
       | 
       | It doesn't even stick to a specific complaint; it jumps around to
       | different things that emotionally feel related in the author's
       | mind but aren't actually. First we're talking about boot camps,
       | then we're talking about how StackOverflow is "the scariest thing
       | that happened to the programming community in the past 10 years",
       | then we're talking about "diversity" speakers at conferences
       | riling up "mobs" in some kind of conspiracy against the author
       | and people like him?
       | 
       | Buried under all of this (literally, at the very end) is perhaps
       | a poorly-executed attempt to tell beginners something of value,
       | that it may not be easy now, but you can push through and it will
       | get better. But I don't see any actual beginner reaching that
       | part before getting discouraged by the rest into doubting whether
       | they should be in this career field at all.
        
         | ywecur wrote:
         | Couldn't have said it better myself. Just came off as an agry
         | rather pointless rant to me.
        
       | ShriekBob wrote:
       | I would say that learning the basics of programming (if then for
       | while functions classes structs etc) is easy and anyone _can_ do
       | it. Learning to think like a programmer is harder but also not
       | super difficult IME.
       | 
       | Being a programmer. Doing it for a living. Getting good at the
       | craft of programming and learning the foot guns and ins and outs
       | of your chosen language/stack/framework. That's hard. And time
       | consuming.
        
       | okwe wrote:
       | programming to me is about solving our specific problem by
       | creating are own abstractions on top of abstractions created by
       | others... good programmer create simple but powerful abstraction.
       | Programming being hard depends on the abstraction you are
       | programming against.
        
       | AtlasBarfed wrote:
       | Programming is some combination of complex and difficult.
       | 
       | "Difficult" in the sense of mathematical elegance, algorithmic
       | design, or other sense of academic "hard". Keep in mind the
       | average developer probably doesn't understand big-O. Usually
       | these programs/systems are focused on the specific algorithm and
       | not a lot else.
       | 
       | "Complex" in the sense that the code may be no more than a
       | glorified crud app in the classic database-transport-presentation
       | architecture, but nevertheless has such a breadth of data,
       | classes, types, frameworks, and the like that it still becomes
       | "hard".
       | 
       | So a "casual" programmer will run into the hard-complex code
       | structure, but will flounder completely at hard-difficult
       | algorithm.
       | 
       | Of course SV/FAANG interview on hard-algorithm, and then make
       | them spend all day on hard-complex crud.
       | 
       | The reality is that hard-algorithm requires academic smarts, but
       | hard-crud requires social and management skills.
        
       | 3pt14159 wrote:
       | I've been programming for a long, long time. Went to college for
       | it when I was a pre-teen. The more and more I code the more I see
       | it closer to something like music than something like
       | engineering. Getting a little garage band together isn't hard. A
       | couple years of practice and you and your friends can play at a
       | little bar or at least at a high school shindig.
       | 
       | The same is more or less true for programming. A simple stack of
       | JS, HTML, and CSS is pretty easy to get going. And if you're
       | content to make marketing sites for advertising companies or
       | similar, then go nuts. That's your simple jam and you rock out on
       | it as much as you like.
       | 
       | Other people want to learn violin or weird keys or timings or
       | cross rhythm. They want to woodshed some African drums and mix
       | them into complex arrangements. And you know what? It is harder
       | than playing a simple guitar for a simple song.
       | 
       | We have the same thing with software, and once you've put in the
       | years you find a sort of series of specializations that make you
       | stand out a bit more and get you a bit more money.
       | 
       | So when people say "programming is easy" what they really mean is
       | that it's easier than most people expect it will be for the
       | financial incentives it provides. Compared to, say, structural
       | engineering which takes four years of focussed study then a long
       | period of practical understudy, software is easy and it pays
       | more. Almost any structural engineer can become a data analyst or
       | junior data scientist and make around double the salary within a
       | year or two.
       | 
       | Yes we've all had the frustrating semicolon days, but there are
       | highlights too. Fast feedback, ease of learning new technologies,
       | ease of scaling to millions of customers. There are many
       | advantages and I think they make up for it.
        
         | joelbluminator wrote:
         | > So when people say "programming is easy" what they really
         | mean is that it's easier than most people expect it will be for
         | the financial incentives it provides
         | 
         | This. Very well said.
        
         | the_duke wrote:
         | Programming is craftsmanship.
         | 
         | At scale and with long-term projects it requires knowledge,
         | mastery of tools, foresight, experience, intuition, creativity,
         | planning and many judgement calls.
         | 
         | This is not special. The same is true for many other
         | occupations. Be it carpentry, electrical engineering, finance
         | or, yes, even marketing.
         | 
         | In a lot of ways it is easier than others, because (non-
         | architectural) mistakes can be corrected a lot more quickly,
         | and there is a plethora of (often free) learning materials,
         | knowledge resources, tools and and projects to build on that
         | other fields can only dream of.
         | 
         | I think many programmers have minimal experience with other
         | jobs, and assume that coding is somehow more elevated or
         | demanding than other professions, while the reality is quite
         | different.
        
           | redisman wrote:
           | I agree and that gives you a better framework to improve
           | yourself too. If you think about woodworking as an analogue
           | you'll want to learn about new types of wood, new tools,
           | woodworking design and history, contemporary woodworking
           | design and technologies, try to make every chair you make
           | more perfect than the last, etc.
           | 
           | There's no one true way to make a chair, it depends on who
           | will use it and how you're feeling. Craftsmanship does
           | include art in it.
        
           | danaliv wrote:
           | _> I think many programmers have minimal experience with
           | other jobs, and assume that coding is somehow more elevated
           | or demanding than other professions, while the reality is
           | quite different._
           | 
           | As someone who has worked in a few different fields, this x
           | 100. There is nothing "special" about programming.
        
         | GnarfGnarf wrote:
         | I wrote my first program in 1965, and have been programming
         | since then. I got my first job in 1970 with a B.A. and a grand
         | total of a one week course in FORTRAN. The job required writing
         | Assembler on a 32K machine.
         | 
         | Still can't get it right :o)
        
         | hsitz wrote:
         | "I've been programming for a long, long time. Went to college
         | for it when I was a pre-teen."
         | 
         | Yet you don't tell us how old you are, so it's hard to get a
         | grasp for how long you've been programming. As someone who
         | first started programming in 1979, I notice that there are
         | plenty of people who say they've "been programming a long time"
         | who weren't even born when I started programming. This isn't a
         | criticism, just a comment that we don't really have any idea
         | how long you've been programming. I can picture a 29-year old
         | saying the same thing you did. Time is relative, something that
         | becomes more and more clear, I think, the older a person gets.
        
           | herodoturtle wrote:
           | > As someone who first started programming in 1979
           | 
           | I absolutely love that there are seasoned experts like you on
           | HN.
           | 
           | Would you mind sharing with us what you're working on these
           | days?
           | 
           | Compared to you I'm relatively young (I've been programming
           | around 26 years) and in my circles I don't get to mix with
           | too many older programmers.
           | 
           | Would love to hear your thoughts on career trajectories.
           | 
           | For me personally, I'm gradually spending less time on
           | pursuing commercial interests, and more time on pro bono
           | projects - and I love the idea of working on open source
           | software indefinitely once I retire.
           | 
           | Cheers from South Africa.
        
           | 3pt14159 wrote:
           | Wow, that's an even longer time. I started tinkering with
           | code in the late 80s when I got my first computer at 4, then
           | went to college when I was 11. First job at 14. I feel like
           | 30 years of coding is long enough to feel like a long, long
           | time. My pops had punchcards at home from the good ol' days.
           | 
           | I wasn't part of the couple waves of programmers, but I think
           | it is fair to say I was in pretty early. Retying out programs
           | from magazines isn't even something most programmers have
           | considered these days, let alone programming without the
           | internet.
           | 
           | But the essence of your comment is right. Of course there
           | would be people out there that have programmed for twice as
           | long as I have. That's a little frightening to think of.
        
             | ZephyrBlu wrote:
             | You went to college, as in university, when you were 11?!
        
               | burkaman wrote:
               | I was curious too: https://torontolife.com/life/went-
               | college-11/
        
             | danaliv wrote:
             | _> Retyping out programs from magazines isn 't even
             | something most programmers have considered these days_
             | 
             | Oof, this takes me back to the day I learned about RAM the
             | hard way. I was typing out a program from a magazine. It
             | seemed like it took forever, even then. About halfway
             | through the computer rudely informed me that 4K of RAM is
             | not, in fact, enough for everyone.
        
               | arafalov wrote:
               | Ha. Soviet magazines were more considering. They listed
               | memory requirements well in advance, when I was learning
               | racing games for my programmable calculator in late
               | 1980s.
        
               | stevesimmons wrote:
               | Was that a Vic-20? 3583 bytes free, after taking out the
               | 22x23 screen display.
        
               | danaliv wrote:
               | We have a winner. :)
        
             | wildmanx wrote:
             | Alright, so you are about 5-10 years younger than me and we
             | started programming at around the same time.
             | 
             | I'd never say of myself that I've been programming "for a
             | long time", let along "a long, long time".
        
               | idiotsecant wrote:
               | so at what point is your personal gatekeeping threshold
               | met?
        
             | golergka wrote:
             | > Retyping out programs from magazines isn't even something
             | most programmers have considered these days
             | 
             | I'm still retyping stuff from stack overflow instead of
             | copying. I find it really effective to really think through
             | the code you're borrowing from somewhere -- because once
             | it's committed under your name, you're the one responsible
             | for it.
        
               | stuartd wrote:
               | The last thing I think I got from SO was an
               | implementation of the Boyer-Moore Algorithm for a byte
               | searcher. I think retyping it would have probably
               | introduced bugs: and as it worked on a test case I had to
               | hand and could verify (finding the data header size in a
               | WAV file by looking for `data` followed by the
               | SubChunk2Size bits, which I could verify with `afinfo`) I
               | was happy to use it rather than learn how the algorithm
               | worked.
               | 
               | As Morpheus said, "Time is always against us".. so I just
               | made sure it followed our coding standards, checked the
               | test cases, and moved on.
               | 
               | But, I am old enough to remember code listings in
               | magazines. I like to think the typesetters introduced
               | deliberate mistakes because they hated the work so much -
               | not to disrespect the fine profession of typesetters, but
               | when you set your 100th `Poke` command in a row, you
               | might think this isn't what you signed up for..
        
           | modwest wrote:
           | > Time is relative, something that becomes more and more
           | clear, I think, the older a person gets.
           | 
           | Yet you're responding as if you don't understand time is
           | relative at all.
        
           | minitoar wrote:
           | Going to college for programming must mean they are quite
           | young indeed. When did colleges even start offering
           | programming degrees? Unless maybe this is some sort of
           | vocational college.
        
             | musingsole wrote:
             | Young is relative... Computer science degrees have been
             | available in colleges for 20+ years
        
               | Jtsummers wrote:
               | 20+ is technically correct.
               | 
               | NC State was celebrating 40 years of CS in 2006 or so and
               | they weren't the first. CS degrees have been around since
               | the 1960s, so 50+ years at this point of CS as a separate
               | degree program in the US. Apparently Cambridge offered
               | their first CS degree in 1953.
        
               | chrisco255 wrote:
               | Yes, but they took quite some time to spread to the whole
               | country and to every major university. That didn't really
               | start until the 70s and 80s (in line with when NC State
               | got established).
        
               | astura wrote:
               | Woah there, I was studying computer science in college 20
               | years ago and it wasn't even close to a new degree
               | program then.
        
               | zikzak wrote:
               | Too be fair, when I say 20 years ago I'm thinking "the
               | 80s", then I remember that's wrong and I'm old.
        
               | [deleted]
        
               | arethuza wrote:
               | Manchester University has had a CS department and degree
               | since 1965:
               | 
               | https://www.cs.manchester.ac.uk/about/history-and-
               | heritage/
        
               | cmollis wrote:
               | I switched my major from 'business' (yawn) to comp sci 35
               | years ago (1986).. at my school, it was previously a
               | 'concentration' in the Math department, which meant you
               | got a BS in Math, concentration in Computer Science. It
               | wasn't a full Bachelors of Science degree until about two
               | years before I got there.
        
               | chrisweekly wrote:
               | My father (RIP) got his Masters degree in CS-EE from MIT
               | in 1972, almost 50 years ago.
        
             | astura wrote:
             | The first computer science degree offered in the US was in
             | 1962. The first in the world was offered in 1953.
        
             | sanderjd wrote:
             | They probably meant they went to college for something like
             | computer science or computer engineering that includes a
             | ton of classes that involve a lot of programming?
        
               | hsitz wrote:
               | Or, since he says "pre-teen", it could just be that his
               | parents sent him to a programming class at a local
               | community college when he was twelve years old. That's
               | the sense I get, actually. The number of people who start
               | actual college as a pre-teen is vanishingly small.
        
             | Frost1x wrote:
             | Depending on what is meant by 'programming,' computer
             | science really grew out of mathematics and occasionally
             | physics departments at colleges in the late 50s and early
             | 60s. Disciplines started establishing CS departments in the
             | US around the mid- to late- 60s. I'd say anyone exposed to
             | that period on could be considered as having formal
             | training in "programming" in a college or university
             | environment.
             | 
             | I have a good friend that worked during the 60s era
             | programming with punch cards doing applied physics work in
             | FORTRAN (pre 77) which was already pretty big by then. You
             | could probably go back a bit further but I don't think much
             | was being actively taught as a sort of course one might
             | expect today then. So I'd say you could have at most 65ish
             | years of programming since formal use in college.
             | 
             | No, it was not software engineering at the time per se but
             | I'd absolutely call it programming.
        
               | 908B64B197 wrote:
               | Electrical Engineering departments were also starting to
               | offer more and more "programming and computer" related
               | courses as well. At a lot of universities these
               | eventually branched out to become Computer or Software
               | Engineering programs.
        
             | jleyank wrote:
             | Started on a pdp-8/E with its staggering 4k of 12-bit
             | memory. "Going to college to program" might have meant
             | going to where the machines were as most of them were on
             | the large size... We had to descend on the college computer
             | centre, which drove the adults nuts. Rugrats running about,
             | fixing their programs for them. Times were different then,
             | but the graduate-to-hacker test was to start with blank
             | paper and end up with a working program. It was too big and
             | too slow, but at the end the new hacker was enlightened.
        
             | pjmlp wrote:
             | On my case, you could already get it high school in the
             | mid-80's.
        
               | bobochan wrote:
               | We had a Pascal class on a VAX in my high school in 1983,
               | and it was fantastic. We used the classic "Oh! Pascal!"
               | text and it was great preparation for college. There was
               | no CS major at the liberal arts school where I ended up,
               | but there were courses with Turbo Pascal taught by the
               | math department before I graduated.
        
             | TheCoelacanth wrote:
             | Someone who entered college at the start of the dot-com
             | bubble is in their mid 40s, and that's not even when CS
             | degrees were first offered, just when they started entering
             | the public consciousness.
             | 
             | You could easily have a CS degree and be past normal
             | retirement age.
        
               | nullserver wrote:
               | CS College degrees in dot com era were hit and miss. Also
               | often had a weird mix of electrical engineering courses
               | thrown in.
               | 
               | Was quite common to do 2-3 years then drop out and start
               | a job. So much so that people with degrees were often
               | looked down on. Exceptions for things like MIT.
               | 
               | After year 3, there was nothing left for me to take. So I
               | took a job.
               | 
               | I would like to have a degree, but it was the right call
               | at the time.
               | 
               | Few years ago I went back and started an Art degree. Was
               | a blast.
        
             | analog31 wrote:
             | My mom taught programming at the college level in the early
             | 80s, in a computer science department at a state
             | university. At that time, the big universities had computer
             | science departments. The 4 year colleges were more of a
             | hodgepodge, ranging from full blown CS, to a handful of
             | programming courses offered by the math department. By the
             | time I graduated in the mid 80s, CS departments were pretty
             | widespread.
        
             | ajford wrote:
             | I'm still holding onto some of my mom's CompSci homework
             | from the early 80s or so. Mostly based on flow diagrams and
             | what amounts to state machines. Sadly no punch cards,
             | though she talked about taking them in to run assignments.
             | 
             | Story goes that she had a campus job cleaning, and made
             | good friends with the guys in charge of running the
             | mainframe by bringing them food and drinks when she stopped
             | by. Which of course meant she could often get them to sneak
             | her stack of cards into the queue overnight.
             | 
             | Details are fuzzy since I last heard the tales over a
             | decade ago, and haven't dug the assignments out in forever.
        
         | twobitshifter wrote:
         | I agree and I'd say the semicolon days are about gone with all
         | the automatic checks done on today's code.
         | 
         | Compared to what I had to endure when I took my first CS class
         | with Java 18 years ago, typo bugs are far fewer. Beginner
         | programmers lives have been greatly improved by IDE
         | enhancements. Almost too much. In code reviews, I've seen stuff
         | that is a brand new language construct. When I ask the dev
         | about it, it's just something that the IDE suggested as an
         | improvement. "The IDE told me to" is a little scary, but maybe
         | not any worse than a stackoverflow post.
        
         | rorykoehler wrote:
         | I've had a similar thought recently regarding music and
         | programming (I studied music but now work in tech) but from a
         | different perspective. The truly great work is imprecise. It's
         | not perfectly structured. It breaks the rules. You have to feel
         | it instead of think about it directly. In fact trying to
         | quantify it and make it perfect reduces the quality of the end
         | result. You have to learn all the rules and then throw them
         | away. The more and more I age the more I'm convinced we already
         | have all the answers built in for anything we could wish to
         | explore in this universe but our conscious is mostly incapable
         | of accessing it.
         | 
         | So yes programming can be easy, even the hard stuff, but we can
         | only fleetingly tap into the subconscious which allows it to be
         | easy.
        
         | marktangotango wrote:
         | I don't disagree but the idea of equating software development
         | with some sort of artistry also allows the existence of the 10x
         | programmer as, you know, a more gifted artists. Whether any one
         | of us believes in 10x'ers aside, there are a lot of problems
         | with this from the perspective of those paying the salaries,
         | not least of which it means developers are not simply
         | interchangeable cogs in a machine/process.
         | 
         | The most horrendous application I ever worked on was a java
         | servlet app where the original developers didn't understand
         | thread safety. They didn't let that stop them though. Every
         | collection was a synchronized list or concurrent hash map,
         | every access was wrapped in a mutex or synchronized{} block. It
         | was really really bad; lots of race conditions and deadlocks,
         | lots of production outages and a lot of "add more locks". In
         | the neighborhood of 200,000 lines of this. It was "artistry" of
         | a sort.
         | 
         | That application got the company to IPO, so the business owners
         | were overjoyed with it. What's the point? Gatekeepers can
         | gatekeep, artists can create art, but even the most banal
         | garbage can make someone a lot of money.
        
           | 3pt14159 wrote:
           | Well there are more productive programmers and less
           | productive ones. It's pretty obvious to me. I don't like
           | trying to quantify it as 10x or 20x, because it's kinda
           | pointless to try and I don't view it as a scalar. I can't
           | program graphics cards, but I can rebuild some of the data
           | feeds that the Nasdaq pipes to hedge funds. I don't think a
           | game developer could do what I do. It's the specialization
           | that really counts, not the raw productivity, but raw
           | productivity does count too.
           | 
           | In terms of your example, yes. The problem with software is
           | that a bad architecture can complete hobble it and there are
           | plenty of cases with unbeautiful code that makes a pile of
           | money. I think there is artistry in software, but that wasn't
           | the primary reason I compared it to music. I was trying to
           | express the vastness of the domain and the range of
           | complexity and how one could find a part in the search space
           | that is simple enough to be called easy. Hence the garage
           | band metaphor. Not everyone is going to be writing compilers.
           | Some people don't want to throw their brain at a heap of
           | complexity all day long. They just want to make pretty
           | buttons that have a satisfying snappiness to them and call it
           | a day.
           | 
           | What I'm trying to say is that there isn't one "programming"
           | and for the people that need to hear "programming is easy,
           | anyone can do it" in order to get the courage to try to take
           | it up, I think that message is good. It doesn't mean they'll
           | be working for Nasa on space probes, but they can make a
           | comfortable living on low stakes stuff and have fun while
           | they're at it.
        
           | adam_arthur wrote:
           | I've been consistently amazed at how far companies can get on
           | shoddy code.
           | 
           | In my experience, even majorly successful startups that turn
           | into companies worth 10's of billions tend to have lots of
           | technical debt.
           | 
           | Honestly, I believe that at some scale its very difficult to
           | get the caliber of experience and talent that can keep a
           | codebase clean.
           | 
           | People often say accruing technical debt is a form of
           | shortcutting to a more business focused goal, but in my
           | experience the technical debt is almost always created by
           | accident through lack of experience rather than a conscious
           | tradeoff. Especially when you consider a SaaS company where
           | your product lives forever and is meant to scale, taking on
           | technical debt for short term gain is almost never the right
           | decision.
           | 
           | Not to reopen the 10x engineer debate, but I've observed that
           | the top 20% of engineers tend to do 80% of the total work of
           | an org. Of course, 10x is relative... But there are
           | definitely individuals that are 10x more productive than the
           | median engineer. And for whatever reason, that seems more to
           | do with an individual's personality and drive than their
           | level of experience... Though of course experience helps.
           | 
           | Especially as a project scales, somebody who makes good
           | technical decisions will only increase the productivity
           | margin between themselves and others. What I see in a lot of
           | these SaaS codebases is that it takes a week to do something
           | that should take 1 day, due to amount of technical debt and
           | spaghetti code.
           | 
           | Software is still a new industry. I fully believe the
           | companies that win in the long run will be the ones that have
           | the best codebases (assuming software is what differentiates
           | your business). The impact that it has on velocity is just
           | monumental.
           | 
           | Code quality and philosophy of well written code is not
           | stressed at all in school... One example of how far off we
           | are from maturity as a discipline. There is a whole school of
           | thought that's currently neglected that will become
           | mainstream in the future IMO. Similar to other engineering
           | disciplines...
        
             | vsareto wrote:
             | If the 10x and gatekeeping people want to give us methods
             | for getting to 10x productivity/skill, I'm all for it. But
             | articles and threads like these always fail to give up a
             | method of reliably training that quality and accurately
             | testing for it.
             | 
             | Until I can hold up a plaque where humanity agrees that I'm
             | a proven 1x, 5x, or 10x engineer and I deserve money and a
             | job according to each of those levels, it's all just
             | posturing and debate.
        
               | 908B64B197 wrote:
               | And yet, you can make a lot of money hiring 10x.
        
               | adam_arthur wrote:
               | Unfortunately I'm not sure it's trainable. It seems much
               | more correlated to an individual's personality and drive.
               | 
               | The traits I see in engineers who I consider to be 10x:
               | 
               | Growth mentality. Always try to do things the "right way"
               | rather than just completing a task. Educate yourself via
               | internet/books to understand all points of view on an
               | issue, and tradeoffs of each approach.
               | 
               | Setting a high bar for your work. Never solely focus on
               | getting the job done, always question and focus on what
               | the best way to get the job done is.
               | 
               | Extremely self critical. Don't get attached to your work.
               | Always criticize yourself and question whether decisions
               | you made were correct.
               | 
               | Objectivity. Always quantify objectively to yourself why
               | you made a given design decision, why did you name your
               | variable X vs Y? Could you justify the merits of your
               | approach to others without relying on subjective points?
               | 
               | Focus on business value. Optimize for what drives
               | business value. Don't pursue projects that are
               | technically interesting that don't provide long run
               | value, for example.
               | 
               | Work with intensity. These people legit code 8-10 hours a
               | day straight. They aren't coding for 30m then browsing
               | the internet.
               | 
               | Never give up. Regardless of how technically challenging
               | or impossible a task seems, they will work tirelessly to
               | find a solution.
               | 
               | Self managing. Can operate 100% independently without
               | constant manager intervention. High level direction still
               | important to align on business goals of course.
               | 
               | Ownership. These people take pride in their work and feel
               | a sense of ownership over their code. They don't need to
               | be asked to step in when something they've worked on has
               | an issue.
               | 
               | It's not about specific knowledge at all, or training.
               | 
               | People could learn to follow these principals, but it's
               | much easier when it's in your nature. I have not seen
               | anyone really change their trajectory from median to
               | superstar before, but I'm sure it's possible with a
               | mentality shift.
        
               | vsareto wrote:
               | But this set of conditions may not be widely accepted.
               | 
               | Say I had all those traits and you decided I was a 10x
               | and now I've got my shiny label and I'm happy.
               | 
               | Then I come across someone else with a stricter
               | definition and more requirements. They say I'm not 10x.
               | Who do I believe?
               | 
               | Because there's no widely accepted standard, it just ends
               | up being a game of finding the right people who like the
               | qualities that you possess.
        
               | adam_arthur wrote:
               | I don't think there needs to be a 10x label. It's not
               | healthy to actually call people out as 10x or not
               | publicly, I definitely agree with that.
               | 
               | But the truth is there are people who are insanely
               | productive relative to median, and 10x is just a rough
               | term to refer to them.
               | 
               | I do think it's worth paying those people 2x or more over
               | paying 1x for two median devs. The trick is being able to
               | identify them accurately... that relies on a well honed
               | interview. There's risk in compensating people so highly
               | if your judgment turns out to be wrong.
               | 
               | Certainly definitions won't be universal, but this type
               | of person tends to do very well regardless of the
               | environment/language etc.
        
               | vsareto wrote:
               | Well the label could be anything and the same problems
               | are still around. The same goes for being labeled a
               | software craftsman or not. There's enough flexibility in
               | how we assess peoples' skill that I can accidentally get
               | the label if I just keep trying and the stars align.
               | (This being a genuine, verifiable belief of someone else
               | who's in the field and not me simply lying about what
               | they said). With interviews, those can vary by company
               | and the person giving it. It'd be more consistent if that
               | was focused on a widely known credential and institution
               | that's dedicated to assessing it. When I can take company
               | and people's biases out of it, I can more objectively
               | decide how good I am, what I need to improve on, and what
               | level I should be working jobs at.
        
               | adam_arthur wrote:
               | I do think certification and credentials can play a much
               | bigger role than they do today.
               | 
               | No, I'm not talking about the BS certifications where you
               | can spend a few hours reading a book and pass a multiple
               | choice test... but something more "elite" and well
               | rounded to give a quality stamp of approval.
               | 
               | It would be a great thing if candidates could go through
               | one process, get that stamp of approval, and receive
               | offers from X companies.. rather than interviewing 100
               | times. I understand the needs of companies are
               | individual, but most candidates who are "strong" will do
               | well interchangeably at these companies... if it's more
               | of a generic development role.
               | 
               | The difficult thing is that the industry seems very stuck
               | on algorithm and design problems as the sole focus of
               | judging a candidate, which are pretty easy to game
               | (design less so than algorithms). To identify these kind
               | of people you really need to judge real world code and
               | productivity... large projects with more elements of
               | design.
               | 
               | Beyond technical skill, how hardworking is the person?
               | How much will they care? Personality traits like these
               | tend to matter a lot more than specific knowledge.
               | 
               | Anyway... this is kind of a meandering response, but I do
               | believe that in the future we'll have a much better
               | system for interviewing with less redundancy and higher
               | accuracy. The goal is to maximize correlation between
               | performance on the interview and performance "on-the-
               | job".
        
               | robocat wrote:
               | > Never give up. Regardless of how technically
               | challenging or impossible a task seems, they will work
               | tirelessly to find a solution.
               | 
               | That is actually a failure mode - the engineer that
               | tirelessly works towards an impossible goal.
               | 
               | The 10x engineer has the critical
               | heuristics/intuition/skill to avoid dead-ends, and also
               | the engineering taste to concentrate on technically hard
               | but possible tasks and the skills to deliver.
        
               | fctorial wrote:
               | > These people legit code 8-10 hours a day straight.
               | 
               | That's physically impossible, unless you're performing
               | some assembly line task like creating a frontend
               | prototype from a marvelapp mock (tons of html, css, js).
               | 
               | Can you do creative work for 10 hours in a stretch, every
               | day.
        
               | jbluepolarbear wrote:
               | I would consider myself a highly productive person and I
               | have many of the qualities they pointed out. I can't
               | program that long, I program in hyper-focused bursts. I
               | have had many coworkers comment/complain that it looks
               | like I'm not working because I'm surfing the web,
               | watching YouTube, daydreaming, etc. But I'm constantly
               | designing, debating, and thinking out how I should
               | implement something that by the time I actually go to
               | code it I know what needs to be done and bust it out in a
               | couple hours. My managers commented on this early in my
               | career because other developers think I'm lazy,
               | unprofessional, or unproductive when I'm usually the most
               | productive person on the team. Working from home removes
               | this problem for me.
        
               | zimpenfish wrote:
               | https://b.tdhopper.com/blog/thinking-at-work/
               | 
               | > One afternoon, I was bent over a program listing while
               | Wendl was staring into space, his feet propped up on his
               | desk. Our boss came in and asked, "Wendl! What are you
               | doing?" Wendl said, "I'm thinking." And the boss said,
               | "Can't you do that at home?"
        
               | adam_arthur wrote:
               | I did this myself for many years in a startup :)
               | 
               | Averaging around 350k lines of code a year for a few
               | years. This was mostly frontend/product focused work, so
               | there is more boilerplate than in other disciplines, of
               | course.
               | 
               | It's also important to note, the higher quality the
               | codebase is, the less energy it takes to add to it. If
               | you spend 50% of your time reverse engineering spaghetti
               | code, it will be way more tiring than adding to a
               | codebase where design is sound, code is very human
               | readable/friendly etc.
               | 
               | It certainly takes a lot of energy, but why do you say
               | it's impossible?
        
               | fctorial wrote:
               | I can feel my IQ dropping at a steady rate when I program
               | for long stretches of time.
        
               | adam_arthur wrote:
               | In my case I was working in a codebase that I largely
               | built myself, so I understood all design decisions and
               | code at all times. It's much easier to operate in this
               | environment.
               | 
               | I have worked on less clean codebases where I spend hours
               | tracing state through spaghetti-like code, and there's no
               | way you can productively code for lengths of time in
               | those environments.
               | 
               | It's always better to refactor that kind of stuff ASAP,
               | assuming the longevity of the product matters, and the
               | refactor is a tangible improvement over the original.
        
               | dmitriy_ko wrote:
               | So it was more or less a large solo project? How do you
               | know your code base was much better than those less
               | clean/spaghetti codebases? Your own code is obviously
               | easier to read/understand than that of others. In general
               | it's easier to write code than to read/understand code of
               | others. Developers who are founding members of a codebase
               | are able to navigate it better vs those who come later
               | and therefore able to work much faster. It may give them
               | a false impression that they are genius 10x coder. Then
               | when developer who comes later is not able to be
               | productive, founding developer would blame it on
               | incompetence of newer developer. But it could also be
               | that codebase is of poor quality, but as founding
               | developer you don't see it. It's hard to be objective
               | about your own code. Now let's go to the reverse
               | situation when you are spending hours "tracing state
               | through spaghetti-like code". It could in fact be that
               | it's actually a great code written by a 10x developer,
               | but you are not smart enough to understand how it works.
               | It's natural to blame someone else and not you.
        
               | DesiLurker wrote:
               | Been coding about 20yrs, In my case its not as much as
               | the IQ but the ability to switch perspectives. I have
               | seen that when I code or debug for long hours often I
               | lose that critical ability and I often repeat the same
               | mistakes. Eventually I take hours to accomplish what I
               | would in 30mins, thats when its time to wrap up.
               | 
               | but I should point out that long stretches of time are
               | different from quite (context switch free) streches of
               | time.
        
               | vsareto wrote:
               | It's definitely possible with drugs :)
        
               | golergka wrote:
               | That's physically impossible only for 98% of the
               | population, like you and me.
        
             | wildmanx wrote:
             | Part of the problem is that "well written code" is
             | unbelievably subjective. Take 10 people from hacker news
             | and you will get 10 likely very different answers, some of
             | them most likely the exact opposites.
             | 
             | Maybe it has to do with being "a new industry", but by now
             | we have accumulated decades. I think it's more because you
             | can get away with it. In other industries, you can't. If a
             | bridge collapses, people die. If a car's brakes fail,
             | people die. If you administer the wrong amount of
             | anesthesia, people die. If you write spaghetti code ..
             | shrug and move on.
             | 
             | Even within the code base of the place I work in, a few
             | hundred sw engs in total, we don't have a shared
             | understanding of what exactly "good", "clean", ... design
             | is. Everybody has an idea, and there are overlaps, but the
             | criteria that people seem to optimize for, and thus the
             | conclusions they draw about design, differ vastly. Within
             | my company, and even more so across our industry.
        
               | catlifeonmars wrote:
               | Heh, good code is the kind you can throw away once you've
               | used it to sell stakeholders on an idea. It's contextual.
               | Or, to put it another way: is a very structurally sound
               | bridge located on a road that no one uses considered a
               | "good" bridge?
        
               | adam_arthur wrote:
               | There's certainly subjectivity, but you can also
               | certainly make objective arguments for why one form is
               | readable relative to others.
               | 
               | Here are some principles:
               | 
               | Bubble important info. Structure your code visually such
               | that signal to noise ratio is highest. E.g. appropriately
               | named variables should be more immediately visible than
               | implementation details. E.g. if variable is named well,
               | you can typically ignore the RHS of an assignment... It's
               | an implementation detail. Don't indent such that RHS of
               | assignment is emphasized. We can debate that point, but
               | I'm using objective reasoning for defining why this style
               | is beneficial.
               | 
               | Human readable naming. Name of variables should define
               | exactly what they represent and nothing else. Your code
               | should be written to read as closely to natural language
               | as possible. E.g. if in a functional language, and all
               | functions describe what they do exactly, RHS of
               | assignments are indented to deemphasized them, you can
               | understand high level of any function quickly by scanning
               | LHS assignments and top level expressions. The more
               | unclear your names, the more "mental recalls or lookups"
               | the reader has to do.
               | 
               | Hide implementation details as much as possible behind
               | api boundaries.
               | 
               | Model component apis such that implementation details are
               | not exposed to caller or creator. Don't mix naming of
               | business concepts and render logic. E.g. if you have a
               | generic graph component, nothing within that component
               | should reference your business domain. I see this mistake
               | a lot.
               | 
               | Prefer immutable variables. The more constants and
               | immutable state you use, the fewer things you have to
               | track in your head as you follow code. You know once you
               | see an assignment, that variable will never change. You
               | don't need to scan every line between assignment and
               | later use to determine whether that var is later
               | modified.
               | 
               | Don't nest expressions too deeply, such that it's
               | difficult to parse. If you can instead assign to
               | appropriately named variable, reader can typically ignore
               | the expression altogether.
               | 
               | Anyway, I could go on with a number of more points. Am I
               | suggesting there's a correct style? Not at all. But you
               | can absolutely use strong and objective reasoning for why
               | one style is superior to another. I don't see people
               | typically apply this kind of rigor to their style, they
               | tend to just prefer one approach "because".
               | 
               | Different people will weight things differently, so can
               | come to different conclusion given same evidence, but
               | there's absolutely a whole set of philosophy and logic
               | you can use to justify style, and it's not explored at
               | all in academia really.
               | 
               | Final note. There is definitely an element of cultural
               | bias as well. People who tend to read code of one style
               | will more readily be able to parse that style. There is
               | no universal truth. But if we all start from the same
               | state, we should justify which styles are best with
               | strong reasoning.
        
             | bumby wrote:
             | So many good points in this post. But I'll nit pick this
             | one anyway :-)
             | 
             | > _technical debt is almost always created by accident
             | through lack of experience rather than a conscious
             | tradeoff._
             | 
             | I agree with this, at least early on in the business. But
             | my experience is that many organizations eventually realize
             | their technical debt. Sometimes the realization comes so
             | far down the line that it feels like a monumental task to
             | fix and then it does become a conscious decision. "We know
             | the code base is shoddy and needs to be fixed, but the
             | schedule/cost risk outweighs the quality risk."
             | 
             | > _Software is a new industry_
             | 
             | In the early 1990s I heard it referred to as the "cave
             | drawing days" of the industry. I wonder if it's similar to
             | how mechanical systems were in the early days of the
             | industrial revolution. Lots of innovation, very few
             | codified best practices related to pressure systems etc. It
             | seems like the steam era of "move fast and break things".
             | Eventually, industry caught up and put together standards
             | like ASME codes (or were regulated to do so). I'd like to
             | see this more commonplace in software beyond its current
             | adoption in a few industries
        
             | gorbachev wrote:
             | >Software is still a new industry. I fully believe the
             | companies that win in the long run will be the ones that
             | have the best codebases (assuming software is what
             | differentiates your business).
             | 
             | There are so many counter examples (Facebook, Microsoft to
             | name two) to your point it simply can not be true.
        
               | adam_arthur wrote:
               | So your view is that the long run is a few decades? :)
               | 
               | When I say long run, I'm talking hundreds of years.
               | Software as an industry is not even one generation old
               | yet. There are countless advancements that will come.
               | 
               | That being said, I don't consider social networks to fall
               | into the class of an area where your product is the main
               | differentiator. Network effects come first, product
               | second.
               | 
               | Database products are a better example. JIRA another.
               | It's the most widely used now but extremely slow and
               | buggy. I sincerely doubt JIRA will be the winner 100
               | years from now if they don't improve technically. Lets
               | see!
        
             | Clubber wrote:
             | >I've been consistently amazed at how far companies can get
             | on shoddy code.
             | 
             | I think this was one of the most disheartening realizations
             | of my career. I spent and still spend a lot of thought on
             | how to improve code for readability and maintainability
             | just to realize companies can make a lot of money with crap
             | for a long time.
        
               | jbluepolarbear wrote:
               | This is where I shine in start up environments. I can
               | throw together "working" implementations quickly while
               | also having the forward thought to allow the system to be
               | incrementally replaced or improved overtime. My starting
               | implementations can look rough and sloppy, but I use
               | consistent patterns and designs that guide building out
               | more complex systems as we go.
               | 
               | I have also done the opposite of taking an existing
               | monolithic spaghetti code system and start isolating
               | functionality without changing behavior. This then allows
               | to improve and replace sub systems as needed.
        
               | adam_arthur wrote:
               | I think it's more of a correlation not causation thing :)
               | 
               | All else equal, the company with the better codebase will
               | be more competitive/make more money.
               | 
               | But at the same time it's just true that for most
               | companies code quality and technical excellence are not
               | core qualities of their culture. A lot of companies say
               | that it is, but they don't live it... Or the original
               | founder/technical team don't really have the chops to
               | enforce that quality and make it a core element of the
               | business.
               | 
               | Of course that doesn't meant they're not smart. I've
               | known a huge number of highly intelligent people that
               | don't care about code quality, or the future human
               | reader. Needs to become embedded in culture of the org
               | for it to trickle down and become lived in practice.
        
           | lhorie wrote:
           | I think the comparison is quite apt, given that the most
           | popular artists are usually not the ones that have "mastered
           | their craft" the most.
           | 
           | One can argue that White Stripes' 7 Nation Army or Andy
           | Warhol's Campbell's Soup Cans are not feats of technical
           | mastery by any stretch of imagination, but the key is that
           | there is no correlation between technical difficulty and
           | monetary value in the first place.
           | 
           | With that said, it's also worth mentioning that the world is
           | vast enough that there's a bit of everything. Yes, there are
           | companies making millions on the back of terrible excel
           | spreadsheet hackjobs. But there's also Google's impressive
           | infrastructure. And there's lichess.org running a hugely
           | popular app on just a few servers. Success in itself it not
           | one-dimensional.
        
             | munificent wrote:
             | _> One can argue that White Stripes ' 7 Nation Army or Andy
             | Warhol's Campbell's Soup Cans are not feats of technical
             | mastery by any stretch of imagination, but the key is that
             | there is no correlation between technical difficulty and
             | monetary value in the first place._
             | 
             | I see arguments like this a lot and it think it conflates
             | two very different kinds of "technical difficulty"--design
             | difficulty and execution difficulty.
             | 
             | Given the sheet music, any guitarist can play 7 Nation Army
             | in a few minutes. It is not physically difficult to play.
             | Also, it's not hard to come up with a completely original
             | melody or artistic work. Just throw a couple of random
             | unrelated things together.
             | 
             | But it is _extraordinarily_ difficult to have such a
             | mastery of composition and understanding of _what music is
             | already familiar to people_ to be able to find a melody
             | that is both original _and enjoyable to a wide variety of
             | people_. The level of cultural, musical, and historical
             | knowledge required to do that is extremely difficult and
             | rare.
             | 
             | It's like taking your boat to the world's most popular
             | fishing hole and knowing where everyone _else_ fishes so
             | well that you can still manage to stake out an unvisited
             | spot that hasn 't been fished out and reel in a giant.
        
               | lhorie wrote:
               | > But it is extraordinarily difficult to have such a
               | mastery of composition and understanding of what music is
               | already familiar to people
               | 
               | The problem with this argument IMHO is that if it were
               | true, one _would_ in fact be able to just bang out hits
               | by developing such mastery. But music hits get popular
               | primarily on the basis of luck, survivor bias, branding,
               | etc, not strictly based on artists ' composition skills.
               | There are plenty of very talented one-hit wonders, and
               | even criticisms that popular music is "manufactured"
               | (implying that it is relatively easy to just follow some
               | vague formula of 4/4, II-V-I chord progressions and
               | lyrics about love and end up with something that
               | resembles a hit).
        
               | moron4hire wrote:
               | Uuuuh, that's exactly how the music industry works. I
               | think you might be surprised to learn how many hit pop
               | songs were written by a very small community of artists,
               | completely separate from the ever changing faces that
               | perform them.
        
               | oriolid wrote:
               | > if it were true, one would in fact be able to just bang
               | out hits by developing such mastery.
               | 
               | Isn't this exactly what Max Martin has been doing for
               | last 20 years?
        
               | lhorie wrote:
               | I mean, it's certainly possible that he is one of a
               | select handful of people that has mastered a skill that
               | almost no one else in history has been able to.
               | 
               | But given how many musicians and producers exist and how
               | utterly small is the percentage of people who are
               | comparable to Max Martin, I think it's reasonable to
               | speculate that his success might be partially/majorly
               | attributed to factors of luck/survivorship
               | bias/branding/popular-music-as-a-mass-produced-product I
               | mentioned.
        
               | zimpenfish wrote:
               | There's also a certain amount of positive feedback, I
               | suspect - once you've had one hit, people will want you
               | to write for them and, because it probably sounds hit-
               | like (which stands to reason since your style has already
               | been a hit), it'll stand a good chance of also being a
               | hit which means more people will want you to write for
               | them and rinse, repeat, cash cheques for 20 years, etc.
        
               | IQunder130 wrote:
               | The big iffy assumption being made in your post is that
               | any kind of foreknowledge of the outcome exists. In
               | reality you're probably looking at survivorship bias at
               | work. A thousand artists throw their output at a wall,
               | one manages to stick and rakes in the big bucks.
        
               | golergka wrote:
               | If the same artist has several shits stuck on the same
               | wall, it's statistically improbable that he's just lucky.
               | White Stripes were not a one-hit wonder.
        
           | hajile wrote:
           | Price's Law is a thing. It states that the square root of all
           | scientists publish half of all scientific papers.
           | 
           | If you have 25 programmers on a project, it is rather likely
           | that 4-6 of them do at least half of the work. That would be
           | a 5x developer.
           | 
           | Very often, productivity is linked to perseverance. If you
           | socialize and only actually codes 1-4 hours per day, you
           | likely are far less productive than the on-the-spectrum
           | programmer who pounds out code for an entire work day (or
           | longer).
        
           | 908B64B197 wrote:
           | > Whether any one of us believes in 10x'ers aside
           | 
           | I've met a lot of folks who didn't believe it... right until
           | they met one.
           | 
           | > That application got the company to IPO
           | 
           | They got lucky they could IPO before scaling became an issue.
           | 
           | Just imagine Google not being able to scale. Or Facebook.
        
             | IncRnd wrote:
             | > I've met a lot of folks who didn't believe it... right
             | until they met one.
             | 
             | That right there is the truth about 10x engineers. We have
             | one in particular I will mention. Sometimes he is a 5x, and
             | at other times he is 20x. This is true and measurable
             | according to the number of tickets that get closed, stay
             | closed, and test as correct. He doesn't read HN, stack
             | overflow, fb, twitter, tiktok, blogs, or emails during work
             | hours. He sits down and cranks out code.
        
               | 908B64B197 wrote:
               | > measurable according to the number of tickets that get
               | closed, stay closed, and test as correct
               | 
               | 10x engineers also have compounding effects. These are
               | impossible to measure, but you'll notice them when you
               | see them. They flat out write better code.
               | 
               | Better code fails gracefully, is easy to read and
               | especially nice to extend. Juniors seems to magically be
               | able to ship features really quickly on that particular
               | codebase and onboard really fast. If you dig deeper
               | you'll see the 10x giving hints and feedback.
        
         | dr_traktor wrote:
         | Comparing it to engineering vs music is missing the point.
         | 
         | The keyword is craftsmanship.
         | 
         | I've graduated and have done work as an electrical engineer,
         | and have become a programmer over the years for financial
         | reasons. Whenever I do engineering or design work, I feel they
         | really are very similar to programming. And they probably are
         | similar to music, although I lack comparable proficiency in
         | that field.
         | 
         | And the key insight for me was: the more you do any of this
         | stuff, the better you become. The time you spend with thoughts
         | about it, or practicing it, it slowly changes you. It changes
         | the way you think, the way you approach the problems. You
         | become experienced. And it does not seem to end, there are
         | always new revelations, and you can always find fault in
         | yesterdays work, that you could probably do a little better
         | today.
        
       | Jan454 wrote:
       | As a programmer, please first define the words "programming" and
       | "easy" ;)
       | 
       | If you instead talk about whole process of everything involved,
       | then split it up into 50 distinct skills that all come together
       | to 'imagine, design, mock, develop, run and support production
       | ready software'.
       | 
       | To most people some of the needed skills are 'easy' and others
       | are 'hard'.
       | 
       | For example just writing 'compileable code' with the help of
       | stackoverflow is probably easy for most. That's not what i call
       | 'programming' but pure beginners might.
        
         | CivBase wrote:
         | > As a programmer, please first define the words "programming"
         | and "easy"
         | 
         | I came her to say pretty much the same thing.
         | 
         | As far as I'm concerned, "programming" is just the art of
         | writing instructions. For software developers, that means
         | writing instructions for computers in a machine-readable
         | language. But really any form of recording instructions is
         | "programming", regardless of who the instructions are meant
         | for.
         | 
         | I've taught my wife a little programming and for her the hard
         | part is understanding how to translate instructions into a
         | machine-readable language. Her biggest struggle is
         | understanding how to decompose each step until it can be
         | accomplished using the limited features and tools provided by
         | the language.
         | 
         | When I think back on my education, we really didn't talk very
         | much about the process of logically decomposing instructions.
         | I've also had a hard time finding any resources to help me
         | better explain the process to her. I wouldn't be surprised if
         | that hurdle is responsible for most people giving up on
         | programming.
        
       | tpoacher wrote:
       | I'm currently teaching python to some students on a conversion
       | course who needed a bit of extra help. The most demoralizing
       | thing for them is to keep hearing how easy python is supposed to
       | be.
       | 
       | I had to flip that around from day 1. Python is not "easy". It's
       | just "easier" than, say, C, assuming you already know C and the
       | fundamentals of memory and stuff. If you don't, Python might even
       | be HARDER to learn, because it automates a lot of that intuition
       | about objects and memory away from you.
       | 
       | So you're not struggling because it's easy. You're struggling
       | because it's hard! Like all programming. But also rewarding.
       | Start from the basics, try to get a deep understanding as you go,
       | stick at it, and you'll experience the rewards sooner than you
       | think.
        
       | [deleted]
        
       | aparsons wrote:
       | Author touches a number of things but two messages resonate
       | loudly:
       | 
       | - accessible != easy
       | 
       | - having the hard work done for you != easy
       | 
       | The "easy" myth was largely started by bootcamps trying to make
       | an easy buck (NPI). More power to them, because clearly a lot of
       | graduates were happy with their program and the career it
       | unlocked.
       | 
       | But working on hard problems- often the foundational pieces that
       | make the "easy" stuff easy - is a different ball game.
       | 
       | I spent the last 15 years of my career as an engineering manager
       | type role, and the people the shone the most were the physics
       | PhDs, electrical engineers, mathematicians that had changed
       | careers, and the people who had for example worked on early home
       | computing (where your computer crashed multiple times a day).
       | 
       | We made it a point not to hire from bootcamps and rarely new
       | grads - not because of gatekeeping, but we had much more success
       | paying 50-100% more for a hard science candidate.
        
       | Koshkin wrote:
       | Programming becomes easy after you have read Knuth's first three
       | volumes.
        
         | kabdib wrote:
         | Weelll, you also have to do the exercises . . .
        
           | Koshkin wrote:
           | Indeed, doing exercises should always be part of 'reading.'
        
       | [deleted]
        
       | ant1oz wrote:
       | 20 years experienced self taught Dev here. And still learning.
       | 
       | The best analogy I can get with programming is to compare it with
       | lawyers.
       | 
       | It takes 7 years to become a lawyer's, and it takes about the
       | same to become a senior programmer.( Assuming 7 years of work
       | experience with a mentor ).
       | 
       | Now, lawyers all have a field, family laws, international laws,
       | constitutional laws, corporate laws. Ask a lawyer who did all his
       | career in corporate law to have a go at a divorce hearing... He
       | will be miserable, and fail.
       | 
       | Programming is similar. You can hear a good lawyer talk and win a
       | case, and it looks easy. But it's not easy.
       | 
       | How many case did he lost before, how many failures.... And now
       | many hours of study did he spent to make sure the argument is a
       | winner?
       | 
       | And where I resonated with in this blog post, is the arrogance
       | and the entitlement of some of those junior programmer, specially
       | in the front-end web industry, who claim to be senior.
       | 
       | I once worked with a 22yo kid who was paid as much as I did, and
       | couldn't write a loop.... He was just a good talker and
       | negociator. 1000$/day to write CSS is really a failure from
       | recruiters and the whole business in general. When juniors think
       | they are senior, they usually take the lead, and the projects
       | goes direction 'fucked'.
       | 
       | And now being good at programming also means being able to get
       | rid of those parasites , which is not eqsy- as their capacity to
       | argue and convince is inversely proportional to their capacity to
       | deliver quality working code.
        
       | [deleted]
        
       | beej71 wrote:
       | I tell beginning students that programming hard. And that anyone
       | can learn to do it if they want to put in the time and exercise.
        
       | pocket_cheese wrote:
       | Programming in isolation is simple to learn. Rudimentary
       | understanding of control flow, syntax and how to use primitive
       | data types are literally enough to write any program in the
       | world. I feel like 80% of people could probably go from zero to
       | fizzbuzz in a week if they had a good teacher and a modicum of
       | interest.
       | 
       | But the real world is so much more complicated and that it is the
       | real gatekeeper. I've taught several non-technical people how to
       | code, and the biggest first hurdles usually are: setting up their
       | dev environment, installing dependencies, understanding the
       | command line.
       | 
       | I think it's interesting that explaining why you have to add
       | things to your $PATH is harder than explaining how an if statment
       | works.
        
         | hajile wrote:
         | I've seen people try to do flow or visual programming. There is
         | no barrier due to dev setup. They don't even have to understand
         | the low-level details about how a computer actually works.
         | 
         | But despite that, they still have trouble getting anything to
         | happen.
         | 
         | While not all smart people can program, professional
         | programmers have an average IQ that is a full 24 points higher
         | than average [0] That's one and a half standard deviations
         | above the population average.
         | 
         | If you account for all the programmers you meet that seem
         | incapable of doing anything, I suspect that the IQ of people
         | who actually get things done skews even higher. Even if you buy
         | into the whole "IQ doesn't measure everything" camp, the things
         | it does measure (logic, pattern matching, memory, problem
         | solving, etc) are exactly the same things that are critical for
         | a career in programming. Based on this idea, it can be said
         | quite simply that the overwhelming majority of the population
         | are simply incapable of performing the job well.
         | 
         | [0]
         | https://web.archive.org/web/20150325075720/http://www.statis...
        
       | BurningFrog wrote:
       | Programming is easy. Maintenance is very hard.
        
       | 01100011 wrote:
       | Programming is moderately difficult for beginners. Learning the
       | tools, syntax, idioms, libraries... it's a lot to swallow.
       | 
       | Programming is nothing compared to architecture though. Knowing
       | what you want to build, in a way that meets the requirements, is
       | a very time consuming task for all but the simplest of problems.
       | Once you have that, and the aforementioned background in
       | programming, the remaining work isn't very difficult.
       | 
       | If someone is doing the architecting for you and defining the
       | work sufficiently, programming isn't hard. It's not easy, but it
       | isn't hard.
        
         | nullsense wrote:
         | This is very much in the right direction, but to expand on it a
         | little with my 2c...
         | 
         | Programming something to produce an expected output is for the
         | most part a very achievable goal when you have no constraints.
         | You can do it however you want, take as long as you want and
         | no-one else will complain how you do it.
         | 
         | The more layers of constraints you add in the more challenging
         | it becomes to the point where you could say "programming well"
         | is indeed very challenging and the majority of working devs
         | can't achieve it reliably.
         | 
         | I think over time it's a fundamentally impossible task with
         | respect to a certain piece of software because the trifecta of
         | 1) changing industry/aging tech, 2) everyone who contributed to
         | the codebase at a time they didn't understand the system, the
         | domain or programming all that well, and 3) accumulating
         | mistakes in architecture or implementation that you don't have
         | or ever get the budget to fix.
         | 
         | So in the end even if you're a stellar dev, you're always
         | working with people who aren't and most likely on a system that
         | is not pristine.
         | 
         | Getting a computer to do _something_ is not so hard.
         | Consistently getting the computer to do what you want over time
         | in a way that is easy for your colleagues to grok such that
         | they don't introduce mistakes and also to do it in such a way
         | that's amenable to unforseen future requirements that may or
         | may not arrive? It's ultra challenging.
         | 
         | I've learnt to not care so much. Software is an organic thing
         | that will be born, grow, get old and die.
        
         | pavel_lishin wrote:
         | I reject the premise that architecting and programming are two
         | separate fields.
        
           | oriolid wrote:
           | I thought he was writing about designing buildings for a
           | moment.
        
       | didibus wrote:
       | Everything is easy though, humans can learn, I don't really
       | believe anyone is so removed from potential that they couldn't
       | learn to do any job at the average level of the average job's
       | practitioner.
       | 
       | Accessibility thus actually becomes the crucial differentiator.
       | The opportunity to learn and be taught by the right people, to
       | learn at the right pace and the right time, to be in a motivating
       | environment, etc.
       | 
       | So I think what people mean is... Yes programming is accessible,
       | and there is good job prospect, and if you are worried you're not
       | smart enough, that's crap, everyone is smart enough, just give it
       | a shot. All you need is to be interested enough to put in the
       | time and effort. Now you might not be interested enough, but
       | compared to a lot of other things, programming costs you nothing
       | to try.
       | 
       | Same with mathematics, it's easy, but most people don't find it
       | interesting enough to put in the time and effort. But mathematics
       | is also less accessible, not as many blogs, free material isn't
       | as available, there's no machine to freely assess you and grade
       | your work, etc.
        
       | leifg wrote:
       | While reading this article I thought about bootcamps who usually
       | spin these kind of narratives.
       | 
       | I never really found reliable numbers for what percentage of
       | bootcamp graduates actually get a job as a software developer.
       | Their marketing mostly talks about anecdotes and a lot of
       | bootcamps have a very strict application process so in a way they
       | act as gatekeepers as well (not to mention that not everyone can
       | afford them).
        
       | ExcavateGrandMa wrote:
       | I really like what you wrote about prog...
        
       | xroche wrote:
       | "Programming is easy" is like "Cooking is easy": it's true and
       | (as nicely put by this blog) completely misleading at the same
       | time.
       | 
       | Anyone can start cooking; because the entry level is really low.
       | But mastering cooking is another thing.
       | 
       | Programming can be learned progressively, even at a very young
       | age. You won't hit any real wall.
       | 
       | It's just a matter of steady slope.
        
         | brundolf wrote:
         | The other thing is that we don't need millions of gourmet chefs
         | who can invent their own five-star menus. We need line chefs,
         | and kitchen staff, and even burger flippers. Right now there's
         | so much demand that even the digital burger-flippers get paid a
         | good wage. So why does the OP feel the need to - yes -
         | _gatekeep_ people from the entire field?
        
           | ThrowawayR2 wrote:
           | Because right now there's no distinction between the burger-
           | flipper and the master chef and moreover the burger-flippers
           | are insisting that there shouldn't be one, even though
           | there's an obvious gap in depth of expertise. The market
           | supports paying both roughly the same right now but as more
           | and more burger-flippers flock to the industry, the
           | distinction will become more and more clear and the industry
           | will bifurcate.
        
             | brundolf wrote:
             | Okay, but the issue you describe is one where perhaps
             | employers need to do a better job interviewing candidates
             | for different tiers of roles. "Seniority inflation"
             | definitely happens when it comes to job titles (I don't
             | think it's a huge problem, but it probably isn't good), and
             | people of widely varying skill levels definitely get put in
             | the same levels of roles due to flawed hiring processes.
             | 
             | But the issue is not bootcamps, or StackOverflow, or
             | "positivity" about whether or not individuals can be
             | programmers at all.
        
       | nxpnsv wrote:
       | Oh yeah? Try not programming. I've tried, it can't be done.
        
       | jeffreyrogers wrote:
       | In college I helped a friend (very smart guy) with some of his
       | intro to programming class assignments. He had the hardest time
       | understanding very basic things. He would've struggled with a
       | fizz-buzz type problem. In many other fields he is highly
       | competent, but he could not grasp programming. I think people who
       | know how to program don't realize that what they find easy is
       | often extremely difficult for other people.
        
       ___________________________________________________________________
       (page generated 2021-04-06 23:00 UTC)