This was part of what made me want to start my own company. I'm not doing my best work until I'm so immersed in a project that my brain's working on it round the clock in the background, and I didn't want to give my full energies to developing IP for an employer that returned no loyalty.
In those rare periods where I actually want to work on what I'm supposed to be working on - maybe a couple of times a year - my productivity literally triples.
Walking home from work helped a lot with that and also with signing off at the end of the day.
I'm reminded of a thought along the lines of "never go to sleep without giving your subconscious something to work on for you".
But simply not telling employees who've saved my bacon multiple times that they're expected to take a significant pay cut while working unlimited uncompensated overtime with unlimited uncompensated travel would be a good start. (The guy who took the devil's bargain I turned down worked 400 hours overtime in the first four months, I absolutely made the right choice.)
Pretty much every dev I know has a history with or knows of a manager who optimized metrics that were easy to optimize (bugs closed, LOC written, code coverage numbers) instead of looking at some elusive "big picture". We recognize these typically aren't good performance metrics. The same people would agonize over the type of keyboard switches and vim configurations and boast that they can write more code faster.
I've never ever in my long career heard anyone claim that ' These cherry red's will improve my code by 10%'. To then draw a parallel to bad management metrics seems to me a bit of a stretch.
I know it's "just a tool", but I can't help but feel a connection to it, like people often feel for their vehicle. I think back to the things I built with it the same way one might reminisce about that one great road trip. Keyboards are the bridge between the physical and virtual realms. I understand the desire to have one that's truly your own.
Another key factor is eliminating the risk of interruptions. I know when I'm at my desk I'm likely to get interrupted, but times and spaces that are interruption free seem to encourage the deepest thought.
1. Create space for thinking.
Block off chunks of time. Snooze notifications. Close sources of distraction.
Set a timer/alarm so that I don't need to watch the clock. Leave a buffer between that alarm and whatever my next commitment is to wrap up/conclude.
Create a place where I capture my thinking. This could be a whiteboard, a piece of paper, a text editor, etc. I avoid nice notebooks because thinking involves writing down lots of unpolished things, starting over occasionally, etc. and I just can't bring myself to do that with a nice notebook.
2. Focus.
Pick a topic/question/hypothesis/whatever. Set up a "parking lot" for interesting things that occur to me that I don't want to get distracted with.
Sometimes it's hard to articulate what the topic is. In that case, I do some basic mind mapping of related terms/topics/whatever and then draw a box around the area I'm focus on.
Occasionally look back at the topic and make sure that's what I'm actually thinking about.
3. Work in order.
Think about the problem first, in detail, before thinking about solutions. Similar to the above, stick any inklings of potential solutions in a parking lot. This includes considering the characteristics/qualities of a good solution; this helps me avoid getting attached to any initial seemingly-elegant solutions that don't actually have the qualities I think are important (anchoring is a real thing, even if you're aware of it).
When considering the problem or solution, I try to brainstorm ideas, then organize those ideas into a "space" (either problem space or a solution space), and then figure out the key "dimensions" of that space.
Identify the key questions that narrow (e.g., bisect) that space. Focus on those, versus getting bogged down in details of an option that may turn out not to be relevant. Often, these become "next steps".
4. Separate thinking from producing.
Separate writing-as-a-way-to-think from writing-as-a-way-to-communicate. I can't do both at the same time effectively; I end prioritizing clarity over substance. Similarly, I struggle to rapidly produce useful proof-of-concept code unless I promise myself it's going to get thrown away. Readability, maintainability, accuracy, etc. are all hugely important, but not for the first stages of thinking.
Once I've finished thinking, then I can write an actual document for others to consume.
It actually is a boon in lectures or physical presentations (people find the motions engaging), but it's usually distracting enough in problem-solving meetings with peers, that I'll avoid it in those situations.
My favorite part about working remote during COVID has been that I can finally do this during normal meetings, and nobody has to be distracted by it! :)
But you can easily convert me be telling me about these "ergonomics of thinking". How does one make thinking more ergonomic?
The defining property of desk jobs is that they're not strongly tied to location or equipment to preclude doing them at a desk. So out of convenience we use desks.
Do you think every desk job other than software is just rote mechanical behavior that happens at desks, but only software is clever enough to need to think about what they're doing?
But I know, that's not what you meant, but I still don't see myself needing to get up for any reason (at least without in-person meetings) whereas others do that a lot :P
Well, certainly a lot of it. Data entry, check processing, etc. These are the jobs software is doing away with specifically because it is clever.
Producing the system, the working code, is not something you do at the end. It is an integral part of the process. It is the place that forces you to not gloss over gaping holes or contradictions in your modeling. It forces you to be clear and complete about your supposed understanding. It forces the trade-offs rather than the sunny day 'we can have both' situations.
And yes, I also do very productive thinking in the shower and sauna, but at the end of the day, no matter the fantasies, the desk is our habitat.
Well put. I agree this is the reality, fantasies aside. No doubt many of us have very productive and effective careers without much leaving the desk. But I like to think that there is fertile ground beyond our natural habitat too, and some of us (like myself) need the encouragement to explore it. At the end of the day though, we'll still need to return to our desk habitat and deliver what we set out to.
Typing the code is an artifact of the work.
This is something that drives me nuts about interview questions where people want to “watch me think” - I don’t think sitting at my keyboard. I usually walk around the block or in my yard when thinking through the hard parts.
Some of my best work occurs in the shower, laying in bed, in the restroom, browsing articles that generate ideas, having a casual chat, etc. but if I'm not pounding code or diagrams out at a certain velocity or sitting in meetings, someone who doesn't understand my job will wonder exactly what I'm getting paid for.
For a country so obsessed with migrating to IP based economics, we have a business culture that seems to understand nothing about intellectual work or want to play ignorant to slave drive more efficiency out of the workforce.
Yes, I do bill time I'm thinking about your project while I'm the shower. It may not be tangible to you but your work is occupying my mind and you're getting some of my best thoughts.
We need business culture and labor laws to shift to support this, the issue is, the intangible nature of it makes businesses cringe because it's difficult to quantity and know they're not being cheated, yet they sell the very same intangibles to consumers regularly set at arbitrary price points and that's perfectly fine.
A very quiet place, with no distractions makes it easiest to focus. A notepad to write notes also helps.
But I think not seeing the Sun, and hearing the Outside world, causes one to lose track of time, and space. And lets you focus more. Why rain works.
Casinos take advantage of this. You typically can't see the Sun, so you concentrate on the slot machines longer. The busy carpet makes you lose orientation.
Going for a walk, fresh air, and being a little tired from exercise, helps you to settle down.
But I think the key is motivation. If your life literally depended on getting something done, you would try so much harder. There has to be some sort of reason for what you are doing.
This rings very true to me. And the more annoying extension is that the "managerial types" justify their time spent on work with these meaningless bs talks, while devs are guilt tripped every time they've to explain time spent on thinking / analysis.
“So it’s up early the next morning for Veres. He doesn’t want any interference; he wants time alone with this bug. To Veres, debugging the machine — particularly the [Instruction Processor], the part that he helped to design — has become ‘a very personal thing.... A computer, to people who designed it — it is part of them. You can almost feel what’s wrong with it.’ This problem feels like a time bomb. But how to find it? ‘I get quite a lot of work done in the morning while taking a shower,’ says Veres. ‘Showers are kinda boring things, all things considered.’ Now in the shower, before leaving for work, he conceives a new approach.”
> But how much attention do we pay to the ergonomics of thinking?
A lot actually. See how much effort people are willing to put to org-mode for example, and I'd say that is like 90% thinking ergonomics
The picture is in the mind. The idea, the final view, the sheer excitement of imagining the final product, all happens in the mind.
Then you go to the tool selecrion.
Some are tried and tested. Some are new. Some are always reliable. Some may break midway.
Same is the case with canvas, paints, etc.
So also with methods and techniques.
But the process is as rewarding as the final result.