Programming Sucks

10 years ago (stilldrinking.org)

The page source has a nice gem:

  <!--
  So this guy we just interviewed at my
  current job wrote this little script
  to see if a product update for some 
  company had come out. Every 10 seconds
  the script urllib'ed the page, checked
  the length of the html - literally
  len(html) - against the length it was
  last time it checked. He wrote a blog
  post about this script. A freaking
  blog post. He also described himself
  as "something of a child prodigy"
  despite, in another post, saying he
  couldn't calculate the area of a slice
  of pizza because "area of a triangle 
  with a curved edge is beyond my 
  Google-less math skills." Seriously 
  dude? I haven't taken geomtry in 20 
  years, and pi*r^2/8 seems pretty 
  freaking obvious.

  The script also called a ruby script
  to send him a tweet which another 
  script was probably monitoring to text
  his phone so he could screenshot the 
  text and post to facebook via 
  instagram.

  I think the "millenials" - who should
  be referred to as generation byte - get
  undeserved flak, as all generations do,
  for being younger and prettier and 
  living in a different world.

  But this kid calling himself a prodigy
  is a clear indication of way too many
  gold stars handed out for adequacy, so
  to ensure that no such abominable
  script ever does anything besides 
  bomb somebody's twitter account, this
  comment shows up exactly 50% of the 
  time, and I encourage others to do 
  the same.
  -->

  • my favorite:

    /*

    Yeah, there's some shitty code here. There are some things that shouldn't be done. I did them. Sometimes, I had my reasons. Sometimes, I was just being lazy. But guess what? You're sitting there reading the source on some guy's blog. So fuck you.

    */

  • In case anyone goes searching the source for this comment right away before reading it the whole way through on Hacker News, it says at the bottom that it will only show up 50% of the time, so if you don't see it the first time, keep refreshing the page until it shows up in the source.

  • To discover, in his very own incredibly pretentious words, the subject of this mini-rant, or in case you suffer from some lingering uncertainty that the contemptuous tone of same is merited, please hie thyself to http://marc-w.com/, where you'll find his blog, which I swear to God is actually called "Programming Awesome".

    And, yes, of course I realize it's a bit rich for me to call anyone pretentious, but really. If he were even remotely sympathetic, I'd be embarrassed on his behalf. As it is, I'm just sort of uncomfortably amused, the way you might be when someone you don't really like has just publicly wet himself and failed to notice.

  • Are you sure that's in the source for the blog post? Because I don't actually see it in there, I searched for "so this guy" and "interviewed" too.

    • The comment appears randomly 50% of the time. Try refreshing the page 10 times and check the code every time, you will have a 1023/1024 chance to see it.

    • Why did I get a downvote? Seriously, when I searched "So this guy we just interviewed" in the page source, I didn't get any results. Did I miss something?

      1 reply →

This is one of the most brilliant pieces I've ever read about programming. It's funny and really manages to capture the frustrations a programmer faces through the days, months, and years with his relationship with code.

I guess what we miss in programming is a standardized way to do things and if you did it that way your accountability ends there. There's a lot of uncertainty being dealt with all the time because there's no de-facto "THIS IS THE WAY IT'S DONE BRUH!" for pretty much anything. Maybe that's what makes it interesting ? It's definitely what makes it stressful.

  • > I guess what we miss in programming is a standardized way to do things and if you did it that way your accountability ends there.

    Isn't that what Java is for? But seriously, I would rather have the opportunity to do it right, even with the concomitant risk of being responsible for having done it wrong, than to find myself in a field where what matters is not whether my work is right or wrong, but only that it's done according to the rules.

    If you're a web developer, and if "THIS IS THE WAY IT'S DONE BRUH!" is what you're looking for, you should really try Ruby on Rails, because that's their entire philosophy, and they're really very good at it -- so good, indeed, that in every major version they do it all over again.

"Is that called arrayReverse?"

"s/camel/_/"

"Cool thanks."

> Wasn't that guy helpful? With the camel? Doesn't that seem like an appropriate response? No? Good. You can still find Jesus.

That made perfect sense. Aw crap.

  • Stuff like this bleeds over into my "normal" life all the time, and it's starting to get really embarrassing. Correcting my mother's inaccurate typing on Facebook by replying with a sed substitute pattern only serves to make me look like a douche.

    • > ...only serves to make me look like a douche.

      Forgive me for telling you what you no doubt already know, but there's a reason for that. Actually, correcting people's inaccurate typing at all on Facebook makes you look like a douche, and there's a reason for that, too. I understand how you feel when you see it; I used to feel the same way. But there truly is a lot to be said for the idea that what matters is how well it gets the point across. Besides, having to explain what a sed replacement is and how it works, in Facebook comments, is like having to explain the joke, and only realizing partway through the explanation that the joke was not funny in the first place.

  • I didn't even realize how nonsensical it looks to the average person until I read it over a few times.

    "Yep, change it to dead snake case; what's the problem here?"

I'm struggling to find any sort of counter argument that isn't, "But we get to make something cool!" Which is wrong, because most of our time, we're coding up something that shits CSVs so someone can go into a meeting and highlight some menial point to other managers.

  • Yea, I had big dreams of working on compilers and kernels only to realize i'll probably be working on ecommerce sites for the rest of my life.

  • > I'm struggling to find any sort of counter argument that isn't, "But we get to make something cool!" Which is wrong, because most of our time, we're coding up something that shits CSVs so someone can go into a meeting and highlight some menial point to other managers.

    "We get to make something cool!" is not the same as "Everything we make is cool!" I'm not a professional programmer, but it seems to me that, if you're not also (in addition to your job) programming in your spare time for the sheer joy of creating, then you're probably not the best programmer you could be.

    • I also meant to say that even if we do eventually make something cool, the crushing realities of working as a software developer still sucks.

      Granted, if you're a Googler or Amazonite, or otherwise working for a decent company, this isn't true. But most software developers aren't Googlers or what have you.

