
Programming is Not Terrible - molex333
http://blog.m1cr0sux0r.com/2013/10/programming-is-not-terrible.html
======
debacle
I have a hypothesis. Is it possible that the people who talk with wide-eyed
wonder about programming after doing it for ten years and the passion that
they have for writing software haven't come to appreciate the banality of
almost every problem that they're going to be asked to solve in the software
space? If you find putting together CRUD apps and laying out contact forms
challenging and engaging after ten years, you may lack the mental capacity to
really appreciate and understand why programming is terrible.

The reason open source software exists is because programming is terrible - if
programming were the digital orgasm that these people pretend it is, people
wouldn't have been bitching for years about how bad the open source ORM
they're using is - they would have rewritten it already, twice.

Programming is a menial mental task for anyone with the capacity to properly
abstract their real world problem into a solution that a computer can
understand, with a few bits of crunchy debugging on top, that has no reward on
its own.

We program, not because it is fun, challenging, or fulfilling, but because it
is morphologically necessary for our continued existence as solution creators
and problem solvers.

90% of the time spent programming is a slog. All of the enjoyment comes from
the 10% of time spent solving cool problems, but more and more as open source
technology gets better, sturdier, and more engrained into IT, the 10% problems
are being solved before ldconfig is done doing its thing, and so you're left
with 95% slog or 98% slog.

Are there domains where programming is still hard? Most definitely, but for
most programmers programming is no longer drole.

~~~
sequence7
Oh please. I have a theory about people who talk with patronising disdain
about how programming is easy and you can do everything with open source
already. Work is work, if it was all fun you wouldn't get paid for it.

If most programmers want a challenge in their day job they could try learning
how to communicate or how not to assume that everyone else is an idiot or even
try and improve the processes their team use so that everyone benefits.

The biggest problem I find programmers coming up against is cummunication and
understanding and yet 95% of them would rather point out how their immediate
coding problem isn't challenging enough to their almighty brains.

~~~
debacle
I guess you're assuming that I'm one of those semi-autistic types who isn't
happy unless he's slugging down coffee while trying to hack the Gibson or
whatever.

I'm not - the social aspect of problem solving, and especially the social
aspects of requirement gathering, is the best part of my job.

~~~
jasonlotito
> one of those semi-autistic types

This is vile. You aren't semi-autistic. You are or you aren't. And what
qualities are you referring to when talking about semi-autistic? Are you
referring lack of communication? Stimming?

How the _fuck_ does stimming have anything to do with slogging down coffee
while programming?

Seriously, "semi-autistic"? People like you are vile.

------
NathanKP
_If you like writing software, if you look forward to getting your next
assignment, then you should probably go ahead and pursue it as a career. If
you trudge through it and show some aptitude for it, but you don 't enjoy it,
please choose another career._

Exactly. It seems that recently there have been a lot of young people who are
treating the Software Engineer position kind of like the RN position. They
think "There is high demand for this profession so I'm going to study for it
in school and make big money, and this will be awesome."

But money !== happiness. RN is considered to be a good profession to study for
in college. But not everyone who studies to be an RN can be happy taking care
of sick and dying people all day, even if they are getting paid well. Likewise
not everyone who studies to be a software engineer can be happy sitting at a
computer writing code all day, even if they are getting paid well.

Some of us are happy to write code all day, and to "waste work" by rewriting
systems frequently whenever the business changes directions because we love
the challenge and the sense of progress as we get to see our coding skills
improving month after month as we learn new technologies and techniques. I'd
probably still be coding even if it was a low paying job, but I'm fortunate
that because I enjoy coding so much and do so much of it I've become quite
good at it and am able to make good money as a side benefit.

~~~
UK-AL
"If you like writing software, if you look forward to getting your next
assignment, then you should probably go ahead and pursue it as a career" -

The thing is academic/personal assignments are probably novel and interesting,
while 99% of business programming isn't. The jobs that have problems that are
novel or interesting, are damn hard to get.

So if you enjoy it at school/hobby, that has no relation to if your going to
enjoy it as a job. So you can easily end up hating your job.

~~~
NathanKP
_The jobs that have problems that are novel or interesting, are damn hard to
get._

I disagree. The monthly Who's Hiring thread here on HN is full of great jobs
solving interesting problems. If you find those jobs "damn hard" to get maybe
you need to learn some of the in demand skills or build a better portfolio of
projects that you've worked on. A github full of open source activity can get
you an interesting job quite easily.

