Ask HN: What are your greatest productivity hacks?

72 points by roryisok ↗ HN
In the last few months I started using a clipboard manager (Ditto) and I'll never go back. My 'clipboard anxiety' (did I leave something in the clipboard? can I copy this? better open notepad and Ctrl+V just to be sure...) is gone, and I can copy stuff with reckless abandon.

This got me wondering, what are some of the other productivity hacks like this that I'm missing out on? I already use AutoHotKey and rave about it to anyone who will listen, but there must be other ways to improve my workflow.

What productivity hacks have changed your life?

48 comments

[ 3.5 ms ] story [ 78.1 ms ] thread
Vim. learn Vim motions and then switch to Spacemacs. You will "own" the code.
Strangely enough, Stoicism. I try to recognize what I can control and what I can't, and I try not to let things I can't control scare me into inaction.
That's not actually that strange. The detachment aspect of Stoicism (related to what you reference) is excellent for reducing anxiety overall. Reduced anxiety (or, perhaps more accurately, prioritized anxiety) means that it can be applied to and about things that actually matter (or matter to you).

Stressing about other drivers that you can't control? You're emotionally exhausted before you get to work. Stressing (within reason, perhaps better stated as "mentally focused on") about how to do X in project Y? Perfectly reasonable, that's a task you need to get done and that stress/focus keeps you on the ball (overdone can still leave you mentally/emotionally drained, or hyperfocused can leave you unable to think clearly about the task because you need to step back and view the whole picture).

I am a solo founder/developer and these are not hacks but rather realizations dawned on me, leading to much better or rather consistent productivity and decreased anxiety.

I am working Solo, but I get to bounce ideas off my spouse who also works in IT though it is sporadic at best. I am proactively trying to do this more, as it helps to air my ideas and it is much easier to recognize rabbit holes.

* Maintaining a list of things to do. If the first thing you do when you sit down to work is wonder what is it that you have to tackle next, thats a recipe for loss of productivity. If you have a list of tasks ( as granular as possible), ordered by priority if possible, you can hit the ground running. I use ZimNotes with the filed stored on DropBox. Zim autosaves. So no fear of loosing

* Try to have more realistic expectations of what you can accomplish. Try to estimate how long each task will take for you to do and then double that estimate. Knowing how long each task is gonna take will cut down on anxiety. This will clear your mind and give room for your mind to concentrate on the task at hand.

* If you are a solo founder starting out, product validation is much more important than QA. Once you have customers though, it is important to avoid any disruption in services.

* Release often even if only you are the only one who will see. Make incremental updates. Always start with something very small but working and keep adding features. Immediate visual feedback of seeing your changes at work will do wonders for your morale.

* If you are doing multiple projects, some preliminary documentation should be in place so you can context switch easily from one project to another

* Though all these help me a lot, I have just started following most of them and it needs lots of discipline. I need to be mindful of what I am doing. Whenever I slip, I just try to get back up and start again.

All that said, if I am exploring a new feature or tech, it often lacks structure due to it's lack of clarity and the time estimate for it is widely off the mark. Yet to find a way on how to tackle this. For now, the only option is to set some hard deadline. If there is no light by the deadline, that line of exploration has to be dropped. Maybe the unpredictability just has to be embraced and accepted.

I also need to find a way to handle situations where I run something and it needs a minute or two to finish. I end up wandering to HN or News or Youtube and lose track of time. Maybe another list of micro tasks that can be accomplished in 2 mins :)

Another idea is to use spacemacs. I have been a vim user for a long time. The idea of using emacs for browsing , task tracking and coding sounds appealing as probably there is lesser chance of distraction. Can someone comment on whether it is a good idea or another wild goose chase?

My biggest problem is typically dealing with distractions. I get easily distracted by either responding to an instant message or just stumbling along something interesting while searching for solutions to programming problems, or when doing research when writing articles/blog posts.

What helps the most for me is just closing out all other applications, chats, and browser tabs and not reopening anything else until I'm finished with work.

It's easy for many to get in the zone, but staying there can be hard.