This is why I only work for engineering-driven organizations. If I'm going to be slogging through things, then I want the work to be interesting, challenging, and I need to know my opinion will be heard and respected. I know my peers are reasonably high caliber, and will not compromise quality.

These qualities are extremely counter to a lot of corporate jobs, where development is a cost that should be cut, there's never enough time for anything (because, business!), and the work is CRUD-driven.

  • Any job or work can eventually become frustrating. That's why its called a "job" or something your "work" for. Even if you work for the greatest company in the work with the best engineering driven "culture", there will be something that will hinder you due to business.

    The only place I knew which didn't have any business pressure was the old Bell Labs. That's because of the AT&T was a monopoly and was allow a profit of 7%. That meant any expense can instantly be justified because no matter what AT&T would earn 7%.

    End of the day, engineering is about compromises and tradeoffs. It's applied science. It's about being practical and sometimes that means we need to compromise on "quality". That's what makes good engineering culture. A product that ships and makes money is infinitely better than a product that doesn't ship. So, I don't think it's right to assume that the corporate approach is incorrect. In fact, it is better simply because once you get business involved, a lot of the decisions become impersonal.

    • You probably know this already but for the youngins ... such places (such as the old Bell Labs) don't exist anymore. Research labs have gotten a lot more stressful over the years. Simple problem of having to justify their existence, and aligning with the products of their sponsor company.

      When I try to explain to loved ones that research is a dying career path (which I sadly invested in by getting a PhD), I get pep talks saying that I should be more optimistic :-p

"Every programmer starts out writing some perfect little snowflake like this. Then they're told on Friday they need to have six hundred snowflakes written by Tuesday..."

I too once dreamed of perfect programs. Then I got a real job.

->The only reason coders' computers work better than non-coders' computers is coders know computers are schizophrenic little children with auto-immune diseases and we don't beat them when they're bad. HAHAHA so true

Absolutely brilliant article. From someone who has, in times of stress, had nightmares in code, and spent minutes in normal conversation formulating replies to illogical questions, before realising they were illogical.

Programming doesn't suck, but you really need to take a break sometimes!

A friend sent me this article on IM, and I read it when I needed a break. I needed a break because the method I want to call is private, and deprecated, and the suggested substitute in the deprecation comment doesn't exist. If I go ahead and call it via reflection, the implementation is commented out with a TODO comment.

Sigh.

Programming is beautiful and interesting and filled with creative folks who want to express themselves. That's what I see in programming.

Should every creative and expressive person be on a team writing code, hell no - we've seen what they produce and it's not something you ship to people.

The individual themselves though, their ideas and their input and their drive and passion. I enjoy that company and when we gel as a team.

Programming is beautiful.

  • > Programming is beautiful.

    It can be. But corporate programming too often is... well, it's often not as bad as the article said, but it's somewhat less than beautiful.

  • I'm not just a programmer, I'm an artist in other media. I play music very deeply. It's just as full of suffering.

Oh my god, this guy should go on tour, or at least get to give an intro speech / keynote introduction at some big conference... something

For a field that has a number of classic formulations of this essay (look up "The Story of Mel, a Real Programmer"), this is a new and excellent addition to the genre.

It's not just about programming. In writing up my own bit on this piece (http://redd.it/24cxgc), I happened to look for the origins of the phrase "complexity is the enemy", figuring it would turn up in some late 1980s / early 1990s Usenet post.

Nope.

The Economist Newspaper, Jan 18, 1958, volume 186: "It is easy to see that complexity is the enemy of reliability".

(Thanks again to the Google ngram viewer).

Bruce Schneier takes this one step further and notes that "Complexity is the enemy of security"

https://www.schneier.com/news-038.html

This also applies far beyond just programming, the Internet, or IT. All technology faces this problem, and it's going to bite us by and by.

I cannot possibly recommend this post enough. Is this the top of the front page yet? Or is it some random drool about Bitcoin or gossip about funding another zero-revenue startup or the other nonsense that dominates here?

Everyone should read this.

For the curious, these are the languages of the example Hello World programs:

* Brainfuck[0]:

    >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]
    >++++++++[<++++>-] <.>+++++++++++[<++++++++>-]<-.--------.+++
    .------.--------.[-]>++++++++[<++++>- ]<+.[-]++++++++++.

[0]: http://en.wikipedia.org/wiki/Brainfuck

* This one I googled, it's called Ook![1][2]:

    Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
    Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
    Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
    Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
    Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
    Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
    Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook!
    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
    Ook. Ook. Ook. Ook. Ook! Ook.

[1]: http://www.dangermouse.net/esoteric/ook.html [2]: http://esolangs.org/wiki/ook!

* This one is in Perl[3]:

    #:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :||
    open(Q,$0);while(<Q>){if(/^#(.*)$/){for(split('-',$1)){$q=0;for(split){s/\|
    /:.:/xg;s/:/../g;$Q=$_?length:$_;$q+=$q?$Q:$Q*20;}print chr($q);}}}print"\n";
    #.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:|

[3]: http://mysite.verizon.net/les.peters/id2.html

Stephen Ramsay how did you find this article and be the first to post it on hacker news? This is _the_ most appropriate hacker news story there ever was.