Hacker News new | ask | show | jobs
by throwaway648 2874 days ago
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.

3 comments

Not all programming is akin to building a house. Some of it is similar to hanging a shelf in the kitchen. Why should it take an architect to drill the holes and fasten the wall plugs to hang a spice rack?

Sure it might need some training, but it should be the kind that can be explained in a DIY TV show.

Why should it take an architect to drill the holes and fasten the wall plugs to hang a spice rack?

But the person hanging the shelf should have enough of a grasp of mechanics so it doesn't fall down. They should know enough basic physics and chemistry so they don't install something prone to corroding. If they encounter asbestos or old lead paint while installing, they should know enough to know what to do about that, and what not to do.

Most of the work in programming is in describing (in very strict and pendantic terms) how different systems interact with each other and how the data flows from one end to another. The actual work of moving the data and doing all the calculations is handled by machines. In that sense, the work done in programming is designing and integrating systems, not the execution of it. In your analogy, installing a shelf would be more like installing Photoshop (which we can presumably agree is actually simpler than installing a shelf). Most people do not design their own shelf, select the most appropriate fasteners, source raw materials and send it to manufacturing to be mass-produced. A shelf is also a relatively simple piece of furniture. What about a desk-drawer or a closet? Sure, you can buy the raw materials and power tools at any hardware store, but is it trivial for anyone to actually design and build usable (and desirable) furniture from pieces of plywood?
True that, but those do-it-yourself people use different tools and methods compared to professional architects and builders. So maybe the original article should be read as ”why there are not more dedicated, simple tools for non-educated do-it-yourself tinkerers”. A sensible question as such, but I don’t buy the conclusion that we should blame the nerds / academia.

If some business owner finds a way to monetize such tools, nerds will be happy to implement. Just as those do-it-yourself fix-your-home books and tools have been monetized and implemented.

Up until the 19th century, construction was an extremely bespoke process. There was no standardization on tools and materials which made everything much more difficult. It was always hard, but it's much, much easier now -- and maybe there's a way it can be even easier still with 3D printing techniques.

Saying, we can't make it simpler is a cop-out. It used to be simpler. The question isn't whether we can do better (we know we can) but how to find the will, effort and funding to accomplish it.

I’m actually saying that we have made it simpler (compare implementing full-stack web service using punch cards vs modern languages and frameworks), but at the same time it requires more education to use the new tools and methods (one machine code manual vs all the cources and documentation those languages, algorithms, and frameworks require).
> As for programming. Abstract thinking and clear, explicit communication of ideas is not trivial to automate.

There are many more people capable of abstract and clear thinking than there are programmers. IMO we should be giving them the tools necessary for them to not build programs, but to solve problems in their field with computers.

Sure there are, but not all athletic people end up playing hockey. I don’t see how that invalidates the point that people without those qualities can not become programmers, no matter the tools available.

edit: to add, those people already have the tools they need to automate the things they want. They just lack the will to learn to use the tools.

edit2: to continue the analogy. I can drill a hole to a wall but if I need to dig a big hole, I can either learn to drive a tractor shovel or hire a professional to do it. But I’m not complaining why tractors are so hard to drive..