Slashdot Mirror


Programming Education: Selling People a Lie? (blogspot.com)

An anonymous reader writes: It's hard to exist in the tech world today without hearing the constant refrain about learning to code: "it's easy, we desperately need programmers, and everyone should learn how!" UK software developer Mike Hadlow disagrees, strongly. He says, "Formal education for programmers seems not to work very well and yet the majority of those who are successful programmers are mostly self taught. On the one hand we seem to have people who don't need any guided education to give them a successful career; they are perfectly capable of learning their trade from the vast sea of online resources available to anyone who wants to use it. On the other hand we have people who seem unable to learn to code even with years of formal training.

This rather puts the lie to the barriers to entry argument. If the majority of current professional software developers are self taught, how can there be barriers to entry? Anyone with access to the internet can learn to code if they have the aptitude for it. The evidence points to a very obvious conclusion: there are two populations: one that finds programming a relatively painless and indeed enjoyable thing to learn and another that can't learn no matter how good the teaching. The elephant in the room, the thing that Yvette Cooper, the 'year of code' or 'hour of code' people seem unwilling to admit is that programming is a very high aptitude task. It is not one that 'anyone can learn', and it is not easy, or rather it is easy, but only if you have the aptitude for it. The harsh fact is that most people will find it impossible to get to any significant standard."

