Live data from Hacker News

Why does programming suck?

medium.com

21–30 of 90 posts

Re: Why does programming suck?

#21
One of the premises of this article - that "competing standards" exist primarily because of political reasons or shallow decision making - demonstrates a fundamental misunderstanding of software engineering.

Sure, some engineers (especially junior ones) enjoy reinventing the wheel more than using something that already exists to solve users' problems. We all like to trick ourselves into thinking we're unique snowflakes (this problem extends into our personal lives as well). But more often than not, when multiple popular standards emerge, it's because there are legitimate engineering tradeoffs that are being made.

JSON vs. XML? XML is far more capable but complex. JSON is far simpler but less capable. Sometimes when you're delivering value to customers, you need that extra complexity, so you use XML. Other times you don't need it so you use JSON. It has nothing to do with ego or politics. Multiple different JSON libraries? One may prioritize ease of use to get up and running, the other may prioritize strong typing for serialization speed. One may prioritize strict compliance with the spec, the other might prioritize speed above all else. JSON vs. a binary format? JSON is more readily compatible and easier to debug. Binary is faster but more complex to setup. It goes on and on.

Again, sometimes competing standards or libraries or languages emerge because of political or capitalistic concerns. But usually when you're talking about competing open standards, there are multiple because there are legitimate engineering tradeoffs being made because engineering is not a one-size-fits-all science. (Few sciences are, otherwise they wouldn't still have people working on them.)

When an open source project rejects a contribution, or five projects exist to solve the same problem, they're often making legitimate engineering tradeoffs that are in no way arbitrary, and any one project would suffer to try to be every thing to every person. The article in question doesn't even point out a single example of a set of standards or libraries that are entirely arbitrary in their differences or could be collapsed into one solution, which further highlights how this is a theoretical argument, not a practical one.

Re: Why does programming suck?

#22

Taking the creativity out of an inherently creative process. Imagine you're a painter and then comes some moron (who is probably not a painter) yelling at you: - Why are you holding the brush that way? Also, I don't know that brand. - You should make thinner strokes, and always start coloring the surroundings so you don't go over by mistake. - Do not bother with the first brushes until you have a clear pencil sketch.…

In pure software engineering there is much less creativity needed than most people want to admit. While the UI/UX people gather requirements and work with the client to work out how the app should look and behave, sure, they can use their imagination. But once the requirements are set then in many cases a software engineer can sit down and build the software. There is no creativity needed to decide whether to use a v…

> And there is no creativity in Mathematics.

What?!

Re: Why does programming suck?

#23
post #18

It's worth mentioning that Chris Granger wrote an excellent blog post[0] that's similar to this one, but far more succinct. While I don't use Light Table, I'm still a huge fan regardless. > What would programming be to you in an ideal world? More visual, especially when observing execution. When you're debugging anything non-synchronous—be it events, messaging, distributed systems—it usually sucks, even in the rare c…

By "more visual" do you mean diagrams?

Pretty much. One ideal might be for a flow chart to come alive and actually be the structure of your application itself, rather than just a reference or an aid.

I suppose that while visual programming excels at conveying topology and structure, it can be weak at a low level due to the tedium involved. Traditional code is arguably better suited for low-level grunt work, at least for most people.

A hybrid solution might be best. For example: a message travels from one high-level visual entity to another, and you'd easily be able to drill down into the code comprising those entities, locating the exact lines responsible for emission or receipt.

Re: Why does programming suck?

#24
Some contradictions I found:

> Of course we have never questioned any of this. We don’t have a direction, a path or an overall goal for programming!

> Let me ask you this: What would programming be to you in an ideal world?

> We don’t know! We’ve never asked ourselves this question!

When at the start of the "essay":

> Turns out, we are horrible at predicting the future and we end up discarding that extra complexity.

Too bad outsiders think (and will for a long time) it's a done thing. Society thinks software is the best thing since sliced bread so it's all around us. It's both a curse and a blessing.

Compared to other fields, CS or engineering is relatively new. It's exciting, it will keep breaking and evolving. And that should be it. It should keep going places without restrictions, precisely because we don't know.

Similarly to scientists ripping open humans on anathomical theatres in the 17th, we are having fun.

Re: Why does programming suck?

#25
We don’t have a direction, a path or an overall goal for programming!

We (who do we mean when we say "we", anyway?) don't have a direction, path or overall goal for life, society, the human race and so on. I don't even have a plan for what I'm going to have for lunch next Tuesday.

Programming is contingent and incremental because rationality is bounded and the future is uncertain. We don't know what will be successful in the next few years or how the world will want to use it or what it will be prepared to pay for.

