Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Programming Education

Better Tools For Programming Literacy 317

waderoush writes "Adam Wiggins, co-founder of Heroku, agrees with anthropologist Bonnie Nardi that programming isn't just for geeks. The problem, he says, is that today's tools for teaching programming are woefully inadequate. In a commentary, Wiggins argues that there are two major gaps preventing programming tools from being accessible to beginners: 1) they're too fussy, requiring extensive setup, and 2) they're focused on the technology rather than everyday tasks. A good tool for learning programming, Wiggins argues, would emulate an Excel or Google Docs spreadsheet – beginners would be able to fire it up instantly, and would be able to get useful things done right away. (He's dismissive, though, of visual programming tools that 'attempt to hide logic behind a point-and-click interface.') 'Broad programming literacy is crucial in a world increasingly made of computers,' Wiggins says. 'Despite common stereotypes, programming is not out of reach for the average person,' as long as the tools are easy to set up and specialized on the programmer's task."
This discussion has been archived. No new comments can be posted.

Better Tools For Programming Literacy

Comments Filter:
  • by gweihir ( 88907 ) on Wednesday January 09, 2013 @06:33AM (#42530053)

    It is a far more demanding task that "geek" would qualify you. It requires talent, education and experience. Those that gripe about the tools do not get it or have never gotten beyond toy examples. Sure, a better tool helps. But when you create software (as opposed to slapping together some disaster waiting happen), the direct level of skill needed to use the tools is actually a minor concern. In fact, the language used is a minor concern, the problem is what matters. Insofar I even agree with the article. But refusing tools that are a bit complicated is the hallmark of somebody that does not get it.

    Case in point: Pen and paper are exceedingly difficult to use for writing. Yet we spend years on every person to qualify them to use it. Yet compare the complexity of pen&paper on one side, and a computer on the other side. Anybody expecting the computer to be easier to use just has no clue at all.

    All that "simple" to use tools for software creation do is cause even more really bad programs to be written, as suddenly everybody and their grandmother thinks they can do it. Like giving calligraphy pens to amateurs. Sure, they can produce some smears, but they cannot produce anything worthwhile.

  • by Shinmera ( 2514940 ) on Wednesday January 09, 2013 @06:52AM (#42530161) Homepage

    It seems to me that a great deal of people have this idea in their heads that any and everyone is able to do any and everything. This is bollocks.
    Furthermore, blaming the inability to get interested in something or to cross a certain difficulty barrier on the tools is just laughable.

    If one can't take the first step in programming and get acquainted to the tools, he won't be able to make the later steps either. It takes commitment and interest. Reducing the first barrier won't bring a lot better programmers, it will bring in a lot more bad programmers that get stuck half way through and don't really help anyone.

  • Pointless article (Score:5, Insightful)

    by gigaherz ( 2653757 ) on Wednesday January 09, 2013 @07:01AM (#42530193)

    He's saying programming is not as simple as Excel because programming doesn't have an equivalent of the SUM() function that does almost all the work for you when you are new to it.

    Yet, excel never tells you that you have to use the SUM function, or that A:A means the whole A column, or that $1$3 means it shouldn't change the row/column when spreading the formulas. But he wants the development environment to somhow not require knowledge of how a loop works, or what an array is?

    The problem isn't that programming is harder than Excel, at least not if you use a full-featured IDE with a decent language, like Visual Studio with C# 4.0. You can learn to drag a few controls to a new window, double-click on a button, and write something like "MesageBox.Show(textBox1.Text);" in seconds. No knowledge of arrays or functions necessary.

    Programming is NOT harder than excel, and there ARE tools that make it as easy as possible. Anything else requires "visual programming" which he states he doesn't want, either. But of course, excel doesn't "hide the logic" from you, right?

    The fact is, you need some basic knowledge to do any job. Excel requires knowing the syntax and function names, so does general-purpose programming, just like you need to know the parts of a car, and their use, if you ever want to build one from scratch.

  • by mwvdlee ( 775178 ) on Wednesday January 09, 2013 @07:18AM (#42530253) Homepage

    Considering that a basic devkit like Eclipse (sufficient to write a lot of Java code) can be set up by downloading, unzipping and double clicking on the file with the colorful picture, I can only concur.

  • by Anonymous Coward on Wednesday January 09, 2013 @07:28AM (#42530289)

    Bullshit. Programming still is *piss-easy* compared to our actual mental abilities. Everyone of us does all the stuff you need for it in daily life anyway:

    Everyone of us uses the concept of identifiers (think variables), when we say “he" instead of "Jim", or even "Jim" instead of shoving that person in front of your eyes.
    Everyone of us uses the concept of sequences of commands, when making a to-do list.
    Everyone of us uses has no problem with including tasks into that to-do list, that themselves are a set of steps one could write down somewhere else.
    Everyone of us is able to say "Do this 10 times.", "Do this for all people in the room.", or "Until you have at least $1000, keep on saving.".
    Everyone of us is able to make lists, use property lists (dating site profiles, etc), handle tree structures (company hierarchies, file systems), and even more complex ones.
    Everyone of us uses grouping (think modules) all the time in daily life. It's part of how our brain works, to group things into classes.
    Everyone of us can use and understand the concept of expressions, when we read and write recipes. (Which essentially are programs: dinner = [(simmerFor (10 min) (add [cream,whiteWine,(dried chickenBroth),nutmeg,(piecesOf broccoli),salt,pepper,garlic] (fried (chopped chickenBreast)))) + ((cookedIn saltWater (8 min)) tagiatelle), readyMadeGarlicyFriseeSalad ].)
    You do the next one.

    There is absolutely nobody with a normal working brain who can't program. With the right interface and presentation, your grandma can program medium-sized software packages, no problem.

    And most importantly: There's nothing wrong with small shitty scripts grown from one-off one-liners.a

  • It's not the tools (Score:3, Insightful)

    by Anonymous Coward on Wednesday January 09, 2013 @08:01AM (#42530437)

    This has been tried so many times before. The simple fact is that most people can't program.

    Simpler tools, or better tools, can ease the incidental burden of having to work with a program.

    What they can't ease is the cognitive load of having to remember patterns, and abstract objects, and nested function calls. Most people can't deal with this.

    Mr Wiggins has probably forgotten, as I have, the difficulties one faced and overcame when one first learned to program, and so he's forgiven for thinking that if we just made the environment simpler anyone could do it.

    I'd argue that python at the shell is pretty simple, but most people can't or aren't motivated to do even that.

    This thinking is like saying "a full piano is too difficult, so if we give people a little toy piano they'll be able to learn to play".

  • by martin-boundary ( 547041 ) on Wednesday January 09, 2013 @08:01AM (#42530439)
    No. Writing is an excellent example here.

    Think about ALL the people in the world. There are billions of people who've learned to write, but how many of those can _really_ write a letter if they have to? I'll accept even people who write with bad grammar and spelling mistakes. All I want is people who can write an actual letter that is sufficiently intelligible to serve a simple purpose.

    Well? I expect less than half of those who have learned to write are actually able to do so. And if they can't even write a letter after having been taught the alphabet, neither can they write a program if they would be taught BASIC..

  • by slim ( 1652 ) <john@hartnupBLUE.net minus berry> on Wednesday January 09, 2013 @08:13AM (#42530485) Homepage

    You could learn to do cryptic crosswords. Most clues are modelled around a handful of patterns; general knowledge is a barrier, but you can allow yourself Wikipedia.

    Your grandma could learn to program; it might not be worth it, depending on her age and ambitions.

    All of these skills are learnt, learning takes time, and it's an opportunity cost. If I'd spent less time learning to code, I might have spent it learning to draw, or practising guitar, and I'd be better at those things. That's not about mental ability; it's about choice of specialisation.

  • by feedayeen ( 1322473 ) on Wednesday January 09, 2013 @08:13AM (#42530493)

    Considering that a basic devkit like Eclipse (sufficient to write a lot of Java code) can be set up by downloading, unzipping and double clicking on the file with the colorful picture, I can only concur.

    You are missing a few steps, like installing the JDK and possibly installing the JRE, figuring out what the heck this workspace thing is. The Hello, World example you copied from the Internet also doesn't work because the package doesn't match. Congratulations, Hello, World compiles in Eclipse, but you want to see it as a standalone program. You click on your .java or .class file, 'Windows can't open this file'. After googling the problem, you find out that you need to run it from the command prompt by typing "java hello.class" so you become comfortable with cd.. until you get to your workspace and find the 'bin' folder. You try it, 'java can not be found or recognized'. Now you have to add the jdk to the path.

  • by Anonymous Coward on Wednesday January 09, 2013 @08:23AM (#42530539)

    But you must understand the concept of "identifiers". Before you are 9-10, the name of your mother is useually just "Mom"... but so is everyones mother is named "Mom"... So now it is "joeys mom"... which is not "my mom"... and neither is a correct identity.

    Concept of a sequence of commands - not until you are told "No" long enough. The problem is not the concept of a sequence, but one of generating a sequence. And doing it properly is hard. It takes over twenty years for people to write a sequence of words correctly... even then they will do it wrong. As for a "to do" list - how many times are things left out. BTW, a "do do" list isn't ordered - it is a random list of things to do with no specific ordering implied.

    But saying "Do this 10 times" is frequently an exaggeration... and therefore not really done. Especially when 5 is enough. Or it really needs to be done 20 times... or even forever. And "keep on saving" always has an exception you don't expect.

    Nearly everyone handles lists.. If they can read. And comprehend what they read. Not everyone comprehends organization into trees. That is why you still fine people with thousands of files in one directory (which is also promoted by the worst operating system ever foisted off on the world).

    The same problem applies to grouping. Modules are not general. And they are not understood by people that do not understand tree structures either. Programming modules are founded in mathematics... and most people do not understand mathematics either.

    expressions... Right... Like, you know, really. As if... But people DON'T understand logic, for the most part. And how many times are recipes are "for disaster". It takes a decent cook to understand recipes in the first place. A recipe does not include directions on how to use utensils, or even the names of the utensils. And you expect the unknowing to be able to write a recipe? And your recipe is not understandable - what are [( for? and what is chopped chiekenBreast - 1 inch size, 1/2 inch, or is that 1/4... And your recipe would not be understood by a chef.. Did you write it in LISP?

    As for programming - it takes discipline, logic, understanding limitations, understanding the language...

    And there is a problem with crappy scripts grown from one-off liners - when someone else has to fix them. Or you forgot what it was for and have to fix it yourself.

  • by gweihir ( 88907 ) on Wednesday January 09, 2013 @08:41AM (#42530639)

    You fail to see the problem. What you describe is the "primitives" of a simple programming language. Understanding them does not help you write software of any meaningful complexity. Your argument akin to saying somebody that can carry around a brick and put it somewhere is able to build a house that is comfortable and durable. Not so, rather obviously.

  • by gweihir ( 88907 ) on Wednesday January 09, 2013 @08:45AM (#42530663)

    As I said, there is a mechanical component, namely interfacing the tools. It is a minor part of the whole. You can learn to play the guitar all you like, you will never be a good jazz-guitarist or guitar composer unless you have quite a bit of talent. Sure, you can plunk the strings and may even be able to play sheet-music with some degree of accuracy. But that is not worth a lot.

    The architecture and design of software is not something you can learn this way. Algorithmic is not. And the real-world problem analysis skills required to have your software actually solve a problem are not either.

  • by gweihir ( 88907 ) on Wednesday January 09, 2013 @08:51AM (#42530697)

    I am not confusing them. A reasonable programmer needs at least some software engineering skills. Otherwise you get people that write unreadable code, use the wrong algorithms that break systems because they just do not understand what goes in and the characteristics are, etc. Sure, once you have a detailed flow-diagram, putting that into code is just a mechanical exercise. But who do you think fills in the details here? A software engineer? Unlikely, far too expensive and then they could fire the programmer and have a secretary do the final step.

    Also case in point: If the programmers cannot handle the tools and you say everything that actually requires understanding of the machine, the problem, the solution architecture and design and some a bit harder to use tools, what competencies are left for a programmer? Is a programmer in your view just a hired moron doing the job of a per-processor?

    As to BASIC: That just leads to people that think they can program, but cannot. Even worse.

  • by martin-boundary ( 547041 ) on Wednesday January 09, 2013 @09:01AM (#42530775)
    While I agree that it is worthwhile to _expose_ as many people as possible to programming, I think you are being overenthusiastic about the expected success rate.

    Programming teaches logic, expression of thought, and troubleshooting: all useful skills in many other fields.

    Yes, except... writing teaches logic and expression of thought too, in a much more freeform and forgiving way. It doesn't even need a computer, just a pen and paper. The fact is that as a civilisation, we aren't doing that well on the simpler problem of writing, why should we do better with the more complex task of programming?

    With that said, I agree that not everyone is going to be able to learn. But it doesn't require any exceptional skills or traits either.

    Statistically, I've got to disagree with that statement.

  • by slim ( 1652 ) <john@hartnupBLUE.net minus berry> on Wednesday January 09, 2013 @09:03AM (#42530789) Homepage

    But TFA isn't about everyone becoming Donald Knuth.

    Millions of people derive great satisfaction from mediocre guitar skills (I know people who get a lot of pleasure from their guitars, who can hardly keep rhythm). There's a class of people who could get value from *very* basic programming skills.

    Difficult problems are difficult to solve, and require talent, experience and insight.
    Easy problems are easy to solve, and don't require as much talent, experience or insight.

    Example: an artist using Photoshop decides he needs 20 layers in progression of shades. Creating each layer takes 8 mouse clicks, including a fiddly colour dialogue. Or, he could write a for() loop in some scripting language or other, and create the layers in a few seconds -- and add the tiny script to their arsenal for reuse.

  • by kestasjk ( 933987 ) * on Wednesday January 09, 2013 @10:15AM (#42531443) Homepage
    Why not hire someone to fill the place within the organization? I interact with a lot of people on a day to day basis who are very smart and knowledgeable within their fields, but when it comes to automating some mundane task or sharing information in a structured way it's outside of their area of expertise.

    There are three possible approaches in that scenario:
    • They learn how to script / code themselves (most of them won't have the time/stamina, and even if they did they wouldn't be able to share the results so you get duplicated effort)
    • They hire an external company to write the software for them (but the overhead of dealing with another company that doesn't know your business and needs formal requirements can be huge, and you can still get the duplicated effort / lack of sharing)
    • You have an in-house team (3 people for 1500+ employees does the job for us), that manages custom software for specific purposes. They can direct people's requirements to either being 3rd party, having too high cost / reward, or requiring in-house software. With access to all the existing databases, with intimate knowledge of the business, with ties to various departments within the business, they have not only the skills but also the business knowledge, the access, and the relationships, to ensure that necessary software can be developed quickly, efficiently, and then propagated to any other staff / projects which need the same thing.

    You can't have an in-house team that tries to reinvent the wheel and write software where it's unnecessary, that's pure waste, but for a large organization having a small team that can take care of things that really do need to be done in-house can give a big competitive advantage.

  • by eulernet ( 1132389 ) on Wednesday January 09, 2013 @10:29AM (#42531583)

    This is because people are not interested into the problem, they are only interested by the solution.

    And this is true for everybody: personally, I don't really care about how my car works, I just want that it works.
    When it does not work, I go to a garage to solve my problem.

    Trying to simplify programming will only give a false sense of expertise, because REAL programming is tough: it's about solving abstract problems.

    No matter the difficulty of the subject, there will always be people who are interested in understanding, and people who don't care (even if it's simple).
    So I would prefer that, instead of training people who don't care about programming, we train people who are interested into programming.

    And the best tool to make people interested into programming is games, because a lot of programmers started programming because they wanted to write their own game.

  • by slimjim8094 ( 941042 ) on Wednesday January 09, 2013 @10:52AM (#42531821)

    The VCR clock was required to set up a scheduled recording, so hardly pointless. People wanted to be able to do that, but couldn't because they couldn't figure it out. I think the gp's example holds

  • by HeckRuler ( 1369601 ) on Wednesday January 09, 2013 @12:35PM (#42533279)

    All I want is people who can write an actual letter that is sufficiently intelligible to serve a simple purpose.

    Dear mom,
    We're out of milk.

    for(x=0; x!=100; x++)
    if(cell(x,1) == 5)
    cell(x,2).value = "good";


    What? Do you think programming or writing are some sort of high art that the plebs can't comprehend? Doesn't my letter serve a simple purpose? Doesn't it convey a thought? Doesn't the for loop perform a function?
    No, most people will never be professional programmers, or write "moderately complex" software. Because they don't have to.

    but how many of those can _really_ write a letter if they have to?

    No true scotsman fallacy. Get off your high horse.

    I expect less than half of those who have learned to write are actually able to do so.

    That's because you have an EXTREMELY jaded and cynical outlook on humanity. Go talk to some people.

One man's constant is another man's variable. -- A.J. Perlis

Working...