13 of 397 comments (clear)

  1. Logic versus programming by TWX · · Score: 5, Interesting

    Seems to me that there's a disconnect in the way people think about programming versus thinking about math and logic. Might it make more sense to people to think logically and procedurally, then worry about applying that to a computer? Those skills are useful in life itself and are not limited to even mathematics disciplines, let alone computer programming.

    --
    Do not look into laser with remaining eye.
    1. Re:Logic versus programming by JustOK · · Score: 4, Interesting

      end of one school year, they took a bunch of students to the library. They needed to test the schedule for the following year. Some students became "Rooms", some "Classes" (e.g 6a, 7b etc) and some were teachers. The rooms were positioned, and they started the clock. Teachers went their way, classes came in. Clocked ticked on, with teachers and classes following their schedules and time tables. They looked at mis-assignments, double bookings, "traffic" jams in hallways etc. It was kind of a neat way to look at programming, although they were just testing the results of the scheduling software.

      --
      rewriting history since 2109
    2. Re:Logic versus programming by Anonymous Coward · · Score: 2, Interesting

      I studied logic under philosophy without a computer in sight. It's easy and it teaches you to understand other people's arguments... and how to find the holes in them. Sleigh of hand no longr works. If the wider population understood logic, politicians and ideologues would have a much harder time fooling the electorate.

    3. Re:Logic versus programming by mikael · · Score: 2, Interesting

      The desired solution for any problem is always some kind of plumbing taking into account user inputs, user output, databases, system state and storage. Some people can only solve a problem if they have been taught how to handle those particular "patterns" before. Creative types can come up with a solution using either deductive analysis or by writing code as they go along.

      Some projects just require someone who has read all the web page design textbooks and the patterns are fairly simple to match - create dialog form, send SQL query to database, return results to web page. Others can require intricate programming such as designing an interface unit to connect together two pieces of hardware with proprietary protocols from separate vendors. Then there is no textbook or online tutorial.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    4. Re:Logic versus programming by Rei · · Score: 4, Interesting

      I think the whole term "learn programming" leads people to think in the wrong direction. One semester should be enough for a person to learn the "basics of programming". If they can't get the basics down in that time, they're never going to. Most of the time spent on programming education needs to be not on basics or learning languages, but on getting your future-programmers to avoid the giant list of common pitfalls that programmers make in every field of programming. Teach them O(N) notation. Teach them data structures. Teach them of buffer overflow. Teach them of injection. Teach them how and when to optimize and to recognize what optimizations actually help versus just making the code confusing. Teach them to avoid directly overwriting important files, rather to write the data to a temporary and then move it to the ultimate destination to prevent data corruption during crashes. Teach them refactoring. Teach them threading and race conditions. Teach them the importance of server-side checks on data validity rather than just client side. Etc. Basically one should take a survey of people working professionally as programmers and ask them, "What lack of knowledge or bad programming habits have frustrated you the most about any of your coworkers, past or present?" - the most common answers should form the basis of a good programming education, along with whatever teaching about tools and principles that will increase their productivity.

      I really don't have too much to complain about with how my college taught CS, although some things could have been improved. I have more of an issue with some of the maths courses that were required which really had nothing to do with programming except in very specialized fields. I actually got a lot more out of my elective math courses than I did out of my required ones.

      --
      Nothing says 'welcome to the neighborhood' like a gunny sack full of dead squirrels.
    5. Re:Logic versus programming by TheRaven64 · · Score: 4, Interesting

      TFA seems to be completely missing the point. We're not teaching programming because we expect everyone to be a full-time programmer, we're teaching programming because it's an important life skill. Even if they just learn that there are some tasks that can be automated and when to ask a professional programmer to do it (and, ideally, what tasks can't easily be automated) then that's a huge win. If they can do the simple automation tasks themselves, that's even better.

      How often have to seen people in admin jobs spending ages doing something in MS Office that half a dozen lines of VBA could have done in under a second? Eliminating that is the kind of productivity win that we expect to see from teaching everyone a little bit of programming. The argument makes as much sense as saying 'most people won't become novelists, we shouldn't teach English', or 'most people won't become accountants, we shouldn't teach mathematics'.

      --
      I am TheRaven on Soylent News
  2. What a load of CS-degree-holding crap by Anonymous Coward · · Score: 2, Interesting

    "High aptitude task" my ass. Programming these days is assembly line work at the direction of your team lead. It'll be automated away soon enough.

  3. Geometry by Anonymous Coward · · Score: 5, Interesting

    Back In The Day, I had Geometry in High School. 10th grade.

    I don't know what others Geometry classes looked like, but ours was proofs. All proofs, nothing but proofs. We never did anything with compasses, protractors, straightedges, etc. Just proofs. Day in and day out. First 6 weeks was vocabulary, the rest of the year -- proofs.

    Strangely, at the time, we had Saturday classes -- just the way it worked. I had to go in to Geometry class on Saturday, all of the students did.

    But on those days, the teacher would basically hand out worksheets and we would work problems. These worksheets typically had 3 problems on them.

    I would finish those problems in 2 minutes. Literally, zing, zang, bing, bang, boom. Done.

    For me, proofs in Geometry were trivial. As the year advanced, we simply adde more theorems and axioms to tap in to do the proofs, but the logic -- that was all the same. Since Geometric proofs are all about logic. Damnable, inarguable logic.

    "Teacher, can I leave now?" "No! You must stay here the entire class." he'd shout at me as he was helping some other student. And we all know that student, perhaps it was you. The student who Did Not Get Geometry and proofs. They'd been sitting in that chair the entire year, and, never "grokked" it. All they can do is struggle.

    So, it was no surprise that I took to computer programming like a moth to flame. I get it. I'm good at it.

    And I know there are a lot of people who will not be. I did not know Geometry going in, heck I don't know it now -- it's been so long. But they did not have to teach me Geometry per se, they had to show it too me, show the logical relationships, how it starts, and that was it. After that, just feed me theorems. Operations that I can use.

    I have no problem with children being exposed to programming. That's how you find people like me. But I think, with the ubiquity of it today, when you could program on your cell phone if you were so inclined, the people that will do well and attend those classes, will already know what they need to know before they even go in.

    But it's like the Force. You have it or you don't. Some have it stronger than others, some develop it more easily than others. But if you don't have it, the Force won't be with you. No matter what Master Jedi you train under.

  4. Re:Agile/Scrum == hot potato by delusrexpert · · Score: 2, Interesting

    Agree 100% after nearly 15 years in IT as a professional and many years programming as a child I got out of IT the day the DBA googled the phrase "cartesian join" just after I mentioned it. I'm now a tradie after mentally taking my work home most nights and the personal time required to keep up to date with languages, algorithms, methodologies, different technologies and on and on and on I'm so glad I made the transition.

    I'm so glad that now the only thing I take home are my dirty hands and the skills set that I now require gets better on every job instead of having to spend hours of my own time trying to keep afloat. Recruitment agencies and hr don't understand your code and the IT dept aren't going to review your code and spot the ways you handled the problems you encounter but as a tradie pictures of my work speak for themselves and anyone can understand whats going on.

    I still love to code thou its in me those self-taught will understand.

  5. Re:Majority of successful programmers uneducated? by Anonymous Coward · · Score: 2, Interesting

    I've met people like you before. I have found those like you lack severely in one area (probably some of you don't)

    I left work one day and came in the next day to find a bunch of guys, like you, still at work from the night before. They were excited because they came up with a speed up for their software. They implemented a rebalancing binary tree, but invented it themselves on the fly (Years ago before there were a lot of libraries that did this). They were so excited and explained it to me in great detail, what they did was very close to an red-black binary tree.

    Had I been there and they told me what they needed to do, I would have told them to look up red-black binary trees. They would have been done by 10 PM and gone home. Instead they spent the entire night "inventing" it and debugging all the issues involved.

    Obviously pretty smart, hard working, and everything else good you can say, but not efficient. If they had taken typical CS classes they would have known it existed already and just copied the algo. Other than not knowing some of which basic things were possible they always spent a lot of time redoing stuff they didn't need to.

    Probably wouldn't happen nearly as often today with all the libraries being used all the time.

  6. Degree vs self-taught is a bogus comparison by perpenso · · Score: 3, Interesting

    Also, having a CS background (I didn't say degree - there is a difference) WILL make you a better programmer because you'll have an understanding of what's going on behind the scenes.

    And often a greater breadth of knowledge. One of the advantages of a formal CS program is that one will most likely take classes in topics a student has no interest in. Yet those topics may be important or yield info that unexpectedly solves problem in other areas/topics. Many self taught tend to skip a topic or two and have gaps in their knowledge.

    That said, in a formal CS program there are two obvious groups. Those who are there because they have a genuine interest in coding and the problem solving it involves, and then there are those who are there because someone told them it is a good career path. While both can graduate, the former (genuine interest) tend to be far better programmers. They will learn something, or more importantly do something, just for their own curiosity. Things unrelated to class assignments, and they learn more and become more proficient.

    So the whole degree vs self-taught is sort of a bogus comparison. Many top programmers are both, degree and self-taught are not mutually exclusive.

  7. Re:It's not entirely a lie by ImprovOmega · · Score: 4, Interesting

    Programming education should try to find people who have the aptitude to be good programmers and quickly weed out those who never will.

    I had a professor in college who would actively and zealously apply this principle. His class was the one gateway class in all of the computer science department - if you couldn't pass his class, you couldn't get a CS degree period. When I was an undergraduate I remember his class being a lot of work but surprisingly engaging and with interestingly tricky problems to solve. When I was a graduate student I got to see behind the veil a bit and he explained how those tricky problems would separate out the folks that shouldn't have been in the class in the first place. I always thought that was kind of cool, that he cared about the state of the field that much to not want people who shouldn't have a CS degree to get one.

  8. Re:Agile/Scrum == hot potato by 605dave · · Score: 4, Interesting

    Sadly I think this is way too true. What are people going to do when robots can build a house or a bridge? Or when everything else turns robotic, like cars. What are people going to do? The reality is that we will have to move to a world without money because no one will be able to make any. Only those at the top will have a source of income, ownership of the automation.

    Reading that last sentence I wonder if Marx wasn't somewhat right. Those that own the means of production are going to end up with all of the power.

    --
    Be kind, for everyone you meet is fighting a difficult battle. - Plato