Software devs, how have you sped up your workflow?
Lately I've been paying attention to where I spend time and I've managed to find some low-hanging fruit and optimize some tasks.
Examples like using fish (unix shell), writing shell scripts to automate sequential build commands I'd otherwise have to wait for, learning vim shortcuts and language syntax, implementing reusable utility scripts to produce/consume data.
Do you have recommendations/tips/examples to speed up your processes? Feel free to share even specific instances, they don't have to be as generic as above.
35 comments
[ 2.9 ms ] story [ 85.2 ms ] threadBut some of it is probably not learning and setting up frameworks for stuff until a problem has become a bottleneck. Ask your customers (consumers or other business unit) what is needed right now and enable the scale that works in the short term. Don't just schedule programming time, management time, daily standup time, weekly meeting time, in your calendar and try to fill that up to look socially acceptable. The solution should follow the problem. It seems that often people forget that. After a while of using business frameworks, sometimes the frameworks prevent the problems from getting resolved rather than enable them. Maybe huge companies can't afford any downtime if the traffic spike is 500%+, but smaller companies are often changing and need some flexibility.
(Easier said than done, I know.)
I keep trying to indicate that scheduling 10:30 and 2:30 meetings basically blows out the entire day for several years now, but I've not made much progress.
[1] https://github.com/holman/dotfiles
I see many fellow developers who stumble using their editor/IDE or who aren’t leveraging even the most basic code navigation keyboard shortcuts (let alone refactoring features) that it seems they often spend more time navigating code than they spend on actually writing it.
[0] which-key exists for neovim, probably for vim as well. I think it originates from emacs, which I'm purely mentioning because I'm anticipating a response from a triggered emacs user if I don't. :)
Using an IDE which knows how to follow references and show types.
Replacing password with keys, and placing those in an authentication agent.
Setting up shell to complete commands from history on a single button press (I'm looking at Debian, which doesn't do that).
Arranging windows across virtual desktops and switching them with keyboard shortcuts is quicker than alt-tabbing.
Keeping progress as a series of commits in git, even when just exploring. When there's a need to take a step back, just restore an earlier commit. They don't even have to work to be useful.
Taking breaks from coding to think about what should be coded and how.
I managed to fix three thousand code smells on a very badly written codebase in a span on two days. Thanks IntelliJ IDEA!
I also recommend TabNine - code intellisense on steroids!
Not aware of a free alternative to WallabyJS (but I can honestly say its worth it for the day job!)
https://github.com/wting/autojump
It allows you to quickly navigate your filesystem via the shell by learning the directories you commonly visit/have visited.
Running multiple microservices during local development in a separate VM (WSL) with TMux instead of running each on Visual Studio.
https://github.com/junegunn/fzf thanks junegunn
Discussing options more. Killing BS efforts earlier. Testing on paper, breadboarding.
Thinking more about things before I build them (see Rich Hickey’s Hammock-driven development talk)
Ultimately, slowing down and doing less.
I’m just as wary of JavaScript tooling fatigue as the next person, but I truly wish I’d swapped to esbuild sooner. It boggles my mind how much time I’ve wasted in the last few years just waiting for webpack to build.
Other than that, I'm pretty darn satisfied with what esbuild can do out of the box. I don't use any other plugins except global externals. I don't need a typescript -> javascript plugin like webpack; I don't need a css plugin like webpack; I don't need esnext transpilers or whatever. It's all just built in to esbuild.
Honestly I don't find myself missing anything from webpack. So far esbuild is just better in every way (for myself at least).
[0]: https://github.com/fal-works/esbuild-plugin-global-externals
[0]: https://vitejs.dev
Learning the key combos for whatever editor I’m using made it much faster to write, edit and manipulate code.
Learning basic bash and Unix programs like grep, awk, find and xargs made it a lot easier to write throwaway scripts to automate things that used to be tedious when done manually.
Learning how to identify the current bottleneck made it easier to focus on the most important thing.
Learning how to identify and talk about the tradeoffs I’m making made it easier to avoid rework.
Learning how to run containers, originally using docker and now podman made it easier to get whatever version of whatever program I needed quickly.
Learning how to debug and divide problem spaces made it easier to overcome problems.
Learning how to respond to incidents made it easier to get things working again.
Learning how to automate builds and deployments with CI/CD made it easier to focus on the code.
Learning how to use observability tooling made it easier to understand what normal looks like which in turn made it easier to understand when and why things weren’t normal.
Learning how to learn a new code base or tech made it easier to get up to speed when starting or joining something new.
Learning how to identify and focus on the next most important, smallest problem made it was more to produce value.
Learning how to work out what was important to stakeholders and co-workers made it easier to tailor my message and get buy in.
Learning how to mentor and coach made it easier to get things done as there were more experienced devs around me.
Learning how to trust in others made it easier to produce great things with great people and love what I’m doing.
Learning when to shut up is something I’m still figuring out.
Learning how to identify the current bottleneck made it easier to focus on the most important thing.
I code in the terminal because its easier for me.
Rust because frankly, it's tooling makes being productive easy.
Cheers