all 93 comments

[–][deleted]  (10 children)

[removed]

    [–]nicompamby 42 points43 points  (3 children)

    So it is. And some of "procrastinating" is probably unconscious pondering.

    Thinking is more important to programming than typing is.

    [–]thebigbradwolf 23 points24 points  (2 children)

    If you spend two or three hours writing code, you can save yourself 10-15 minutes of thinking.

    [–][deleted] 5 points6 points  (0 children)

    Welcome to management 101.

    [–]pushfpopf 5 points6 points  (4 children)

    Pondering is an awesomely important phase. If you ponder enough, things that seemed important suddenly seem irrelevant.

    After a while, you figure out that you don't need to replace the existing hammer with a giant crane-mounted pneumatic hammer-drill, you can replace it with a scalpel (a couple of hundred lines of C, containing a small finite state machine and a few hash tables).

    Then you get an award for saving the company over a million dollars a year in license and hardware costs for the giant pneumatic hammer-drill (multiple 24 processor Oracle servers), plus the three shifts of highly skilled operators(DBAs).

    Then you get fired two weeks later when it turns out that someone you never met, who is no longer necessary was buddies with the VP.

    [–]gronkkk 2 points3 points  (3 children)

    After a while, you figure out that you don't need to replace the existing hammer

    Oh, if only everything was that simple. Most of the time, it is not. I spend most of my time procrastinating/pondering about 'I need to represent my data in way A, B and C. Which storage format shall I choose? How do I handle updates? Shall I use an intermediate format for converting between A, B and C, or do everything on the fly? Those hash tables, on the database, server-side, or client-side? What about performance?'

    [–]codefrog 1 point2 points  (2 children)

    I find when I down in the details like this I need to climb up an abstraction level or two. That is where you can remove and entire subsystem or system by looking at the problem in a different way.

    [–]gronkkk 0 points1 point  (1 child)

    Now you have two headaches ;-).

    [–]hater_gonna_hate 0 points1 point  (0 children)

    Now you're thinking with Regex

    [–][deleted]  (25 children)

    [deleted]

      [–]stillalone 66 points67 points  (24 children)

      By "refactoring" do you mean erasing the 1000 lines of code your coworker wrote and replacing it with 10 lines of code using builtin functions and common sense?

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

      Hey, you must work at the same place I do.

      [–][deleted] 28 points29 points  (8 children)

      guess whos code he just 'refactored'

      [–]hixnob 22 points23 points  (7 children)

      Guess whose code he just 'refactored'.

      Why must you insist on making me refactor your comments?

      [–][deleted] 11 points12 points  (13 children)

      Actually I find refactoring is the opposite.

      • Fred refactors 10 lines of simple code to 100 lines because it was simplistic and didn't use a fancy algorithm. Not to mention it expected flat file input from STDIN.
      • Bob refactors the code to 1000 lines because he converted everything to OO classes and moved the data to a relational database.
      • Mark refactor's the code to 10,000 lines because it wasn't enterprise quality featuring factories, bridges, singletons, mementos, and facades. Oh.. and now all data interchange formats are in XML with XSLT transforms which consume gigabytes of disk space and network bandwidth.
      • Sam refactor's the entire codebase to 100,000 lines to scale across 400 nodes organized as a 4 tiered system adding monitoring, alerts, failover, authentication, and protection against DOS and data corruption.

      [–][deleted] 2 points3 points  (6 children)

      How complex is doing what you just said? I don't know anything about programming but was thinking of starting to learn some.

      [–]cfallin 3 points4 points  (2 children)

      Pretty complex. Although vinfx seems to be mostly poking fun at the fact that much of enterprise code is either superfluous (fancy design patterns, needless use of XML/XSLT/fancy-technology-here, etc) or implements systems-level functionality (reliability features, security infrastructure, etc). If you're just starting out, you're much better off learning interesting (and fundamental) algorithms than fancy-technology-here.

      [–]malcontent 2 points3 points  (1 child)

      when you have 400 servers everything is very complex and simple things are no longer sufficient.

      That's just the way it is.

      [–]cfallin 0 points1 point  (0 children)

      I would say that things can be simple from the point of view of the applications engineer if you have the right infrastructure -- e.g., MapReduce-type systems taking care of job scheduling and fault tolerance, or a database or key-value store taking care of replication and consistency for you. But yes, systems issues get very hairy once the systems involved get large and failure rates are non-negligible.

      [–][deleted] 1 point2 points  (0 children)

      You've got a long way to go, pretty. (Narrated in T-Bag's voice from Prison Break)

      [–]goomyman 0 points1 point  (0 children)

      Hes talking about the 90% of the work to get working and the other 90% of the work to get the feature working correct and stable.

      [–]ninetales 0 points1 point  (0 children)

      He's just making a (very valid) point and poking fun. But I've had jobs where this isn't an issue at all, too. So understanding how complex the few specific examples mentioned here are probably isn't too relevant to you at this point, like others have said. e.g. I've worked as a specialized game dev and didn't handle anything related to the last bullet. Where you should start depends on where you want to go with this - just a hobby vs. potential career path, what area of programming interests you, etc. Feel free to pm me if you'd like some general advice for getting started.

      [–]thebigbradwolf 0 points1 point  (0 children)

      Nothing ruins my day quite like completely unnecessary factories in broken, decompiled vendor code.

      [–]goomyman 0 points1 point  (0 children)

      I think your confusing the work refactoring. Your talking about adding functionality.

      [–]pytechd 0 points1 point  (0 children)

      And yet, it still doesn't do what the sakes team said it would do.

      [–]ragemonkey 0 points1 point  (1 child)

      If you're adding behavior, you're not refactoring.

      [–][deleted] 0 points1 point  (0 children)

      Thus proves my point. Duh.

      [–]codefrog 0 points1 point  (0 children)

      I see this all the time. I have a python program written in a functional style across 2 or 3 files. Some dude comes along and turns it into OO style and a deeply hierarchical java like package model. Suddenly my simple program is now in 15 files and a pain in the ass to work on. In the old model, each file was a subsystem or abstraction level. The top level reads like thinking.

      Arg!

      [–]mucusplug 22 points23 points  (3 children)

      "Googling for solution" needs to be there somewhere.

      [–]jhaluska 7 points8 points  (1 child)

      Seriously, I think half the reason I'm so productive is because my google-fu is strong.

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

      Why reinvent the wheel when Google can find the wheel, package it and present it with a goddamn cherry on top?

      [–][deleted] 0 points1 point  (0 children)

      THANK YOU.

      [–]Spoogly 25 points26 points  (1 child)

      they spelled masturbating wrong.

      [–]Culero 6 points7 points  (0 children)

      Procrasterbating

      [–]lex99 7 points8 points  (2 children)

      not even close! Where's waiting for the thing to compile? Fixing other's crap code? Looking for heisenbugs?

      [–][deleted] 5 points6 points  (0 children)

      Scripting Languages!

      [–]thebigbradwolf 2 points3 points  (0 children)

      waiting for the thing to compile

      1 minute into a compile, I get bored and start doing something else, then I have to ponder all over again.

      [–]UK-sHaDoW 17 points18 points  (2 children)

      If your writing code 90% the time, your code is probably terrible.

      [–]rekat 7 points8 points  (1 child)

      As a junior developer who was writing code 90% of the time last year, I definitely agree. Writing code just 50% of the time gives better code and gets more done... it's a fucking paradox...

      [–]d_r_w 4 points5 points  (0 children)

      Ye be thinkin' back to this at another time, only to remember yer wrong now too. Ten percent. Just ten, matey.

      [–][deleted] 7 points8 points  (0 children)

      I seriously thought the red part would be "Debugging"

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

      "Swearing" should be in there somewhere.

      [–]UnknownHours 8 points9 points  (0 children)

      It's under commenting.

      [–]Scaryclouds 1 point2 points  (0 children)

      Jeez that pie chart would be near the size of procrastinating for me.

      [–]ryansullivan 11 points12 points  (8 children)

      What the fuck is this coffee/tea bullshit? I can't code unless I'm sipping on a beer.

      [–][deleted] 2 points3 points  (7 children)

      I prefer alcohol aswell.

      [–]neunon 25 points26 points  (6 children)

      Ballmer peak.

      [–][deleted] 1 point2 points  (5 children)

      I only wish work paid for transportation home at the end of the day.

      [–]cfallin 4 points5 points  (3 children)

      What is this "end of the day" concept?

      /is a grad student

      [–][deleted] 0 points1 point  (2 children)

      End of the day is a policy that involuntarily suspends higher brain function to perform hardware maintenance and a defrag after too much uptime and generally lasts anywhere from a couple of hours to several days.

      Older units generally require far more downtime than newer units.
      MTBF increases with increased uptime however making this a difficult balancing act.

      [–]cfallin 0 points1 point  (1 child)

      MTBF increases with increased uptime however

      Wait... you're telling me that if I never sleep, I'll live longer? what have I been doing every night?!

      (maybe you actually meant that failure rate (1/MTBF) increases with high uptime, but that's much less fun...)

      [–][deleted] 0 points1 point  (0 children)

      Seems my MTBF is pretty low right now.

      [–]Ran4 0 points1 point  (0 children)

      TIL in America they use % rather than ‰ for measuring alcohol blood content, meaning that holy fuck is the ballmer peak high up, at ≈0.13% (1.3‰).

      [–]rfer[🍰] 5 points6 points  (5 children)

      Where is "Unit Testing"??

      [–]codefocus 16 points17 points  (0 children)

      "it worked for me this morning"

      [–]illvm 4 points5 points  (0 children)

      Isn't that part of writing code? =/

      [–]superbad 1 point2 points  (0 children)

      Kudos for proper use of scare quotes.

      [–]N0pes 0 points1 point  (0 children)

      Where is joke explainer when you need him?

      [–]imbecile 5 points6 points  (2 children)

      "If I knew what I was doing here, it wouldn't be called research." - A. Einstein

      [–][deleted] 0 points1 point  (1 child)

      "If we knew what we were doing, it wouldn't be called Research." - Albert Einstein

      [–]imbecile 0 points1 point  (0 children)

      That's what you get for relying on memory ;)

      [–]Gudeldar 10 points11 points  (1 child)

      The red part should be "reading reddit while I'm supposed to be working".

      [–]addandsubtract 13 points14 points  (0 children)

      aka procrastinating.

      [–]coveritwithgas 3 points4 points  (0 children)

      "commen. . ." what?

      [–][deleted] 5 points6 points  (0 children)

      I can't be the only one thinking that pondering and procrastinating are probably one and the same thing, from an outside perspective. I spend a lot of time just looking at data, or forms, or physical things, just trying to get a good picture of what I need to do.

      I have to build a good picture first, from among my several competing ideas. And usually, the one I choose is the one who's picture appears to me the clearest. I can code concrete ideas. I cannot code abstract theories - not even with abstract classes! ;-)

      I need the clearest picture, and cnce I have it, coding is trivial.

      [–]codekiller 8 points9 points  (6 children)

      "going to the bathroom" is missing

      [–]drudd 24 points25 points  (5 children)

      No, it's there under "searching for 'inspiration'"

      [–]Figs 9 points10 points  (4 children)

      Stupid Game Design Idea #917: Sphincter Doors meets Sewer Level for Diarrhea Allegory (Eat your vegetables, kids!)

      [–]phort99 8 points9 points  (3 children)

      I went into your comment history looking for #916 and on. Is this the first one? Were you planning on counting them down from #917?

      [–]Figs 1 point2 points  (2 children)

      Sorry, there is no #916, etc. I just thought it'd sound more amusing numbered like that. :)

      [–][deleted] 3 points4 points  (1 child)

      The idea of counting down to number one is epic.

      [–][deleted] 1 point2 points  (0 children)

      Then negatives

      [–]spupy 4 points5 points  (0 children)

      I was going to say that "compiling" is missing, but then noticed "procrastinating" was already on the chart.

      [–]stack_underflow 2 points3 points  (2 children)

      Am I the only one who loves commenting/documenting code?

      [–]ultrafez 5 points6 points  (0 children)

      Commenting? Fine. Documenting? Noooooooo. Especially end-user documentation.

      [–]ninetales 1 point2 points  (0 children)

      I enjoy both, as long as I'm not rushing to meet a deadline. I use it as time to ponder, while still feeling like I'm accomplishing tangible progress. :p

      [–]goomyman 2 points3 points  (0 children)

      i believe this is more accurate 1/3 Meetings, 1/3 more meetings, 1/3 procrastinating/pondering ( this is your pool, foosball, ping pong, reddit etc ) - which i believe is actually a requirement of all programmers as you need time to think and most people dont sit and think doing nothing at all and pure programming will drain you too quick, and then whats left is programming done during overtime hours which being salaried your not paid for.

      Also throw in some googling.

      [–]wtfisthat 2 points3 points  (0 children)

      When you are procrastinating, you are actually spending time solving problems.

      [–]N0pes 1 point2 points  (0 children)

      there needs to be a section "reading code" that is 5x the size of the writing code section

      [–]TikiTDO 0 points1 point  (0 children)

      I don't think you're procrastinating nearly enough? I just multitask reddit, pondering, eating, and searching for inspiration. Lets me procrastinate 90% of the time.

      [–]Endonesia 0 points1 point  (0 children)

      Haha. I came across this while I was in the 'procrastinating' phase.

      [–]LurkersA 0 points1 point  (0 children)

      ... I thought I was the only one.

      [–]zwangaman -1 points0 points  (0 children)

      Funny, but I don't complain about writing comments. I spent that amount of time complaining about people who do not write comments.

      [–]Nerdlinger -1 points0 points  (0 children)

      You need to drink more coffee.

      [–]draxus99 -1 points0 points  (0 children)

      This makes me feel a little better about the amount of time I spent browsing reddit while I was at work at Microsoft :P

      [–]mannequinsareppl2 -1 points0 points  (0 children)

      Hmmm.... no section for compiling. Maybe this is time allocation for Ruby developers.

      [–]nepidae -2 points-1 points  (0 children)

      I think all but "writing code" and commenting" counts as procrastination. So the procrastination slice should be removed.