A trick to reaching flow: Leave your work broken
census.dev
census.dev
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.
Certainly some of them said that, and I had to push for them to leave anyway. I also feel like that when I’m coding myself sometimes.
But I think the of times when it’s actually true are vastly outnumbered by the times when it’s just an illusion, and it was obvious from the velocity and energy level that the policy worked.
I don’t get paid for presenteeism, I schedule my own hours. If someone was telling gme I couldn’t work after I wake up at 2am with a breakthrough, that’s as bad as someone saying I couldn’t stop work at 2pm because it’s a lovely afternoon and I fancy a bbq.
I agree, and relates closely to the YAGNI philosophy ("You Aren't Gonna Need It") [0]. It's easy to think, "I'm so close, it'll be easier just to do it now".
But what's so special about now? Are you really that much smarter right now than you will be tomorrow (or next week, month, year..)? More knowledgable? More prepared? Possibly... but it's more likely to be the opposite: in the future, you'll understand the problem better, you'll have more data to choose the best path forward, you'll realize there's another way to do it, or you'll simply have bigger fish to fry.
Obligatory executive dysfunction angle: the special thing about now is that I'm doing the thing. Once I stop, it will take me anything between 2 hours to 2 days to start again.
Enforcing a constraint for the 90% scenario makes more sense than designing around the 10%.
I suppose it just goes both ways. Try not to finish sth so that you don't have the somewhat hard task to start with sth new next day. But at the same time don't stop in the middle of sth that's difficult to pick up from. A strict timing rule does only help if you are statistically more often at a point where it's easy to pick up again. I doubt that you are though, so I'd try a more concious approach than a clock.
I really like the parking downhill analogy.
Although I disagree with you when it comes to corporate policy, I basically agree with you at a deeper level.
I think that being able to be completely asynchronous about how and when you work, while also being unafraid and deeply reflective about your process would be more of an ideal.
However this isn’t realistic in a corporate situation, and in such a setting most people are more likely to be suffering from meaningless workaholism induced by relentless corporate pressure than they are to be operating at the highest levels of self-actualization.
One should try to create a study to investigate the effects better.
As alternative to "6pm you guys all go home, period.", there is likely a difference between "6pm you all go home, but if you really must finish sth, I'll wait until 6:30pm to pull the plug" and "go home whenever you want" (which may end up being 8pm or 10pm and in a game theoretic setting may lead to later and later time).
You really think so? You think you spend the vast majority of your time at work doing things that are so complex they're hard to pick back up 12 hours later?
Lately, in salaried positions, I’ve basically had to break myself of that habit - that’s my free time I’m cutting into when I stay late. In emergency situations, I’m happy to stick around later if possible, with the understanding that there’s bonus compensation or at least comp time queued up for me - but if I’m just feeling engaged when 6pm rolls around? Im out, I’ve got dinner to cook and videogames to play.
Work will wait for tomorrow, part of what I’m getting paid for in standard work week is developing on a schedule, you know?
Honestly, forcing people to any particular rhythm is a pretty bad idea unless things go out of hand.
Sometimes I'm in the mood to continue on the problem, and sometimes I'm too tired and would rather leave by 4pm. Why shouldn't I be able to decide?
There's zero pressure to work overtime and leaving on time is encouraged. If people work late, we encourage them to leave earlier and relax. Not all tasks can be solved with brute force head smashing.
This sort of schedule gives you virtually no free time with kids. Get home, eat, put kids to bed, wake up early because school doesn’t start at 10am, send them to school, wait a bit, leave for work.
We are lucky that things are more flexible now. I don’t blame the manager. It was a different time. But it’s a schedule that doesn’t work well for a lot of people.
If you're going to nit-pick, my kid starts school at 9am, so I can't start work before 9am. What about remote workers and the example of walking around the office?
I'm pretty sure the example was specifically to note that cutting off their work hours was a successful tactic with respect to leaving them with something to start in the morning, vs letting them finish what they're working on and then have to figure out what/how to get started on in the morning.
Literally the point of the article there, leaving your work unfinished or broken, as it were, so you can just jump in knowing the next thing you were already going to do last night, but forced yourself not to or were forced to not finish.
As I’ve explained - I picked that time as the latest people were allowed to work in the office. Before I adopted this, people were randomly staying much later.
And certainly if the team in general hadn’t liked the hours, I’d have negotiated. We moved from 9am to 10am for that reason.
We all would prefer to work a particular schedule - we all deserve to be able to negotiate our hours based on necessary overlap with our coworkers preferences.
“I wake up early so all of you have to wake up early” and “I work late so all of you have to work late” are both not nice.
What role were you able to be successful at while only putting in 2.5hrs of work a day?
Posted as an edit, since YC is doing its inexplicable rate-limiting on replies to this thread:
> Work != presence. In a role in which you don't have to sit in front of a computer, 3h presence could mean 8+ hours of work. … I typically start working when I step into the shower in the morning. … I think that all counts as work hours.
I work from home, but I do not count my showers as working hours. That’s patently ludicrous, and frankly, 2.5-3.5 hours of “presence” a day is unbelievable. Someone putting in so few hours is shirking their work, period.
My work is in software verification, so it’s not as if I don’t need time to think, but I also put in the actual hours required every day to appreciably kick the can forward.
I’d be livid to be stuck working with (and waiting on) someone who considered their shower and commute as working hours.
I typically start working when I step into the shower in the morning. (I have a typical coder job.) Thinking about what to work on today, remembering the problem I left off yesterday (having parked downhill), etc. It's a great distraction-free environment. Some of the best ideas come there. No slack, no email. No CI pipeline that screams at me. Sometimes I keep thinking after the shower before turning on the laptop. Just sitting on the sofa. By the time I log in, I may have already worked for an hour. Or perhaps two, if I started thinking about work right after waking up. On office days, I typically think work during the commute. There mostly, but often even on my way home. I think that all counts as work hours.
My work is in software verification, so it’s not as if I don’t need time to think, but I also put in the actual hours required every day to appreciably kick the can forward.
I’d be livid to be stuck working with (and waiting on) someone who considered their shower and commute as working hours.
And as a knowledge worker, I'm being paid to solve problems, and have and structure the knowledge to solve problems in the future. If I'm solving problems for work in the shower, or on my way to lunch, or while making coffee in the morning, I'm literally being paid to do my job. As a software developer not responsible for operations, literally nothing in my job can't wait 30 minutes. Even if I was at my computer, actively coding, it would probably take around that long for me to get to an appropriate stopping point to respond to a message.
You’re not a 10x “alien tornado”, you’re just a fish in a very, very, very tiny pond.
If I only dedicate 2.5 hours every day to my work, I’m not meeting that obligation.
If I start accounting for my showers and commute as working hours, I’m being dishonest with both myself and my employer.
I would not feel secure in the stability of such an easy job, nor proud of my accomplishments. I also expect that we work in very different stratums in both skill and renumeration.
I like that expression, but this could also mean leaving things not broken, but in a ready state for the next phase.
Personally I don't like logging off with things broken. I like logging off with things in a good state so I can jump in next time knowing everything up to this point is good.
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!
It works surprisingly well!
I just use Jetbrains IDEs on projects with the IdeaVim plugin (integrates so well with the IDE, it’s pretty much my only must-have plugin for any software, beyond uBlock Origin), and Vim for external files (scripts, etc., or when I want to use a specific plug-in for editing).
By default IntelliJ (PyCharm, GoLand. any Jetbrains IDE…) has a pretty large undo history, and that can be extended to however long you like. The real killer, however, is the extended local history for the file, which is arbitrarily (or at least seems to be) long. Combine that with the wonderful built-in git history (which can be a separate pane/window!), and you’ll never worry about changes you’ve made being lost, or overwriting other history, no matter how overzealous you were with said changes.
I find IDEA’s built-in tools so useful I barely ever even think of using git stash or git shelve anymore (or directly calling ~30% of git commands for that matter), and those are commands for which I still have 20+ aliases for in my .bashrc.
Its git features are also quite comfortable. Very nice diff, I like very much the "Show history for Selection", live git annotate (with GitToolbox plugin). I don't often do rebase, but when I do the interactive rebase is also very helpful.
https://stackoverflow.com/questions/2985050/is-there-any-way...
It really saves the whole tree, not just the path that was active at the time of exit.
- SSD failure within moments of getting started for the day
- backlight failure
- mouse/keyboard failure
- human failure (spilling coffee on the computer)
Each time, I was out of commission until I got a replacement or the computer repaired and someone else had to pick up my work. If your computer becomes a brick, it doesn't really matter what you thought you wanted to do next.
I push code a couple of times a day. If something goes horribly wrong I just pick up another computer, pull the code, and continue working while I wait for a repair/part for the main computer (or for an OS to reinstall).
If your computer becomes a brick, just use a different computer.
My secondary is a 10-year old laptop which gets regularly used while sitting in bed in the morning, occasionally for actual work. The other backup is an old desktop I donated to my wife a few years ago, containing an unplugged SSD which is exactly as it was when I last used it. Both will still handle most of what I need, just a bit slowly.
Let’s say that last note of the day does not have to go to repo.
But I would expect some commit chain that would be useful produced and pushed.
A coworker fell off a ladder and broke both his arms. We had to look at his commits to figure out what he had gotten done. It was worthless. Absolute trash. His finished code was always top notch, but his WIP code … trash.
It was easier to ignore it and start from first principles than to try and pick up where he left off.
If you do PRs every few weeks then that could be a bigger issue. But then this should be a lesson to just not do that. Merge small steps often. It has tons of advantages.
I self-review my draft PR's and catch all kinds of weird formatting, messy or missing comments, and general clunkiness before imposing it on others to review.
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.
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.
https://www.fastcompany.com/3021905/hemingways-secret-to-mai...
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)
Morning meetings are a deliberate tactic. Middle management needs answers for their next meeting which is also right after yours in the morning.
The people who get to have meetings at the very end of the day are at the top of the hierarchy, and guess what? They got their work done!
If there was ever a real example of inequality that should be fixed (fuck all that DEI shit) this would be it. Work from home actually massively reduced this meeting train crap at my workplace, but they just found other ways to annoy people. It's still an improvement though.
I'm not sure if in this scenario it's an option to solve the problem on the first go. Usually when I hit this scenario, I am simply unable to do it in the first place, but the next day is easy.
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.
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.
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.
“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
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.
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 :)
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.
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.
For some people, leaving things in a broken state when the solution is known is an itch begging to be scratched.
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.
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.
Given how long ago it was, though, maybe the article was about personal projects instead of work.
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.
I definitely read it somewhere.
When I don't have such comments, its usually back to the collection of design documents thinking through the next feature.
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.
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.
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.
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
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.
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-scien...
Tangential trick: walk away more often, especially when in the more intense problem solving or architectural phases.
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.
I also often leave a // TODO comment with some rough bullets for next steps. Works for me!
The author is entirely right about a trick to recover context.
But I'm not sure he's ever experienced flow.
If you can leave your work broken then you level up. Translate to a higher plane. You are, in a way, free.
There's always something more that needs to fixed.
Looking at you Factorio.