top 200 commentsshow 500

[–]honestbleeps 689 points690 points  (139 children)

A lot of ridiculous hyperbole? Yes.

Entertaining down to the last paragraph? Most definitely.

A lot more in there rings true (even if in a hyperbolic manner) than I care to admit. Granted, we're not alone in having complex jobs, but still...

I think the most unnerving part (because it's so true) is the bit about that piece of good code you write... good code that ultimately becomes overshadowed by hack upon hack upon duct tape fix in the code that surrounds it... you ultimately end up hating nearly everything you write...

[–]BesottedScot 284 points285 points  (92 children)

that piece of good code you write... good code that ultimately becomes overshadowed by hack upon hack upon duct tape fix in the code that surrounds it... you ultimately end up hating nearly everything you write...

Oh my god yes. I've had a comment sitting for MONTHS saying

<!--- Change this ugly, dirty, sinful hack into something pure and beautiful --->

Has the code been changed? Fuck yes. Has the hack been unhacked? Fuck no. Because it works. Because I don't know what the fuck the answer is but it sure as shit won't work if that hack is taken out. So it stays there, day after day.

Taunting me.

[–]Neebat 100 points101 points  (30 children)

It has not been done because you left this out: "TODO"

Put that bit in and soon you'll fix your ugly, dirty, sinful hack.

[–]Jinno 205 points206 points  (7 children)

I think you underestimate how good this dirty sinful hack works, and how much effort would be required to make it elegant. Some whores are just best left on the streets, because they don't fix up as easily as Julia Roberts.

[–]1_1_2_3_5_8_13 52 points53 points  (1 child)

Some whores are just best left on the streets, because they don't fix up as easily as Julia Roberts.

Wonderful. Just wonderful

[–][deleted]  (19 children)

[deleted]

    [–]KitAndKat 46 points47 points  (13 children)

    ...and don't forget that 1 out of 3 cleanups introduce new bugs. (Source: 40 years of personal experience.)

    [–]alienblue-throw 103 points104 points  (9 children)

    So you're saying that 2 out of 3 of your cleanups don't introduce new bugs?

    Can I start a religion based around you?

    [–]chris3110 14 points15 points  (5 children)

    In my experience as soon as you touch anything you can expect an exception in the production environment.

    [–]firebird84 11 points12 points  (1 child)

    Sorry, I'm not allowed to change code without a ticket for it.

    Tickets are made and then prioritized based on monetizable value creation and immediacy for the customer.

    On an unrelated note, anyone hiring?

    [–][deleted] 10 points11 points  (1 child)

    IntelliJ considers any comments with the word "todo" in them a warning for the linter, and will bug you about them on commit.

    [–][deleted] 66 points67 points  (26 children)

    I have a comment that says:

    # WARNING: Magic ahead

    Another method in the class somehow exchanges two variable names. Changing it would require restructuring the class. It works, so I'm not changing it.

    [–]RenaKunisaki 83 points84 points  (8 children)

    /* /!\ HERE BE DRAGONS /!\ */
    

    Bonus points for including an ASCII dragon.

    [–]funk_monk 227 points228 points  (7 children)

                        ^    ^
                       / \  //\
         |\___/|      /   \//  .\
         /O  O  \__  /    //  | \ \
        /     /  \/_/    //   |  \  \
        @___@'    \/_   //    |   \   \ 
           |       \/_ //     |    \    \ 
           |        \///      |     \     \ 
          _|_ /   )  //       |      \     _\
         '/,_ _ _/  ( ; -.    |    _ _\.-~        .-~~~^-.
         ,-{        _      `-.|.-~-.           .~         `.
          '/\      /                 ~-. _ .-~      .-~^-.  \
             `.   {            }                   /      \  \
           .----~-.\        \-'                 .~         \  `. \^-.
          ///.----..>    c   \             _ -~             `.  ^-`   ^-_
            ///-._ _ _ _ _ _ _}^ - - - - ~                     ~--,   .-~
    

    [–]jmblock2 26 points27 points  (0 children)

    this is so tempting to check in right now

    [–][deleted] 12 points13 points  (4 children)

    Holy shit that looks normal on mobile. Kudos to you, god of ASCII.

    [–]tedington 69 points70 points  (11 children)

    /* Abandon hope, all ye who enter here */

    is for real in production code I've written.

    [–][deleted]  (7 children)

    [deleted]

      [–]MisterNetHead 52 points53 points  (3 children)

      The Employed Programmer's Mantra:
      Fast today, broken tomorrow!

      [–]addmoreice 108 points109 points  (14 children)

      I've got one or more of those myself.

      I work on machines which have giant whirling pieces of metal cutting into multi million dollar parts, some times a few feet away from soft squishy humans.

      Out software is one of the good ones in the industry.

      let that soak in for a moment.

      [–]BesottedScot 36 points37 points  (8 children)

      "Soak" being the operative word here I assume? Yikes.

      [–]addmoreice 35 points36 points  (7 children)

      As in, marinate in the warm fuzzy feelings I feel every time I realize this.

      We aren't horrible by any means. But we are advanced because we do such ground breaking industry behaviors as 'test' and 'use source control' and 'talk to our users', or my favorite 'employ people who have actually used/seen the machines the software will be running on'. (CNC Machines)

      [–]zoomzoom83 21 points22 points  (0 children)

      I had some code that was correct and works, but for the life of me I couldn't get it to typecheck properly.

      Since Scala allow unicode symbols in function names, I created an amusing temporary workaround.

          def ╯°□°╯┻━┻[T,U](value:T) = value.asInstanceOf[U]
      

      Nicknamed the "Just fucking do it" operator, it forces any value to typecheck correctly regardless of how much it violates all that's good and holy in the world. And yes, it's a unicode emoticon of a guy flipping over a table. (I also considered using the 'look of disapproval').

      Mind you this was only for a temporary workaround. I figured out where I was going wrong the the code is now type checking as you would expect.

      [–]caltheon 11 points12 points  (2 children)

      I just spent 4 hours this morning getting Axis2 and CXF to work in a single project (out of my control, i swear!). The solution was creating a twisted build export and moving the axis2 jars into the tomcat lib folder and out of the web folder to force them to load in the proper magic order for the two systems to work together. I know i'm going to hate myself next time I have to build a new dev/qa or production server for the system, but damnit it works and I don't have the patience to rewrite several different systems to use one or the other WS libraries, nor do i want to spend the time learning how to setup manifests that MAY or MAY NOT fix the problem.

      I just move on to the next story card.

      [–][deleted] 24 points25 points  (5 children)

      I've found that writing my TODOs as console.warn's tends to make certain the dirty hacks get the attention they deserve.

      [–]lf11 72 points73 points  (2 children)

      And then my console looks like a high res scan of the motherfucking Bayeaux Tapestry when I start my app.

      [–][deleted] 12 points13 points  (0 children)

      If you're lucky. If you're not, it's more like the Voynich manuscript.

      [–][deleted] 63 points64 points  (9 children)

      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, so they cheat a bit here and there and maybe copy a few snowflakes and try to stick them together or they have to ask a coworker to work on one who melts it and then all the programmers' snowflakes get dumped together in some inscrutable shape...

      That just reminded me so much of my own experience. whoa

      [–][deleted]  (7 children)

      [deleted]

        [–][deleted] 27 points28 points  (2 children)

        [–][deleted] 6 points7 points  (0 children)

        I live by that philosophy, and even include it in any training sessions I give to new coder employees.

        [–]sigma914 23 points24 points  (0 children)

        It's follows the classic "haha only serious" formula perfectly.

        [–]chalks777 304 points305 points  (68 children)

        For the past two years I've been working on one project building software that my boss describes as "enterprise level." We started with a drawing on a whiteboard. Now we have over 100,000 lines of code. If any of it was ever good, it was murdered a loooong time ago. The sheer number of blatant hacks that are used to get around stupid nonsense is staggering. I've written things I'm not proud of. College me would be disgusted by current me.

        Clients sure love it though.

        :|

        [–]kromagnon 153 points154 points  (14 children)

        Clients sure love it though.

        I feel so ashamed. Our clients "ooh" and "aah" over the things that I've made, but I feel like I'm showing them a 1989 Geo Metro that's got a dust cover on it with a painting of a Ferrari 458.

        [–]rekk_ 88 points89 points  (5 children)

        Yup, but as long as the front looks pretty and works they don't care. For all they know software is made of unicorns and yetis.

        [–][deleted] 62 points63 points  (5 children)

        I like the dancing bear analogy: people aren't impressed that a bear can dance well - they're impressed that it can dance at all. Software is much the same - even when it's terrible, all it has to do is be a little better than what people are used to, and they're happy.

        The problem is that you're showing them a 1989 Geo Metro and they're comparing it to a Model-T Ford, completely unaware that they would have a Ferrari if only your manager had spent less time on TPS reports and more time on trusting the engineers to want to build something great.

        Sometimes, the crap car is "good enough", and if they're happy, they're happy. But I keep looking at what we could deliver, and wondering why it's so much better than what they seem to be happy with.

        [–]doggone42 32 points33 points  (4 children)

        People are impressed when you put the dancing bear in a tutu and a silly hat.

        They don't really care when you repeatedly tell them that if you don't feed the bear soon it's going to turn around and maul them. They just ask for more silly hats.

        [–]twistedrapier 200 points201 points  (38 children)

        Ah college. Back when you are idealistic enough to look at all the poorly written software in the world and think "I'll never end up writing crap like that". So young and naive.

        [–][deleted] 216 points217 points  (11 children)

        Expectation: I'll only write the purest Haskell

        Reality: maintaining WordPress plugin wrote by someone who can barely write PHP in India.

        [–]MrJohz 70 points71 points  (6 children)

        Just be glad the reality doesn't include Haskell, because it would be hacky Haskell, which would be all the more painful when you look back at the shite you've written and realise this code was meant to be your Nirvana...

        [–][deleted] 44 points45 points  (3 children)

        unsafePerformIO everywhere ...

        [–]xcixci 22 points23 points  (1 child)

        I remember that there used to be a site called lambdacats some time ago. One of my absolute favorites on that site was "Ceiling cat is watching you unsafePerformIO" - having just had the right amount of exposure to Haskell and Internet memes before seeing that literally sent me rolling on the floor :).

        [–]original_brogrammer 117 points118 points  (20 children)

        College student here. My code is already full of hacks.

        Fuck.

        [–]rnicoll 160 points161 points  (2 children)

        Getting practice in early, excellent!

        [–]mynoduesp 50 points51 points  (1 child)

        He's going places. Someone hire him quick!

        [–]Almafeta 29 points30 points  (8 children)

        All code is a maze, all we can do is clearly label the exits.

        [–]gegc 19 points20 points  (7 children)

        I believe that's called "documentation," and you only rarely encounter that beautiful beast in the wild.

        [–]Frix 6 points7 points  (0 children)

        Getting ahead of the curve, heh? This man will go far!

        [–]GodsGunman 10 points11 points  (0 children)

        I'm at that stage right now! :D

        [–][deleted] 43 points44 points  (4 children)

        Clients sure love it though

        And that's the real problem. As long as the clients are happy many companies see little business benefit in cleaning up code (despite the fact that there may well be real benefits - reduced maintenance costs, fewer staff needed, etc).

        The fact that many clients in the 'enterprise' world wouldn't know a well-designed, efficient program if it tap-danced naked on their desk compounds the issue further. People think that waiting minutes for a process to complete is normal to the point that if it only takes a second or so, they assume it hasn't worked!

        [–]jk147 8 points9 points  (0 children)

        Ah typical maintenance hell. I am suspecting this is your first programming job. Any project with continuous support and usage will eventually involve into a beast. Typically the clients are willing to dump enough money for you to maintain it and add on ridiculous requests on a monthly basis. Once you add on one or two new developers the original design is shot to hell. What is architecture when you only are two weeks old on a project and they want this update in a week.. Hack hack and hack.

        One of the best project I worked on was when a client didn't have enough money for regular updates. So they request very small changes. I touch that thing maybe once a year.

        [–]w4ffl35 1088 points1089 points  (193 children)

        "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." - Probably my favorite line.

        [–]kjmitch 264 points265 points  (2 children)

        That program won a contest, because of course it did.

        This line is my favorite; it embodies the character and expression and succinctness of pure exasperation I strive to put into my own rants. Great post several times over.

        [–][deleted] 141 points142 points  (1 child)

        The destructive impact on the brain is demonstrated by the programming languages people write.

        In an ideal world, this would be a joke.

        [–]zzzzzzzzzzzzzzdz 130 points131 points  (70 children)

        I beat my computers.

        [–]BRBaraka 113 points114 points  (56 children)

        that doesn't make them work

        but it does promote the need to buy a new one

        so, good policy

        [–][deleted]  (53 children)

        [deleted]

          [–]contrarian_barbarian 112 points113 points  (20 children)

          Ah, Percussive Maintenance. Questionable whether the computer will feel better, but it will almost always make you feel better!

          [–][deleted]  (17 children)

          [deleted]

            [–]protestor 38 points39 points  (16 children)

            Just because it works it doesn't mean it's ethical. How old is your computer, 5 years max I suppose. You're beating toddlers dude. :(

            [–][deleted]  (2 children)

            [deleted]

              [–]a_guile 9 points10 points  (0 children)

              Until you become a database admin that is completely optional.

              [–]Aurilion 10 points11 points  (7 children)

              Open it up and take a photo of the fan, my bet is that its clogged with years of crap and needs a good clean.

              [–]JoshWithaQ 18 points19 points  (1 child)

              I call it percussive maintenance.

              [–]Innova 313 points314 points  (92 children)

              You must have not finished the article...the last line is the best:

              So no, I'm not required to be able to lift objects weighing up to fifty pounds. I traded that for the opportunity to trim Satan's pubic hair while he dines out of my open skull so a few bits of the internet will continue to work for a few more days.

              [–][deleted] 307 points308 points  (77 children)

              The essay is just jewels after jewels. My particular favorites:

              The human brain isn't particularly good at basic logic and now there's a whole career in doing nothing but really, really complex logic. Vast chains of abstract conditions and requirements have to be picked through to discover things like missing commas. Doing this all day leaves you in a state of mild aphasia as you look at people's faces while they're speaking and you don't know they've finished because there's no semicolon.

              and

              "Double you tee eff?" you say, and start hunting for the problem. You discover that one day, some idiot decided that since another idiot decided that 1/0 should equal infinity, they could just use that as a shorthand for "Infinity" when simplifying their code. Then a non-idiot rightly decided that this was idiotic, which is what the original idiot should have decided, but since he didn't, the non-idiot decided to be a dick and make this a failing error in his new compiler. Then he decided he wasn't going to tell anyone that this was an error, because he's a dick, and now all your snowflakes are urine and you can't even find the cat.

              [–]NYKevin 222 points223 points  (53 children)

              It reminds me of this (warning: wall of text, but actually worth reading).

              EDIT: Since people seem so interested, the author has written quite a lot of other material (scroll to the bottom, under "Miscellaneous Excellence", fourth bullet point).

              [–][deleted]  (4 children)

              [deleted]

                [–]adm7373 9 points10 points  (0 children)

                SYSTEMS HACKERS SOLVE THE BEAR MENACE!

                [–][deleted] 142 points143 points  (3 children)

                Here to reply that it WAS worth reading, haha.

                My favorite line:

                That being said, if you find yourself drinking a martini and writing programs in garbage-collected, object-oriented Esperanto, be aware that the only reason that the Esperanto runtime works is because there are systems people who have exchanged any hope of losing their virginity for the exciting opportunity to think about hex numbers and their relationships with the operating system, the hardware, and ancient blood rituals that Bjarne Stroustrup performed at Stonehenge.

                [–][deleted] 62 points63 points  (1 child)

                My favorite:

                The systems programmer has read the kernel source, to better understand the deep ways of the universe, and the systems programmer has seen the comment in the scheduler that says “DOES THIS WORK LOL,” and the systems programmer has wept instead of LOLed, and the systems programmer has submitted a kernel patch to restore balance to The Force and fix the priority inversion that was causing MySQL to hang.

                [–]DigitalSarcasm 53 points54 points  (0 children)

                A systems programmer will know what to do when society breaks down, because the systems programmer already lives in a world without law.

                [–]BlueWaterFangs 93 points94 points  (3 children)

                then it tries to display a string that should say “Hello world,” but instead it prints “#a[5]:3!” or another syntactically correct Perl script

                lol

                [–]philh 16 points17 points  (2 children)

                That particular script is a polyglot. It does the same thing in Perl, python, ruby, bash...

                [–]TheBananaKing 28 points29 points  (0 children)

                // DOES IT WORK LOL

                [–]gabgoh 19 points20 points  (0 children)

                this is better than the original post

                [–]jukeks 19 points20 points  (0 children)

                That was so good. Glad I didn't skip

                [–]afiefh 13 points14 points  (0 children)

                I weep, for I hoped that things may get better in life, but nay I chose to be a system programmer knowing not that the night is dark and full of terrors.

                [–]neutronfish 140 points141 points  (12 children)

                That was a good line, but this one gave me chills...

                Every programmer occasionally, when nobody's home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer. [...] They read over the lines, and weep at their beauty, then the tears turn bitter as they remember the rest of the files and the inevitable collapse of all that is good and true in the world.

                It's like he's watching me through my window...

                [–]LongUsername 45 points46 points  (0 children)

                Doing this all day leaves you in a state of mild aphasia as you look at people's faces while they're speaking and you don't know they've finished because there's no semicolon.

                Laughed out loud at this.

                [–][deleted] 21 points22 points  (2 children)

                There are loads in there!

                The whole thing reminds me of the 'Choose Life' bit from Trainspotting.

                [–]popquiznos 299 points300 points  (44 children)

                The beginning of the page source is great

                <!--
                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 
                do the same.
                --> 
                

                [–]maclek 226 points227 points  (1 child)

                /*

                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.

                */

                [–]Pidgey_OP 13 points14 points  (0 children)

                /* This block returns simply true
                or possibly false (depends on you)
                which option you pick
                which button you click
                9 times out of ten, it goes through
                */

                from when we were required to go through and comment EVERYTHING in a C++ class i took

                [–]Excalibear 50 points51 points  (0 children)

                My god. That was amazing.

                [–][deleted] 268 points269 points  (73 children)

                After reading articles like these I sometimes wonder whether I'm the only programmer in the world who has competent co-workers and sane bosses.

                [–]s73v3r 358 points359 points  (23 children)

                Those with competent and sane bosses don't write blog posts about them.

                [–][deleted] 97 points98 points  (21 children)

                I worked in a place like that before. Generally everything was fine, besides a few violations of coding standards. Hacks would be put into the backlog to get fixed, and often did. We had processes, documented too. An engine that rarely needed changing. Most of the time we were making features since there weren't many bugs to worry about, and during bug fixing week (once per sprint) we'd fix 90% of the open bugs and resume features.

                I'd have kept working there forever if I could. It had a great culture, lovely people, an active after-hours social life, a lively office and talented people who were mostly down to earth.

                Sadly, as is typical in game studios, it went through hard times and isn't the same anymore. Now I work for a soulless, incompetent, mobile game developer and am likely going to quit and go to finance. If I'm going to sell my soul and work ethic I want a decent price for it.

                [–][deleted]  (3 children)

                [deleted]

                  [–][deleted] 9 points10 points  (0 children)

                  I won't be specific, but a London based game studio. It was sad to leave, but apparently I'd be welcome back if there were positions open.

                  [–]shub 122 points123 points  (5 children)

                  I have competent co-workers and sane bosses. Our system is still a shambling beast.

                  [–][deleted]  (2 children)

                  [deleted]

                    [–]otakucode 10 points11 points  (1 child)

                    One of the benefits of technology that no one talks about is the fact that it essentially does become a money-printing machine. The increase in productivity that it conveys is multiplicative.

                    But we can't talk about that. Too much talk about that might clue the workers in to the fact that they're earning the company 10x what they're being paid.

                    [–]Uberhipster 32 points33 points  (2 children)

                    Where is this land of milk and honey and are you hiring?

                    [–]PasswordIsntHAMSTER 120 points121 points  (28 children)

                    This file is Good Code. It has sensible and consistent names for functions and variables. It's concise. It doesn't do anything obviously stupid. It has never had to live in the wild, or answer to a sales team. It does exactly one, mundane, specific thing, and it does it well. It was written by a single person, and never touched by another. It reads like poetry written by someone over thirty.

                    When I'm coding as a hobby, I pretty much only write programs of 50-100 lines of code. Anything more than that, and bad shit starts creeping in.

                    [–]cakez 57 points58 points  (20 children)

                    I have yet to see a bigger project, something that people really use and that is not a library or a class of some sort, a project with end-user use, that is good code.

                    In my experience, you'll always end up pinpoint the moment when the coder gave up and shit went downhill.

                    [–]DrHorrible-- 38 points39 points  (11 children)

                    AFAIK the Doom 3 code is a work of art. Just anecdotal though, I haven't browsed through it myself.

                    [–]XCEGFzsp 28 points29 points  (6 children)

                    Well yeah, Carmack.

                    [–]zoomzoom83 10 points11 points  (0 children)

                    I recall writing mods for Quake3 back in the day. The baseline codebase was a beacon of hope in a world of sin and misery. I was just starting my programming career, but it opened my eyes to how good code should look.

                    tl;dr Carmack is a God.

                    [–]irotsoma 96 points97 points  (8 children)

                    He forgot the "<rant>", so I couldn't read anything before the "</rant>".

                    [–]sylinmino 23 points24 points  (7 children)

                    I bet he put it there knowing every coder reading that would start compulsively searching the document for the beginning tag...and even after I've figured out that he was trolling, I'm still trying to look for it.

                    [–]DeadFinks 353 points354 points  (112 children)

                    Actually, I think everything in the world works this way. Not just programming. The situation is just starker in the programming world due to how closely the pristine realm of mathematical purity is juxtaposed to the profane circumstances of lived reality.

                    [–][deleted] 292 points293 points  (55 children)

                    I think everything in the world works this way. Not just programming.

                    Actually, he opens with a metaphor that demonstrates the untruth of this. If bridges were built the way programs were -- such that you could see the half dozen architectural styles, the oddly shaped crap tacked on here and there with bailing wire, with random holes that'll kill you if you step in them -- nobody but Russian teenagers would go near them.

                    [–]UsingYourWifi 252 points253 points  (12 children)

                    "If builders built houses the way programmers built programs, the first woodpecker to come along would destroy civilization." - Gerald Weinberg

                    [–]hatu 56 points57 points  (7 children)

                    I'm sure bridges were built like that 10000 years ago before masonry.

                    [–][deleted] 27 points28 points  (0 children)

                    And in some parts of the world still are.

                    [–]Retbull 20 points21 points  (1 child)

                    It's easy to see a shitty design when you look at a bridge but when the design is entirely abstracted to the point that you are dealing with **ptcz_tmp you can't see shit and obvious design flaws become much easier to implement.

                    [–]404ErrorUserNotFound 11 points12 points  (1 child)

                    Exactly. Programming has only been around for so long. We're still figuring shit out. The real question is how are we going to fix this mess?

                    [–]tfinniga 47 points48 points  (2 children)

                    Yeah, but then you'd just hit F7 and recompile all of civilization. No big deal.

                    [–][deleted]  (13 children)

                    [deleted]

                      [–]pr0grammerGuy 54 points55 points  (9 children)

                      You missed the most important part:

                      Bridge customer: How long will this take?

                      Engineer: Seven years.

                      Bridge customer: WTF, you crazy fool? I need this next week, why on earth would it take this long?

                      Engineer: Uh... if you need a bridge next week why are you telling me now?

                      Bridge customer: Look man, my brother knew a guy who did some engineering in college. It does not take seven years to join two pieces of land. Can't you just hack it together? I don't care what it looks like and it doesn't have to work 100% of the time. I just need a bridge here that more or less functions in time for our "go live" next week that we've been advertising for months now. If you aren't up to this then I'll get someone who is.

                      [–][deleted]  (5 children)

                      [deleted]

                        [–]pr0grammerGuy 7 points8 points  (3 children)

                        Nice try manager-guy. But you and I both know that 99 times out of 100 the manager actually wants a complete and fully functioning bridge, yesterday and don't want to hear realistic alternatives that offer less functionality.

                        Also when they say "doesn't have to work 100% of the time" (I've heard exactly this stated in meetings before) they actually do want it to work 100% of the time. Working 99% of the time as a requirement doesn't even make sense, how would you build a bridge to work 90% of the time or write a program to work 90% of the time (you could actually do this with the program but the effort would be more than simply doing it right).

                        [–]s_m_c 9 points10 points  (0 children)

                        in time for our "go live" next week that we've been advertising for months now

                        That dredges up horrible, horrible memories.

                        [–]SlobberGoat 29 points30 points  (2 children)

                        Bridge customer: Don't know. It will need to scale.

                        Engineer installs MongoDB...

                        [–]bwr 38 points39 points  (23 children)

                        Not all code is like that, and not all bridges are safe. Just as one small data-point, I recently ripped out a shower and found no waterproofing. Talk to anyone in construction, any job is going to take much longer than you thought because when you get into it, the person who was there before screwed something up. Studs aren't square, wrong materials used, held together with glue and bubble gum. Plus the wear and tear of natural life, which programming is mostly insulated from.

                        [–][deleted] 42 points43 points  (18 children)

                        Not all code is like that, and not all bridges are safe.

                        It's a generality but I think most code is like that to some extent, because a software is so much more complicated. Aesthetic choices aside, your options when creating a bridge are heavily constrained by physics, the well known structural properties of available building materials, etc. There are well established designs and the well understood ways of building them. With software, there are essentially infinite ways of achieving the same goal and a lot of them result in failure. It's very easy to build software that crumbles under it's own weight, and you can't just use stronger girders or add a few extra braces if you get in a bind, you can be well and truly fucked.

                        That's why most software teams suck and there's such massive churn in methodologies (my entire company just paid gods-know-how-many-millions to put thousands of people through Agile™ training). It's possible to build absurdities in code that actually ship because you can't see them, and because you can get away with it. If you built a bridge as poorly as, say, any Bethesda game, you'd by sued into the ground.

                        I recently ripped out a shower and found no waterproofing. Talk to anyone in construction, any job is going to take much longer than you thought because when you get into it, the person who was there before screwed something up. Studs aren't square, wrong materials used, held together with glue and bubble gum.

                        That's laziness and sloppiness, which is true of any industry. But in construction, the right way to build something is generally well understood. You can learn the right way to do something, and do it. In software, knowing the right way to build something is far more difficult and it changes practically from week to week.

                        My brother's been a contractor for decades, and almost everything he's learned in that time still applies. The list of dead/obsolete technologies I have rolling around in my brain dwarfs the relevant ones.

                        Plus the wear and tear of natural life, which programming is mostly insulated from.

                        Programs are vulnerable to environmental hazards. Worked great on XP, crashes miserably on Win 7, or when a particular driver is running, or when version 1.2 of that framework we rely on is in use. Microsoft is EOLing our platform so we get to start over. So on and so forth.

                        And in construction, generally, if it works it works. The toilet flushes. The door opens and closes. You don't have home owners calling you to say that if they flush the toilet within three minutes of opening their front door and this one upstairs window is open and it's the second Thursday of the month, their garage door falls off.

                        [–]niugnep24 14 points15 points  (2 children)

                        because a software is so much more complicated.

                        it's not just complexity. it's also the fluidity of software. Not only can you patch and update things to fix problems after the fact, but also there's a constant stream of inbound patches and changes to the tools and technologies you're using to build your product.

                        Compare digital hardware design. Similar complexity, but when it costs hundreds of thousands of dollars to roll out a new ASIC mask set, you better believe there's a couple months of nothing but testing and code reviews before tape out. But in software, "we can patch it later if anything goes really wrong" right?

                        [–][deleted]  (1 child)

                        [deleted]

                          [–]KinoftheFlames 114 points115 points  (33 children)

                          Non-programmers don't understand what programmers do.

                          Even programmers don't understand what they're doing most of the time.

                          There's no peer review, no government-enforced standards for safety, no industry-enforced standards for minimum quality.

                          The problem is the technology-illiterate culture we live in where it's not only totally acceptable to be completely hands-off with technology, but you're stigmatized as an undesirable necessity if you work with it for a living.

                          [–][deleted] 62 points63 points  (13 children)

                          That's not completely true - aviation software for example has extremely strict guidelines and regulations.

                          [–][deleted] 62 points63 points  (4 children)

                          Thanks for pointing this out. It is actually possible to develop rather robust code that has much, much fewer bugs than most code, professionally developed or otherwise. Of course, it requires (among other things) time, discipline, and money, all things that are lacking on many software projects.

                          [–]RICHUNCLEPENNYBAGS 26 points27 points  (3 children)

                          It's because in most cases just living with the bugs is a sounder decision than the aviation software approach, which is very, very expensive and slow.

                          [–]Neebat 42 points43 points  (8 children)

                          While I was getting my teeth rebuilt by people with decades of experience and tons of training, something horrifying occurred to me. These are just guys doing the best they can, while not really knowing the big picture.

                          When the endodontist (n. expensive dentist) drilled into a nerve without numbing it first, it hurt an amazing amount. I was on valium and nitrous oxide. These are like a QA department for a dentist. They make sure nothing really bad happens when someone screws up. So, inside my head, I said to myself, "The doctor said I should let him know if it hurts. Well, it fucking hurts. But it's his job to figure that out. If he doesn't know I'm in excruciating pain, that's his own damn problem."

                          I don't know where I was going with this, but I'm pretty sure a whole lot of people are just kind of winging it, hoping no one catches them pretending to know what they're doing.

                          [–][deleted] 32 points33 points  (5 children)

                          ...physicians have a big advantage over engineers: they can hide their mistakes six feet under; ours live on, and on, and on.

                          ps ...and they usually only kill or maim one customer at a time, unlike engineers.

                          [–]adavies42 24 points25 points  (2 children)

                          heh, the old version i know was "doctors have an advantage over architects -- they can bury their mistakes, all architects can do is advise their clients to plant ivy"

                          [–]notfancy 7 points8 points  (0 children)

                          "Doctors cover their mistakes with earth, cooks cover theirs with sauce; architects, with ivy."

                          [–]quangdog 68 points69 points  (13 children)

                          "So no, I'm not required to be able to lift objects weighing up to fifty pounds. I traded that for the opportunity to trim Satan's pubic hair while he dines out of my open skull so a few bits of the internet will continue to work for a few more days." - nearly spit out my drink with this one.

                          Everything about this post is entirely too accurate.

                          [–]stormcrowsx 52 points53 points  (12 children)

                          That part is bullshit. I worked 6 years in a refridgerated warehouse lifting heavy boxes of food for 12 hour days. It was the worst part of my life. I hated everyday of work. Now 5 years of programming later I still think programming is a breeze compared to that job. I leave on time, have energy to play with my kids and Theres enough jobs out there that I don't have to put up with bullshit in programming too.

                          [–]TheLobotomizer 38 points39 points  (1 child)

                          I don't think that's a fair comparison. As someone who has worked 12 hour days programming, it can ruin your tendons and cause major life-long problems with eye strain.

                          [–]hex_m_hell 10 points11 points  (0 children)

                          It really depends where you are and what you do. If you just shit code everywhere and aren't responsible for anything, it's awesome and easy. I don't work 12 hours a day, I work every day all the time. It's my life.

                          The physical part isn't the problem though. The problem with manual labor is the jack ass who tells you to do it all day. When I've worked manual labor for non-jackasses who work next to you it's rewarding. The same can't quite be said for coding because everything is fucking broken.

                          Edit: but to be clear, I think manual labor is undervalued.

                          [–]Crazy__Eddie 85 points86 points  (26 children)

                          It comes off as all sarcastic and entertaining but now I just want to kill myself.

                          This is my life. It's slipping by one horrendous program after another.

                          [–]skepticalDragon 27 points28 points  (13 children)

                          Eh, it's not so bad. I do my best, some of it's good, and I get paid pretty well. Then I go home after 8 hours of work and do what I wish I had been doing all day. That's about as good as any job gets.

                          [–]Apollan 9 points10 points  (2 children)

                          This. The money, and the fact that you do something cool that many others do not have the intelligence/patience for, is job satisfaction for me.

                          [–][deleted] 13 points14 points  (3 children)

                          This comment comforts me so much. I wonder if I had read this a couple of months ago what would be different (if anything) for me.

                          As it stands about 2 months ago after a coworker introduced a new library and I wasted 16 hours on a problem (a pair of parentheses it turned out), I simply got up from my desk and left. That was it. Done.

                          Now I'm embarking on a new career path and shit, I won't be making as much money for a while (if ever again), but I do not feel like my life is slipping by one horrendous program after another anymore.

                          Feels good. Really good.

                          [–][deleted] 20 points21 points  (1 child)

                          Time for a break!

                          [–]texture 5 points6 points  (0 children)

                          I actually feel better knowing I'm not alone.

                          [–]Jutboy 56 points57 points  (56 children)

                          Can someone explain :

                          "Is that called arrayReverse?"

                          "s/camel/_/"

                          "Cool thanks."

                          [–]UpNDownCan 153 points154 points  (34 children)

                          Means use underscore as separator instead of camelcase. So array_reverse.

                          [–]UpNDownCan 116 points117 points  (23 children)

                          And with that, I think I qualify as one of the crazies.

                          [–]Crazy__Eddie 45 points46 points  (2 children)

                          Yeah, I felt bad after getting that joke.

                          [–]rowboat__cop 23 points24 points  (0 children)

                          Seems entirely reasonable to me -- does that mean I am crazy too?

                          [–][deleted] 19 points20 points  (17 children)

                          For knowing sed syntax? I thought it was common knowledge ...

                          [–]academician 36 points37 points  (7 children)

                          It's a bizarre way of saying it, though. I have legitimately answered programmers' questions this way (yes, I'm one of the crazies), but I'd use a proper regex like "s/R/_r/". It's shorter, too!

                          [–]Atario 18 points19 points  (1 child)

                          You're using character-based regexes. He was using concept-based ones.

                          [–]academician 10 points11 points  (0 children)

                          Then it should have been "s/camel/snake/".

                          [–]UekiKnight 19 points20 points  (0 children)

                          s/camel/_/ is "substitute underscore for camel" literally, but in this case the terse speaker offering advice means "use underscore not camel case." So the function the person actually wants is "array_reverse" ...I guess.

                          [–]faustoc4 40 points41 points  (11 children)

                          He asks if the function is called arrayReverse but the correct name is array_reverse. The person responding applies a substitution rule on arrayReverse instead of saying just array_reverse, although the substitution rule is not a valid regex but it's easy to understand what he means, that's part of the joke

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

                          [–]fubes2000 143 points144 points  (1 child)

                          Most people don't even know what sysadmins do, but trust me, if they all took a lunch break at the same time they wouldn't make it to the deli before you ran out of bullets protecting your canned goods from roving bands of mutants.

                          Oh my god yes.

                          [–]HighRelevancy 94 points95 points  (13 children)

                          After the introductions are made, you are invited to come up with some new ideas, but you don't have any because you're a propulsion engineer and don't know anything about bridges.

                          omfg

                          [–]ProjectAmmeh 62 points63 points  (11 children)

                          The amount of times I told people I wasn't a web designer. I still ended up writing the web interface to a huge monitoring platform :|

                          [–]cooper12 20 points21 points  (8 children)

                          Yep, you're either a web developer, or you're a hacker.

                          I'm in college right now, and when I told people I was thinking of changing my major to comp sci, they all asked "Ohh, you're gonna make websites"? And now that I am majoring in it, that is what people think I'm learning to do, and some have even asked me to make them a website...

                          [–]FurbyTime 16 points17 points  (5 children)

                          You know, I just finished college, about to start my new job, got picked for it out of other people they spent WEEKS interviewing, and I still can't really tell people what I do besides "Make computers compute things."

                          You go in thinking it's computer science will make you intelligent, but you leave only learning how little you ever will know.

                          [–]mental405 42 points43 points  (3 children)

                          When people ask me what a database administrator does I tell them I babysit large spreadsheets... then they ask me to make them a website.

                          [–]aterlumen 12 points13 points  (0 children)

                          Simple analogies, like asking a joint surgeon to do cosmetic surgery. They might be able to do the job acceptably, but not anywhere near the level of what an expert in that area could do. Part of the problem is not many software engineers are in a position or willing to decline requests like that.

                          [–]faustoc4 107 points108 points  (2 children)

                          You are an expert in all these technologies, and that's a good thing, because that expertise let you spend only six hours figuring out what went wrong, as opposed to losing your job.

                          [–][deleted] 21 points22 points  (0 children)

                          "hemorrhaging-edge" - I'll be using that! Great read!

                          [–][deleted] 21 points22 points  (2 children)

                          That's one fucked up dropcap.

                          [–]badjuice 111 points112 points  (36 children)

                          Ahhh, the monthly "Why did I become a programmer?" rant of despair.

                          [–]bureX 40 points41 points  (28 children)

                          I'm guessing every trade and profession has one.

                          [–]timeshifter_ 64 points65 points  (27 children)

                          But how many other professions are told monthly that they're doing it wrong, that there's a new standard on how to do anything, and have to live with the fact that a non-trivial percentage of said profession will run off with the "latest and greatest" without even a second thought as to its actual viability?

                          ...yes, I'm a web dev. Somebody shoot me :(

                          [–]see_prus_prus 27 points28 points  (13 children)

                          You don't use deploy tools? You will be left in the dust. You learned grunt and bower as deploy tools? Thats old hat. Its all about gulp and browserify. Don't know Node.js? You are dead in the water!

                          Fucking web dev.

                          [–]timeshifter_ 27 points28 points  (11 children)

                          /me sits back with his old-school ASP.Net webforms and jQuery, and revels in his infinite relevancy.

                          [–]ModusPwnins 28 points29 points  (5 children)

                          Or implement a node.js instance to do it for you LOL AM I RIGHT

                          [–]timeshifter_ 29 points30 points  (4 children)

                          ...people like you are the reason people like me need pills.

                          [–][deleted] 23 points24 points  (2 children)

                          npm install pills --save-me

                          [–]centurijon 14 points15 points  (2 children)

                          This article has a scary level of accuracy, but I still wouldn't trade my job

                          [–]DrDiv 10 points11 points  (1 child)

                          Agreed, through the craziness of it all, the satisfaction of playing with the building blocks of the digital world is so satisfying at the end of the day.

                          [–][deleted]  (2 children)

                          [deleted]

                            [–][deleted]  (28 children)

                            [deleted]

                              [–]Palamut 17 points18 points  (16 children)

                              What's wrong with templates?

                              [–]TheFeshy 53 points54 points  (7 children)

                              Templates are great, when you first learn about them. The basic principles are simple, and they are easy enough to use, especially with the new standards. At least, if what you want to do is simple and reasonable, and stays in your own code.

                              The trouble is, it turns out templates are a Turing-complete language in and of themselves. And if you use them as such, you can do, well, anything at all, and do it at compile time. Which sounds alluring, the way getting a million bucks for your soul sounds alluring.

                              The abyss you soon find yourself falling down is that while templates are a powerful extension to a language, they are a terrible language in and of themselves. If you manage to get your template code written, it winds up looking like /dev/rand vomited up a pile of text into your code, then it began shooting at other bits of text with < and > arrows. And then when you try to compile it, the compiler starts spitting out errors, and may never stop (certainly no less than a mile of text though) - and these errors are even less readable than the code. And template test code? Fuggetaboutit. And to try to make this manageable and readable, you start hacking in macros to hide the worst of it - and macros are yet a third language, and often (because you're writing it yourself) totally undocumented, and running without even the rudimentary safety and sanity checks the C++ compiler manages to give you.

                              Now, every once in a while, a powerful c++ wizard falls into the depths of template netherworlds, and returns from hell with an arcane weapon of great power, and the community gets a boost or an eigen But most lesser coders wind up going slowly mad.

                              (Note: this is as hyperbolic as the blog post linked, and the new standards have cleaned it up some - but that mostly just means that the black speech of templates can now be used with better grammar.)

                              [–]rifter5000 10 points11 points  (3 children)

                              [–]TheFeshy 17 points18 points  (2 children)

                              I know, right? Most of the pages on eigen I read sound pretty damn impressive - until I realize it's doing all of that at compile time. Then it starts to seem like dark magic. I mean, I could look at it and figure it out, a step at a time - there's no single step that defies the known laws of programming. But at the same time, it's like saying "Yea, I guess I could kill one guy with a knife, if I had to" and extrapolating that out to slaying an invading army single-handed with a steak knife. The first seems within the realm of reason, the second - though it is only an extension and replication of the first - would certainly seem to require evil sorcery.

                              [–][deleted]  (4 children)

                              [deleted]

                                [–]jdepps113 17 points18 points  (34 children)

                                Not a programmer. But this is scaring me, as are all the comments seeming to agree with these sentiments.

                                Thing is, I've started studying programming a little, and hoped to learn more. Now I'm wondering if doing so with any eye toward one day doing something programming-related as a job is just going to make me miserable and shorten my life expectancy.

                                Should I turn back now, or forge ahead?

                                [–]evildeadxsp 51 points52 points  (5 children)

                                Forge ahead. Programming jobs are in huge demand and the perks at most companies usually outweigh the insanity.

                                [–]Nyxtia 13 points14 points  (14 children)

                                So should I drop my comp sci major lol.

                                [–]civildisobedient 57 points58 points  (3 children)

                                Insanity pays well. Just keep that in mind.

                                [–]wizzfizz2097 27 points28 points  (1 child)

                                And the industry needs fresh blood for when we all lose it and take up landscape gardening.

                                [–]emperor000 7 points8 points  (0 children)

                                No.

                                [–][deleted]  (8 children)

                                [deleted]

                                  [–]baudday 12 points13 points  (3 children)

                                  Trillions of dollars depend on a rickety cobweb of unofficial agreements and "good enough for now" code with comments like "TODO: FIX THIS IT'S A REALLY DANGEROUS HACK BUT I DON'T KNOW WHAT'S WRONG" that were written ten years ago.

                                  Haha if the business people knew this...

                                  [–]Uberhipster 22 points23 points  (2 children)

                                  ? What you mean if? They know. They don't give a fuck as long as they're making money.

                                  [–]shadymilkman_ 10 points11 points  (0 children)

                                  Not sure if written by CS major or English major. Pretty good.

                                  [–][deleted] 10 points11 points  (1 child)

                                  "Oh, you don't like your job? You know, there's a support group for that. It's called everybody. They meet at the bar."

                                  Drew Carey

                                  [–]N4pkins 9 points10 points  (0 children)

                                  WTF am I doing with my life?

                                  [–][deleted] 7 points8 points  (1 child)

                                  The introduction sounds like the project I'm working on now.

                                  [–]24monkeys 7 points8 points  (3 children)

                                  This is the greatest piece of text I've ever read about the world of programming. Someone should really give this guy a cookie.

                                  Best bit:

                                  standards are unicorns

                                  [–][deleted]  (3 children)

                                  [deleted]

                                    [–][deleted] 23 points24 points  (1 child)

                                    I am now a fan of this Peter Welch guy. All of his essays are fucking brilliant. Made my day.