1. 11

  2. 23

    I’ve come up with a simple analogy to help explain to non-programmers, that I think really gets to the heart of the issue: cooking.

    Is it hard to make a meal? Well starting out, it’s easy to learn how to boil an egg, cook some vegetables, or even make a basic stir fry and rice. But how long would it take you to practice and learn so that you could serve a quality 5 course meal to 8 people at once in a limited amount of time?

    This analogy is of course terrible and an apples-to-oranges comparison, but pretty much everyone has some experience with cooking - so it works particularly well at conveying the effort involved. They both require significant time, dedication, and practice.

    It’s “easy” to learn how to write a small program that you yourself use. But writing workable software for others to pick up and enjoy? That’s hard.

    1. 7

      I think this analogy hits a lot of important points. Like cooking, programming is more difficult when there’s limited time, when you have to combine multiple seemingly-easy tasks, and although the output (taste) should be all that matters, presentation is also important.

      1. 3

        And also, doing it well when it’s just you takes a very different set of skills and disciplines and tools than doing it well as part of a team, but the beginner lessons only ever cover the solo stuff.

      2. 5

        This is a great analogy. Some programmers are content to be perceived as wizards of a special caste of people who were born to code. The cooking analogy pulls back the curtain. As Gusteau said in Ratatouille, “Anyone can cook.” The question is, do you enjoy it?

        1. 5

          I like the analogy too, but I have a very different read.

          A lot of people want clear instruction, approachable and easy to operate stations, and a large number of people just like them they can ask for help, but don’t realise that means they’re working at McDonalds.

          Real gourmet isn’t going to have any of those things; Michelin doesn’t rate restaurants on how “readable” their recipe cards are, but on the standards of the experience patrons have enjoying the restaurant.

          So why do most arguments about programming ignore the final product? Can people agree coding is like cooking but still think python and java make a tasty meal? Doesn’t anyone else feel bloated trying to eat a fifty megabyte hello world, and think maybe there’s something wrong in the kitchen?

          1. 2

            This analogy is a goldmine!

            So why do most arguments about programming ignore the final product? Can people agree coding is like cooking but still think python and java make a tasty meal?

            This depends a ton on what you think “the final product” is. Is it the flavor or is it the calorie count or is it the rare ingredients? Are you critiquing how the sausage was made, or how the sausage feels in your mouth? Any of those answers could be correct depending on who you’re asking.

            A skilled chef can come into your home and make an amazing meal out of the cheap leftover ingredients you have in your fridge and pantry. (And you can watch it on TV!) A novice chef will make a mediocre meal at best if you put them in a fully-stocked three-Michelin-star restaurant kitchen and tell them to go nuts.

            If your tool is PHP, maybe you write some hobby web site full of SQL injection vulnerabilities. Or maybe you write Wikipedia.

      3. 9

        It’s like how people always say “math is easy” or whatever.

        I went to high school with a guy who is now at Google. He taught himself calculus in elementary school. He was going to the local university during the day in high school to take advanced mathematics.

        I have no doubt that I or anyone else could theoretically have gotten that good at mathematics had we applied ourselves and worked hard and whatever, but it’s silly to say that he wasn’t “better” at math than I am.

        1. 8

          Oddly enough, the logical conclusion here is that most programmers don’t know how to program. Instead, they know how to create, maintain, and modify extremely complex pieces of programming logic deployed in sometimes byzantine ways. … So they’re not the best people to be talking about whether programming is hard or not. They don’t know. They’ve never done it.

          If that’s the logical conclusion, then one of your premises is wrong.

          1. 4

            I was being too clever by half. My apologies.

            The premise of the article is that the word “programming” is so vague as to mean lots of different things to lots of different people. This was expressed indirectly in the second paragraph: “…“Is programming hard?” is the kind of open-ended question that anybody who has ever programmed feels qualified to weigh in on. It’s provocative. It’s click-bait….”

            I then decompose the question into various more specific questions, answering each one as best as I can, then concluding that all of these answers cannot be true at the same time. Yes, the problem is in the premise, but it’s not a logic problem, it’s a definition problem.

            My reason for writing the essay was to continue to encourage programmers to have a better personal definition about the work we do. My belief is that better definitions will lead to better outcomes and happier, more productive work environments.

          2. 7

            Programming has a low barrier to getting started. It also has a low barrier for continued growth. If you are willing to put in the effort and enjoy it enough to keep at it then there are very few barriers to your growth. This doesn’t mean that if you are someday working on a complex distributed system that what you are doing is easy. It will have probably taken you many years and a considerable amount of hard work to get to that point but the barriers to the information you needed to grow were probably very low.

            It also doesn’t imply that everyone will be motivated to achieve that level. It doesn’t necessarily mean that they weren’t smart enough or skilled enough to do so. Maybe they had other interests. Maybe they were content with where they were. The recent conversation about programming is easy I think dances around the point a bit.

            Programming is easy start but takes real work to master.

            1. 3

              The problem is that far too many programmers think they’re doing this when, in fact, they’re just constructing some Rube Goldberg machine that generations of programmers later will curse and bemoan.

              Too true