Live data from Hacker News

Why Programming is Difficult (2014)

joearms.github.io

41–50 of 117 posts

Re: Why Programming is Difficult (2014)

#41
post #35
post #19

I don't think programming - in the sense of what 99% of programmers do - is as difficult as programmers love to blog about. Most professional programmers write stuff that is not all that hard, and most of it has been done by others countless number of times. All the "hard" cutting edge stuff is done by a tiny tiny fraction of programmers. Heck even the things people think are cutting edge now, just taking a random ex…

There is another kind of "hard" though, which involves managing growing code bases, doing programming within a business setting, and so on. We mostly let the scientists work on well-defined problems in isolation, so they can really focus on those deeply intellectually challenging things, but even if those scientists are very clever I don't think they are necessarily good at larger-scale system development. There are…

> but if you look at the objective of building high-quality complex software in the minimum amount of time, keeping it running correctly, and then being able to change that software as effectively as possible, then that in itself is pretty much an infinite problem.

The same can be said of almost any "high-quality complex" project in any other profession.

Re: Why Programming is Difficult (2014)

#42
post #19

I don't think programming - in the sense of what 99% of programmers do - is as difficult as programmers love to blog about. Most professional programmers write stuff that is not all that hard, and most of it has been done by others countless number of times. All the "hard" cutting edge stuff is done by a tiny tiny fraction of programmers. Heck even the things people think are cutting edge now, just taking a random ex…

Sure. We can get 80% of the effect with 20% of the effort. Then the last 20% of the program takes the other 80% of the time :-) As an example, I started doing Angular development about a year ago. At first, it's really easy - little more than templating output expressions in double curly braces; binding input fields with ng-model attributes; and adding ng-click callbacks to a few buttons. Then you start making tag li…

"All problems in computer science can be solved by another level of abstraction...except for the problem of too many levels of abstraction." [1]

I'm waiting for all these custom syntax and conceptually burdened frameworks to implode :)

If you like pure js, but declarative templates, check out domvm [2]. I wrote it to improve on Mithril and domchanger. Feedback welcome!

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

[2] https://github.com/leeoniya/domvm

Re: Why Programming is Difficult (2014)

#43
post #24
post #15

Earlier quoted context omitted.

We have not seen any theoretical breakthroughs in over 20 years anyway. Unlikely programming is going to change fundamentally. But there is a lot of game changing practical advances which totally overturned the way we design systems. Microcontrollers are powerful and dirt cheap now. Low end FPGAs are more accessible than ever. GPGPU is a dramatic game changer, and it is dead easy to use it these days. RAM is nearly i…

Yeah, practical and cultural shifts determine how the theoretical foundations come into play. Ten years ago, if you said you were into functional programming, most people wondered if you were crazy and why you didn't just program in a real, normal language. Fifteen years ago, garbage collection was considered slow and mostly only suitable for "scripting." Twenty-five years ago, there was Haskell, Erlang, Common Lisp,…

Slight nitpick: I would have said "20 years ago" about garbage collection. As soon as Java came out, full GC (vs ref count) somehow became OK.

Disclaimer: Java programmers get jobs, so I am one. My feeling about it is "The elegance of C++ at the speed of a Lisp". Fortunately, we are starting to get better language front ends which can reuse the old JVM binaries, as well as having a GC-ing VM that has had decades and $millions thrown at it.

Re: Why Programming is Difficult (2014)

#45
post #24
post #15

Earlier quoted context omitted.

We have not seen any theoretical breakthroughs in over 20 years anyway. Unlikely programming is going to change fundamentally. But there is a lot of game changing practical advances which totally overturned the way we design systems. Microcontrollers are powerful and dirt cheap now. Low end FPGAs are more accessible than ever. GPGPU is a dramatic game changer, and it is dead easy to use it these days. RAM is nearly i…

Yeah, practical and cultural shifts determine how the theoretical foundations come into play. Ten years ago, if you said you were into functional programming, most people wondered if you were crazy and why you didn't just program in a real, normal language. Fifteen years ago, garbage collection was considered slow and mostly only suitable for "scripting." Twenty-five years ago, there was Haskell, Erlang, Common Lisp,…

I hear you on the FP part, though. Forget "higher order functions" and such, just the idea of "pure function" was hard to get across to some coworkers 10 years ago.

"Why would you want to trace the dataflow through the routines, as a pipeline, rather than just whacking on the DATA DIVISION, er, beans / instance variables, as needed???"

Re: Why Programming is Difficult (2014)

#46
post #5

The bigger question is, why are we still programming the way we did 20yrs ago? Higher level languages were a great improvement over machine language. But what comes next? Why don't we have it yet? A decade ago I was setting up database, writing queries, designing forms, writing the code to wire it all up. I still have to do all these steps with more amount of effort today.

I think you are asking for the utility-zation of programming (which is coming) and since that development will make a lot of developers obsolete, I for one don't want that to happen before I'm "retired".

Re: Why Programming is Difficult (2014)

#47
post #35

Earlier quoted context omitted.

There is another kind of "hard" though, which involves managing growing code bases, doing programming within a business setting, and so on. We mostly let the scientists work on well-defined problems in isolation, so they can really focus on those deeply intellectually challenging things, but even if those scientists are very clever I don't think they are necessarily good at larger-scale system development. There are…

> but if you look at the objective of building high-quality complex software in the minimum amount of time, keeping it running correctly, and then being able to change that software as effectively as possible, then that in itself is pretty much an infinite problem. The same can be said of almost any "high-quality complex" project in any other profession.

Agreed. It's interesting to compare software with other "intellectual labor" like law, government, writing, architecture, philosophy, accounting, and so on. Many of the same problems seem to come up. Programming as a profession is very young, though.

Re: Why Programming is Difficult (2014)

#48
post #2

In my experience, the overwhelmingly most difficult thing about programming is writing code that makes sense, even after it has gone through a couple rounds of requirements changes and bug fixes. Any concrete coding task can be dealt with straightforwardly enough, but projects as a whole tend to deteriorate by arbitrary fixes, maintenance patches, and failure to uphold a conceptual schema. The idea of composability i…

One thing I really liked about the DDD idea of ubiquitous language was that you reduce the amount of artificial abstractions between domain experts and the code, and it forces developers to be able to converse better with the business. I also think we should be doing a much better job documenting the intent of an entire system. New features get added by working them into the narrative of the 'Document of Intent', rather than becoming some set of requirements in an issue tracker. Otherwise we have difficulty understanding 'why' a system works the way it does, and possibly, if that way is actually incorrect. Many companies I've worked at, the system 'becomes' the rule. Even domain experts will ask what the system currently does when pressed for how something should happen. I think at a certain scale, it's just hard to keep business process in a single person's head.

Re: Why Programming is Difficult (2014)

#49
post #2

In my experience, the overwhelmingly most difficult thing about programming is writing code that makes sense, even after it has gone through a couple rounds of requirements changes and bug fixes. Any concrete coding task can be dealt with straightforwardly enough, but projects as a whole tend to deteriorate by arbitrary fixes, maintenance patches, and failure to uphold a conceptual schema. The idea of composability i…

One thing I really liked about the DDD idea of ubiquitous language was that you reduce the amount of artificial abstractions between domain experts and the code, and it forces developers to be able to converse better with the business. I also think we should be doing a much better job documenting the intent of an entire system. New features get added by working them into the narrative of the 'Document of Intent', rat…

Something I've considered on and off is that our current way of writing code is insufficient, I'd really like to have an editor/IDE that had "layers" so that I could attach code related comments in one layer and intent/documentation in another layer - throw in the ability to hide/show layers at will and you'd have a much more flexible way of documenting code than we currently have.

Re: Why Programming is Difficult (2014)

#50
post #19

I don't think programming - in the sense of what 99% of programmers do - is as difficult as programmers love to blog about. Most professional programmers write stuff that is not all that hard, and most of it has been done by others countless number of times. All the "hard" cutting edge stuff is done by a tiny tiny fraction of programmers. Heck even the things people think are cutting edge now, just taking a random ex…

There used to be a difference between scripters and programmers. I'm a scripter, and it feels similar to learning a natural language and writing essays in it. In other words, it's easy and doesn't require any mathematical skill. There are low-level programmers who do things similar to other sciences involving math, and my brain wouldn't be able to do that. So if you're talking about scripting, which I think most peop…

Not sure what do you mean by "scripting", but there is an awful lot of complexity on any level, all the way up.

Mathematics and algorithms aside, there are vague requirements and tight deadlines. There is a need to estimate how long will it take (know of anything else harder than this?). There are maintenance considerations which complicate everything, even a one-line script: documenting, packaging, future-proofing against platform updates, etc.

Post reply on HN