Live data from Hacker News

The problem with programming and how to fix it

alarmingdevelopment.org

31–40 of 99 posts

Re: The problem with programming and how to fix it

#32
Lemme use an analogy: Why is building a house not accessible to all? Surely house building could be more like building with legos.

Building a proper house is so much more that just piling rocks mixed with mortar. You have to take into account the ground composition, moisture, light, ventilation, red tape, usability, safety, etc. In other words: it takes a huge set of skill. You can use advanced tools, like a tractor shovel for digging the base but that requires even more skill.

We just have to accept that doing complex stuff requires lots of training to do it properly. The more advanced tools you use, the more specific training you need but the more complex stuff you can build in shorter time.

As for programming. Abstract thinking and clear, explicit communication of ideas is not trivial to automate. This is problem even between two persons (just think about trying to decipher what your sales person or customer actually wants), let alone between a human and a machine. It’s a form of art, not some mechanical process you automate using an array of boxes.

Re: The problem with programming and how to fix it

#33
post #29

After reading the article I don't get the author's problem or the proposed fix.

An ironic answer would be, yes that’s his point.

I think the problem is: Programming is designed for and by a small group of programmers who enjoy making it difficult.

The solution is to create industrial societies / institutions / guilds etc. who can encourage a transition away towards simpler and more accessible programming approaches.

Re: The problem with programming and how to fix it

#34
post #8

> Programming today is exactly what you’d expect to get by paying an isolated subculture of nerdy young men to entertain themselves for fifty years. You get a cross between Dungeons & Dragons and Rubik’s Cube, elaborated a thousand-fold. This is vague and insulting. Many of us programmers spend a lot of energy to keep systems simple, to a point that one could mistakenly conclude that they were easy to write. We don't…

I too, don't understand why people think anyone could be a programmer if it wasn't for the existing programmers. What is considered a good grade in school? I think most parents would be happy with their children coming home with 90% grades. That's 1 error in 10 attempts. That is a pretty abysmal fault rate in an actual computer program. Even most experienced programmers fail to consider everything that can go wrong with a system, but that is what is required to make fault tolerant systems. There is no silver bullet[1], and I wish people that wrote articles like this would go out and read that essay and actually attempt to tackle the thesis of that essay instead of just asserting the opposite.

[1] https://en.wikipedia.org/wiki/No_Silver_Bullet

Re: The problem with programming and how to fix it

#35
> There is something unique about software that exacerbates these problems. Unlike every other technology, software doesn’t wear out. The traditional cycle of replacement and renewal is halted; there is no evolution.

I do understand what he's saying here, but saying that software has no evolution is just wrong. Like yes we still have C code kicking around everywhere but we also have new technologies languages (rust, go, etc etc), new philosophies on how to write code (TDD?), and new tools (jupyter notebook for interactive data munging for example).

Furthermore how many people have been through a rewrite? developers (try) to replace and renew all the time, although yes this is difficult.

also:

> Unfortunately application programming got trampled in the internet gold rush

