← Back to context

Comment by arxpoetica

11 years ago

> There have been countless attempts to make software easier to write...Decades of efforts have gone into helping civilians write code...Nothing yet has done away with developers, developers, developers, developers.

I still believe. Someday, somewhere, something incredible will emerge for the right-brained bourgeoisie and literati.

Theres tons of successes, we just refuse to count them. Photoshop (as hinted in the article), is a super special purpose language for doing image operations. It no longer "looks" like coding, so we don't count it as coding for the masses. Excel is a much more general purpose language used by tons of "non-coders" (and arguably the most popular programming language on earth). Again, doesn't (often) look like normal programming, but then again, shouldn't this be expected? If it looked like normal programming, it would be normal programming and not successful.

  • Excel is a perfect example. The core Excel experience is basically functional programming on a virtual machine with a matrix address space laid out visually right in front of you. It even looks like traditional programming if you dive into the VBA stuff, which plenty of non-technical specialists, including MBAs and managers, do on a regular basis in the pursuit of solving their problems.

    Any specialist user willing to invest some time in learning their tools can do this. A culture develops around it.

    And replying to parent: those efforts around teaching 'civilians' to code are probably misguided. The investment needs to be in adding scripting and programmability into existing line of business tool, not on encouraging people to sit in front of an isolated REPL disconnected from any business value or context.

    • +1; many companies have tons of internal processes which rely on Excel sheets. When these become painful enough, another team (internal applications) can come in, evaluate the situation, and build out a custom solution which uses an actual database, but Excel still provides a ton of value, since at the most basic level it's a database table with no validation and a free-form schema.

      The downside is, when all you have are Excel sheets, everything looks like rows and columns (and not e.g. objects with behaviors). If Excel had more robust import/export mechanisms that normal users could understand (e.g. built-in REST client with JSON + XML serializers + many database adapters w/ lots of helpful wizards or tools to guide you), it'd be way more powerful. Then again, if someone is at the point where they'd be able to look at some JSON and compare it with their spreadsheet and be able to describe the mappings, they're possibly better off going to some training sessions on ${your favorite programming language} to learn how to do this the easy way.

      1 reply →

    • Thanks to John Foreman's book "Data Smart" I now regularly test small-scale machine learning problems in Excel. Sure, a developer will translate the end result to scikit-learn or AzureML, but this is stuff that's easily available to even mildly-technical enthusiasts.

  • Two other more contemporary examples are the Android app Tasker, and the website IFTTT ( https://ifttt.com/ ).

    There's something about calling it programming that turns certain people off. I remember a story about a freshman in a physical mechanics class that complained about all the MATLAB code they had to write. The professors retort was that they were free to use a slide rule instead, and that particular freshman stopped complaining.

    But you're right. The mere act of calling it programming is somehow a problem. It's as if doing programming pigeonholes you into being a programmer until the end of days.

    • > The mere act of calling it programming is somehow a problem.

      There are some words that carry with them unshedable connotations that people want to get away from so strongly that they will call themselves something else at the first possible instant. "Programmer" is one of them.

      "Poet" is another. No one makes money from poetry because as soon as a poet makes money they are something else: a musician, a performer, a copy-writer, whatever.

      Just don't call them a "poet", because "poets" are poor, sad people with no future, just as "programmers" are neckbearded nerdboys who smell bad, and no matter how many programmers (or poets) fail to live up to those stereotypes people will continue to impose them on reality come hell or high water.

      1 reply →

    • Kind of like how calling programs for proofs seems to make most programmers uneasy. (Not that most programs that you'll run into are proofs in any interesting sense.)

  • I concur with your assesment. The point is not to turn a syntax into an AST into processor code. The point is to provide things of value and 'easy' computing platforms targeting users who are not professional programmers create tremendous amounts of end user value.

    Sadly, when I point this out professional programmers often go 'pffft - that's not real programmming' as if being knees deep in stack traces and gigantic code bases was a something with intrinsic value.

  • I'm not sure I agree with you about Photoshop. Perhaps (probably) there are photoshop macros or pipelines that are closer to programming, but most people use Photoshop purely in an interactive mode. They enter commands directly, and the logic stays in the users' heads, not in the computer.

    Photoshop is more like a REPL tied to an image-processing library than it is a programming language.

    • A Photoshop "program" would consist of the composition of image layers, adjustment layers, blend modes, styles, masks, text blocks, shapes, paths, and so on. You "run the program" when exporting to a bitmap format.

      It probably doesn't help to think about it that way when using Photoshop, but it might be a useful mental model for developing Photoshop, or as an example of how a general visual programming language UI might work. Importantly, Photoshop does not give you a bunch of little boxes with arrows crisscrossing everywhere like all the clumsy and disappointing visual programming experiments I've seen.

      Maybe "visual programming" is like "AI". Whenever you make something that actually works, it goes by some other name.

      5 replies →

  • Remember when search engines had Boolean operators?

    • Honestly I never heard of search engines working with boolean operators.. I just did a quick search and found this interesting article which gives information about websites using AND, OR, NOT, venn diagrams and concept declarations to deacrease the search node graph....How long ago this search mechanism terminated ???

      5 replies →

  • I would say that Photoshop is a toolbox of predefined tools. If using that is coding, then people are also coding when they choose and use a screwdriver, some sandpaper, a hammer and some glue in succession from their physical toolbox to get a job done. That the operations happen electronically and that they are implemented as complex mathematical transformations of pixels doesn't change that.

    Excel isn't much different in my view: most people are only using a very limited set of predefined tools to get a job done. Often badly: it is well known that there are many bugs in important, company critical Excel sheets. Excel seems like coding because it is mostly used to perform the fundamental mathematical operations we all associate with coding. But if that is coding, then so is constructing a Rube-Goldberg machine for a specific task from the parts you happen to have available. A nice exercise in problem solving under constraints. Which certainly has something in common with coding. But that doesn't make it coding.

    • Using Photoshop is instructing a computer to perform a series of operations, necessarily fairly high level ones, but conceptually not that different from text-based coding. I agree it stretches the definition pretty thin: where's the control flow? Conditionals?, but are those things really foundational characteristics of programming languages or are they simply the equivalent 'predefined tools' that, say, C gives us?

      Excel is much closer to traditional programming: it's basically a purely functional language (absent VBA), but instead of a linear description of the program in a text file, you're in effect embedding functional code inside a virtual machine's memory.

      EDIT: I suppose an important question about Photoshop is, can you do computation in it?

    • Well, if you wanted to be absurdly pedantic, you could call instructions in an architecture predefined tools, or protons and electrons.

      I don't think it matters if the tools are predefined - what matters is that they can be used together to build a system greater than the sum of it's parts.

      1 reply →

  • Yep, great examples. Also, pretty much any experienced Photoshop user will create their own actions to automate common operations. And then you have things like workflows in Alfred.

The trouble is that so much of what we call "programming" is actually the process of identifying all the implicit assumptions that go along with an idea and making them explicit. In other words, if you knew what to ask for in an unambiguous way then most of the "programming" would be done already.

I'm working on a longer essay but that's the short version.

  • This is a driving force behind the pedagogy of SICP -- to think in recursive functions. If you can break down your task into sub-problems and describe them clearly you just have to put a few parenthesis around it.

    Programming isn't so much about the "code" or syntax; it's semantics and intent aligned with the machine.

    If you can express your problem clearly then the program practically writes itself.

Not just the right-brained. I want that as a professional software developer. I want a computer that will do what I thought, instead of what I foolishly typed.

Basically, I want a computer as smart as a good junior dev so I can just yell my brilliant ideas at it, and it will do the dirty work for me.

   I still believe. Someday, somewhere, something incredible will emerge for the right-brained bourgeoisie and literati.

I don't see it ever happening: because the bar of expectations rises at the same rate at which the tools improve.

For example, think about what the NYTimes website looked like in February 2000:

   http://web.archive.org/web/19990202013312/http://www3.nytimes.com/

That probably took millions of dollars and a team of engineers back in the 2000. In 2015, a reasonably computer-literate person could do something close to that with SquareSpace or Wordpress.com in probably.... a week?[1]

But that site would never pass muster in 2015. Something 10x (if not 100x) more complex is required for NYTimes.com in 2015, plus various native apps, plus a subscription service, and so forth. So you still need a team of engineers...

____ [1] I'm talking about the act of putting the articles onto a website, not reporting and writing the articles, obviously.

Scratch seems to me like an example of what a "real programming language for everyone" could look like.

Indeed, Lego Mindstorms is based on a similar principle, and it's used for programming robots!

I don't understand why people believe 'everyone' should be able to write code without much trouble. Virtually every activity requires focus and exercise to learn. Example: you can't just take a hammer and start building furniture or you will create a mess. If you want something nice and useful, you need to think about what you want to build, how you are going to construct it, which materials you need, which tools you need. You need to experience how the materials behave, try out certain subconstructions, research what specialized tools exist. I believe this idea that 'everyone' should be able to code is like expecting everyone to be able to build furniture. If you want to, you can learn how to build furniture, but it's not easy and will never be easy. Why would coding be any different?

I believe one area of improvement for the excessive need for precision (most of us can agree that it is excessive) is that our current tools don't use context information enough. Humans deal a lot in uncertain areas and context is what helps us.

Love it or hate it, Meteor has empowered a number of sales-types and small-business owners to create real tools to solve their own real problems.

I've seen it happen in front of my own eyes!

  • I omitted: ...and create so many new problems there will be years of work in it to clean the mess up.

    Been in "IT" for a few decades, I've seen it happen in front of my own eyes time and time again.

    The only self-help tool that has lasted so far has been the spreadsheet, and even that has gone horribly off the rails in many companies.

    • Haha, agreed. I'd argue there's a strong chance of that happening with any tool meant to give non-professionals a 'professional' result.

      WYSIWYG web editors, divorce 'kits', many DIY 'kits' for home improvement, etc. Something inevitably goes wrong and the lawyer / contractor wonders just why the hell the client didn't just call a professional in the first place.

The wrong people are working on this problem. The only ones who think about it are typically programmers who have made their peace with the machines as they are today. The interface of code seems simple and logical with little reason to try to improve on it. It would take a team of artists, musicians, human factors engineers, ethnographers and some clever computer scientists to do it. Such an enterprise would be high risk and very difficult to fund because of it.

The precision required in programming makes it hard for the right brained person who won't meet the computer at least part of the way.

  • I'm reminded of rms's anecdote about secretarial staff learning to write Emacs macros at MIT because they didn't realise it was programming.

    This suggests that current, important and well-meaning attempts to get non-programmers to meet code head-on as code may be misguided. Programming is generally easier if you're not thinking about how much it isn't something you do.

  • I don't believe that there is no such thing as a right brained person. I think this is a cultural myth. Same as, "you only use 10% of your brain's power". These, and similar, are false memes - iow hokum.

  • Precision is not the only important element in programming. There's a level of abstraction, such as found in the field of semiotics, that is highly important to the world of computer science.

Not likely.

I've seen non developers try to write specs in whichever format they like: word, excel, drawings, hand written, in speech, mockup tools, anything. They decide exactly how they want to express their idea without any constraints. And yet, they always fail.

There are always too many edge cases they do not think of. They only cover the "happy path" and quite often not even that. Just take the email conversation from the article as example, they didnt even touch the subject of implementation and it was already jibberish even for a developer. You need someone to actually sit down and squint their eyes over something, do research and run some test cases for a few hours before these emerge. Once you start doing this you are already by defition a software developer.

Taken to the extreme, could you not consider raising a child the ultimate programming exercise for humans?

Perhaps the "right-brained" are already very good at programming other people, working with faulty, non-deterministic, somewhat chaotic computing environments where "left-brained" patterns of software development fall short....

"something incredible will emerge for the right-brained bourgeoisie and literati."

Yes, a real quantum computer. As long as we're dealing with 1's and 0's, there's an insurmountable barrier for those who would get creative with computing.