A breakdown of 4 simple software engineering and coding habits that improved my productivity. These include keyboard shortcuts, learning to say no, reaching flow state faster, and keeping a big book of commands handy.
Points 2->4 have saved me from a ton of unnecessary stress over the years, but point 1 was completely new to me!! It makes so much sense though so I’m excited to start putting it into practice.
Thank you for sharing and thank you for the shoutout!
Thanks for the article! The first point hit pretty close to home. Getting started is the hardest part of any project, so it helps a lot to use the last few minutes of each workday to put into writing the next few steps needed to be taken, broken down as much as possible. This allows me to get into the groove of doing more easily the next day.
It's true - you can't say no to *all* low-impact tasks. However, whether I'm on a team as an IC or building my own product, it's fair to take a step back and see what tasks are *actually* high-impact versus not. I'm always surprised at how many things I can go ahead and not do, and it won't really matter in the long run.
Every tip is gold. I usually like to finish my tasks but I see your point. The next day it takes me a while to get back into the same state of mind where I left. It goes the same for writing. Writing down the next steps is handy, I will give this a try.
Also, great point about getting good at using keyboard shortcuts. Most of the smart programmers I've come across are really good at this. It's something not emphasised enough to young developers, but it boosts your productivity several folds.
Thanks you Abhinav! I definitely feel the same way about writing a lot. Starting with a blank page is really hard for me, so I first write down a bunch of bullet points at first. Then I go back and turn my bullet points into an actual article, editing it down, etc.
Yes, same with me. Also, if I have to take a break and continue writing next day, it takes a while to find the same flow. Someone mentioned that, leave writing at an unfinished sentence, so when you come back you know how to resume.
Great article. Thank you! You speak from my heart. I struggled with point 3 in particular for years and was constantly annoyed with myself. Especially when it came to the terminal. I often thought -- Wait a minute, you've looked for this before. -- At some point, out of interest, I started writing my own little terminal and built in a context-based autocompleter. Cogno emerged from this. At least for the terminal my search is over.
Oh, thank you very much for downloading Cogno! If you encounter any problems or miss any features, please don't hesitate to let me know. That would help me a lot.
I often struggled with the first one. If I left something "in the middle" it chased me in my sleep.
I learned from Cal Newport the idea of a "shutdown routine" to leave everything ready for the next session. Kind of like making your bed to come back home and having a nice bed to sleep.
Really nice list, specially agree with the "Leave work slightly unfinished for easier flow the next day" tip.
Reminds me of this Hemingway quote
“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.”
Nice tips. I've been fighting the shortcuts advice, I always thought it's a bit overrated. I'm curious to know how much time (and not only mouse clicks) does it actually save?
I tried it for a few hours, and the adjustment was too hard. Every now and than I think whether should I try again (he mentions a ~50% increase in typing speed).
I think the reaching flow state faster has the biggest affect on productivity. For me, it is combined with staying with the flow state, reducing those bumps as much as you can beforehand. For example, writing down the outline of the logic with pseudo code and finishing all the small tasks before hand. So when I start the next day, not only can I jump straight back to action, I'll also have an easier time reaching the end.
Oh man, the configurable keyboard is definitely way more than what I have right now haha! It totally makes sense that the adjustment is hard, I would feel the same I think.
I think the keyboard shortcuts keep me in "flow" better. It's a bit hard to explain, but just being able to navigate around quickly faster than I used to before just leads to a certain level of comfort with the computer that makes me work better. I don't think remembering a lot of keyboard shortcuts is necessary, but I think having a good baseline knowledge of shortcuts for tasks/commands you use daily is useful (at least for me!).
Definitely agree on the flow state! Writing down pseudocode, drawing out a general design, or outlining bullet points for a design doc are definitely game changers for staying in flow.
In the army coding academy, we has a 'surprise' excerise, where the commanders stole our mouses for a full 90 minutes, during which we had to solve a coding problem. It was frustrating as hell 😂
Maybe my aversion to shortcuts is because of that trauma.
I think it's just a matter of finding a middle ground. Some of them are super useful and you should do 100% of the time (if I'll see a developer doing Copy using the right click of the mouth I'll probably throw up a little), but some are pretty niche. As you mentioned, it shouldn't be a 'forced' excerise, just picking up some common actions and slowly integrating it.
So basically I'm saying exactly what you said but with more words 🙃 (I just wanted to reinforce that point for junior engineers, no need to be a shortcuts freak)
I think changing the way you use your keyboard has to be something you decide and go all in.
I had this in 2 times.
The first one was when I wanted to write proper typing with the 10 fingers of my hands and not just the 4 to 6 that I was using. I felt stupid for a while, but I did it while on vacations.
For the second one, I remapped the arrow keys, backspace, and delete keys to have them closer so I don't have to move my hands. I did this at work and I was feeling very stupid for a long time. But I decided to use the new setup and don't look back. Otherwise, the habit is too big to break it.
Yeah, I think it takes that dedication to actually change such habits. But was it worth it? The small improvement in typing time for deeling stupid quite a while?
I think I just didn't have a good enough reason to go all in. I don't feel that writing takes such a huge part of my day - if I was a typist, or a writer, I would definitely go for it. But now, especially in a management role, most of the time I need to think, not write.
Typing with all fingers helped my ergonomics. Before I felt pain in my hands after some time, I wasn't using them properly
And remapping some keys made me not feel stupid with the little arrow keys in macbook built-in keyboard. I never hit them correctly and now I don't have to hit them anymore :)
Very interesting, thanks. I especially love the hard data and graph. But it still makes me wonder:
“but it took me just 2 months to get to 65 wpm. I’m at 120 wpm a year later. I maxed out at 125 for Qwerty”
This effort to switch is quite big. Let’s assume 2 hours of ‘pure’ typing per day based on querty speed. So I have to type 15k words. I’ll average the first 2 months at 35 wpm - it means 90 * 120 / 35 - 5 more hours each day 😅
So around 200 hours in the first 2 months.
The next 10 months I’ll average 95 wpm - around 40 minutes more each day, ~130 hours.
Assuming after 2 years I’ll jump straight to 185 wpm. So this time I save 40 minutes a day. It’ll take me 3 years to get the time I invested 😅
I won’t argue it’s a smart investment for the long term, as I’m just at the beginning of my career. But still, 5 years is a lot of time, and it is a frustrating process (I gave up after around 10 hours).
Who knows, maybe in 5 years we won’t need to type anymore 😅 I’m already typings much less when I code due to ChatGPT, I’m mostly adjusting and fixing.
If you ever go on vacation for a week or two, worth a shot trying. The keyboard will give you most of the short term benefits with the layer ability. Key layout benefits are longer term due to less finger pain.
Yet another excellent article!!
Points 2->4 have saved me from a ton of unnecessary stress over the years, but point 1 was completely new to me!! It makes so much sense though so I’m excited to start putting it into practice.
Thank you for sharing and thank you for the shoutout!
Thank you Irina!
Thanks for the article! The first point hit pretty close to home. Getting started is the hardest part of any project, so it helps a lot to use the last few minutes of each workday to put into writing the next few steps needed to be taken, broken down as much as possible. This allows me to get into the groove of doing more easily the next day.
Thanks Simon! Very much agree with you.
That "no" cartoon was chefs kiss
Yeah! I love the Work Chronicles comics
This point is interesting to me
"I said no to low-impact tasks."
Is this possible? Many times there is work to do that provides low impact and, still, it's work that must to be done.
What do you think?
Great article by the way! 👏
Thank you Marcos!
It's true - you can't say no to *all* low-impact tasks. However, whether I'm on a team as an IC or building my own product, it's fair to take a step back and see what tasks are *actually* high-impact versus not. I'm always surprised at how many things I can go ahead and not do, and it won't really matter in the long run.
Every tip is gold. I usually like to finish my tasks but I see your point. The next day it takes me a while to get back into the same state of mind where I left. It goes the same for writing. Writing down the next steps is handy, I will give this a try.
Also, great point about getting good at using keyboard shortcuts. Most of the smart programmers I've come across are really good at this. It's something not emphasised enough to young developers, but it boosts your productivity several folds.
Thanks you Abhinav! I definitely feel the same way about writing a lot. Starting with a blank page is really hard for me, so I first write down a bunch of bullet points at first. Then I go back and turn my bullet points into an actual article, editing it down, etc.
Yes, same with me. Also, if I have to take a break and continue writing next day, it takes a while to find the same flow. Someone mentioned that, leave writing at an unfinished sentence, so when you come back you know how to resume.
I hadn’t thought of that first one but now that you mention it, I’m definitely going to give it a go.
Strong agree with 2-4. Great article 💯
Thanks for the mention as well by the way!
Thanks Jordan!
thanks for this article
Point 1 of leaving the work slightly unfinished marries well with work that is done regularly e.g. professional work and personal habits.
Great article. Thank you! You speak from my heart. I struggled with point 3 in particular for years and was constantly annoyed with myself. Especially when it came to the terminal. I often thought -- Wait a minute, you've looked for this before. -- At some point, out of interest, I started writing my own little terminal and built in a context-based autocompleter. Cogno emerged from this. At least for the terminal my search is over.
Woah - did not know about Cogno. Great work on it - I just downloaded it!
Oh, thank you very much for downloading Cogno! If you encounter any problems or miss any features, please don't hesitate to let me know. That would help me a lot.
I often struggled with the first one. If I left something "in the middle" it chased me in my sleep.
I learned from Cal Newport the idea of a "shutdown routine" to leave everything ready for the next session. Kind of like making your bed to come back home and having a nice bed to sleep.
Really nice list, specially agree with the "Leave work slightly unfinished for easier flow the next day" tip.
Reminds me of this Hemingway quote
“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
nice post!
Nice tips. I've been fighting the shortcuts advice, I always thought it's a bit overrated. I'm curious to know how much time (and not only mouse clicks) does it actually save?
A good friend of mine is a huge fun of configurable keyboard, like discussed here: https://fangpenlin.com/posts/2019/09/18/ninja-speed-vim-like-debugging-with-ergonomic-keyboard-and-trackpad/
I tried it for a few hours, and the adjustment was too hard. Every now and than I think whether should I try again (he mentions a ~50% increase in typing speed).
I think the reaching flow state faster has the biggest affect on productivity. For me, it is combined with staying with the flow state, reducing those bumps as much as you can beforehand. For example, writing down the outline of the logic with pseudo code and finishing all the small tasks before hand. So when I start the next day, not only can I jump straight back to action, I'll also have an easier time reaching the end.
Oh man, the configurable keyboard is definitely way more than what I have right now haha! It totally makes sense that the adjustment is hard, I would feel the same I think.
I think the keyboard shortcuts keep me in "flow" better. It's a bit hard to explain, but just being able to navigate around quickly faster than I used to before just leads to a certain level of comfort with the computer that makes me work better. I don't think remembering a lot of keyboard shortcuts is necessary, but I think having a good baseline knowledge of shortcuts for tasks/commands you use daily is useful (at least for me!).
Definitely agree on the flow state! Writing down pseudocode, drawing out a general design, or outlining bullet points for a design doc are definitely game changers for staying in flow.
In the army coding academy, we has a 'surprise' excerise, where the commanders stole our mouses for a full 90 minutes, during which we had to solve a coding problem. It was frustrating as hell 😂
Maybe my aversion to shortcuts is because of that trauma.
I think it's just a matter of finding a middle ground. Some of them are super useful and you should do 100% of the time (if I'll see a developer doing Copy using the right click of the mouth I'll probably throw up a little), but some are pretty niche. As you mentioned, it shouldn't be a 'forced' excerise, just picking up some common actions and slowly integrating it.
So basically I'm saying exactly what you said but with more words 🙃 (I just wanted to reinforce that point for junior engineers, no need to be a shortcuts freak)
I think changing the way you use your keyboard has to be something you decide and go all in.
I had this in 2 times.
The first one was when I wanted to write proper typing with the 10 fingers of my hands and not just the 4 to 6 that I was using. I felt stupid for a while, but I did it while on vacations.
For the second one, I remapped the arrow keys, backspace, and delete keys to have them closer so I don't have to move my hands. I did this at work and I was feeling very stupid for a long time. But I decided to use the new setup and don't look back. Otherwise, the habit is too big to break it.
Yeah, I think it takes that dedication to actually change such habits. But was it worth it? The small improvement in typing time for deeling stupid quite a while?
I think I just didn't have a good enough reason to go all in. I don't feel that writing takes such a huge part of my day - if I was a typist, or a writer, I would definitely go for it. But now, especially in a management role, most of the time I need to think, not write.
For me, both were worth it.
Typing with all fingers helped my ergonomics. Before I felt pain in my hands after some time, I wasn't using them properly
And remapping some keys made me not feel stupid with the little arrow keys in macbook built-in keyboard. I never hit them correctly and now I don't have to hit them anymore :)
Speaking of ergonomic keyboards, I wrote an article here about mines and how to build it: https://medium.com/@irisman/the-peak-programming-keyboard-and-key-layout-57cded217236
All arrows keys are under my left thumb. All symbols are under my left hand on the second layer. Bliss for coding.
Very interesting, thanks. I especially love the hard data and graph. But it still makes me wonder:
“but it took me just 2 months to get to 65 wpm. I’m at 120 wpm a year later. I maxed out at 125 for Qwerty”
This effort to switch is quite big. Let’s assume 2 hours of ‘pure’ typing per day based on querty speed. So I have to type 15k words. I’ll average the first 2 months at 35 wpm - it means 90 * 120 / 35 - 5 more hours each day 😅
So around 200 hours in the first 2 months.
The next 10 months I’ll average 95 wpm - around 40 minutes more each day, ~130 hours.
Assuming after 2 years I’ll jump straight to 185 wpm. So this time I save 40 minutes a day. It’ll take me 3 years to get the time I invested 😅
I won’t argue it’s a smart investment for the long term, as I’m just at the beginning of my career. But still, 5 years is a lot of time, and it is a frustrating process (I gave up after around 10 hours).
Who knows, maybe in 5 years we won’t need to type anymore 😅 I’m already typings much less when I code due to ChatGPT, I’m mostly adjusting and fixing.
Fair point. You can try switching 4 keys at a time if the whole keyboard is too much, may be more efficient, here's an article going over it. It is not the DH version but it links a page that has instructions for the DH version: https://fizzylogic.nl/2023/10/07/how-to-gradually-switch-from-qwerty-to-colemak-in-5-steps
If you ever go on vacation for a week or two, worth a shot trying. The keyboard will give you most of the short term benefits with the layer ability. Key layout benefits are longer term due to less finger pain.