17 ms·
A trick to reaching flow: Leave your work broken
- curo 4y agoSimilar to this "leave things broken", I like to start the day with some lightweight refactoring. This allows me to pay down technical debt while I warm up my brain to the code.
- Cthulhu_ 4y agoBut be critical; I'm currently trying to discourage my colleagues from over-engineering fairly simple things (static / simple list items in a React app). Refactoring is fine, as long as it's not refactoring for shifting code's sake.
- RockyMcNuts 4y agoNever stop until you know what you are going to pick up with next. https://www.fastcompany.com/3021905/hemingways-secret-to-maintaining-productive-momentum https://www.fastcompany.com/3021905/hemingways-secret-to-mai...
- throwaway4aday 4y agoCame here to say this, can also be called "leaving a little in the tank"
- Cardinal7167 4y agoThis is the way. I stop working with tests passing but write a context comment on whats to be done next. It’s like flushing my working memory.
- generic92034 4y agoOn the other hand it can be helpful, in my experience, to stop right in the middle of a very hard problem, where you are still searching for a good solution. Come the next morning I often know at least a possible solution, without having worked on it consciously.
- srcreigh 4y agoIn uni there were a few times where I'd spend 12 hours solving assignment problems. At EOD I still had maybe half unsolved, although I'd tried to solve them all. Next morning in the 30 minutes I had before class, I quickly solve all the problems before handing it in. Oh, another time for algorithms assignment, I am up until 5am or so. Still had 2/5 problems left unsolved (but again I had tried to solve them). I go for coffee at the student center, oops it's not 24/7. I take a light nap in the student center waiting for the coffee place to open up. Full on REM dream problem solving occurs. A couple hours later I awake knowing full well how to solve the 2 remaining problems. I grab my coffee and leave to write up the solutions. Sleep really helps.
- yuuuuyu 4y agoThe risk with this is that you keep procrastinating away before getting going again. It's the anticipated pain of frustration that prevents you from starting. Not so much if your idle time generated a solution to the problem. But if it didn't, then you are in trouble.
- sublinear 4y agoThis is an underrated comment. Not only this, but there are some micromanaged environments that make this impossible and you're immediately hit in the face with a meeting first thing in the morning that destroys any energy you might have had to continue after being asked several ways if it's "done yet".
- yonaguska 4y agoI've been 60 minutes of focused work away from wrapping up this current ticket for the past two days. Too exhausted to get going in the morning before meetings and interruptions kill my productivity for the day. Usually I start work two hours before the workday actually starts because context switching and meetings drain me, and deep work won't get done otherwise. The curse of ADHD.
- 4y ago
- Dave_TRS 4y ago"The best way is always to stop when you are going good and when you know what will happen next. If you do that every day when you are writing a novel you will never be stuck. That is the most valuable thing I can tell you so try to remember it." - Ernest Hemingway, advice to a young writer in 1935 article in Esquire
- ghotli 4y agoI wanna live in that world vs kids and coworkers yell fire and their urgent request isn't actually urgent but now I'm outta the zone. Seems like you're describing an idealism. Ideally, sure I'd fend off these attention suitors and get to them once I hit a stopping point. Love my job and my kids but this triggered me a lil bit. Somewhere along the line I feel like I just became battle hardened into actually accomplishing things regardless. Just a lot of picking up the pieces of context and ideally I left myself notes (e.g park facing downhill, a good mantra)
- JohnFen 4y agoI've been using this "trick" for many years. An old mentor taught it to me, but he called it "park facing downhill". The idea is to leave the workday with the work in a state where there's an obvious and easy task to start the next day with, like parking your car facing downhill so that gravity will get you rolling before the engine is up to speed.
- bradleybuda 4y ago(author here) "park facing downhill" is an excellent TL;DR - I'm definitely stealing this!
- deleted 4y ago[deleted]
- yuuuuyu 4y agoExcellent advice, just like the article as well.
- augment001 4y agoAs an engineering director years ago I had the rule that engineers hours were 10am-6pm, and I'd walk around the office at 6pm and send people home. I'd get complaints that I was making people stop when they were in the middle of something, and I'd just say, you can carry on with it in the morning. It worked extremely well. Engineers just wanted to get on with their work as soon as they arrived in the morning. We'd have a 5 minute literal stand-up that really did only last 5 minutes because people were so impatient to get on with what they had put down the night before. The policy had to stop when a new VP was hired who valued presenteeism and the appearance of hard work over focus and energy.
- irrational 4y ago6pm? Man, I’m so glad I didn’t work for you. That is late.
- 4y ago
- JonChesterfield 4y agoLeaving a test broken that is going to be straightforward to fix does help me pick up the pieces again the next day. A next steps text file helps too.
- m3kw9 4y agoJust introduce a break would work if you want to stop and on a dime. Like typing asdf on in a function
- deleted 4y ago[deleted]
- atentaten 4y agoI typically use personal "Did do" and "To do" notes to leave myself breadcrumbs as to where I left off and where I should start again.
- swah 4y agoYeah, on VSCode there isn't a good solution for linking to tasks to file+lines other than Bookmarks. Or just stick with TODOs...
- andorov 4y agoHemmingway would leave off writing for the day in the middle of a sentence for the same reason.
- inetsee 4y agoI remember reading this quite a while ago. My elaboration of this technique is to write the last sentence in my head, but only put the first part down on (paper) the end of the file. If I'm lucky, when I come back to it, I can read the first part of the last sentence, and memory will tell me how the sentence ends, I can just keep going.
- franky47 4y agoA side effect of this technique is that the "obvious next step" to fix the broken code left over lives rent-free in my mind until I can come back to it. For some people, leaving things in a broken state when the solution is known is an itch begging to be scratched.
- manmal 4y agoInstead of “// TODO” I just add “TODO” or “asdf”, suffixed with a short description of the next thing I’d like to tackle. That gives a compiler error so I can find the relevant line very quickly next time I work on that project.
- jeremyjh 4y agoIf nothing else I leave a test with a description and an `assert false` statement to fail it. Preferable is a test that actually fails for the right reason.
- sacrosanct 4y agoMy trick is to get outside my comfort zone when coding, but only just enough that's it's tolerable and not overwhelming. Most of the time, even as a seasoned coder, I should feel inadequate, yet still up to the task at hand. That's what flow is for me: pushing myself, but not too far that I end up falling off the proverbial cliff.
- 23B1 4y agoYep, I use this in writing. Leave that juicy scene until tomorrow, so I jump out of bed instead of slithering to the coffee machine while building a list of excuses in my head.
- m3kw9 4y ago“ Before stepping away, leave the code in a state where it is Obviously Broken, but Easy to Fix. ”. So purposely introduce a break that you can fix would work just as well?
- 0x457 4y agoYes, but it's easier to say write a unit test that is failing and leave, rather than break something on purpose.
- prashp 4y agoThis is good general advice, but there are situations where it doesn't always work. Sometimes I've come back the next day, finished the thing I was working on within 1 hour and then I get stuck for the rest of the day trying but failing to be productive. Maybe it would have been better to finish the day before and taken the next day off?
- z3t4 4y agoWhen I'm in a flow and get interrupted I write "I AM HERE", so the next time I try to run the software (which can be hours to weeks later) I get an error on that row and hopefully remember what I was working on.
- DelightOne 4y agoI usually add a line with a plain "todo" to break the build and afterwards a three-line comment describing what is supposed to change. At the end of the change I remove the todo-line and move the three-line comment to the now-better location as documentation for why that code there is the way it is. When I don't have such comments, its usually back to the collection of design documents thinking through the next feature.
- janci 4y agoOhhh, this makes sense. I must try that. Up until now I was doing the exact opposite - trying to finish the task or at least drive it toward some clean state. Mainly to not block others if I am close to completion.
- NegativeK 4y agoDitto; I remember reading somewhere to try and finish the day on an accomplishment, so that you've got a pleasant taste in your mouth about the project. Given how long ago it was, though, maybe the article was about personal projects instead of work.
- exodust 4y ago> finish the day on an accomplishment This is the way. I can't believe people are actually endorsing leaving things broken as a positive way to end the day. It's a hard disagree from me on that idea.
- paxys 4y agoIf I did this I'd spend most of the next day trying to figure out what was broken and how to fix it.
- nicbou 4y agoIt's too effective. I end up sitting at my computer to watch a movie, and end up finishing work in the evening. I'm nerd sniping myself, and it's not healthy. Then in the morning the madness continues. I want to make room for other things in my life. I have to Cm+Q everything in the evening.
- __MatrixMan__ 4y agoI think "failing test in a feature branch with a draft PR and a powered off machine" counts as "left broken". I won't even boot into the work OS if I'm not working.
- chatmasta 4y agoThe most important part of my evening routine is renewing the 24 hour block in SelfControl.app before it expires.
- Toutouxc 4y agoThere are quite a few solutions for this. You can do your work stuff in a VM that you just turn off and it's gone for the rest of the day. You can get a second computer for non-work programming. Or if you don't need that much compute in your free time, get an iPad. It's great for your evening articles, YouTube and Netflix.
- JoeAltmaier 4y agoMy old colleague Mike Rowe said it this way: "Always leave it compiling" meaning, make a change and don't test it, just start the build and walk away. So when you returned you had something to dig into (didn't build, or did and needs trying). Also, you had a good feeling that maybe what you just tried will fix the problem or whatever. So you don't go home frustrated and depressed.
- adrianmonk 4y ago> good feeling Hah, for me, these moments are some of the most stressful moments of coding! I am about to find out a very important piece of information: whether I'm done or not. It's an intense feeling of anticipation like how you feel while hearing, "We, the jury, find the defendant...". I would like to avoid stringing that out over a longer period than necessary.
- chatmasta 4y agoCompiling is the riskiest time for me, as that's when I'm most likely to get distracted by something else. Sometimes during a 10 minute rebuild I just force myself to stare at it.
- karaterobot 4y ago> Exiting after hitting a “neat” stopping point - unless the task is done, leaving the system / code too clean makes it hard to know what to work on next. While it’s really tempting to try to stick the landing on an internal milestone, it can often be more productive on net to stop just short of a neat milestone as an onramp to your next coding session. I have heard novelists talk about similar strategies: end your writing day knowing what the next thing you need to write is, but not actually writing it. So, the next day, you can sit down and get going immediately, and use that momentum to launch you into that day's work. I think I do the opposite. I most often reach a flow state when there's something wrong, and I'm trying resolve it. It's repairing the broken state that absorbs me. When I get to that resolution, the challenge is having enough self-awareness to stop: I look up, and afternoon turned into night, my shoulders are cramped, my neck hurts, but hey why not keep this going? Even after resolving the problem, the overall state of the application is still "broken", i.e. incomplete, so I always have something to bring me back. The thing for me, as a former-professional programmer, current hobbyist, is that it's easier to reach a flow state if you care about what you're working on, and get wrapped up in it. If you're working on some corner of an application you don't care about except for the paycheck, you probably have a harder time getting motivated. So, what works for me may not work for everybody.
- aleksiy123 4y agoThis makes sense. But does anyone else have problems with disconnecting when I know what needs to be done.
- adrianmonk 4y agoIt makes me feel more at peace about disconnecting, in a certain way. Since focus is elusive, when I step away from work, I may worry that I'm throwing away an opportunity that I may not get again. If I believe I have a way to recover focus when I start again, I feel more comfortable about letting go.
- drewcoo 4y agoRediscovering the state of things and being in flow are very different things. The author is entirely right about a trick to recover context. But I'm not sure he's ever experienced flow.
- DevKoala 4y agoYou’ll never be able to exist outside of work if you follow this advice. There is a mental burden to leaving things broken; if you really care, you’ll spend your cycles thinking about what is next and how to solve it. From experience, I don’t recommend it.
- neura 4y agoI really think this is a "to each, his own" concept. May work great for some people. May be terrible for others. The internet is a wonderful place for the open exchange of ideas, if you just treat them as such.
- gwambold 4y agoLeaving a failing test clearly pointing at what to do next has been very effective for me.
- disgruntledphd2 4y agoThis is in TDD by example or refactoring (the Beck chapter). I definitely read it somewhere.
- rickrollin 4y agoI actually started doing this thanks to a book called Rest. In general it is a really good book.
- gavmor 4y ago"Go Home Red" is a slogan I've heard tossed around the length of my career, meaning "leave a unit test failing overnight." It's trivial if you're practicing TDD, since most of your time is spent coding against a failing test. A failing test really expands your short-term memory, ameliorating interruptions like meetings, Slack messages, and having a life. Regarding open loops "living rent-free in my head," preoccupation with work outside work can certainly be a health hazard, but I have never found `git push` to reduce those ruminations. If engaging hobbies and loving community don't do it for you, maybe some mindfulness meditation might help "let it pass." That being said, I am not super disturbed if even my dreams are infiltrated by the dayjob on occasion; I don't bill hourly.
- m463 4y agoone thing that helped me with open loops is to have what David Allen of GTD calls a "Trusted System" It's a system you trust to record those ideas bumping around in your head. That lets you get them OUT of your head until you start working again, and relax.
- dopidopHN 4y agoNo idea if it’s true but I’ve read that Michelangelo was using the same technic while sculpting. At the end of the day, make a big ugly dent somewhere in the stone, that makes him want to fix first thing the next morning
- AnotherGoodName 4y agoIt's exactly why certain games are really addictive. There's always something more that needs to fixed. Looking at you Factorio.
- swayvil 4y agoThat's big. If you can leave your work broken then you level up. Translate to a higher plane. You are, in a way, free.
- bufordtwain 4y agoI use a physical notebook and at the end of each day I write down what needs to be done next.
- cachvico 4y agoI just remove a semicolon.
- stephc_int13 4y agoThis trick is also known as the Hemmingway rule. It is a way to fight anxiety by starting with something your brain is convinced it can get done easily. And then get the ball rolling thanks to the increased self-confidence. The opposite is finishing your day on something painfully difficult and not solved.
- chatmasta 4y agoWhen the Hemingway rule doesn't work, maybe because you've finished something and don't know what to do, that's when you can turn to the Twain rule: eat the frog first. Start with the hardest task.
- TrevorFSmith 4y agoI just leave myself a note "This is where you stopped" and a quick description of the next step. No thinking needed on return.
- chatmasta 4y agoThis is one of the only weird tricks that actually works. I don't remember where I originally got the idea, but as soon as I saw someone point out that it works, it seemed so obvious. I've been doing this for years. When I get into a slump, it's usually because I finally finished something, and then woke up the next morning not knowing what to do.
- bhu1st 4y agoNice trick. For me it's little different. I usually divide the work into small chunks and tackle one by one. I may work on task 1 and 2 and leave task 3 untouched for next session. This has worked for me pretty well to get started the next session.
- furyofantares 4y agoI usually just type a couple english words in the source file so that it won't compile when I pick back up and immediately draw my attention to where I was last typing. It's basically the simplest possible system, and I find not only does it mean I can get started right off when I come back to it, I also have no hesitation to start something I won't be able to finish before getting up.
- trc001 4y agoIn academic or research work this can be tricky because sometimes you put something down and can’t come back to it for a week/month. At that point, this trick is more of a hindrance than anything…
- tylerc230 4y agoIf I need to stop in the middle of something, I’ll often write directly in the source code, at the point where I stopped, exactly what I was working on and what to do next. I don’t comment out these instructions to my future self so when I sit down next, the project won’t even compile.
- maccard 4y agoI write C++, so I use `#error start here, implement the FOO` It works surprisingly well!
- ralferoo 4y agoEven easier with C-like languages: a bunch of blank lines above and below something like `xxxxxxxxx;` at the point I planned to continue working. Instant compile fail if I try to run and also very obvious on any "git diff".
- zxexz 4y agoThis is the way. The only way I can stop coding and stay comfortable when it’s getting late, especially if it’s something even mildly interesting, is to do a borderline incoherent mind dump and break the linter/formatter. Just all my thoughts, what I was working on, other places I may need to change code. I usually end up closing the laptop before I describe the why, but the act of writing it all down usually makes that come back before I’ve finished reading the first few words the next time I revisit it. I’ve found this remarkably effective to the point I often just do a mind dump the moment I feel tired at all, and end up in a better place than if I kept pushing.
- nhoughto 4y agoYep Couple of, retrospectively, often almost incoherent sentences to capture top of mind state when I give up because it’s late. I’ll write this gibberish comment here because I’ll definitely forget what I was doing and if the compile fails I probably won’t miss it!
- eyelidlessness 4y ago
- rendall 4y agoI thought the consensus was that "flow" isn't actually all that great. If you're writing code while juggling multiple difficult concepts in your mind at once, your code will be difficult to follow. While in flow, you tend not to take the holistic, bird's eye view and so work harder, not smarter.
- ideamotor 4y agoI haven’t considered this but it makes perfect sense. If time is critical or if you are understaffed, it becomes required, however. I’ve prided myself on my ability to get so much done in a solid 8 hour flow state in the past, when it was necessary, but now that I have a baby and work at a larger company, perhaps I can take some solace in the concept you shared.
- deleted 4y ago[deleted]
- rendall 4y agoI was decently productive while a "flow" practitioner but I am definitely more productive than that after abandoning it as a concept. It's much easier to pick up where I left off because code is structured that way.
- tchock23 4y agoThis is a variation of the Zeigarnik Effect for anyone interested in the why behind it. https://en.m.wikipedia.org/wiki/Zeigarnik_effect https://en.m.wikipedia.org/wiki/Zeigarnik_effect
- fastball 4y agoThis is what I do with writing most of the time. There is a tool[1] I've used on occasion that (in a certain mode) forces you to write non-stop without being able to look at what you've already written, for a certain amount of time. Whenever I need to knock out a rough draft for something and am feeling a bit stuck, I reach for this. [1] https://www.squibler.io/dangerous-writing-prompt-app https://www.squibler.io/dangerous-writing-prompt-app
- Mystery-Machine 4y agoThe way I do it is I try to stand up as soon as my pomodoro timer is done. I do finish the sentence / line of code or write a comment how to continue, and then I get up and take a break.
- fsckboy 4y agoI can follow OP's argument, but it doesn't work precisely that way for me. I like to start in the morning with a clean build. Then I can set off to make major changes, knowing that everything that goes wrong, what I just did had something to do with it. The work will inspire new ideas (which I jot down to not forget, but stay on track) and I work till I get back to a clean build again. I want the complex flow-state in my head to be related to what I'm working on in as short a time-span as possible. New ideas can wait for a new day.
- KingOfCoders 4y agoAdditionally add a failing test, start with the test next day.
- eur0pa 4y agoKind reminder that you're on borrowed time here.
- riemannzeta 4y ago“Stop in the middle of a sentence, leaving a rough edge for you to start from the nest day – that way, you can write three or five words without being “creative” and before you know it, you’re writing.” — Cory Doctorow
- dybber 4y agoAlso known as Hemingway’s hack: “The best way is always to stop when you are going good and when you know what will happen next. If you do that every day you will never be stuck. Always stop while you are going good and don’t think about it or worry about it until you start to write the next day.” - Ernest Hemingway
- geodel 4y agoYeah, I leave my code with compiler error, so I can come right back to it later.
- imjonse 4y agoMaybe off topic, but it's weird to see a post about flow and distraction start with a completely unrelated splash image as many posts do these days. Are there studies linking this with better recall/comprehension or is it SEO related/purely aesthetic/trendy? It makes the posts signal 'I care about this' a bit more than your old school livejournal text only content, but I suspect in the vast majority of the cases it correlates with superficial and weak content.
- jzwinck 4y agoThe photo of a mountain biker is not unrelated, you just aren't aware of how it's related. Flow is a term used often in mountain biking, and in a similar way to programming and other pursuits. Garmin even have a metric for it: https://www.garmin.com/en-US/garmin-technology/cycling-science/mtb-dynamics/flow/ https://www.garmin.com/en-US/garmin-technology/cycling-scien...
- imjonse 4y agoI didn't know about flow being a term in biking, TIL thanks. However, my opinion on vaguely related splash images before blog posts being indicative of superficial content where SEO is sought after more than sharing original or useful info is unchanged. This is solely based on my own experience reading various blogs, hence my initial question regarding what is at the heart of this trend if not simply SEO.
- thatxliner 4y agoThere is actually a similar technique for writing: leave your writing halfway, where it’s obvious how to continue. That way when you come back, you’ll continue writing.
- whatever1 4y agoAnother hack I had read about and found out it works for me is to write down any distracting thoughts while trying to focus. Many times, when I try to focus on a particular task, I get ideas and questions about tangible or completely irrelevant (we need to buy bananas) topics. My primitive brain would drive me to first complete these irrelevant tasks first to get some dopamine reward. Now I always have in front of me a small piece of paper, and when some distracting thought like that hits me, I just write it down, and I reassure my brain I will get back to it once done with the main task I am trying to focus on. It is nice to have these written down because I can completely empty my brain of them. I know it is stupid, but it works for me :)
- lukasb 4y agoSo yeah, good news about that ...
- justizin 4y agoi love this, i often try to wrap things up 100% while in flow and sometimes end up screwing things up. this makes perfect sense.
- vishnugupta 4y agoThis resonates with me. For about 18 months I commuted to work through public transport and I had to adhere to bus/metro timings or risk reaching home couple of hours late and earn the wrath of family. This meant two things 1) I drastically cut down on non-productive tasks while at office and 2) I often had to get up from desk with solved but half-finished work. So when I reached work the next day I didn't have to think what to do, I had an extremely well scoped work to start the day. It's as if a chef walking into kitchen finds all the cutting/dicing done and recipe laid out in front, he just needs to start cooking. The net result being it was perhaps the most productive period of my career and it coincided with the hyper growth phase of the startup I was working for.
- stefandesu 4y ago> leaving the system / code too clean makes it hard to know what to work on next I've heard about the idea in this post often in other contexts (e.g. writers stopping in the middle of a sentence), but I've always been the type of guy who likes everything to be clean when I stop for the day. But that does indeed make it very hard to know where to start the next day (or even worse, two weeks later when coming back from vacation). Sometimes it takes me days to get back into the work and it doesn't feel good. I will definitely try this out.
- domh 4y agoThis is exactly what I do! I just came back to a repo I haven't worked in for a couple of days, checked out my working branch, ran a `git stash pop`, ran the tests and there's a failing test case waiting for me to fix. Feels good to know exactly where I left off before. I also often leave a // TODO comment with some rough bullets for next steps. Works for me!
- humanpotato 4y agoI realized this trick a while ago. As an engineer I will sometimes leave stuff disassembled on my desk to end the day if I was working on it, so the next obvious step in the morning is to re-assemble it and keep testing.
- totalhack 4y agoI don't necessarily do the "broken" part but always leave a note or marker for myself about where I left off (with special syntax highlighting). I write out thoughts and options as I go in my org file notes so it's useful for rehydrating when I come back. Tangential trick: walk away more often, especially when in the more intense problem solving or architectural phases.
- stanislavb 4y agoThat actually works.
- jasfi 4y agoYou can have ideas for productivity that only make sense in the moment when you're in a state of flow.
- butz 4y agoI like leaving some easy finishing touches at the end of the day, so next morning starts with a quick win and morale boost. Or even leaving in the evening with no idea how to solve the issue, usually solution comes itself until next morning.