Since college I've been using Moleskin notebooks (though lately Baron Fig notebooks) to manage my tasks/time one week at a time, moving over tasks every week that I didn't get done the previous week and evaluating whether I still need to have it at the top of my mind for each unfinished task. I find that it works extremely well for keeping relevant tasks in my head and only taking on larger projects one week at a time.

The system I use is loosely based off of the Bullet Journal method (link below), highly recommend checking it out if you haven't heard of it.

http://bulletjournal.com/

I believe a physical notebook is much better for me than an e-notebook
Totally agree, I think pen and paper makes me think more about what I'm writing. I still use digital note taking (recently ditched Evernote for Notion – which is wonderful), but only as a sort of "overflow". In my original post I mentioned I don't move everything over each week if it's not relevant at the moment, that usually means I add it to a digital document with some longer term tasks or ideas.
I have a giant 6ft x 4ft whiteboard in my home office, and I write up everything I need to do that week. As I come and go to get tea, go to the bathroom etc, I pass it and see my progress
Learning emacs to the point that the chords are second nature and require no (or very little) thought to produce (aka, fluency).

Using org-mode (other tools work as well, but particularly useful if you're fluent in emacs).

Full-screen apps, or two apps side-by-side. Specifically terminal, or terminal + reference (text, websites, man pages, PDFs). This helps to force focus on the specific task at hand.

My use-cases for org-mode: General project planning/management (personal, mostly); literate programming; notes while reading texts; notes while learning a subject.

Want to learn a new codebase but find reading dozens or hundreds of C and H files to be difficult to track? Slurp them into a massive org file that can spit them all back out using C-v-t (tangle). Then keep breaking the code down into smaller chunks adding notes, moving related sections in separate files closer to each other, etc.

Want to read a book and take notes on it? Half the screen is the PDf, half the screen is emacs. Create a headline per chapter, as you read, take notes. Write out definitions, use <<anchor>> content to create anchors for links like [anchor]. Write out your notes, capture things that you want to follow-up on, page numbers, etc. Each chapter and section gets marked as TODO (or customized) or DONE so you can chart your progress through the text.

Want to understand an RFC and maybe implement it? Put it into an org file, start structuring it, add in source blocks (or, if the RFC has source, turn them into source blocks as well).

===

And then there's GTD. Grok it. Understand that it's not a dogma but a toolkit. The tools exist to free you from the mental burden of tracking activities you need to do by capturing them, prioritizing them, dismissing them as needed, and scheduling them. If you aren't thinking about what's coming up, you can think about what's present.

===

EDIT:

Automate all the things. I write scripts to do a lot of my computer-based tasks. The purpose is to reduce error-rate (if there's an error, the script or the input was wrong, fixing the script fixes the former, adding a check to the input prevents the latter from recurring). It also gets things out of my head. I can literally forget how to do X, Y, and Z (frequent, maybe critical, but unnecessary for me to remember with any precision tasks). This is also useful for migrating a project from largely hand-rolled toward continuous integration/deployment (especially in my office where we don't quite have the infrastructure in place to do that properly or consistently). An example:

We get deliverables from contractors. My script takes that and pairs it with our own software, updating the libraries we link to with the ones they provided. Runs the build script. Constructs our deliverable. Pushes the output to a particular spot. Different parts of that are different scripts with one script to run them all. With a proper CI/CD platform, you could take each of these and put them in as stages triggered off things like git commits.

So now I've got these scripts, we have the git server and build server, I can restructure it all in a way that will run on that. Now I'm out of the loop. Whoever retrieves the contractor's deliverable and pushes it will also trigger the full rebuild of our system. No specific human is critical.

That's a specific work improvement, but the same can be done for many personal computer-based tasks as well. Like how GTD gets your future plans out of your head and into your calendar or whatever, automation gets your processes out of your head so you can focus on the product and inputs of the process and not the process itself.

I'm actually a windows user mainly, but I do dabble increasingly in linux. I keep hearing about this Org-Mode. Can someone explain it to me in simple terms? What is it exactly?
Simplest use-case:

It's a fancy outline mode in emacs.

(NB: You can use it easily in Windows, just go to the GNU Emacs home page and download the emacs binaries, I do this for work where we're a Windows shop.)

Simplest features, outlines:

  * This is a headline
  This is my content
  ** This is a subheading, it's been folded...

  * This is a headline
  This is my content
  ** This is a subheading, it's not folded
  More content.
It's a plaintext markup format, akin to markdown but not the same rules.

Markup rules:

  *bold*, /italic/, _underline_, =monospaced, good for code=
You can make enumerated lists or unenumerated lists:

  * A heading
  1. List item
  2. Another item, folded...
  * Another heading
    - list item, no enumeration
    - another item
      - sub-item
NB: Emacs shorthand: C-(character) means press Ctrl+(character), C-(character)-(character) means press Crtl+character, continue holding control and press the next character (the characters are pressed in sequence, not simultaneous). M-(character) means, on windows, the Alt-key (left-alt specifically?).

Going fancier, let's make a TODO item!

  * Project
  ** task
  ** Another task
On each heading, press C-t

  * TODO Project
  ** TODO task
  ** TODO Another task
You finished task? C-t again

  * TODO Project
  ** DONE task
  ** TODO Another task
You can do more configuration so it includes the time and day completed. You can change the workflow away from just <none>/TODO/DONE, as well. For code projects I have BUG/FEATURE/TRIAGE as well. TRIAGE indicates a possible error that's been discovered and its details are in the contents. BUG indicates that a bug has been identified and its details. FEATURE is a request and its details.

Check out their site (http://orgmode.org/) for a lot more details. It can do a ton of things. If you really want to get started, just treat it as an outliner to begin with. Start using additional features as you need them. Like emacs and vim, it's a tool that you can grow into.

At the top of all of my org files is at least this directive:

  #+STARTUP: indent hideblocks content
indent means that the outline will look like:

  * header 1
    * subheader
      content
Instead of:

  * header 1
  ** subheader
  content
It's cleaner, IMHO, and the second version is the actual file contents. It's strictly a change to the presentation.

hideblocks means that codeblocks and the like are hidden to begin with when I open the file:

  #+begin_src c
    void function(void);
  #+end_src
becomes:

  #+begin_src c...
content means it'll show all the headlines, with their contents folded up.

  * H1
    * H2...
      * H3...
    * H4
You can make schedules in it. Make checklists in it. Write code in it (literate programming). You can export it to LaTeX and HTML and other formats. You can tag headers

  * Tagged header :work:broken-feature:
And search those tags. I'm not sure how much else to say, it's big. But read the site. Play with it. Realize you want to do something, google that task and org-mode and someone probably wrote a blog explaining how to do it in org-mode.

EDIT:

org-mode is included in the default emacs builds. You don't have to seek it out, though it does get updated independent of emacs. Emacs has been getting frequent updates the last few years, so you're usually not a major version behind if you just grab the emacs distribution and use its org-mode.

org-mode does sometimes create breaking changes in their formatting. But this has only bitten me once, and that was with a file I made i...

Wow, thanks for the in-depth reply, I'll definitely check out emacs!
NP. I'll admit to being an emacs evangelist. But I can tell you what I like about it, and it's a quality you can find in other systems:

It's fully, and easily, extensible (once you learn the language, emacs lisp in this case). I use Visual Studio at work for C# projects. Extending it is a non-trivial thing. If I just want to change a simple behavior of the editor, it's non-obvious where to start, and it's probably not as easy as writing a simple 3-line function and putting it in a configuration file.

Emacs, vim, Sublime (ok, no experience with it, but it seems easy from what I've seen), and others reduce this down to:

  Create the function or functions
  Put them in a specific file or the file in a specific
  directory
  At most reload the whole editor, but more likely just
  tell it to refresh its plugins or to execute that bit of
  code
org-mode, for me, is just a very, very useful tool that covers a lot of use-cases for me, and works across each OS that I use (Linux, Windows, macOS). But it's always worth exploring to find what works for you. If nothing else, you'll have "wasted" your time learning how to use emacs, and should you find yourself "stuck" in it, you won't be lost in the chords.
I agree with much of this, but after my own experience of GTD and watching some friends try it, I think it's poorly suited for intellectual work. Even though it talks about the 10,000 ft/20,000 ft/etc view, I think it just pays lip service to higher-level planning. What I noticed were lots of people chasing microscopic tasks and checking off to-do lists instead of taking care of the big things that make a difference. But maybe it's just me.

Another poster mentioned Cal Newport's "deep work", which seems a more natural fit for coding to me.

I'm not saying GTD can't work for you, YMMV, but I think it's a better fit for more traditional office work.

I can see that. GTD works for me, but I also don't try to use it to drill down deep into every project. I have used it to, say, map out learning a language using specific resources a couple times.

Like, with Rust, I put in that I wanted to go through The Rust Book. I created a project with the book's title and a link to it in an org file. I created subheadings and turned them into TODOs for each chapter. Since I use org for literate programming, I included every example in this file along with my own exploration and toying with the language.

But an actual programming project won't be done that way. At most, from a GTD perspective, I note that I want to create a CLI TOTP implementation in Rust (as an exercise project). I'll capture it at a high level so I don't create too many projects (an unfortunate habit) and not finish it. So in my GTD list of projects I'll see that I'm working on "CLI TOTP in Rust", but no more details.

The details for that go into a literate programming org-mode file that drills into the details of what needs to be done. Somewhat GTD-style, but the tasks here never make it into my overall GTD action queue or schedule.

Basically, my system is an amalgam of what works for me at different levels. Dogma is rarely useful, in my experience. Flexibility and appropriation of tools from everyone else. Experiment, recognize failed experiments, latch onto personal successes, and explain what worked or didn't for me to others to help them do the same.

Agree re: org-mode and GTD. I kept my GTD-esque project management and journal system in a Markdown git repo, but I've started to switch over to org-mode: no mass migration, just new material going forward and switching over what I need for my immediate projects.
Shut off social media. Kill the noise. (FB, Twitter, Snapchat, HN, $SOCIAL_MEDIA_NETWORK)

Deep focus.

"Deep Work" by Cal Newport. Read it.

This, in my own way. I've found that I'm happiest with my work when I spend the day, even if it isn't that long, actually working straight through.

Take breaks, but don't be distracted.

It's super-damn-hard to get back into this, for me, after neglecting these habits for a few weeks: when I have downtime.

Changing my schedule so that my 7 hours of free time is before work rather than after work. Previously I was burnt out from work and when I got home I would do nothing but browse the internet. Also turning off the cell phone during my free time and only using a computer for productive purposes rather than website consumption. In the past couple of months on this schedule, I have read 13 books, practiced 150 Mandarin characters 200 times each, learned how to play guitar from sheet music in the first and second position, learned the major scales/chords on piano, practiced drawing every day, painted 4 paintings, journaled every day, and am taking an improv class.
So now are you burnt out when you get to work?
Only if those tasks burn you out. If you want to learn a language, music, drawing, etc., then spending a few hours on them each morning before work oughtn't wear you out. That is, you're doing them because you enjoy them. If they become tedious, they're not work, you likely don't have a deadline, you change up that routine. Drop the music for a bit if you find yourself too frustrated by some piece or element of playing the instrument, but you still have that time, so fill it with leisure reading of a novel for a few weeks, return to the music refreshed.
I wish I could do this, but I have kids. They rule my schedule
That's ok they'll wake you up 7 hours before work.
This is good advice, if you have that control over your schedule.

What I've found, for me, is that going from home to the gym (running, BJJ, strength & conditioning, depending on the day), I come out of it physically tired, but mentally refreshed. The next few hours I can focus on other tasks pretty effectively. Part of it is the physical activity is, for me, meditative (which is itself refreshing), but also that it's totally different from what I'd just spent 8 hours doing, and was intending to spend the next 3+ hours doing.

Did you notice a dip in your job performance?
I should follow your advice. I'm too addicted to Reddit.
(comment deleted)
I just tell myself "Stop being a f*ing loser and do what needs to be done!". It works.
Not sure why the parent was down voted. Various things work for different people and I follow something similar. I keep a mantra of sorts going on in my head throughout the day where I tell myself to not be weak and give in to procrastination (I'm on a lunch break right now). This actually does push me harder during the hours which I've set aside for productive time. That way I feel zero guilt when indulging in HN and YouTube after my work hours.
- When you shut down for the day, leave your work in an unfinished (even uncompileable) state. This makes it easy to start the next morning, and is a good way to warm up to get back into context of the project.

- If you start the day with a clean slate, write three things you'd like to do today. Pick the one that will take the longest and do that first. This is Mark Twain's "eat a frog before breakfast" advice and I think it helps a lot.

- Install SelfControl.app and start it for 8 hours immediately when you sit down to work. No matter how in control I think I am, I'm always amazed at how my reflexes take me to some distracting website before I even realize what I'm doing. SelfControl stops this habit by blocking distracting websites and making me aware of them. (Pro tip: don't write an unblocking script)

> leave your work in an unfinished state

this is great advice. I do this with writing, always stop with a few paragraphs to go, so you can pickup easily

SelfControl: I found an alternative for Windows called https://getcoldturkey.com/ - though I haven't tried it yet

You can also do a "git commit -a" and leave it at the editor. Next day, you can warm up by describing all the changes in the detailed commit message. (The time stamp on the commit will be the time when you invoked it, not when it completes.)
Sometimes I'll leave a failing test for the next day as a guide on what to start with.
Once a week I do a really hard stint (6-8-10 hours) to come atop of all the little and big things I was leaving behind.
These are simple ones that you probably all know. I'm just writing them down for reference.

__General__

1) Flux for sleep (sleep being the 'hack')

2) Social pressure: find a community that you want to belong to and that gives you the social pressure towards goals you want to achive

__For programming (when learning a new language)__

For me, the focus is on getting as unstuck as possible. I've noticed that interactive tools help a lot with this because they show you how things 'under the hood' work.

1) Get a text editor or IDE that teaches you how to code -- only if you're new(ish) at a language. Things like Intellisense, a debugger and jumping to function definitions allow you to learn a lot more about code. For me, with Java this is Eclipse (Netbeans and IntelliJ work as well). For front-end it is Chrome developer tools (Firefox works too). For iOS this is Xcode. For node.js this was Visual Studio Code. I'm curious if there are suggestions from other people.

2) Knowing how to search on Google well. I can't really explain this yet, and it's something that's learned with the first programming language. So I'm going to ask this question on HN to see if there are people who can explain it :)

Edit, see: https://news.ycombinator.com/item?id=13183302

3) Finding a shell to play with.