A while back I put a very simple entry on an HN contractor thread and started
getting two to three job offers a month in my inbox, many from very
interesting companies doing interesting things. This was while I was still in
college, not actively looking for a job yet. I accepted interview offers from
a few of those companies and basically picked and choose who I wanted to work
for, which eventually lead to me getting a job at the startup I work for now
(storydesk.com) without ever needing to send out a single resume.

Maybe my experience is unusual, but I don't see it as being that difficult to
get an interesting job as a software engineer if you leverage a community like
HN.

~~~
UK-AL
some of the in demand skills? Such as?

Mobile Development Skills? I know that. The majority apps are boring though,
interfacing with a web service, saving and displaying data etc.

Web Devs Skills? I know Django the best, but again 99% of people using web
frameworks are just doing the normal inputting and outputting data out of a
database routine.

ML? I know that, but most companies only hire serious academic researchers, or
people with previous experience of it. I have MSc in CS with quite a lot ML in
it, but most are looking Ph.Ds;

Compilers? I've built a few prototypes. But very few companies actually need
this.

~~~
NathanKP
It sounds like you have enough skills. Maybe the only skill you need to
develop is how to sell yourself to the type of companies you want to work for.

If you don't mind some completely unsolicited advice:

I just checked out your HN profile and found a link to your blog. I checked
the blog and it is fairly empty with only two posts, and I see no Github link.
That's the first thing a good startup company is going to look at if they
think you might be a candidate for a position: your blog and your github.

I managed to track you down on Github via a Google Search and while two repos
seemed empty for some reason, Harlan looks pretty cool and non trivial,
showing a good level of technical skill.

The primary things I'd do if I were you is simplify and expand the message on
your blog to explain who you are and what skills you have and link to Github
prominently. Maybe on Github put up some more projects from a variety of
different domains, and write a few more blog posts about those projects.

Additionally blog theme says a lot about you. Right now the ideal blog design
if you want to come across as a "startup engineer" is something that looks
like Medium or Svtble. Your blog theme looks like a Tumblr.

(No offense intended but another slight thing to adjust might be the photo on
your blog. Obviously appearance isn't everything but in that photo it looks to
me like you have a smirk instead of a smile for some reason. If you choose to
include a photo it has to be one that makes you look like someone goodnatured
and a great employee, because people hiring in behalf of a company are going
to get one of their first impressions of you based on the photo, before they
even look at the Github.)

Anyway, once again I hope you aren't offended by my well intentioned by
completely unsolicited advice. For what it is worth I'm sure that you can get
an interesting coding job at an interesting company.

~~~
UK-AL
ok, what interesting problems are you working on? And I'll tell you if they're
interesting or not?

Because 95% of startups I've come across are solving trivial problems.

~~~
NathanKP
These are the things I've been able to do in the past year or so that I
thought were pretty interesting and enjoyable:

* Code to render PDF's into images using asynchronous streams to make it extremely fast.

* The same thing for videos, to recompress them for delivery to iPads.

* Code to use AWS to create a service that can be fairly easily scaled up and down dynamically in response to demand.

* Creating a highly tuned Node.js server capable of serving thousands of requests per second. Even basic CRUD operations can be pretty interesting to code when you are fine tuning server system level settings, optimizing database queries, using caching, etc to make sure that response times are all around 10-15ms even at hundreds to thousands of requests per second.

------
mschmo
Just a slight suggestion that doesn't actually have to do with the article
itself: Make your links stick out more. Maybe I just have bad eyes but I
really can't tell if a word is a link until I hover over it.

~~~
molex333
Thanks for the input, I have since modified this a bit to make the links more
visible.

------
Tloewald
Good post.

The original article (which this article addresses) falls straight out of the
most entitled kind of thinking ("the world owes me a living I enjoy"). I'd go
further: even if you don't enjoy programming, there are far more horrible ways
to earn a far worse living, and plenty of people have little choice.

Yesterday, I ordered pizza which was delivered by a guy older than me (and I'm
no spring chicken -- I learned programming on an HP calculator) who wasted ten
minutes finding my apartment because the delivery instructions were so poorly
printed as to be unreadable.

------
cnorgate
This 'response' was needed. Thank you! If anyone is interested in getting a
refreshing perspective on job and life satisfaction, you might consider
reading 'So Good They Can't Ignore You' by Cal Newport - great read on what
provides for a fulfilling career. I think the original writer of the post
could benefit from that.