We can build jewel-like systems that are perfectly adapted to their use case using technology to the utmost. This nearly always results in a stranded evolutionary dead-end. The BBC Domesday Project (live video database on an 8-bit micro using PAL laserdisc!) is my favourite example, but there are many.

Re: Why does programming suck?

#26
I would say that everything the author describes as facts that have led us to this "mess" are actual testments to how fucking amazing human ingenuity is.

Look at everything we built out of arbitrary conventions of boolean logic that has real impact and is shapping the modern world!

>>The computer shifted the complexity of our solutions from the world of atoms to the world of ideas.

And that's fucking awesome! Thanks everyone that was part in making that a reality!

Complexity can pile up in this new world, sure, but we are only starting to get our feet wet. Outside the boundaries of processing and storage, we are our only limitation. We can create things as complex as we can logically describe them.

It's also incredibly difficult to create something that will acomodate everyone else's solutions.

Software development is in its infancy. The fact that we can create absurd structures that still work is great because we can use them even if our skills are not mature enough to make truly elegant structures.

Saying programming sucks and wishfull thinking does not help anyone. Not happy? Start hacking on the next thing!

Re: Why does programming suck?

#27
post #23

Earlier quoted context omitted.

By "more visual" do you mean diagrams?

Pretty much. One ideal might be for a flow chart to come alive and actually be the structure of your application itself, rather than just a reference or an aid. I suppose that while visual programming excels at conveying topology and structure, it can be weak at a low level due to the tedium involved. Traditional code is arguably better suited for low-level grunt work, at least for most people. A hybrid solution migh…

This is the most famous big attempt for visual approach up to now (first time standardized 1997), and the recent (2013) results are:

http://oro.open.ac.uk/35805/8/UML%20in%20practice%208.pdf

"Even if UML is viewed as the ‘de facto’ standard, it is by no means universally adopted. The majority of those interviewed simply do not use UML, and those who do use it tend to do so selectively and often informally."

"They also highlight some of the fundamental tensions within UML, resonating with arguments [8], [25], [17] that UML’s intended strengths (i.e., generality, accommodating different levels of abstraction) are intimately associated with its observed weaknesses (e.g., latent complexity, issues of transformation and coordination between views) and arise from fundamental properties of UML (e.g. lack of formal semantics, separation of expressions of structure and behavior)."

Whatever we do next, we have a nice set of examples and case studies of "what can go wrong."

The specific software tools based on UML are especially good examples of the problems.

Re: Why does programming suck?

#28
No one is going to listen to this - but what the hell:

The solution is totally obvious. The code we write has a form defined by it's input->output mapping over all possible inputs.

Write a function and you immediately define this input output mapping. All you have to do at this point is search through all previously written functions to find the one that most resembles the one you are trying to write.

Trying to write a nested for loop to pull out pixel values from a jpeg? Start writing it, shit you get it wrong - but the input output mapping is close enough to the cluster of previously written solutions that the correct code pops onto the screen.

Structure aware code search across all open source code would make a lot of the pain just go away.

Re: Why does programming suck?

#29
In the ideal world, i would program purely at the level of a sugared lambda calculus, free of trivial things like runtime,memory use,network latencies,serialization,platform incompatibilities,dependency management,string encoding/decoding issues . Basically everything that makes programming different from math.

However, programming may be lambda calculus at a theoretical level, but execution is a turing machine. All these little real world things that can be abstracted away in abstractions(!!), have to be unabstracted to meet a bunch of very real NAND gates somewhere, limited memory, resources etc.

Thats one reason it "sucks", but thats why its engineering and not math. Maybe one day computers will just be so powerful that we can afford to treat memory as infinite, runtime as infinitesimal, and build all the abstractions we want for free - then programming will be done :)

In this fun world, when i want to build something ill just draw a bunch of squiggly boxes and describe an alarmingly underspecified thingy i want done. Then the program will automatically figure out all possible inputs, quickly perform a "32 questions" kind of thing and resolve any ambiguity, then produce code. Managers will once again be confused why "adding this textbox is so hard", but this time they will be right - i will just tell lambda to go make a textbox.

Re: Why does programming suck?

#30
We are what normal people rely on to get the computer to do things that they find difficult.

Things are getting so complex for us that we find it difficult to service the requests.

Solution: We need someone to help us to solve the problems. Or more practical - we need intelligent tools which attempt to guess what we are really trying to do.

Far more intelligent autocomplete: "This looks like you are writting a postcode splitting regex, here is one that has been used by many programmers.". "Looks like you are adding a new business layer class - do you want to create an entity as well. Oh also it looks like this is going to part of the new view model you have been working on - do you want me to add a projection in for bl Class, mapping to the un populated properties on the vm?" etc.

We

Post reply on HN