top | item 6482005

Programming is Not Terrible

53 points| molex333 | 12 years ago |blog.m1cr0sux0r.com | reply

38 comments

order
[+] debacle|12 years ago|reply
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|12 years ago|reply
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.

[+] NathanKP|12 years ago|reply
putting together CRUD apps and laying out contact forms

That's the problem. If that's all you are doing 90% of the time after ten years it's time to move on to a different company.

Once a company gets large and has numerous engineers it tends to settle down into a environment where people have set roles as engineers where they work on simple boring projects.

But when you are building something from scratch in a small startup team you'll often have a more flexible role where you are writing core code, solving scaling problems, configuring servers and load balancers, tuning database queries, and numerous other things. From day to day you are learning new technologies and coding new things all the time.

That's what keeps software engineering fresh and enjoyable for me.

[+] Vaskivo|12 years ago|reply
To this whole discussion of "Is programming terrible or not?" I have to quote Sturgeon's Law: "Ninety percent of everything is crap."

I'm just a newbie (started my programming job 9 months ago) but most of the stuff I do is kinda boring. I try to enjoy myself, and I believe clever people can find ways to enjoy what they're doing. Somedays are just a bore, with crappy documentation, crappy tools, and everything just crashes around you. Other days you find a new and interesting problem. This is when you must set your brain free and tackle that problem like an hungry wolf.

And in the end, it's just my job. I NEED to have a job to have my independence and enjoy some of life's pleasures. But it's just a job. It's a mean to an end. I need a job to buy videogames, go to the movies, travel, enjoy an expensive dinner, etc.

And I like programming. I program at home, making games and scripting stuff. I't just that 90% of software engineering is crap. You just need to wait for and enjoy the other 10%.

[+] crazygringo|12 years ago|reply
There's a great Vooza video that pokes fun at wide-eyed wonder. [1]

"Does your enthusiasm permeate the walls of our office like a disease?" "In the tech world, you've got to be incredibly passionate about... really boring things." "They need to care more about our mission... than whether or not they're gonna get health care. 'Cause they won't."

[1] http://vooza.com/videos/job-requirements/

[+] willurd|12 years ago|reply
I don't agree with you. Therefore you lack the mental wherewithal to understand my point of view. I mean just look at all these connections I make between unrelated things. I also have all these cool statistics I made up to prove (not really) my point, so obviously you're wrong.

In all seriousness, though, maybe the programming you've done has been a slog. I'm sure I speak for quite a few programmers here on HN in kindly asking you to not call us all stupid for liking something you don't.

[+] Shish2k|12 years ago|reply
> 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.

I would do that, I just don't have enough time :(

[+] molex333|12 years ago|reply
As the author of this post, I can tell you that many of the things I do day to day are not mentally challenging, but are still fun. Have you ever played any games in your life? Are they still fun when they aren't mentally challenging? Of course. If you enjoy something, then it will be fun whenever you do it. Not just cool problems or challenging ones, but all problems. The only part of my job that isn't fun is going to pointless meetings..but that is a crappy part of most corporate jobs.
[+] Afforess|12 years ago|reply
Wow I thought I was cynical. Have you considered doing something new? Learning a new framework or language often gives me a fresh perspective on past projects.
[+] NathanKP|12 years ago|reply
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|12 years ago|reply
"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.

[+] mschmo|12 years ago|reply
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|12 years ago|reply
Thanks for the input, I have since modified this a bit to make the links more visible.
[+] Tloewald|12 years ago|reply
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|12 years ago|reply
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

Enjoy

[+] AUmrysh|12 years ago|reply
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|12 years ago|reply
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|12 years ago|reply
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|12 years ago|reply
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|12 years ago|reply
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|12 years ago|reply
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|12 years ago|reply
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.