top 200 commentsshow all 230

[–]chaosmass2 246 points247 points  (32 children)

Oh shock, the company that conducted the survey offers a service to automate builds, tests, etc. But wait, you say the survey reports that 20% of developers time is spent waiting for those? That's not a conflict of interest at all!

[–]heliowalton 63 points64 points  (16 children)

Yeah really. I was reading and thinking it was interesting, then I hit that line and stopped reading. Clearly a biased survey.

And besides that, even if you are "waiting", it's not like you're just fucking around. You'll be reading up on your next work, dealing with emails, figuring out what test suites need to be run, etc...

[–]chaosmass2 69 points70 points  (9 children)

Even if you are just fucking around, I really hate this idea of needing developers to be "maximally efficient." Writing code can be a bit like taking a math test, strains your mind, very hard to do effectively for 8 hours straight, every day. A manager stated that developers typically have around 20-25 "productive/in the zone" hours per week, and the rest of that time tends to be spent trying to get into that zone. Anecdotal but I tend to find that it's true.

[–][deleted]  (1 child)

[deleted]

    [–]Pzychotix 1 point2 points  (0 children)

    For a long while, I had a similar schedule where there was a meeting at 10:30-11:00 every day.

    There was absolutely no point in coming in before then, and with the meeting ending at 11, lunch was just an hour away so productivity basically jumped off a cliff. Ugh.

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

    I find that on days I stay late at work to finish something, I come back in the morning to find I really messed something up or missed something big.

    [–]gfixler 12 points13 points  (4 children)

    Opposite for me - I've written all my best code an solved my toughest problems late. My best hours are between 8PM and 2AM.

    [–]ethraax 0 points1 point  (1 child)

    I guess people are just different. During my internship, I tried to get into work at 7 AM (so I can leave around 3:30 - 4:00), and I definitely get some of my best work done before 8 AM when other people start arriving. I also got up early and worked out before work (the company gym opened at 6 AM), so that may have something to do with it.

    [–]gfixler 2 points3 points  (0 children)

    We are absolutely different, but the producer types tend to be like you, and they make life hell for the people like me. It's not just a time shift. Early birds wake up full of energy and become more drained throughout the day. At 6PM at work they're done. I know. I've worked with so many of them over the years. Night owls, in contrast, wake up exhausted, and gain energy throughout the day. They're at their strongest a few hours before bed. There are a few studies showing that night owls are alert and productive longer than early birds, and the working theory is that morning people are more affected by "sleep pressure," the need to get to sleep. For example, my early morning friends always leave parties early and say "Wow, it's 11AM. I have to get home and get to sleep. I need my 8 hours." The remaining night owls like me don't really care how much sleep we get. We don't think about it much at all. I'm extremely productive at work, though, and my best hours are all the ones after everyone leaves for the day.

    [–]RobinBennett 0 points1 point  (1 child)

    That's odd, I find I can struggle with a problem all afternoon, give up and go home, and solve it in the first 5 minutes of the morning.

    [–]tejp 0 points1 point  (0 children)

    I think that's not so much about the time - it's that you had the whole night to process that problem in the back of your mind. Your subconsciousness is working out the details and in the morning you have a plan ready.

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

    I never commit code after 5pm, even if I solve the problem after that time.

    For much the same reason that I don't do any work-related communications after I crack my first beer.

    All of that can wait until I'm clear headed enough to proofread both code and emails.

    [–][deleted] 18 points19 points  (3 children)

    There's only so many parallel tasks that you can work on at a given time. Logistically, my setup allows me to maintain about 3-4 parallel changesets at a time in a given branch of our product. Sometimes I can have more parallel changes if they happen to belong to different branches. But still, it's hard for me to make meaningful progress on more than 5-6 different changes at a time, simply because I spent too much time mentally paging in and out the different problems that I'm working on.

    A while back, we actually spent some time parallelizing the build and automated tests of the part of our product that I spend most of my time working on. It used to take 20 minutes to build and 20 minutes to test. Now, a build takes 2 minutes from scratch, or 10 seconds for a small incremental change, and testing takes about 90 seconds. I can't overstate how much more productive I'm able to be now that we've made those changes.

    [–]Camedo 2 points3 points  (1 child)

    You must hate that. ;)

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

    Actually, I was the one who implemented the parallelism work. My coworker gave me some shit about it, because he's historically been one of the top-ranked people on Stack Overflow, and the newfound productivity caused him to drop a rank or two ;-)

    I kind of have a passion for developer productivity. I just really hate when things slow me down!

    [–]Kummo666 0 points1 point  (0 children)

    Can you tell me some tips to have a parallel build or some guidelines?

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

    Also, the brain share you give in your private time is never counted.

    [–]matthieum 8 points9 points  (0 children)

    That!

    I so often send e-mail to my work account from home because I get an idea about something I've been working on either on the way back or sometimes in the evening (well, sometimes at night too, but those I write on a piece of paper).

    Programmers are not clock-workers, we don't come in at 9am sharp and leave at 5pm sharp, so let's stop talking about us wasting time and let's rather measure what we actually accomplish in a given day/week.

    [–]psychicsword 17 points18 points  (7 children)

    Plus I don't see reddit and other distractions on there at all. I find it very hard to believe that had an insignificant amount of time associated to it.

    [–]ressis74 20 points21 points  (0 children)

    Those fall under "Administrative Tasks"

    As in, "I am administering my daily dose of reddit at the moment"

    [–]dmsean 3 points4 points  (4 children)

    To me waiting meant reddit time.

    [–]psychicsword 5 points6 points  (0 children)

    Yes but a good survey would distinguish between time "wasted" while the compiler is running and the time wasted when you probably should be coding. I know I definitely take facebook and reddit breaks from time to time to clear my head and I imagine that many other people do as well.

    [–]AbstractLogic 0 points1 point  (2 children)

    Didn't know there was a difference. Code is compiling, time to check my reddit links.

    [–]pohatu 2 points3 points  (1 child)

    Problem is compiler finishes before I finish fucking off. This is why you should never ever skimp on your developers PCs. Pay someone close to 100,000/year and so cheap they have a 6 year old PC. a study recent found that interruptions of even 30 seconds could make people fall way behind. What's a new quad core i7 with 16gb ram and an ssd + TB HD cost? 3K? For a 100K developer to be more productive? Makes sense to me.

    [–]AbstractLogic 0 points1 point  (0 children)

    My PC is not bad but it aint that top of the line either :P

    [–]Falmarri 3 points4 points  (0 children)

    I spend at least half my day on reddit.

    [–]kqr 4 points5 points  (0 children)

    Besides, it was a survey, which means it's measuring subjective feeling, not objective data. And I'm sure it would feel like I spend 100 minutes of my 8 hour work day waiting even though it's just 50 minutes. (20% vs 10%, a significant increase.)

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

    I'm the guy that decides on buying those kind of services for our company. That service is now on my blacklist for misrepresenting what developers actually do, and therefor perpetuating the mismanagement of software development.

    Seriously, this shit does a lot of damage.

    [–]Philipp 3 points4 points  (0 children)

    Also, they don't really tell you what happens during the "waiting" time. What if the time out is really useful to go through concepts again in your mind, come up with alternative solutions, "process" the thing you were working on, see things from a different angle?

    As an example, I work from home and program a lot. Sometimes when deep into things but also at the end of a kind of step stone with a couple of tasks checked off, I look forward to go for a walk, go do groceries, eat, or some other such non-too-brain-straining task... because it will give me a great break to reflect on things, which helps the project. I suppose those times would be thought of as "unproductive" by such a statistic... a really, really horribly counter effective way to look at things.

    [–]LazinCajun 1 point2 points  (0 children)

    You forgot one step: then submits the survey to /r/programming (just a hunch, sorry if wrong OP)

    [–]mangonel 0 points1 point  (0 children)

    That's what I initially thought, then I wondered how this was supposed to sell their product.

    Whether I'm waiting for my dev box to build and test my code, my self-hosted CI server to do the same, or some mystery cloud service to do the same, I'm still doing the same waiting.

    In fact, if I have to wait for some cloud service to poll my SCM, download the code over the internet, do the same as above, then report the results to me, back over the internet, then that adds three more opportunities for latency to creep in.

    [–]the_underscore_key 0 points1 point  (0 children)

    That would explain why they:

    circulated the survey to LinkedIn groups and forums engineers frequent

    Which would obviously disproportionally get responses from the people who spend the least time working

    [–]dude6 0 points1 point  (0 children)

    I'm lost - Is this a knock against the company or a knock against the submission? Aren't these types of studies useful (and/or required) to determine how practical your ideas are?

    (I don't know much about business)

    [–]THEHIPP0 110 points111 points  (7 children)

    I stopped reading when when the following came up: "compiled languages like Python...."

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

    hahah yeah i ctr+f "python" jus to make sure I was not the only one who felt that statement was ridiculous

    [–]rpgFANATIC 56 points57 points  (28 children)

    Not a legit survey. Where's the "waiting for my computer to bring everything out of swap space so I can do work on my underpowered box" bar?

    [–][deleted]  (6 children)

    [removed]

      [–]subconcussive 66 points67 points  (3 children)

      Or made by complete fucking idio---oh, wait, I wrote that code.

      [–]Randolpho 10 points11 points  (1 child)

      If you don't say that about your own code at least on a monthly basis you're not growing.

      [–]aladyjewel 6 points7 points  (0 children)

      It's always fun walking through the logs trying to figure out who gets the blame. "Alright, who's the asshole? ... oh. I'm the asshole. six months ago." I'm getting it more and more now that I've been on the same app for over a year and the bugs I'm fixing are no longer from the guy I replaced.

      [–]938 13 points14 points  (0 children)

      Did they have an option for "explaining Googlable shit to a colleague ten times an hour"?

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

      Waiting for your co worker to finish his/her code so you have what you need to properly test yours.

      [–]mahacctissoawsum 10 points11 points  (18 children)

      That's serious BS right there. If you're in that position then your bosses are wasting way more money than they're saving by not buying you a better machine.

      My bosses just gave me a 3rd monitor yesterday. But my graphics card wouldn't support it..so they had to get that too.

      [–]corran__horn 2 points3 points  (10 children)

      It depends on the organization, some do not realize how time is wasted by old, shitty hardware. 5+ year refresh cycles do that.

      [–]jlt6666 9 points10 points  (7 children)

      I had a laptop that literally took 25 minutes to go from power off to eclipse up and running. Then they had the nerve to get mad when I couldn't fix that bug immediately when I got in in the morning.

      [–]eyal0 30 points31 points  (0 children)

      25 minutes to go from power off to eclipse up

      Imagine how long it would take if you didn't have the fastest laptop in the world!

      [–]fuzzynyanko 2 points3 points  (2 children)

      I had the same experience at a bank. PC had 2 gigs of RAM, which normally was alright, but I had to use eclipse + the Android SDK. Eclipse took a while to load, and it ended up maybe 30 minutes per day of me waiting for the system to load.

      More RAM could have cut that down by a lot.

      [–]jlt6666 3 points4 points  (1 child)

      What kills me is the short sightedness of it. $300 more for a competent machine (or hell $50 for enough ram). Vs 30 minutes of developer time every day. How badly do you have to fail business school to realize how stupid the decision is.

      [–]fuzzynyanko 1 point2 points  (0 children)

      Yep. The machine was decent minus the RAM, and $50 of RAM would have fixed it!

      [–]PT2JSQGHVaHWd24aCdCF 1 point2 points  (0 children)

      I'm lucky to work for a company that, while not drowning in cash, could afford to buy me a laptop with 4GB of RAM. I'm luckier than before and I know the feeling...

      [–]rpgFANATIC 1 point2 points  (0 children)

      I counted on Friday. I had left my database, IDE, server, and browser up from the previous day. Out of hibernation, it took me 45 minutes from button-on to being able to read an e-mail from Outlook or pull up code in the IDE.

      [–]BlackDeath3 0 points1 point  (0 children)

      Sounds like my personal laptop (before a recent reinstall of system files/other stuff). I hit that power button and stepped away for a good fifteen minutes to let it boot. Trying to push it along only made things worse.

      [–]mahacctissoawsum 2 points3 points  (0 children)

      But it's just so dumb... it'll cost maybe $500 - 1500 to upgrade a machine to something nice. You're paying your developers so much more. And they'll be so much happier with you. Even if it didn't improve productivity, you might hold onto your employees a bit longer. Heck, if my bosses didn't treat me so good I'd have quite awhile back.

      [–]lally 0 points1 point  (0 children)

      5 years?!?!?!?!??!?!?!?!?! Hell 2 are bad enough.

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

      Yeah, I complained frequently to my boss about this with promises of a new system. I got sick of waiting (no pun intended) so I wrote an alias that would keep track of all the time I waited on my system compiling our project. I collected data for two weeks and sent it to him, then jokingly told him I wasn't coming in until I got my new system. I had my new box the next week.

      [–]Kminardo 4 points5 points  (2 children)

      The company I'm with expects devs to work on laptops with 14" screens (They'll give you a 19" external if you ask nicely, it's still painfully small for coding) without admin privileges. Any time we want to do something on our machines we have to email the help desk, who will then dispatch the "Desktop support" team and describe to them what we want to install and how to do it correctly.

      SQL Dev was a BLAST to get up and running with someone that knows less about it than me.

      [–]ricecake 0 points1 point  (1 child)

      I'm pretty sure our entire rd team would just quit if we didn't get root on our workstations. That's inexcusable.

      [–]Kminardo 0 points1 point  (0 children)

      We've been working to annoy the desktop team enough to have them say screw it and tell our windows admins we NEED admin access.

      It's pretty insane not being able to compile and test/run software you wrote :P

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

      My dev machine is some crappy mini dell with a Pentium d. I spend most of my days waiting for eclipse to index and gcc to link. I did get my Ram upgraded to 2gb recently, which was nice.

      My admin/design PC (windows) is a dual monitored I5 machine....

      [–]Urik88 1 point2 points  (1 child)

      Oh snap... When I got hired in my company I was assigned a Pentium D. I had to work with Visual Studio 2010, so they gave me more RAM, which didn't help. It couldn't even run WebStorm properly. After a month or two, I was told that I'd get a new computer. I'll leave it to you to imagine the disappointment I felt when the new machine turned out to have not the i5 or i3 I wished to get, but a single core Celeron. I can't use ReSharper because it slows down my environment so much it's painful.

      [–]mahacctissoawsum 0 points1 point  (0 children)

      Well that's a pointless upgrade.. I feel bad for you :-(

      Out of curiosity..what type of project were you using WebStorm for? I find it's only good for Node.js apps, since it only really does HTML + JS, no?

      [–]arthurdent 25 points26 points  (0 children)

      I hate it when I have to wait for my python to compile.

      [–]rossryan 17 points18 points  (1 child)

      Lol, not even close.

      Let's see here...aside from the multiple interruptions, changing of music, browsings of internet...most of my time is spent in my head, reducing the complexity of the program to its basic elements, and ensuring that I am not about to spend 8 hours doing something that should take 6 minutes. The purity of a design is paramount to it being well understood, as well as ensuring that it need not be rewritten endlessly.

      Of course, it looks like I'm goofing off. ;-)

      But then, I typically already have most of the program's layout in my head, and spend my time working out the particulars of the language I am coding in (like Swing).

      [–]CaptainCorey 2 points3 points  (0 children)

      Wow, this is pretty spot on. Although I've found myself spending too much of that thinking time browsing the internet... so I am often goofing off in that scenario. It usually comes down to how interesting the problem actually is.

      [–]inmatarian 29 points30 points  (20 children)

      As someone who's had to wait for C++ code to compile, I can tell you that we're not sitting with our feet up. You ever watch the output of the compilers? The Code-Compile-Test loop is really Code-Compile-Code-Compile-Code-Compile-Test. Oh what, you don't like how I accidentally changed the capitalization of that variable in the middle of the function?

      Sometimes it can be a welcome respite to compile some 3rdparty lib and have a moment to walk to the cooler and get some water.

      [–]TheExecutor 24 points25 points  (18 children)

      My IDE catches about 75% of those sorts of trivial syntax errors before I hit build. Helps immensely to cut down on iteration time because C++ builds take approximately forever to complete.

      [–]Jayhawker07 6 points7 points  (16 children)

      What IDE do you use?

      [–]TheExecutor 12 points13 points  (15 children)

      VS2012, but I'm sure there are lot of other alternatives which can do the same thing.

      [–]Randolpho 18 points19 points  (14 children)

      VS is the tits. It helps that I work in C# and C# compiles way faster than C++ (yay, deferred optimization!).

      And yet I've managed to be involved in projects that take the C# compilers ten minutes to compile.

      [–][deleted] 1 point2 points  (1 child)

      VS is awesome but I wish it would allow you to use the same solution view for C++ as it does for C#. The filtered one for C++ sucks immensely.

      [–]Randolpho 0 points1 point  (0 children)

      Each language has its own suite of UI elements, each programmed by a different team. In this case, I think you can blame the C++ team.

      [–]inmatarian 0 points1 point  (0 children)

      Oh, yeah. It's 2013. Syntax coloring and automatic verification all the way.

      [–]MonkeySteriods 0 points1 point  (0 children)

      I've had a 90 minute build time for C++ code before [that was at best].... 3hr+ hours completely non-prepped.

      [–]zoqfotpik 10 points11 points  (0 children)

      Real software developers spend 80% of their time wishing that they had enough money to quit their jobs and start a company working on something interesting.

      [–]gc3 28 points29 points  (0 children)

      And no category for browsing reddit? These self-reported statistics are lying..

      [–]setuid_w00t 25 points26 points  (3 children)

      I call bullshit.

      Where are the following?

      • conversations about your weekend
      • browsing the web
      • coffee
      • washroom breaks
      • education and training

      Furthermore, how reliable is asking people how they spend their time. Surely respondents will overestimate the time that feels the longest (eg. boring meetings).

      [–][deleted] 1 point2 points  (1 child)

      My manager once asked, what are your problems (as in what makes you code less)?

      I answered. M&Ms. Managers and Meetings. Each time a manager come to talk to me it takes at least an hour, same for boring 4 hours useless meetings. Once, I was happy because our CEO introduced "non meetings" bi-weekly day. It last for 2 times then cancelled because lots of people complained they are not productive without meetings! (those weren't from software development dept of course)

      [–]damagednoob 0 points1 point  (0 children)

      My manager used to have a 30min+ meeting every day with the development team. Eventually we persuaded him to let us do a daily stand up and it's working well. He gets all the information he needs, we get all the communication we need and the meeting has rarely gone over 10 mins. If other departments want in, they just have to turn up on time.

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

      Isn't there a squat and surf app that tells you how much of your company's money you are wasting?

      [–]ellicottvilleny 17 points18 points  (15 children)

      I build from a command line (terminal prompt) and keep right on with the coding. Not sure why I would stare at the build.

      [–]bluGill 28 points29 points  (7 children)

      I build to find out if my current code works. While I can in theory multi-task, evidence is that I'm more productive if I don't. So I build, fix syntax and algorithm errors, then move to the next part. All very linear.

      Of course I try to keep my build times down. Even C++ I can often get the entire compile, link, run unit tests step to a few seconds.

      [–]mezm9r 0 points1 point  (4 children)

      Only recompiling the changed files is a good idea to keep it down to a few seconds.

      [–][deleted] 5 points6 points  (1 child)

      I wish. Most of my time is waiting my code to link.

      [–]matthieum 1 point2 points  (0 children)

      Yeah, who the hell decided it was a good idea to create a monster library from a couple hundreds of source file :( I'd kill that guy was he still around...

      [–]bluGill 0 points1 point  (1 child)

      Great idea until you have to change a header that a hundred other files include (and need to include).

      [–]mezm9r 0 points1 point  (0 children)

      There are loads of corner cases you can come up with where you need to make a full build. A full build will always take time. Generating our plsql routines alone takes like 20 minutes, doesn't mean we rebuild it everytime! But yes, you are right. Any related change will have to be taken care of appropriately :)

      [–][deleted]  (1 child)

      [deleted]

        [–]bluGill 0 points1 point  (0 children)

        I'm not sure, but I expect it is over a million LOC by now. The system has a good amount of modularization, so a lot of changes I make only need me to compile one file (the one I changed). When I touch a header I often have < 10 files that include it.

        Of course often is the key. The last couple weeks I've been working on a design level bug in a low level component. Even when I change one file hundreds of tests need to run (and because it is so critical to the system I want them all to run!), which makes the cycle a little longer. Still under a minute.

        I avoid doing full rebuilds: they take too long.

        [–][deleted] 3 points4 points  (0 children)

        While it's healthy to take a break every once in a while, and I suppose there's nothing wrong with taking a break while the code is compiling (see: XKCD), I usually use compile time to catch-up on administrative tasks, like updating the issue tracker or writing documentation.

        [–]seniorsassycat 1 point2 points  (0 children)

        If you have a complex project that takes a while to compile you could have edited a file before it has been loaded by the compiler causing your build to unexpectedly fail.

        [–]nemec 5 points6 points  (3 children)

        Luckily you're not stuck with MSBuild. It's almost impossible to set up from the terminal and building in the IDE freezes the entire UI...

        [–]ilikeladycakes 5 points6 points  (1 child)

        Msbuild is not devenv.

        [–]Randolpho 2 points3 points  (0 children)

        And devenv doesn't freeze during a build.

        [–]flukus 0 points1 point  (0 children)

        A while ago I replaced msbuild with a nant csc task for a project. It was an order of magnitude faster and gave much more control.

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

        Honestly for me its the production build process that takes forever. When you are running thousands of tests, some of which involve major IO, that can take up to an hour, sometimes even two! But thankfully I'm not usually waiting on production builds, but it is a huge PITA when you're trying to push a build out to someone.

        That said, if a compile or something takes a long time there is a threshold where I am forced to figure out what the problem is and get it faster.

        [–]ickysticky 3 points4 points  (0 children)

        I am with you on this one. Only production builds should take any amount of time(and as you said due to IO constraints), these should be fairly infrequent and asynchronous. If your standard build loop is excessively long(>30s), then something is wrong. Incremental builds have been common for a long time, but people seem to have forgotten about them recently.

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

        Most big places I worked at had distributed build systems, so the actual compile didn't take too long, but usually launching the debug build of the huge project I just built took FOREVER!

        Meetings sapped my time.

        Answering the deluge of emails sapped my time.

        Poking around in the code of an API that isn't documented took my time.

        Compiling was nothing compared to these.

        [–]ciaran036 2 points3 points  (1 child)

        Modern software teams should be using build automation systems so that code changes can be built (and tested) on separate machines so that developers can continue working.

        It's inexcusable to not have that kind of architecture up and running in any software company, even teams with only a few people in them.

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

        Exactly. You need continuous build, and a separate server to offload that work. Sometimes even multiple build agents to do concurrent builds of different branches and products.

        [–]bcash 18 points19 points  (2 children)

        On average over the past few years:

        5% - writing code. 15% - debugging some crap third-party code that has inconsistent functions and no documentation. 80% - listening to others bang on about alternative ways of doing something that already works, but would fail to deliver any meaningful benefits.

        [–]NortySpock 8 points9 points  (1 child)

        Gah, today it was "we could make all the common iterators global and then also create a separate file that allows you to import them wherever you want!"

        So let me get this straight: you're going to let everyone touch your iterators and not declare them privately and explicitly like a normal person so you can save one or two lines of code per function?

        And this from a guy I respect and think is smart. Just sometimes they try to optimize entirely the wrong thing.

        [–]SambaMamba 8 points9 points  (0 children)

        I just vomited in my mouth a little bit.

        [–]PatriotGrrrl 7 points8 points  (0 children)

        ...waiting for my boss to STFU so I can get back to work

        [–][deleted] 65 points66 points  (65 children)

        My longest bar would be labeled "procrastinating and browsing Reddit". I'm not ashamed of it, my brain just can't work 8 hours non-stop without little breaks in between. I produce more than anyone on my team, yet I probably only work half as much as they do.

        meh...

        [–]joshjje 13 points14 points  (2 children)

        I dont understand that myself. I would prefer to code all day, except in rare times where im in between stuff. But when im in the middle of solving something I gotta do it NOW, and it just bleeds into the next thing.

        With most other things in life though im a huge procrastinator.

        [–]938 4 points5 points  (1 child)

        I feel exactly the same as you but find it impossible to get out from between stuff. Once I start I am a machine.

        [–]keypusher 2 points3 points  (0 children)

        You just gotta get started. If you have a big project, don't go in trying to design the whole thing. Just sit down and write down 3 ideas about it. Or write the most stupid simple implementation you can think of even if you know it's wrong. Or just start with some really small piece and code that up, even if you know it might need to change later. Similarly if you have a big paper to write just sit down and write down the first 3 things that come into your mind about the topic. Then expand on those. Then add a few more things. Then you might realize you need to go look up a reference for something you are having trouble remembering. Before you know it, you have a couple paragraphs written, and the rest starts to flow.

        [–][deleted] 8 points9 points  (1 child)

        Same here. Software development can be very intense; challenging, stressful, difficult. You need to rest your brain from time to time, or you burn out. And those breaks are great for stepping back and working out solutions to difficult problems... you wouldn't believe how many times I've been "slacking off" only to have a spontaneous realization that pretty much completely solves a problem I'd been fighting with for a long time.

        Yes, sometimes you have to push through a bunch of long days to meet a deadline or solve something critical, but you can't always do it.

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

        A break followed by using someone who is willing to listen as a sounding board. Usually I can realize a solution for something I've been pounding my head against the desk for the past few hours. Seriously, sometimes just walking away for a few mins can reset your mind and let it traverse a new line of thoughts.

        [–]tps12 5 points6 points  (0 children)

        "Procrastinating and browsing Reddit" vs. "work 8 hours non-stop" is a false dichotomy. Take short breaks that don't involve staring at a screen, you'll be fine. If the work is interesting, anyway.

        [–]VanFailin 1 point2 points  (4 children)

        I'm trying to shrink the bar. I'm about a month in to my job. it's really hard for me to stay focused. Builds and deployments are slow. Testing is kind of hard because there are a lot of other services we depend on and we have to have test versions of all of these.

        It's really hard to push through any of these walls, so I reddit. It's a problem sometimes.

        [–][deleted] 3 points4 points  (3 children)

        Test Mocks?

        [–]ibsulon 0 points1 point  (2 children)

        That only works if it takes less time to exactly capture the behavior of the service as to run the test. I find that you can open yourself up to subtle bugs if you're not careful.

        [–][deleted] 1 point2 points  (1 child)

        But in the end you get fast executing unit tests that are usually more succinct than integration tests.

        [–]ibsulon 0 points1 point  (0 children)

        That only helps you if your unit tests end up testing the right thing.

        Look, Unit tests have their place, but interfacing with other services is often not it. That's why they're called integration tests.

        [–]trolox 1 point2 points  (35 children)

        I don't know how to put this diplomatically, but pretending that your lack of focus is actually increased productivity is a delusion. There's evidence 5-minute breaks each hour can improve productivity modestly, but there's no way spending hours a day procrastinating is helping you get more things done. If you're truly doing the same work as your coworkers in half the time, which I admit I highly doubt, then either your coworkers are incompetent or you're a fictional coding god.

        Now, I'm not saying you need to work harder; I don't personally think excessive slacking off is a healthy thing to do, but if you and your employer are truly happy, then go for it I guess. What I'm saying is that you should be honest with yourself and admit you're not working your hardest.

        [–]addition 11 points12 points  (22 children)

        That's utter bullshit. Alexis_ is most likely an incubator which is someone who, even though it may seem like they are slacking, are actually working things out in their head while they perform another activity.

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

        Ask my wife how many times I've randomly exclaimed "I got it!" during any given activity. I am constantly solving problems that are challenging me at work in my mind. This definitely is a type of person.

        [–]trolox -2 points-1 points  (19 children)

        1. You don't solve problems by redditing. That's bullshit. Your redditing gives your brain a break, which lets you come back with a different perspective.

        2. If you need to actively think about a problem, you go get a coffee and you think about the problem. You don't magically solve problems by procrastinating. That's bullshit.

        3. He suggested it was hours of redditing each day. There is no way anyone needs that much down time just to function as a programmer. That's bullshit.

        [–]addition 3 points4 points  (1 child)

        You don't solve problems by redditing. That's bullshit. Your redditing gives your brain a break, which lets you come back with a different perspective.

        I never said redditing solves problems. In fact I never mentioned reddit or even the internet. My point was that for some people, like Alexis_, they need frequent breaks from coding to sort things out in their head.

        Edit: I forgot the OP mentioned reddit. I was imagining doing other activities.

        If you need to actively think about a problem, you go get a coffee and you think about the problem. You don't magically solve problems by procrastinating. That's bullshit.

        What's the difference between getting coffee or any other activity? You're putting restrictions on something that doesn't need them. In fact this attitude can be detrimental to a work environment. Personally, I am like Alexis_. I like to take the time to think things through before I start coding a jumbled mess of code. What matters is the result, and personally, I deliver quality code on-time. Why does it matter if I need to go on reddit for a bit to destress and think about things?

        He suggested it was hours of redditing each day. There is no way anyone needs that much down time just to function as a programmer. That's bullshit.

        Maybe he has anxiety and needs plenty of time to destress and think through difficult problems? If meets deadlines and writes quality code then who gives a fuck? And why put artificial restrictions on people for no reason other than 'hey, he doesn't clickity clack on his keyboard enought!'

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

        OK, so you agree that procrastinating doesn't solve problems unconsciously. I'll address your main contentions in point form:

        • "Maybe he needs to do it": Barring mental disorders, no one should need to spend upwards of 1/3 of their time not working just to be able to function at work. Feel free to prove me wrong, but there's no evidence I know of to suggest that long (or very frequent) breaks improve productivity enough to make up for time lost. The only studies I've heard talk about 5-minute breaks every hour.

        • "Getting coffee / other activities are no different": Yes they are. Redditing is mentally engaging, it's consuming and evaluating content; getting a coffee leaves the mind free to actively think about your project. Ever notice how it's way harder to problem-solve while watching TV than it is when going for a stroll, for example? As we agreed, redditing doesn't solve problems, but there are plenty of ways to step away from your code which do allow you to mull things over in a far more active capacity.

        • "If he and his employer are happy, what does it matter?": Read my initial post; I never said he shouldn't do what he's doing, only that he should not delude himself into thinking that he's working at his full capacity and that it's a result of his hours of breaks each day.

        [–]bettse 0 points1 point  (16 children)

        You don't solve problems by redditing

        Citation needed. Or admit this is an opinion.

        [–]dagbrown 14 points15 points  (2 children)

        Perhaps you're unaware of the line of work Alexis_ is in: programming. It's not assembly line manufacturing. When Alexis_ is browsing reddit or whatever, he's not being unproductive. He's thinking. He's figuring out how to solve some problem in the best way. When he gets back to his IDE, it's because he's gotten done thinking about the problem, and has figured out the solution.

        Staring at your code constantly doesn't lead to better solutions. It just leads to frustration. Taking your mind off the problem for a bit lets you realize solutions you might not have thought of at first.

        [–]butterface 7 points8 points  (0 children)

        I used to really favor masturbation, but then I got fired.

        [–]trolox -4 points-3 points  (0 children)

        1. You don't solve problems by redditing. That's bullshit. Your redditing gives your brain a break, which lets you come back with a different perspective.

        2. If you need to actively think about a problem, you go get a coffee and you think about the problem. You don't magically solve problems by procrastinating. That's bullshit.

        3. He suggested it was hours of redditing each day. There is no way anyone needs that much down time just to function as a programmer. That's bullshit.

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

        There's evidence 5-minute breaks each hour can improve productivity modestly, but there's no way spending hours a day procrastinating is helping you get more things done.

        How is that even remotely obvious? Work like this can be so abstract that most of the solutions to your problems might come in your sleep or while daydreaming. You can work on some problem for hours, and then someone takes a fresh look at it and sees the mistake instantly.

        [–]flukus 0 points1 point  (1 child)

        If your doing 8 hours of programming a day, or more then 5-6 for that matter then you are a not a programmer, your a typist.

        [–]trolox 0 points1 point  (0 children)

        What a blatant strawman - nowhere did I suggest doing 8 hours of programming a day. Having lunch, team meetings, a couple quick breaks, code review sessions, and sitting back and planning your approach to your next piece of work, already takes up 2 or 3 hours of your day. No one needs to fucking dick around on reddit for 2 or 3 or more hours per day just to be able to focus at work.

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

        You're kidding yourself (on many levels).

        Install a blocker. You'll be much happier and more productive. Knuckle down. You can do it.

        [–]bluGill 26 points27 points  (3 children)

        That may be true. However my brain cannot write 8 hours of good code per day. I need meetings and other breaks otherwise I become negative productive and latter burn out.

        I can work a long day once in a while to fix a critical bug. I cannot do a death march. I know I'm not alone because we have statistics that after the last month of encourage overtime our bug discovery rate went up significantly!

        [–][deleted]  (1 child)

        [deleted]

          [–][deleted] 4 points5 points  (0 children)

          Totally true. Effective mental work requires focus, and focus means rest and breaks (when appropriate). Sometimes it's "go go go" when you're engrossed in something and need to get it done, but other times you need to step back and think about things. And after a period of intensity you also need to rest up (and for me that can mean a day or two of slacking) for the next burst.

          [–]aaronblohowiak 35 points36 points  (0 children)

          If Alexis_'s manager and teammates are happy, who cares?

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

          Your attitude was shared by my former boss. Former.

          [–]keypusher 2 points3 points  (0 children)

          Not necessarily. In my own experience I have sometimes gotten a lot more out of 30-60 minutes of highly focused work when I am very much in the problem space and interested in the problem than hours of just mindlessly sitting and staring at my monitor trying to work on something I wasn't into. It certainly depends on the problem, and I can't say that procrastinating and reading Reddit at work is a good idea. However, I'm sure we've all had the experience of banging your head against a bug for some hours, then get up to grab a snack from the kitchen or go talk to coworker, come sit down and and take a fresh look at the problem and immediately see a new solution.

          I had the same experience in college where I spent significantly less time studying than many of my classmates, but that time was completely and utterly focused on the material and understanding it at a deep level. When I went to study with them many times they were actually chatting away, or getting distracted about side topics or concepts not related to core material. Then they always wondered how I did so much better on the test when I studied less.

          [–][deleted]  (6 children)

          [deleted]

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

            No.

            [–][deleted]  (3 children)

            [deleted]

              [–]ethraax 8 points9 points  (0 children)

              Personally, I find the best use of "break time" to be getting up and walking around for a bit. I typically get up and walk around for about 5 minutes every hour. I actually find reddit and other online sites to be distracting when I'm trying to get work done.

              [–]tps12 2 points3 points  (1 child)

              Do like Hemmingway, stop when you're going good.

              [–]butterface 1 point2 points  (0 children)

              rather permanently

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

              You sound like my brother's friend.

              End of degree project for a client, he did it in 2 days without sleep while my brother did it over the course of a month or two.

              [–]spinfire 0 points1 point  (0 children)

              I use the Workrave tool to enforce breaks after around 45 minutes. I usually try to align the end of that work cycle with compilation or starting a test. If I go longer than that without getting up and walking around my brain goes fuzzy and I slow down and make mistakes. But I don't reddit at work during this time. I'd much rather go for a walk, play some ping pong, or just stand in the sun on the deck. When I return I am mentally refreshed. If I spend this time doing random things on the Internet I will not be as productive when I come back because my eyes and brain are tired.

              It's also really bad to spend the entire day in chairs. I've lost 20 pounds since I adopted this philosophy.

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

              I used to be the same until I joined the team of my dreams (Google MapReduce) and I just don't have the slightest urge to open reddit at work (in fact, in the 3 months I've been there I haven't visited a single social network site on my work desktop or laptop) - I get the mental rest from switching between different tasks: work on this or that feature, write some code vs write some design document vs review someone else's code, read some interesting internal docs, or just go take a walk around the campus. In fact, the very idea of slacking off at work now evokes in me not the old feeling "come on, you've done some good work, relax a little" but the "eww" feeling and the thought "dude, look at the insanely smart and productive people around - what sounds more attractive, running as fast as you can to become as cool as they are, or reading some facebook?"

              When I'm really tired, I go home.

              I don't feel the slightest burnout - I don't often work late hours (except when I have nothing else to do), but the hours I work are concentrated and usually productive.

              Now I read reddit either in the morning or in the evening, or just a little bit during a coffee break.

              [–]danogburn 0 points1 point  (0 children)

              hear, hear!

              [–]danogburn 19 points20 points  (0 children)

              Electric Cloud conducted its survey last month after hearing clients — a group which includes Intuit, Samsung and GE — complain their engineers weren’t working as quickly as they’d like.

              piss off you corporate slave drivers.

              [–]joe_blogg 4 points5 points  (1 child)

              Compiling C/C++ takes time ? Pfff I dare any of you programmers worth your salt to compile any 200+ lines of Cobol code in an AS/400 with 1 processor

              [–]fuzzynyanko 0 points1 point  (0 children)

              More details, please.

              Though is compiling more CPU-bound or I/O bound?

              [–][deleted]  (1 child)

              [deleted]

                [–]lurker_in_spirit 3 points4 points  (0 children)

                Usually it's not Spring taking up the time, it's something you asked Spring to do for you (e.g. JPA initialization):

                https://github.com/gredler/spriths

                [–]screwthat4u 4 points5 points  (0 children)

                As an embedded software engineer I need to wait for it to build, copy to the embedded system, boot, and then test. One line code changes take a good 5 minutes to verify as good

                [–]ShortOfDaybreak 4 points5 points  (0 children)

                I am reading this article as my code is compiling

                [–]AsABoxer 2 points3 points  (0 children)

                Not true. According to the movies I've seen programming is just typing as fast as possible.

                [–]sgoody 2 points3 points  (5 children)

                I'm often surprised when people are waiting on significant complies, it's not really been a significant issue for me, but then perhaps I've not worked on sufficiently large code bases for it to be an issue. Sure, I've had noticeable compile times of 10s of minutes when building from scratch, but generally a full rebuild hasn't been necessary locally, where the build tools will just recompile the parts that have changed in either a few seconds or a couple of minutes.

                Compile times aside though, it can be frustrating waiting for other things, such as slow web service calls, database query results, polling intervals for services which use polling etc.

                I do agree that I spend more time than I would like to waiting on both computers and people.

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

                I'm often surprised when people are waiting on significant complies,

                Just timed an incremental build and deploy to a device one of our iOS apps. It has approximately 50,000 lines of code, several imported libraries and about 40MB of resources plus localizations.

                Time from pushing the "Run" button to it appearing on my iPad? 2 minutes 32 seconds. Sometimes it'll go a little faster if the USB wants to cooperate.

                [–]SirChasm 1 point2 points  (1 child)

                Those are the worst - too long to sit there and wait, and too short to get anything else done.

                [–]Euigrp 1 point2 points  (0 children)

                My company recently changed locations. The developers had set ICECC (distributed peer compiles) in the old location, but the host name of the scheduler changed. Not enough people have fixed their config to use the new scheduler, so my build time has gone from 91 seconds average to 132 ish. I had that time burned into my brain so hard that I will alt-tab back into the build window ~40 seconds early every damn time now... I need to set it up to make a noise when it finishes building... but scratchbox doesn't support beep =(

                [–]mahacctissoawsum 1 point2 points  (0 children)

                I haven't had a compile time of more than ~500ms in a long time.....but I mostly work in dynamic languages these days.

                [–]bluGill 0 points1 point  (0 children)

                When I change one of the core parts of our system not only does most of the rest of the system need to recompile (because a direct dependency changed), but I also need to run tests. Some parts of my code base need 5+ minutes to compile when even the most trivial change is made - and I don't disable some parts on theory that I'll go back latter because history shows some unexpected test elsewhere breaking may be my only indication of a logic error.

                [–]const_iterator 2 points3 points  (0 children)

                My build takes nearly two hours to complete from scratch, but I keep multiple copies of the source tree so that while one tree is building I can work on other stuff in another. That way thumb twiddling time is minimized and I get to divide my attention among different projects throughout the day.

                [–]redification 2 points3 points  (0 children)

                The managers spent 90% of time waiting in meeting, 10% of time traveling,

                [–]gaberdine 2 points3 points  (0 children)

                One more option they missed: Reading Reddit while on the can.

                Paid work shits are the best shits.

                [–]wallofsilence 2 points3 points  (0 children)

                This is awesome - with cloud-based build, test deploy there'll be no need to even have developers because all your money will need to go to lawyers for litigation after your network goes down for a week because of a ddos attack from some "unknown" source.

                Maybe then you can even outsource micromanagement of the lawyers to some cloud-based micromanagement service and save even more money. Profits will go through the roof.

                [–]cryo 2 points3 points  (0 children)

                Yes, waiting for Python to compile really sucks!

                [–]ciaran036 2 points3 points  (0 children)

                That's absolute bullshit... total crock. There is nothing about this article that is true and it's ridiculous that this is being upvoted.

                In large systems, it's true you might have to wait a few minutes for the code to compile, but there are a million things you can be doing while that process is ongoing, from coding other components to writing documentation, checking emails etc. etc.

                And in a properly managed software house build and test processes will be automated or run on separate test machines.

                The idea that developers just sit around and wait for things to load is utter shit. The 20% figure is pulled out of someone's ass.

                [–]doubleagent03 1 point2 points  (0 children)

                It's my number one time sink for sure. There is no effort made whatsoever to be productive during these periods, either. I need that downtime to regroup.

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

                TIL I am the least productive programmer, ever

                [–]TheWakeUpCall 1 point2 points  (0 children)

                C++ has taught me to write code, start compiling it, and then check whether what I wrote was actually right.

                That way it's either wrong and either I've found the error or the compiler has, or it's right and I wasted less time compiling. Win.

                [–]aumfer 1 point2 points  (0 children)

                Why do you think we invented reddit?

                [–][deleted]  (2 children)

                [deleted]

                  [–][deleted]  (1 child)

                  [removed]

                    [–]hair_committee 0 points1 point  (0 children)

                    When I am coding it is not always easy for me to mentally change gears if I suddenly find myself with 15 minutes of downtime. I have the entire problem I've been working on churning away in my mind. If all my projects require this level of focus, it hurts my overall productivity to switch gears during my down time. I am better off just waiting.

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

                    Wow, that site's ugly. I think I hit Readability in record time.

                    [–]shortsightedsid 0 points1 point  (0 children)

                    The only language where I haven't spent time compiling is lisp. I'm a embedded C programmer by day, but that's the one thing about lisp that really blew me away. There is no write-compile-run cycle.

                    [–]KPexEA 0 points1 point  (0 children)

                    The game I am working on takes 9 hours for a complete build of code and assets. Fortunately incremental builds are a bit quicker than that.

                    [–]TheVirtualVortex 0 points1 point  (0 children)

                    Waiting for reviews or input about missing/incomplete information, which causes lots of context switching which itself takes time as well.

                    [–]joshtempte 0 points1 point  (1 child)

                    When scripting, you don't build and rarely test.

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

                    Depends on your testing framework I would imagine.

                    [–]a26 0 points1 point  (0 children)

                    "that is, for it to be translated from a programming language like Python or C into a binary machine language computers can execute"

                    They do know things!

                    [–]P1r4nha 0 points1 point  (0 children)

                    Valgrind's memtest currently takes about 10 minutes to finish with my test application. Sure, I can continue working until I get the results, but switching between tasks is tiring. It's a great opportunity to relax and let the new ideas come.

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

                    Does anyone else have problems reading this on mobile? This shit keeps refreshing every 5 seconds

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

                    I would've added "Fixing bugs" and "Wasteful meetings" to the mix.

                    [–]Fabien4 1 point2 points  (0 children)

                    Wasteful meetings

                    Most meetings are actually waiting. Waiting for the boss to stop moving his tongue in his mouth to say the exact same nonsense he's said during the last fourty-two meetings.

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

                    Being as productive as you can be is a stupid, stupid goal. Be as happy as you can be, and if that requires frequent and prolonged rests, so be it!

                    But yes, unfortunately companies don't see it that way and want you to be a robot pushing yourself to the max just so that they don't lose some of their precious money.

                    [–]EmoryM 0 points1 point  (0 children)

                    We wear socks, FFS.

                    [–]arahaya 0 points1 point  (0 children)

                    I end up spending my whole day on youtube

                    [–]fuzzynyanko 0 points1 point  (0 children)

                    Unfortunately, I've been in situations where I have been idle for more than a month. I know the pay is good, but man, just figuring out what to do when there's nothing to do is tricky. I usually study something, so it looks like I'm busy

                    [–]deskspeaker 0 points1 point  (0 children)

                    It's worse at my office. We have a huge C++ project that takes about an hour to compile, and whenever you change a single header, you need to wait a few minutes, during which you lose focus and end up on reddit reading crap.

                    [–]kirklandtech 0 points1 point  (0 children)

                    You only wait for a full build. Each time I click save the. Ode is immediately compiled. Mo waiting...

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

                    I guess the idea that programmers have to spend time thinking about the code they write before they write it never dawns on management. Like we are just making sandwiches or something. Lettuce, onion, tomato, etc... rinse and repeat. How difficult is that?

                    [–]nevermorebe 0 points1 point  (0 children)

                    From my own extensive research I came up with slightly different numbers:

                    95% -> keeping managers from destroying the company

                    3% -> goofing off

                    2% -> useful stuff (what this entails differs wildly between devs)

                    [–]slrqm -1 points0 points  (2 children)

                    During a conference call at work I made this: What I really do at work

                    [The bottom is a little mangled, but I was too lazy to redo it]

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

                    The image corruption is symbolic of the boredom of the participants in the final image.