Hacker News new | past | comments | ask | show | jobs | submit login

“That whole Xerox PARC thing in the 1970s—the thing that supposedly gave us the Mac, etc.—was actually not about having a mouse and windows; the big core idea was that we'd build models of our world in software and adapt them as we explored. Doctors could simulate new treatments; children could simulate rocket ships. We'd all have highly visual pocket climate models we could explore and manipulate, or the doctors would all be programmers themselves and make better patient-management systems. The idea was for software to become the humble servant of every other discipline; no one anticipated that the tech industry would become a global god-king among the industries, expecting every other field to transform itself in tech's image.”

A different way of interpreting the article is not why we (computer programmers) haven’t made things better for other people and their industries but why we haven’t found better abstractions for computing itself so that they don’t need us to make the software they need.

We no longer have physical human elevator operators pushing buttons for us because we made an friendly abstraction over that anybody could use. So why does the job of a software developer even exist? Why can’t people productively and easily make their own software? It would likely be better: extremely customized to their own needs, highly tuned based on their own in-depth domain knowledge, and continuously updated since they don’t have to ask and wait for someone else to do it for them. Why do we still have human operators pushing buttons for people?




it’s not just that our tools are poorly suited for non-programmers, they’re barely even suitable for experts! Today I lost 8 hours trying to get XCode to build our app after a library update. Last week I lost 8 hours wrestling with a build server, 8 more hours trying to test changes to some untestable legacy code, and another 8 hours just trying to get our code to do the things it looked like it was obviously written to do. I’m on a team of 4, and if it’s going like that for all of us, simple features like “send an email when <event>“ happens end up costing thousands of dollars to develop. No wonder our industry is skewed to only solving low-complexity problems in domains that move lots of money!

I have, recreationally, written code to simulate a rocket ship. It was a pretty significantly different experience than my day job. My usual tools didn’t help much, but you don’t actually need a lot of data modeling or fancy UI to draw a trajectory. Debugging was awful, though.

Maybe it’s a good time to re-read Brett Victor’s “Inventing on Principle” and ask ourselves what we can do to get closer to that vision


> Why can’t people productively and easily make their own software?

The problem is that software does not understand tacit knowledge, only explicit knowledge. Many people are good at things on an intuitive level, but aren't able to explain clearly and unambiguously and comprehensively why they do those things. Structuring thoughts and processes like this is an important (and quite rare) skill in itself.

Secondly, "tech" is not a completely homogenous or bland medium, certain things are simply much easier to do than others. It's much easier for humans to drive cars, even with an error rate, than for computers. While it's much easier for computers to do arithmetic. The implication of this is that it's often much better to change your process - or possibly replace your entire business - than to take the current one and freeze it into a computer.

That's the problem with a lot of bureaucratic efforts. Often the "process" doesn't actually work as written down, and relies on a lot of slack and human judgement by individual low-status people who aren't included in the software development process. So freezing the process in software, even if done exactly to spec, doesn't work.

See also "Seeing like a State"; the process of making people and processes 'legible' to a bureaucratic system changes them, as does computerising them.

Third related problem is demarcation: even if individuals want to automate their workflow, they're still part of an organisation which would prefer they stay in their lane. So many "enterprise" disasters are the result of the people making the purchasing decision refusing to work with the actual users.


I think the question "why do software engineers even exist?" can be reframed to ask "what would an end-user programming environment that gives everyone the power of a software engineer look like?"

There are already a few decent task-specific programming environments that let end-users create valuable "software" — the most obvious example being spreadsheets for anything finance-related — however we're still a long ways away from programmers being replaced entirely.

Software engineers are pretty much the modern day scribes. We're literate in programming languages, while the rest of the population is illiterate. We're the only proxy for communicating with computers. So, how do we get the remaining 99% of the population to become literate?


I'm not sure the analogy of the scribe works or that the population needs to be come "literate" in programming languages. You can essentially substitute any profession and the analogy holds true. For example, doctors are literate in medicine, while I am not. Do I need to become literate in medicine (beyond a surface level)? No, this is why professionals exist in the first place, so that I do not need to become "literate" in everything.


No, the analogy still stands in my opinion - medicine is not "eating the world". It has only very narrow application (very important but still narrow) and software can literally change everything in our lifes (if for the better that's up for discussion). So seeing every one else as illiterate sounds lot better than saying that we need better alphabet.


This is a harder problem then it seems. Lots of applications are built to be programming for non-programmers and the company I work for loves the idea and falls for it all too often. In reality what happens are the users still can't or won't learn how to translate their own work processes into a logic required by the application regardless of how "intuitive" the interface is and the system ends up in the hands of software devs that now have to use a tool with significantly less flexibility and more bloat.

In other words, there are elevator buttons out there but people don't know what floor they need to go to.


> Why can’t people productively and easily make their own software?

start by asking them to draw a bicycle




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: