Live data from Hacker News

Simplistic programming is underrated

lemire.me

1–10 of 93 posts

Re: Simplistic programming is underrated

#2
Your apparent mental prowesses will fail to impress those who find it easy to do the same. I have met my share of college students and professors who excel at dropping the name of a few philosophers, at using words only 1% of the population knows about… but, at a certain level, it does nothing for them. People simply roll their eyes and move on…

Solid life advice.

Re: Simplistic programming is underrated

#3
> I like the concept of “simplistic programming” by which I mean “programming that is so simple that people will criticize you for it”. At first, that sounds strange… can we really get criticized for being “too simple”? Of course, we do.

Oh man, this hits home.

I've attempted to be a voice of reason on this front so many times, I've practically given up on it. I've come to the conclusion that most programmers suffer from an intellectual Napoleon complex (which I've seen in academic Philosophy, as well). I've argued for the use of simple "for loops" in lieu of complex map-reduce logic, argued against overly-complex threading logic where threading wasn't necessary, argued against using Spark where the dataset was so tiny, it could be handled by my iPhone. All my suggestions often fall on deaf ears. The counter-argument tends to be some contrived edge-case which (by that point in the discussion), I'm simply too fatigued to argue against. I've lost this war of attrition many (many) times.

The irony is that most OSS code tends to be "so simple it's dumb" -- why? Because simple code is easy to contribute to! I think if more professional programmers actually looked at real code outside of their corporate Bitbucket, working as a programmer would be much more enjoyable.

Re: Simplistic programming is underrated

#4
Sorry for my little pedantic observation:

The author wants the word "simple" here, not "simplistic".

The reason I even bring it up is that simplistic means overly simple, and that's a real problem in software development in my experience.

Overly simple means you aren't actually dealing with significant issues the problem space. If anyone ends up using your simplistic software, they will have to solve the problems you ignore in a non-optimal way.

Simplistic -- overly simple -- is the flip-side to overly complex and can cause just as many problems since it pushed extra complications elsewhere.

What we'd like is software that is as simple as it can be, but no simpler.

Re: Simplistic programming is underrated

#5
post #4

Sorry for my little pedantic observation: The author wants the word "simple" here, not "simplistic". The reason I even bring it up is that simplistic means overly simple, and that's a real problem in software development in my experience. Overly simple means you aren't actually dealing with significant issues the problem space. If anyone ends up using your simplistic software, they will have to solve the problems you…

I think he _does_ mean "simplistic." He means "so simple that people criticize you for it" which lines up with simplistic.

Re: Simplistic programming is underrated

#6
There is a major problem with how programmers are judged.

Say you are given a seriously challenging and apparently problem; that is to say the naive approaches are all hideous train wrecks. You work on it long and hard, until you have a key insight that allows you to implement the simplest most elegant solution.

Now a naive observer will look at it, say well that's obvious, and then ask why you wasted a week to write 40 lines of code.

Re: Simplistic programming is underrated

#7
I agree that overcomplicating code is bad, but then again, what is "simplistic"?

Let's talk Python. To me, using comprehensions is way simpler than loops. Using

  for i, item in enumerate(my_list):
    # do some stuff with i and item
is way simpler than

  for i in range(len(my_list)):
    # do some stuff with i and my_list[i]
And still, I bet that most C/Java folks will look at these things with disdain.

Also, higher-order functions. They do sound strange, at first. And yet they're a great tool to combine simple pieces of code. I'm starting to think that "elegance" is just the ability to build complex interactions of simple elements. Think chess, or languages like Lisp and Smalltalk, or Euler's identity.

Re: Simplistic programming is underrated

#8
post #3

> I like the concept of “simplistic programming” by which I mean “programming that is so simple that people will criticize you for it”. At first, that sounds strange… can we really get criticized for being “too simple”? Of course, we do. Oh man, this hits home. I've attempted to be a voice of reason on this front so many times, I've practically given up on it. I've come to the conclusion that most programmers suffer…

Is map-reduce really less simple than a for-loop? I agree with your other examples, but I see these too things as totally equivalent (unless you're in a language that make a dog's dinner of this type of thing, like old C++).

Re: Simplistic programming is underrated

#9
post #3

> I like the concept of “simplistic programming” by which I mean “programming that is so simple that people will criticize you for it”. At first, that sounds strange… can we really get criticized for being “too simple”? Of course, we do. Oh man, this hits home. I've attempted to be a voice of reason on this front so many times, I've practically given up on it. I've come to the conclusion that most programmers suffer…

Most corporate problems are most likely solved by pretty simple code. The problem is that you are not building your resume that way and your future job searches will suffer. To stay up to date I often squeeze things into my work that are not strictly necessary.

Re: Simplistic programming is underrated

#10
post #8
post #3

> I like the concept of “simplistic programming” by which I mean “programming that is so simple that people will criticize you for it”. At first, that sounds strange… can we really get criticized for being “too simple”? Of course, we do. Oh man, this hits home. I've attempted to be a voice of reason on this front so many times, I've practically given up on it. I've come to the conclusion that most programmers suffer…

Is map-reduce really less simple than a for-loop? I agree with your other examples, but I see these too things as totally equivalent (unless you're in a language that make a dog's dinner of this type of thing, like old C++).

I think so, consider[1]:

     var r = array.map(x => x*x).reduce((total, num) => total + num, 0);
vs its for-loop counterpart:

    var r = 0.0;
    for (var j = 0; j 
Maybe I'm just not as smart as everyone else, but I only have to keep like two things in my mind when looking at the for loop (easy), whereas in the map-reduce case, I need to have a very "holistic" view of what's going on (hard).

[1] https://stackoverflow.com/questions/17546450/for-array-is-it...

Post reply on HN