Slashdot Mirror


Should We Really Try To Teach Everyone To Code?

theodp writes: Gottfried Sehringer asks Should We Really Try to Teach Everyone to Code? He writes, "While everyone today needs to be an app developer, is learning to code really the answer? Henry Ford said that, 'If I had asked people what they wanted, they would have said faster horses.' I view everyone learning to code as app development's version of a faster horse. What we all really want — and need — is a car. The industry is falling back on code because for most people, it's the only thing they know. If you want to build an application, you have to code it. And if you want to build more apps, then you have to teach more people how to code, right? Instead, shouldn't we be asking whether coding is really the best way to build apps in the first place? Sure, code will always have a place in the world, but is it the language for the masses? Is it what we should be teaching everyone, including our kids?" President Obama thinks so, telling Re/code at Friday's Cyber Security Summit that 'everybody's got to learn to code early' (video). But until domestic girls (including his daughters) and underrepresented groups get with the program(ming), the President explained he's pushing tech immigration reform hard and using executive action to help address tech's "urgent need" for global talent.

15 of 291 comments (clear)

  1. skynet by itzly · · Score: 5, Funny

    No, we need to finish Skynet as soon as we can, and then it can do all the coding for us.

    1. Re:skynet by garyisabusyguy · · Score: 5, Insightful

      No matter how good it could code, you could give skynet bad requirements and it would still give you crap

      We need to teach people how to use logic, perform analysis and give clear descriptions of what they want to happen

      Far too often I have seen 'customers' give an incomplete description, fail to understand what they want to happen and then spew at the developers that they failed

      Just teaching them to work with others and stop expecting magic unicorns to appear when they described a turd would remove half of the barriers to delivery

      --
      Wherever You Go, There You Are
    2. Re:skynet by itzly · · Score: 5, Insightful

      We need to teach people how to use logic, perform analysis and give clear descriptions of what they want to happen

      A little knowledge is a dangerous thing. I deal with people describing what they want, and in my experience, I'd much rather deal with somebody who can tell in his own terms what problems he's facing, and wants to have fixed. The worst are people who know a little bit about coding, and instead of describing the problem, they start describing a "solution" they came up with.

    3. Re: skynet by garyisabusyguy · · Score: 5, Informative

      Yup, that is how it is supposed to work. In the best case you work through the roles, use cases, develop screen mockups and a data design (usually don't show that to customer, but it should support the screens and use cases)

      However, on more than one occasion I have run into a scenario where the customer will have a single requirement (this would be for an insurance interface)
      1. Create insurance interface that meets requirements set by insurco

      Then they will include an attachment that demonstrates the line format for the output

      The following conversation goes like...

      Dev: Let's work on the process flow for adding insurance, dropping insurance, changing insurance tier (add/lose dependent etc)

      HR Customer: It's in the attachment

      Dev: Can I contact a rep at insurco to find out how they handle these cases?

      HR Customer: No, I am the only contact to insurco, everything must go through me

      Dev: Okay, but I need to be ready to handle the business cases, so will you please walk me through it?

      HR Customer: QA already signed off on my requirement document, so you have to accept it

      This continues ad absurdum through an entire dev-test cycle with full customer acceptance testing and the day that it goes into production...

      HR Customer: It's broke, you failed because it does not do what we need it to

      Eventually we find out that the HR data entry people use multiple different ways to drop coverage, many of which the HR rep was not aware of.

      Long story short, I end up learning HR's job better than they do in order to deliver anything, with them complaining about my delivery and demanding that I be removed for insubordination...

      This happened years ago in a waterfall based dev shop. I have worked earnestly since then to apply Agile, prototypes, fast turnaround for approval and (usually) taking the time to learn the customer's job because they do not know it themselves

      Simply getting the customer to accept logic, admit they do not know everything and get out of my way would help

      --
      Wherever You Go, There You Are
    4. Re: skynet by gbjbaanb · · Score: 3, Insightful

      In such cases you take the requirements document and fulfill it exactly. Then , when the customer says "but its broke and doesn't do.." you pull out the requirements and say "it does everything you asked us to do, anything further is additional development and will be billed accordingly".

      Why else do you think government IT contracts cost so much? Why else do you think Agile was invented?

      The core problem is that the customer doesn't know how to achieve successful delivery, they need to be educated in fundamental agile processes, of iterative development to evolving requirements (and by evolve, I mean "as the customer figures out what they want".

      I used to have similar problems with a customer, but fortunately I had a contact who knew the business. When I received the stupid requirements, I'd phone him and ask what they really meant. Then I'd develop what he said and deliver it to the customer who was always happy, not matter how far from the written spec it was (it helped that my contact was a senior guy at the customer or it wouldn't have worked)

  2. No by Anonymous Coward · · Score: 5, Insightful

    Most people aren't fit to code. Don't force them to do something they won't enjoy, are going to end up hating, and is most likely going to be very useless in their lives. Well, okay, many think that about maths too, but then I can see that the fundamentals of maths are needed everywhere.

    1. Re: No by garyisabusyguy · · Score: 4, Insightful

      Sure, right up to the point where the 'customer' feels like you are challenging their status by asking questions that they cannot answer (and should probably know to perform their job)

      --
      Wherever You Go, There You Are
    2. Re:No by ColdWetDog · · Score: 4, Insightful

      You may be more correct than you think - yes, we've allowed everyone to get a driver's license.

      No, civilization is not the better for it.

      Be careful what you ask for, you just might get it.

      --
      Faster! Faster! Faster would be better!
    3. Re:No by lgw · · Score: 4, Insightful

      Far too many people have built-in barriers to performing these steps

      Belief in magical entities that change the world at will, or belief in absolute rules have to be the biggest barriers.

      Coding is world built entirely from absolute rules and that's why people can't do it. They can't actually say what they mean, they just grunt a bit and expect you to have "common sense". The compiler has absolute rules, however.

      And if you don't believe in magical entities that change the world at will, you haven't debugged a sufficiently complex system. "Follow these exact steps and the problem will reproduce about 1 in 5 times, more or less."

      --
      Socialism: a lie told by totalitarians and believed by fools.
    4. Re: No by ceoyoyo · · Score: 3, Interesting

      I work with physicians. They quite often have to look things up in databases - patient records, imaging, test results, etc. Simple SQL queries would let them find exactly what they're looking for. Since they can't do that, they have to use a basic search interface somebody made (which they paid an arm and a leg for) and then look through individual records. Even more painful is watching them collect charts for some purpose. A simple script with a little SQL would do nicely, but instead the job is so painful they usually hire someone to sift through everything. That someone invariably can't write the simple script either, so does the whole thing by hand.

      Similarly, our research coordinator needs things like lists of patients with missing data. Compiling that is a two line Python program (I did it for her once) or a day of clicking. Guess which she has to do?

      I have a friend who's a due diligence type accountant. Her job is to sift through accounting records looking for stuff. There are some programs for doing that kind of thing, but only if the data happens to be in the right format. So she spends a lot of time wading through things by hand. The ability to write simple scripts wouldn't make the job automatic, but it would help a lot in searching and organizing.

      I know a secretary who is supposed to keep the boss's CV in order. She has to take new publications and enter them on a couple of web pages and End Note. The citation records themselves are online and easily accessible. If she could write some basic code it would be pretty much automatic, but instead she just types them all by hand, repeatedly.

      A friend of mine wants to make a webpage with some photos. She doesn't want anything complicated, and most of it can be done with existing open source stuff, but she wants a couple of custom tweaks. She can't do that. Actually, she can't even do the setup for the site, because she can't follow a bit of basic HTML or tweak some javascript.

      There's an immense amount of busywork that gets done because people can't write a bit of special purpose code for themselves. Not to mention the problems caused by people who don't possess the logic or problem solving skills that they'd pick up in an intro coding class.

  3. Yes we should but... by mykepredko · · Score: 5, Interesting

    It needs not to be with the expectation that everybody will become an app developer.

    Learning to code provides a person with an opportunity to develop a better understanding of
    1. How a sequence of operations is constructed
    2. How logic is part of the decision making process
    3. How to approach problems in an organized fashion
    4. How to communicate, describe and document ideas
    5. How to work with others in a collaborative environment

    My business (https://www/mimetics.ca) uses robots to teach programming, but it's important to note that not everyone will become a programmer (or develop applications for robots) but the skills learned by creating simple applications are applicable in life and will help then in a multitude of other pursuits.

    Saying that people should learn to code because at some point they will probably will have to program an app is counter-productive and will probably create some very negative perceptions about it. Teaching people (kids) programming as a way to develop the soft skills above and give them a taste of it so they can decide whether or not to pursue it as a career is much more effective and positive.

    myke

  4. We need to teach people to think, and to use tools by mtrachtenberg · · Score: 5, Informative

    Ah, the computer, that magnificent "universal machine."

    Have you ever watched as someone tries to take information from, say, Microsoft Word, and use it to do mailing labels? Especially if the information has been formatted to be "pretty." Let me tell you, it ain't pretty.

    We don't need for people to learn to "code." We also don't need for people to learn how to use particular proprietary products. We need for people to learn things like basic math, basic logic, and understand how they can use computers, with a teensy bit of effort and understanding, to accomplish their unique and specific tasks. We also need to teach people that they should not feel helpless when confronted with a computer program that doesn't do precisely what they want.

    I feel a bit Mao-ish on this subject, and truly think the best solution would be to issue a voltage surge to all existing infrastructure, and not allow anyone to buy any replacement computers until they demonstrate an understanding of their jobs (not the computers' jobs, the individual workers' jobs).

  5. of course. by nimbius · · Score: 4, Insightful

    Teaching everyone to code is like teaching everyone to become prostitutes. for some it wont be interesting enough to continue as a profession, for others they wont be proficient enough. However, if you're a wealthy man looking for a prostitute who doesnt entirely understand sex, its the deal of a lifetime and pennies on the dollar.

    --
    Good people go to bed earlier.
  6. On a related note: by ruir · · Score: 4, Insightful

    Should we teach everyone to: - work in an ER room? - be a mechanic? - operate sewing machines? - be a pilot? - be a prostitute? The possibilities are endless, I tell you.

  7. Re:This will never work by Shados · · Score: 3, Insightful

    Not everyone will become a software engineer. I learnt basic statistics in junior high and I never became a statistician. Still, it made it easier to understand charts, statistics, and help not getting duped by everything I read.

    IMO everyone should learn basics... computers are in EVERYTHING we do. I was thought basics of electronics, woodworking, biology, math, foreign languages... a lot of things that are useful in every day life, but are much less ubiquitous. Why not basics of programming?

    Then some will run away with it and become software engineering super stars. The rest won't, but will at least be able to understand enough to be able to communicate with the engineering department at their company, or maybe write little scripts on their own to automate stuff they do often.

    Why not? Its -everywhere-. They should know at least enough to be able to ask questions about it.