I tried flux, but I just find it irritating when the screen turns yellow. It probably doesn't help that my office has a daylight bulb
I agree that it's irritating. However, I do feel the difference when I use flux or when I don't at 03:00 in the night (student life :D). It's mainly during very late hours that I'm noticing a difference and am willing to put up with the yellow screen, probably from 23:00 and onwards.
In preferences you can always tune the level of "yellow". I personally, keep it at 5500k during the day, and in the evening turn it down a bit to 4800k.
Ask early if I get stuck. Also ask myselfmy and my boss if something is really needed, maybe we can get away without doing it
>What productivity hacks have changed your life?

Learning Vim.

The learning curve was steep and for the first year (!!) I felt SO awkward in Vim. However, I pushed on and eventually it became second nature. I started reading up on how to do stuff differently, I watched a lot of youtube videos. Then I started implementing these things more and more into my daily routine. Now all these things are ingrained so much I get annoyed if there is a text box without my Vim binding because sometimes I just mash kjkjkjkjkj which I rebound to <Esc>.

Learning Vim is worth it.

For those who are still in doubt, you are going to be editing text (code probably) for so much more hours. If you are going to repeat something or do it often you should invest in your productivity. You could think of your non-trained productivity as a straight line in the (time, productivity) plane and your invested productivity as some exponential curve. It takes (a lot of) time to get to the same level, but afterwards your productivity just skyrockets. I am very happy I made the Vim investment.

For building something valuable, follow Deep Work. For being workholic employee, follow Getting Things Done