Is Programming as an Art Dead?

2 points by PandaWhisperer ↗ HN
When I first got into programming as a high school student about 20 years ago, I was fascinated by the intricacy and cleverness of it. I was reading stories of big inventions and clever hacks, such as making games fit into tiny amounts of RAM, or cutting the runtime of an algorithm in half by using a clever optimization. When software was shipped, it had to be finished, as it was damn near impossible (and very costly) to fix bugs later on. Programming was the domain of a small group of ultra smart artists who deeply cared about their craft.

Fast forward to 2016, and we now live in an age of radical abundance. CPU cycles, RAM and disk space are all cheaper than ice in Antarctica, and no one cares about efficiency or elegance. Software is never finished, because thanks to SaaS it never even has to leave the premises in order to be sold. We all work in two week sprints, so no one really cares about the long term impact of any code that's written, because if it turns out to be a mistake, we can always re-write next sprint.

Development cycles are not driven by curiosity or need, but rather by arbitrary deadlines. Thinking deeply about a problem is out of fashion, we rather just try a bunch of random things and see which one sticks. No idea is too stupid not to try. Angel investors simply start 10 companies to get one exit. It's the age of fast money and fast growth, none of which is sustainable.

Does anybody else feel that way? Did I miss my train somewhere? Or is the Art of Programming dead and buried?

8 comments

[ 3.8 ms ] story [ 24.1 ms ] thread
Its a thing I have been seeing over the years in pretty much all professions. People here in europe want to work less and less and get payed more. I dont get it either. They dont care about what they do, they just do it for the money not because they can be proud of what they created/done. Sad, but true the few who still have a good work ethic can just try to fight against it.
I think it is a mindset shift to be honest.
With the proliferation of computing as a solution to more and more problems, the need for the 9-5 programmers becomes greater and greater. Most businesses don't need programmers that come up with new and clever solutions. They really just need someone that can apply established solutions to their own problem domain. There exists a class of software consumer that has a hard time making good use of a boxed solution, so they hire programmers to stitch together a more ideal solution for their own needs. It's expensive as hell, but it can be the difference between software being an enabler or software being a hinderance.

It's only natural that as the number of programmers grows, the gulf of difference between the "thinking" programmers and the "shipping" programmers grows larger. The former will always be necessary to create new solutions, but the latter will decide of those new solutions actually see widespread use.

> the [..] difference between the "thinking" programmers and the "shipping" programmers grows larger

That certainly seems true, but does that mean it should be that way? FWIW I see "thinking" programmer as a senior engineer, and "shipping" programmers as juniors. The latter will eventually become the former, but they require training and nurturing to do so.

In my experience, that's very hard to find. I've worked for many companies and in my experience, the ones with a "sane" programmer culture are very, very rare. Most are dominated by the business and sales structures, and see the techs as a necessary evil that they'd rather ship overseas where the wages are lower.

Where are the companies that are committed to technical excellence?

I don't think that it matters how it should be. The question of how things should be is... pointless. We can speculate about that all day and it won't make a difference.

"Senior" software engineers are shippers. They're the ones that have the ability to deliver on time without stepping on their own garbage. Any training that the company can offer will be in gravitating toward being a better "shipping" programmer.

Don't look to companies to provide the kind of environment that the thinking programmer needs. Thinking programmers fit better in non-corporate scenarios. Hobbyists, academics, etc. Without the business imperative breathing down their neck, the programmer can stop and think about what they're doing. When a company does foster the slow-burn software work that the thinking programmer does, then it's because that company has more money than they know what to do with, and the bean counters are busy on other parts of the ledger.

(comment deleted)
with data science, statistics and machine learning, the debugging cycles are much longer and interpreting data and picking estimator functions, etc. is an artform that requires attention to detail and "deep thought". Running a solution/query could take thousands of dollars in cloud compute cycles, so you'd better be right.