It seems to me like application programming is alive and well, although admittedly I am younger and am probably considered an application programmer myself (I.E. I don't develop software as a profession, but I write code all the time to help with my work).

Re: The problem with programming and how to fix it

#36
post #8

> Programming today is exactly what you’d expect to get by paying an isolated subculture of nerdy young men to entertain themselves for fifty years. You get a cross between Dungeons & Dragons and Rubik’s Cube, elaborated a thousand-fold. This is vague and insulting. Many of us programmers spend a lot of energy to keep systems simple, to a point that one could mistakenly conclude that they were easy to write. We don't…

This is vague and insulting.

Good. It should be. Get mad about that. Get so mad that you devote time and effort to fixing it.

Programming compared to other disciplines is what might arise from a Lord of the Flies situation. Like the end of that novel, we should stop, fall at the feet of a comparison of programming to other disciplinnes, and weep tears of shame.

Re: The problem with programming and how to fix it

#37
post #5
post #3

Earlier quoted context omitted.

Programming for spreadsheet like things is something a DBA does for /databases/. No, they don't look like spreadsheets, but THAT is the industrial strength tool being used by a professional chainsaw juggler.

AirTable looks kinda like a spreadsheet, and it's a MS Access clone at heart. Not terribly programmable, though it does look pretty usable. I think "traditional" databases will fail to reach a general audience (or rather, much expand the definition of "technical audience") because SQL is not really easier than Python etc. Maybe the problem is environments and not languages, though. Personally I think the relational m…

I wonder what you would get if you crossbred Postgres and Haskell, for example.

Basically adding indexed tables to the Haskell data model, maybe? Some hybrid of relational tables and algebraic data types?

Sometimes even when writing compilers I’ve had a feeling that relational queries and update would be really nice.

There seem to be four main data paradigms: (1) objects with pointers, (2) algebraic data types, (3) relational tables, and (4) Prolog-style clauses.

Some Haskell programs seem to partially reimplement 1, 3, or 4 using 2...

Re: The problem with programming and how to fix it

#38
post #8

> Programming today is exactly what you’d expect to get by paying an isolated subculture of nerdy young men to entertain themselves for fifty years. You get a cross between Dungeons & Dragons and Rubik’s Cube, elaborated a thousand-fold. This is vague and insulting. Many of us programmers spend a lot of energy to keep systems simple, to a point that one could mistakenly conclude that they were easy to write. We don't…

I do not think that is his point though; it is not that you dream or like making that complexity, it is that you are forced to make it by current tooling and languages. You are and people you know probably fall into the group of exceptions that can handle that kind of complexity (to some extent) and try to simplify it. In the non HN, corporate world of a lot of companies, this is not the case. Many large corporates do not do version management, code reviews, refactoring or anything you consider standard. You are the exception. And that is mostly because of the tooling; for most beginners React/Node simply is far more challenging than Visual Basic or HTML/PHP. For people who just want to solve a small problem and share that solution they made, learning 3-4 languages and installing bucketloads of tooling and libraries is just not a step forward.

By using that kind of tooling you are already acknowledging what the article says in some ways. By using programming languages and editors that let you figure out what the computer can do much faster (like figuring out, at edit time, the result of a bunch of if then else statements for instance), you are getting further away from simple.

And yet this is our normal and it hardly changes over time. So yeah, as someone who has programmed for over 30 years I see the D&D and Rubiks Cube comparison. We do not like it but that does not make it less true; it was easier to solve simple problems ‘fullstack’ when fullstack was 1 language and 1 simple install that had everything; in my opinion we did not evolve well here. It was easier to create most (No I am not talking about a Facebook; that is far from most) things when you did not have to worry about libraries or packaging for deployment. It always was a Rubiks Cube, but we are getting more D&D by the week imho.

And then there are the sort of things Edwards likes to experiment with; relevant live feedback during coding with enforceable prompts to repair simple things that your brain is just not (by far) as good or as fast at as a computer is.

Re: The problem with programming and how to fix it

#39
post #11

Programming for beginners is just as accessible as it has ever been, there are good languages (some specifically for beginners: Logo, and game making languages and so on) and good courses. Where do I think programming has stalled is in the business environment. There, as the article correctly points out, it's much harder to automate your job unless you work in an IT department. Most business end-users do their work i…

I'd suggest that the perfect tool here is Zeppelin (notebooks), basically a centralised multi-user sandbox with built-in versioning and scheduling. Deployment of a json notebook to different environments can be handled easily while security can be done at the data layer (ie. SFtp, file access, database, API level).

Re: The problem with programming and how to fix it

#40
post #20

Simplifying software is a fantastic goal, but blaming the situation on an "isolated subculture of nerdy young men" is the opposite of helpful. Also, I would seriously consider the fact that some things are simply complicated and there's no conspiracy behind it. A lot of very smart people work very hard to find ways of taming this beast. It's just hard.

I’m interested as to whether there really is complexity that can’t be simplified in general.

Here’s an obvious example where it could be: web apps are mostly conceptually simple: a thin client which is basically a UI framework talks to a process on a remote server. So you need something to develop the UI and something for the server. But instead of the “web UI toolkit” (which could mostly be a graphical tool) we have JavaScript, CSS, HTML, jquery, a gazillion hacked front end frameworks trying to (imperfectly) fix the mistakes of everything below it, a whole system for preprocessing, packaging, running tasks, deploying - just for a UI. And all those tools need customising, rely on knowledge of a bunch of random tools and languages and file editing.

So we could definitely improve 10x in making “web apps” or whatever you would replace them with something much much simpler (even if for a subset of use cases). And that’s just one example.

Post reply on HN