[http://www.calnewport.com/books/sogood.html](http://www.calnewport.com/books/sogood.html)

Enjoy

------
AUmrysh
I got really burned out on programming my senior year at university and after
2 years of working alone on a massive web app. There are many other things I'd
rather be doing, like running a company or killing people for money or
something exciting, but I suspect that those jobs would get boring/old after a
while too.

The important thing to keep in mind is that your day job is a way to earn an
income. If you don't enjoy it, at least do yourself a favor and find one you
care to show up to every day.

If you really want to work on "hard problems" and other groundbreaking and
cutting edge technologies, you can always do it in your free time. Whether you
want to write software at work and then do it at home is another story, but
keep in mind that if you're successful, you can turn your side project into
your career, one you actually do give a shit about doing every day.

The great thing about software is that you are only limited by your knowledge
and determination. There are very few problems you need a massive expensive
computer to solve (at a small scale, at least), so your home computer is
usually just as capable as your work computer.

If you're bored with programming, why don't you start digging into the parts
that really get you excited. For me, that's functional languages and dynamic
typed languages, computer vision, and machine learning.

Don't be afraid to try new things and fail at them. If you just sit around
doing the same mundane work all day, don't be surprised when you believe all
of software is mundane.

I actually agree that programming sucks, but that's more to do with the fact
that you have to turn an idea into logic and math before you can make a
computer do it.

------
mathattack
_This would make one think that in the 70 's all software engineering was
awesome and exciting and everything that was done was cutting edge. The truth
is that at this time it was the same as it is today. They were writing machine
code (because they had to) and drivers for everything. They used punch cards
and time sharing machines. They didn't have GitHub or the Internet so code
sharing was not really possible outside your immediate social circle. I think
that there were some people then (just as there are today) who worked on
exciting stuff, but the majority were just doing a job._

This is very true. It's easy to have some appreciation for being closer to the
machine in prior eras, but it is a much better time to be a programmer today.
There are many more tools, and much more collaboration available. The time
from idea to completed project is much shorter. The ability to scale projects
is much higher. The wait time for code to compile and run is much shorter. I
can go on and on...

------
maligree
Huh. I understood the article he's referring to as something more along the
lines of "don't make «programming» your job, make it your tool". Similarly,
not becoming a "software engineer" means not becoming a merely guy with a
hammer, but a guy with and idea and a hammer. That idea I liked pretty much,
actually.

------
crazygringo
Excellent. This is what I wish I could have said in response to that other
article, but couldn't find the words for.

This post is exactly right -- and I've seen a few newly-hired programmers in
their first job out of college who had a very difficult time adjusting to the
"real world", where programming isn't about fun and games and self-fulfillment
any more, it's about creating real-world value.

There's nothing unique to programming in this -- journalists discover they
can't write about whatever they want, scientists have to follow the funding,
etc.

However, I do wonder if programmers, on average, might have particularly
inflated expectations of what their jobs will be like? Just like the original
blog post expressed. And what makes this so?

~~~
molex333
I agree, I wrote this to just to show that there are still people who enjoy
their work and think that it is a great profession.

------
antocv
Programming is programming.

It depends on what you are programming that makes it terrible or a joy.

Im right know payed to do another CRM in PHP and Id rather gauge my eyes out
at the end of the day than continue with it. Im not solving any problems at
all. Its just business/stakeholders/managers/whomever that decided a few
months ago that their CRM needed a "facelift" and here we are. We use some new
frameworks (slim), TDD, bootstrap/jquery, talk about agile/lean but in the end
the problem we are solving is just some stupid shit like making a document or
presentation better than what it was before. And the users are joyful. They
got to look at something new while at work. They compete with each other with
who will be picked to be among the pilot group, the new the cool. Like kids. A
day looks like, fix some "bug" in on the server in an older application among
arcane spaghetti-code, or some client-side jquery platitude (oh its you ie8
again?), write some new "functionality" which is fetch this data put it in
there display it like this, take this data validate, serialize and send it
over there. This is not even programming, it is bullshitting.

Then I go home and relax and read, after a while Im ready to play with python
and C, solving minor and sometimes bigger problems. Trying out some machine
learning at the moment. Ah the joy of hacking. It fills me up for next day.

~~~
martijn_himself
I am in a very similar situation. Except I do not have the energy to sit down
at home and do more programming, I am happy to get away from it until the next
day.

