31 ms·
Programming is hard
- deleted 6y ago[deleted]
- dt3ft 6y agoSo is running a blog which can handle 100 people simultaneously viewing it... :)
- naavis 6y agoIf this is a quip about the site being down or something, it seems to work fine here.
- zabzonk 6y ago> being a senior at 22 WTF does "being a senior" even mean?
- ThrowawayR2 6y ago> "WTF does "being a senior" even mean?" Having the word "senior" in your formal job title, e.g. https://www.levels.fyi/ https://www.levels.fyi/
- zabzonk 6y agoYeah, like job titles are at all meaningful.
- doytch 6y agoThis is the tongue-in-cheek point that the post you're replying to is making. :)
- spelunker 6y agoI think that is the point the original author is making yes
- beforeolives 6y agoThey are usually meaningful within a given company and become increasingly important as the company grows in size. Comparing titles between companies is usually pointless.
- spenvo 6y agoThe 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 6y agoIn fairness, over 9 years it got significantly nicer to program for.
- spenvo 6y agoThat's true, by leaps and bounds, really
- gh-throw 6y agoHaving 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.]
- billsix 6y agoAre you using Swift? Swift was released in 2014.
- slingnow 6y ago
- hnrodey 6y agoYears 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 6y agoYesterday 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 6y agoI 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 6y agoI 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 6y agoMusic 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 6y agoNone 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.
- rectang 6y ago> 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.
- sidlls 6y agoHow is it unrelated to the general thesis?
- slingnow 6y agoI 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 6y agoLet'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 https://twitter.com/jfarmer/status/1361134242491633664 I also helped start https://www.missionbit.org/ 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.
- bonoboTP 6y agoWhy 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?
- luckylion 6y agoMaybe 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 6y agoThere are definitely certifications for welders, especially if you need to weld something that human lives depend on.
- lanstin 6y agoThe important welders.
- arcticbull 6y agoThere's licensing for hairdressers in most states - without having checked, I guarantee you there's certifications for welders.
- Jtsummers 6y agoThere 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 6y agoThe 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.
- blunte 6y agoThe 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 6y agoI 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 6y agoThat'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.
- junon 6y agoDisagree, entirely. Knowing how a computer works is important when programming a computer. Just because you're not writing assembly when making a website doesn't mean you're not employing knowledge about a computer.
- whatever1 6y agoWe 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.
- junon 6y agoThat'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 6y ago[deleted]
- majewsky 6y ago> 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.).
- ThrowawayR2 6y ago> "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." So many of these breaches are caused by absolutely boneheaded mistakes, some of which are known bad practices dating back to the '90s like allowing 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.
- anuvrat1 6y agoThe message I get is that being a developer is sort of easy while being an engineer is hard.
- liquidify 6y agoI 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.
- MontagFTB 6y ago> 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.
- deleted 6y ago[deleted]
- deleted 6y ago[deleted]
- leifg 6y agoWhile 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).
- xroche 6y ago"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 6y agoThe 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 6y agoBecause 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 6y agoOkay, 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 6y agoOh yeah? Try not programming. I've tried, it can't be done.
- tectonicfury 6y agoIf you like it hard enough, it would soon stop being hard
- iandev 6y agoIs 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 6y agoI 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.
- bigger_cheese 6y agoI think the real problem is the word "Programming" is such a poorly defined and generic term. Until you pin down exactly which definition of programming you are talking about saying "Programming is hard" is no more meaningful than saying "Mathematics is hard" or "Writing is hard". What frustrates me is the reputation programming has, it has somehow cultivated this image that computer code is some kind of magical and esoteric thing which you need to be some kind of genius or wizard to understand. It's reputation is such that otherwise sensible people will balk, hesitate and just completely shutdown when confronted with code. I am an engineer (the non-software type) I see this behavior in my coworkers and it frustrates me to no end there is this prevalent attitude 'I'm not a programmer, computer code is too hard to understand...' It reminds me of the reputation Mathematics (the subject) had when I was in high school. Math had a reputation as being a 'hard' subject so a lot of people seemed to come into it with preconceived notions that it was difficult to learn and therefore they weren't smart enough to understand it so they weren't going to engage with it. I see exactly the same attitudes with 'programming' today.
- contrarian_5 6y agoeverything is simple and easy once you understand and master it.
- reidjs 6y agoProgramming 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 6y agoThe 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.
- RHSeeger 6y agoI'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 6y agoThe 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 6y agoMost 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 6y agoIt'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.
- seaerkin 6y agoProgramming is easy. Organizing code is hard. Maintaining and operationalizing programs is hard.
- ryeguy_24 6y agoNot 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.
- baq 6y agoprogramming 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.
- 3pt14159 6y agoI'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.
- hsitz 6y ago"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.
- minitoar 6y ago
- Jan454 6y agoAs 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 6y ago> 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.
- Koshkin 6y agoProgramming becomes easy after you have read Knuth's first three volumes.
- BurningFrog 6y agoProgramming is easy. Maintenance is very hard.
- jkingsbery 6y agoWhile 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/research/2020/Student-Score-Distributions-2020.pdf 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.
- the_only_law 6y ago> Calculus is hard too, but more people take AP Calculus in the US (based on https://secure-media.collegeboard.org/digitalServices/pdf/re 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.
- dkarl 6y ago> 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.
- drewcoo 6y agoIt'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.
- pdpi 6y agoMostly 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 6y agoYeah I really think the most accessible and closest analogy is to writing. Everybody writes, few write professionally.
- paganel 6y agoDisplaying <? 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 6y agoThat'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.
- paganel 6y agoBeing a surgeon is not the same thing as being an engineer, being an engineer is not the same thing as being a programmer. The post was about being a programmer, i.e. about making computers “automatically” do the stuff that you want them to do.
- agentultra 6y agoThe 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 6y agoYeah, 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 6y agoI 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 6y agoProgramming 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..
- hunterhod 6y agoWhen 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.
- thrower123 6y agoProgramming 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.
- brundolf 6y ago> 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 6y agoCouldn't have said it better myself. Just came off as an agry rather pointless rant to me.
- hn_throwaway_99 6y agoYou left off the last sentence of that paragraph, which made me interpret the overall sentiment very differently: > 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. And where there’s plenty of beginners, there’s plenty of people taking advantage of them. That is, I interpreted "These people, taking advantage of fertile ground" not to mean subpar newbies who can't cut it (which is how I read your interpretation), but instead to mean the snake-oil salesman/huckster types who take advantage of these newbies by sort of implying "hey, just come to our 30 day bootcamp and you'll be a programmer, just like those programmers who make top dollar at Google and Microsoft!" I actually generally largely agreed with article, and I didn't find it gross at all. Yes, programming does have a low barrier to entry, but to become a true expert at it takes the same level of skills and preparation as, say, a doctor or scientist. But you don't see any "Become a doctor in 30 days!" bootcamps out there trying to convince people that "Hey, anyone can become a doctor!"
- ant1oz 6y ago20 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.
- sanderjd 6y agoThis 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.
- analog31 6y agoI 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.
- beej71 6y agoI tell beginning students that programming hard. And that anyone can learn to do it if they want to put in the time and exercise.
- jeffreyrogers 6y agoIn 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.
- caffeine 6y agoBoils 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.
- tectonicfury 6y agoAgree 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.
- hzhou321 6y agoProgramming 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.
- okwe 6y agoprogramming 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.
- justbored123 6y agoPrograming is just as easy as math.
- marcus_holmes 6y agoI could have written this rant. Excellent stuff :) But, the thing is... programming is easy for some people. If your creative mind turns that way. Like "drawing is easy, anyone can do it", which is true provided you spend most of your waking life drawing. "Music is easy, anyone can do it" - again, true for some. Not for me, I'm almost tone deaf and have no sense of rhythm. But programming is different from Software Development as a career, just like "drawing" is different from "commercial illustration". Being good (or successful) at Software Development doesn't necessary involve being good at programming.
- fctorial 6y ago> and it’s all between you and other people’s code, or, worse, your code. This needs explanation
- Waterluvian 6y agoI'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 6y agoMaybe "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.
- dragonwriter 6y ago> „it’s easy” “Easy” and “hard” are really only meaningful on a relative scale. While I think the author individually makes some decent points, I would normally disagree with the top-line “programming is hard” message, and the further implication that “programming-is-hard” gatekeeping is a positive. (OTOH, its worth noting that much of the opposition to the gatekeeping is capital interests trying to increase supply to drive down labor costs, and much of thr gatekeeping is the reverse from incumbents—and must especially the last skilled, most at-risk from expansion of skilled labor supply segment of incumbents—and has nothing to do with the merits of the arguments.) OTOH, on a scale where “using the right quotation marks for the language you are writing in” is prohibitively difficult, I’d agree that “programming is”, at least, “hard”.
- slibhb 6y agoThere are two main ways to think about "hard". One of them is "not many people can do this". The other is "not many people could do this". When people disagree over whether something is hard, I think the disagreement usually comes down to semantic disagreement over these two definitions. Also, some people think we can get rid of the latter ("not many people could do this") because it's hard/impossible to prove. But I think both definitions are an important part of what we mean by hard, and we can't get rid of either.
- Exuma 6y agoMost things in programming are incredibly easy, at least the building blocks. Some algorithms and such might not be easy, but they're just different combinations of building blocks. I think 95% of people just have not flexed their brain muscle hard enough (and often enough) to spend more than 15 minutes in intense focus trying to solve something without giving up or being consumed with self-critical thought. This is blindingly evident when trying to teach people (probably hundreds at this point over a decade) and very few manage to have intense focus without some completely self-sabotaging mechanism about their own worth, their own abilities, are they smart enough, etc. This by far is the hugest inhibitor... on the small chances where I've found ways to move past this, people will pick up core concepts quite readily and easily, and exclaim "oh, so wait this really isn't that hard." Things like rust data types or something might be "hard" but no one starts there. If you follow along the general path, you can have large accomplishments in learning/progress the entire way up the food chain over 10+ years and never once along the path is it really like "GOSH THIS IS HARD!"
- ncphil 6y agoReally good essay, that I've passed on to my college student (in simulation programming) children. There's real wisdom in there, no matter how long the author has been coding, there's no doubt some mileage has been racked up. I've been coding since the 70s (in the beginning there was _basic basic_), but have spent most of my tech career in system administration where most of my programming has been for utility scripts in various shells, perl and python. Still, because I've worked closely with developers over the decades, "programming is easy" is a falsehood I've experienced many times over -- and one I don't think is helpful at all (any more than "masks won't help you avoid being infected).
- pocket_cheese 6y agoProgramming 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.
- opportune 6y agoGood point. It took me years to learn software well enough to be able to understand, fix, and anticipate those kinds of issues. Even now that I write software professionally it still happens at a more technical level (for example, I’ve been tripped up by esoteric aspects of how networking in data centers works). Modern computer systems are just very very complicated which makes teaching them challenging: nobody, even very very good programmers, knows how all software works from top to bottom. So being productive writing software requires a self-starting, deductive approach to solving problems, which is much harder to teach than basic syntax.
- hajile 6y agoI'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.statisticbrain.com/iq-estimates-by-intended-college-major/ https://web.archive.org/web/20150325075720/http://www.statis...
- SunlightEdge 6y agoMy 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.
- DoreenMichele 6y agoWell, 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).
- jedmeyers 6y ago> 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.
- AtNightWeCode 6y agoWriting a topic about programming without mention the term TEAM. Of course programming is hard for you.
- deleted 6y ago[deleted]
- franklyt 6y agoI 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.
- 6gvONxR4sf7o 6y agoI 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.
- tpoacher 6y agoI'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.
- JetAlone 6y agoYeah, I'm teaching python too and it's important not to lie and pretend it's easy. I do try to emphasize to my student that it's a difficult skill akin to learning how to read and help them see each small step and how they build. I encourage my students by telling them that if they really want to do it, it is possible to learn these skills, and explain how it can be rewarding. I think it's important to let them assess based on reward vs how difficult they find it, so they have an honest view of whether to keep going or pivot to something that might give more bang for their buck.
- analog31 6y agoGranted, BASIC (yes the kind in all caps with line numbers) was my first language. So I'm biased, and mentally mutilated. Still, BASIC had something like a dozen important keywords, and you could at least offer a hand-wavy explanation of what the computer was doing with each statement. If you found a program in a magazine, it didn't do much more than what you learned in class, because there wasn't much more. And even specialized commands like POKE were not too hard to explain. It was possible to walk through a short program and "think like the machine" to understand what it did. Frankly, even the GOTO was helpful in that aspect. There was no mystery about what GOTO did. Today, Python is my main language and I'm quite productive with it. But I can't tell you with a straight face what a statement like x=3 actually does. In fact, to help people with Python, I'm more likely to revert to an explanation that is like what BASIC does with LET X=3. So I have to fictionalize or abstract away the computer to a greater extent.
- hintymad 6y agoProgramming 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 6y agoThat’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.
- fsociety 6y agoIf you don't mind sharing which forums?
- thiht 6y ago> 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...
- ShriekBob 6y agoI 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.
- ExcavateGrandMa 6y agoI really like what you wrote about prog...
- 01100011 6y agoProgramming 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.
- pavel_lishin 6y agoI reject the premise that architecting and programming are two separate fields.
- oriolid 6y agoI thought he was writing about designing buildings for a moment.
- 01100011 6y agoMany people in our industry never get to do much architecting beyond a very limited scale. Much of my career was spent fixing bugs as a contractor or implementing very targeted features in embedded systems. It was only later on in my career where the balance shifted to more architecting of larger features. Plenty of folks are just 'programmers'. They're barely software 'engineers' and definitely not computer scientists. It is perfectly reasonable to spend your entire career as a programmer, dealing with small issues in a systems you inherited from someone else.
- edejong 6y agoI don't think the GP is claiming they are separate fields. However, I would say they are separate modes of thinking and require different skill sets. For example, software architecture around systems design might involve thinking of different layers of responsibility, the sequentiality of development, taking into account the skillsets of the teams and existing technical tools and structures. To me, programming is the art of transforming and ascertaining requirements and principles into executable structure. Architecture is the art of shaping the non-functional requirements and principles. Either by writing them down or by discussing them at a whiteboard, or even by teaching the team about these requirements. Both are like an entangled pair that can be incorporated in one single individual, in different team members or even in different organisational structures. Some architectural decisions can be championed by a random software developer. Some architectural decisions shape companies (AWS). And some architectures should just be thrown out of the window. But, and I am speaking from experience here, as they are different modes of thinking, there should be conscious time and effort for both and they should not be mixed indiscriminately.
- falcrist 6y agoGetting 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.
- JustSomeNobody 6y agoProgramming is hard. Good developers make it look easy. Some days are boilerplate. Some days are exhaustingly challenging.
- bstar77 6y agoLearning 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.
- NiceWayToDoIT 6y agoWhat 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 6y agoEh, your post reminds me of this https://xkcd.com/927/ 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 6y agoExactly :)
- bsder 6y agoThat 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".
- Ekaros 6y agoProgramming 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...
- Turbots 6y ago"Easy to learn, hard to master" - Turbots
- AtlasBarfed 6y agoProgramming 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.
- didibus 6y agoEverything 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.
- mybrid 6y agoMost 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.
- chadcmulligan 6y agoHard 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? Edit: maybe I should say solving puzzles - not necessarily game sorts of puzzles, but more a sense of hmmm, what happened there? and the determination/ability to solve it, not just throw up your hands.
- joe_the_user 6y agoI don't think your list proves very much, if anything. Nearly every field requiring commitment gets a negative reaction of this sort. What fields aren't boring 'til you get them? What fields don't require memorizing things? At best, you're talking any field requiring thought but even there, lots people give up on intense thought, until they one day get it.
- Swizec 6y agoI 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. There’s a reward beyond “You figured it out”, maybe you’re the first ever to figure out this particular puzzle, it something starts working that wasn’t before, or you do a thing that previously was impossible. But puzzles? Meh * that’s a good 24 years of writing at least a little code almost every day
- standardUser 6y agoStrongly agree. I've played every kind of esoteric video games except for puzzle games and I've never solved a Rubik's cube. But ask me why I like programming "oh, it's like solving all these different puzzles all day long!".
- aparsons 6y agoAuthor 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 who 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.
- qpiox 6y agoSome research on the topic: https://doi.org/10.1145/3344429.3372502 https://doi.org/10.1145/3344429.3372502 "The group found that pass rates in introductory programming courses appear to average about 75%; that there is some evidence that they sit at the low end of the range of pass rates in introductory STEM courses; and that pass rates both in introductory programming and in other introductory STEM courses appear to have remained fairly stable over the past five years. All of these findings must be regarded with some caution, for reasons that are explained in the paper"
- analog31 6y agoI wonder if it matters that in virtually every other STEM field, students in the intro course have already had a year of the subject in high school. In math, they've had several years, and at most colleges, they take a placement exam before they're allowed to take calculus as freshmen.
- lwhi 6y agoThe number one skill needed as a software developer is resilience.
- musicale 6y ago> Programming is hard, programming is not for everyone, and for the time being everyone might be able to do it, but most definitely most should not The same could be said for cooking, but I'm here to say that cooking is good and everyone who is interested should try it! There's nothing wrong with canned software, but a bit of programming/algorithms can empower you in almost any discipline, particularly ones that have to deal with numbers or data, much as algebra and statistics can. There's a reason we have Scipy, Octave, Matlab, Mathematica, R, SAS, Julia, etc. after all. Not to mention that even Microsoft Office includes VBA, and every web browser includes JavaScript.
- joshsyn 6y agoIts easy. Just code when you are in your teens
- t0mbstone 6y agoWhat's up with the whole ,,quote" thing throughout this entire article? The left side of a quoted statement should be the quote symbol, not two commas. Very strange...
- jestar_jokin 6y agoIt's German punctuation. https://www.thoughtco.com/german-zeichensetzung-punctuation-marks-4082218 https://www.thoughtco.com/german-zeichensetzung-punctuation-...
- t0mbstone 6y agoAh... very interesting. I didn't realize German did that. Thank you for answering my question!
- keithnz 6y agoProgramming involves a spectrum of diverging skills and specialties, at the low end, it is relatively easy. I have seen people with very limited programming skills leverage what they know in spreadsheets, scripts, and other tools such that it makes them a lot more productive. Career programmers span a wide range of the spectrum, many leverage other domain specialties. I would say most deal with moderate problems where there are mostly known solutions and often it's a matter of having the skills and knowledge to craft something together that is appropriate for the task at hand, much more like engineering.
- aj7 6y agoI had two, mind you two, programming classes in high school in 1966-7. We wrote FORTRAN code and ran it on the high school’s 1130, with 32k of 32-bit RAM. Stuyvesant. Cold War and the space race environment. Hopefully that level of interest and funding is returning. When the Chinese walk on the moon, that will be a wake-up.
- Guthur 6y agoLet me rephrase, programming is easy, software engineering is hard. Scripting Word or your editor of choice is not particularly hard, writing a python script to read a csv and output some text is relatively easy. Designing and implementing a large scale Web application with metric collection, real time reporting, multitude of data integrations, aggressive availability requirements and worked on by 10s of engineers across a number of teams is hard, real hard.
- sevensor 6y agoNorvig's classic _Teach Yourself Programming in Ten Years_ still holds up well here. http://www.norvig.com/21-days.html http://www.norvig.com/21-days.html Learning to program can be a smooth path, but it's also a long one.
- chaostheory 6y agoDrawing and painting well are both hard. Cooking well and fast is hard. The difference between those skills and programming is that you don’t have people discouraging strangers from even attempting to acquire those skills.
- joe_the_user 6y agoYou don't have to discourage strangers from programming either. It's just some people, like the otherwise quite intelligent author, feel the need to do so. Such discouragement seems ugly, mean-spirited and kind of despicable.
- teawrecks 6y agoForget gatekeeping programming, I'm going to gatekeep gatekeeping programming. Contrary to what this article claims, the sentiment that "Not everyone can program" is well worn, especially on this forum. "Does everyone need to learn to program?" (https://news.ycombinator.com/item?id=1759475 https://news.ycombinator.com/item?id=1759475) "Not Everyone Can Program: As Seen in Pixar’s Ratatouille" (https://news.ycombinator.com/item?id=10020748 https://news.ycombinator.com/item?id=10020748) "Not Everyone Needs to Learn How to Program" (https://news.ycombinator.com/item?id=11070518 https://news.ycombinator.com/item?id=11070518) "Everyone Should Learn To Program, But Not Everyone Should Be A Programmer" (https://news.ycombinator.com/item?id=5469812 https://news.ycombinator.com/item?id=5469812)
- topoikoi 6y agoThe author does a poor job at connecting several themes in his article that remain quite unrelated to the reader: 1. Programming isn’t “easy” (whatever the definition of easy is) 2. An attempt to create categories for “easy” and “hard” programming: a toy website is the former, a large/complex piece of software is the latter 3. There are people who aren’t as technical as the others, undeserving of being called a programmer (the people with 2 years of experience who “play the diversity card” and oversell their experience, selling programming as a lifestyle, etc) (1) and (2) pop up all the time in programming communities, and I believe it’s due to how geniune encouragement is expected to be like in certain cultures (“it’s easy! you can do it!” vs “it’s hard work, but it will pay off”). One of these sentiments wouldn’t serve its intended purpose in the anglosphere, the other wouldn’t work in Eastern Europe. There is a definite cultural aspect that we’re not considering in these discussions, and it applies to most communication online. However, it’s especially apparent when more abstract issues are discussed, such as whether or not programming is easy, what exactly is programming (also touched upon by the author when he ranted about HTML), and who exactly is a programmer. This opens a whole other can of worms: programming gives people a lot of power (being in demand, mobility, financial independence, opportunities, relatively safe work) at a relatively low cost (being accessible to everyone with an Internet connection, or a computer comfortable enough for programming, provided they have the time to have a hobby). As per our current dominant cultural values in the programming community - where we believe ourselves to be intelligent and rational -, it would be a taboo to believe that someone is undeserving of this autonomy or even prestige, therefore when “programming is easy” meaning “it’s accessible, in general, to everyone with a will and some free time, providing massive rewards in return” is met with criticism using an underlying disdain for the influx of “a different type” of programmer (or someone who works with programmers), it’s apparent that sometimes other programmers want to keep this prestige, freedom, and autonomy only to themselves, or a select “elite”. The programming elite does the “harder” work; there is more prestige since there’s a higher barrier to entry/recognition (years of study of theoretical CS, mathematics, low-level stuff, etc). It seems unaesthetic, therefore, to be associated with people who can become successful through utilizing more social and marketing skills. There is no strong reason to believe that most people who promote their blogs or are “promoting” themselves using the “diversity card” are less technical than the other programmers who sit quietly behind their desk. There might be some, but overall, I belive there’s a strong bias against them from the self-proclaimed old-school, hardcore programmers. There is a disdain for the more social, more entrepreneurial, more marketing-and-sales aligned technical person who knows how to utilize current social media trends to their benefit. It might stem from the belief that the better technical person is the more quiet one, the one who spends years programming their OS alone instead of engaging or even collaborating with other people (that’s a bit of an extreme example, though). Another reason why more and more people are hyping themselves up is because it’s necessary. Not everyone receives a high salary or has a great boss. There’s plenty of people who work for free or very little money, having skills that would be much more valuable if they worked for someone else. But not everyone has the same network (which is incredibly important - imagine being all alone in this) or word-of-mouth recommendations. They might be acting proactively to get a better offer somewhere else. Sending in your CV without any online presence doesn’t always work for everyone. I think we should be more empathic towards people we don’t understand, instead of feeling immediate disgust and throwing them outside of the community, so to speak. Either way, any discussion around “is the field XYZ hard or easy?” doesn’t exist in a vacuum. We’re dancing around status. If something is harder, especially intellectually, we believe it deserves more respect and perhaps even higher status, higher ranking in the professional world. If something is highly compensated, we also assign higher status to it, naturally. There can be many different types of programming that can be in either the easy or hard categories at any time - and the low barriers to entry make it much harder to judge someone’s status, and our relative standing. Doctors and lawyers are considered to be higher-status not only because what they’re doing is “hard”, but also mostly because of the gatekeeping, the qualifications and licenses needed to be called one. This discussion keeps popping up because a lot of programmers want the confirmation that they’re high-status, but it’s not that easy.
- Milkman128 6y agoMy only gripe on programming is its constant flux. A lot of it seems like invented problems being "solved".
- habeebtc 6y agoOK. I will dive in as well. Programming needn't be hard for simple business problems. With how rich of tools are out there, every white collar worker would benefit from putting at least some scripting tools in their toolkit. Banging out scripts is easy. Cobbling together hacks is easy. Software engineering is hard.
- strogonoff 6y agoI have issues with the tweet quoted in the article. It implies that “anyone can code” and “coding isn’t hard” are false statements (and the article appears to agree). First, I believe “anyone can code” is true (and generally anyone can do pretty much anything, barring obvious physical incompatibilities it’s only the matter of motivation). Second, “coding isn’t hard” is meaningless, as the verb “to code” is extremely vague. That said, understanding different subject domains is hard, and good software architecture is hard. However, the mantra repeated by startup incubators like YC applies: to paraphrase, we achieve great things because we are ignorant of how hard it would turn out to be. (I sure was ignorant when starting out as a self-taught software engineer a decade ago, and I appreciate that back then no one warned me about how difficult various aspects of it are.) I like the experience of teaching and helping (though not through selling paid courses or anything like that), it helps me understand the fundamentals better myself. When I do that, I don’t tell people that “coding is easy”—but I might say something along the lines of “don’t mind how confusing this process looks now; with good help it’s realistic for you in N months to get to a level where you can honestly earn US$15+ per hour (I will hire you myself if no one else does, as I routinely need help) and are able to continue to study by yourself”.
- carbonguy 6y agoInteresting that the author didn't really discuss WHY programming is hard; I agree that it is, but if their concern is that beginners are being misled into thinking it's easy then I would have expected they'd spend some time exploring what programming is really like rather than commenting on tangential social issues. My own experience as a programming teacher leads me to believe that one of the main difficulties for the new programmer is the level of precision with which they must be able to articulate a concept in code in order to have it work. For example, it was much more common for a given student to grasp, say, a conditional statement and when to use it than it was for them to understand that changing the capitalization of a variable meant they weren't referring to what they wanted.
- aryehof 6y agoMy thoughts are that programming is easy. After all an average 8 year old can do it. What is hard is modeling large, complex problems and systems in code, that meets its functional and non-functional requirements. The superior “programmer” is one who can to some degree perform the latter. Of course few organizations have any way to quantify these superior skills, resulting in the rote textbook question and IQ interviews that today defines a “programmer”
- ankurdhama 6y agoQuestion: Is programming hard or easy? Answer: Depends on what the program is supposed to do.
- OOPMan 6y agoAn actual decent piece of content posted on HN for once, what is the world coming to?!
- y04nn 6y agoI agree, programming can be hard when you have to solve new problems from scratch. From my point of view, programming is a creative process, like writing, anybody can write, it's simple. But few are able to write a book, and very few are able to write a good one. If you are relying on others code/libraries, you are not solving any problems, all the heavy lifting has been done for you, and you are only fillings the blanks and/or stitching multiple stories together to write the book.
- luord 6y agoProbably, the best answer to the "programming is easy" mindset I've read is this article[1] about whether software engineering is actually engineering. Turns out we are engineers, and we're not even that special as far as engineering goes. And it's funny, because the article has nothing to do with whether programming is hard or not. Not idea what Wayne thinks of the matter. [1]: https://www.hillelwayne.com/post/crossover-project/we-are-not-special/ https://www.hillelwayne.com/post/crossover-project/we-are-no...
- ceralit 6y agoI don’t remember real devs around me who would say that programming is easy. My colleague comes up to me and says "you know, mate, programming is easy", something like that? Politicians/media "experts"/programming advocates/managers can say anything, that "programming is easy", "No code/VR/AI/Zettelkasten is a thing", "developers, developers, developers". It's just words from outside. The same if I suddenly began to talk about how easily we can defeat the problem of global warming, for some reason (maybe because I have an outdoor thermometer). We just need to cool down the planet slightly, you know. Plus some events to draw attention to the problem (open up our refrigerators for an hour someday?)[0]. P.S. Ironically, the author also writes about piracy[1] (how bad it is, copying is stealing, her personal story about how he stopped, etc), but has removed the Hugo[2] copyright from footer (can be explained) and even meta info (?). I am not a lawyer, this is probably not a violation at all, but obviusly not a good tone. [0] https://imgs.xkcd.com/comics/impostor.png https://imgs.xkcd.com/comics/impostor.png [1] https://dorinlazar.ro/adio-piraterie/ https://dorinlazar.ro/adio-piraterie/ [2] https://gohugo.io/ https://gohugo.io/
- ayushinigam1999 6y agoPractice more and be patient and it will become easy over time.