1. 16

Here I am.

Having about ten days to finish, polish and deliver a piece of code. After wrestling with it for almost half a year I now understand the problem domain. I have discovered several possible solutions and picked my preferred one, too.

The problem is that with the interesting puzzle gone, the coding itself bores me.

I am anxious about my inability to sit down, concentrate and finish the piece. But when I try, I immediately find a distraction.

How do I finish it?

    1. 16

      What helps me is to first determine what the final state of the program is, then determine where you are, and develop a clear checklist for getting there. For me, checklists are the best way to work through the boredom.

        1. 1

          Those check lists are saving thousands of lives.

      1. 3

        How could I forget What Would Twilight Sparkle Do?! Will report progress.

        1. 3

          Dear princess Lobsteria,

          yesterday I have learned that I totally suck at making check lists. I have opened the code, got sucked in, stimulated by your interest in my misery, and after about 6 hours in the zone remembered that I need to eat. And write a check list. Thank you! Today, I will finish some other part of the code and get a little bit closer to closing this support ticket.

          Your faithful student…

          [Whoever flagged the parent has no heart, by the way.]

    2. 14

      Connect with people about it. Develop accountability. Explain it to others and let their enthusiasm to know more drive you. Ten days is a short time to learn to do this, though. It’s a long process, one seemingly neglected!

    3. 10

      Why do you think that something which has taken 6 months to think about can now be implemented in one week?

      You will never complete this.

      Let it go.

      Accept that you’ve done exactly what you set out to do - wrestle an interesting problem domain into a well understood solution - and that the work now required: taking the solution and writing good code to implement it, is another hard problem which requires a skillset you don’t have. If you did have this skillset, you would have been building the framework for the solution to run in along the way, and as you haven’t done this you’re now faced with a Herculean task of implementing a huge amount of ‘boring’ code just to be able to apply your solution. (There is no such thing as being ‘bored’, you are facing a new, difficult problem which you have no idea how to solve and so are applying avoidance behaviours to avoid dealing with this fact).

      If there are others involved in this process - communicate your inability to complete to them as soon as possible so that if they have an interest in reach whatever the currently defined ‘finish’ point is, you can help them get there, or they can help you get there. Don’t not do this - there is no excuse - if it’s your boss, someone is paying you, your girlfriend, telling them is much, much better than not telling them.

      (Any douchebaggery in this comment on my part acknowledged completely - and it should be understood is directed towards me, not you.)

      1. 2

        Yep, wanted to write a comment like this, but /u/james already did and worded it better.

        Unless you’re a genius you do not understand the domain unless you did some exploratory coding as part of your research. You do not tell much about the domain but since it took you six months to understand it (which is not a problem in itself) there’s no way you’re going to “finish, polish and deliver a piece of code”. Hell, ten days might just be enough to thoroughly test a piece of code like that.

        1. 2

          Oh noes, the problem is not that complicated. It’s basically a task scheduling problem. It took me half a year of exploratory coding, building some scaffolding, a few modules here and there and several rewrites to understand things such as how to integrate it with Racket’s event system, how to safely interrupt and obsolete a running task, what is the best way to solve dependencies, how to build state machines and so on.

      2. 1

        The framework is there. The problem is with using it. I’ve abstracted away the hard part of the task and am left with what I have originally came for. But after building the infrastructure it seems too mundane.

        1. 5

          That’s what you said already. What exactly are you asking?

          I think I understand your point and where you are, and I’m saying (bluntly, sorry) that from my experience of being where you are countless painful times before that your perspective and/or your process are very broken and that you need to ‘zoom out’ further than you think to understand where you are and make progress. You really need to understand this too, otherwise it’s going to recur on every task you work on.

          If you’re asking for a short term fix to do something you’re currently not capable of doing (for a reason you don’t appear to understand, otherwise you would have overcome it), then by far the best way of doing this (as @aredridel said before) is to get a buddy, talk through the work and the process until you feel you can start work, and keep communicating with the buddy until you’re working smoothly.

          Lobsters seems like a sensible place to try and search for that kind of buddy, if you decided to go down that route.

          1. 1

            I’ve re-read your previous comment several times and am beginning to see the point. Thanks! This have actually been informative.

    4. 4

      I don’t think it is boredom, I think it is fear. Do little 15 minute spikes to see if a technique will work, pause, reflect and then code real(ish) version. Repeat until finished. You will give yourself clearly defined problems that limit the scope and the anxiety, this will be liberating, allowing you to complete your project.

    5. 3

      What I do is, when I recognize I am easily distracted, I say to myself “The hardest part of doing something is thinking about it”.

      It helps me, not sure if It would help you.