Optimizing My Dev Workflow in 2025

Every Software Engineer has a development setup. Some keep it clean and minimal. Others turn their machine into a digital spaceship and a terminal that looks like it's from The Matrix. Either way, your development setup is personal and built around your role, your habits, and your tools. This is how mine evolved. What started as a solid full-stack setup slowly turned into a mess. Instead of buying new hardware, I decided to fix the way I work. My Daily Workflow Most days look like this: Writing code in VSCode. I usually have to juggle between 3 to 5 projects daily Running local services with Docker Managing multiple Node.js, React, PHP apps. Frontends and Backends SSH, lots of it Using Studio 3T or DBeaver for databases Keeping a bunch of browser tabs open Communicating via Discord and Teams Listening to Spotify Taking notes in Obsidian Drawing flows in Excalidraw It all works… until one day, my MacBook decided it had seen enough. The Problem Memory Overload I'm using a base model MacBook Pro M2 with 8GB of RAM. It's a very capable machine, but my workflow was pushing it to the edge. RAM hovered around 90%, with swap memory kicking in constantly. Everything started to lag. App switching, typing, even simple tasks like scrolling through files. A few seconds of delay here and there might seem minor, but when you're in the flow, it breaks focus fast. I couldn't listen to music while coding. Even opening the browser could spike things. It got frustrating enough that I had to rethink how I worked. What I Changed From VSCode to NeoVim I've used VSCode for years. It's great, no doubt. But when you have to juggle up to 5 projects daily, you'll find that it's going to block you away. Mine feels heavy, especially with multiple windows and extensions. This is why I decided to find an alternative, until I started using NeoVim instead. It's fast. With built-in LSP support, I still get syntax highlighting, autocompletion, and linting. The Vim keybindings are taking some time to learn, but the speed and responsiveness make it worth it. Or you can say that I never quit NeoVim because I don't know how to quit. Replaced Docker Desktop with Colima I replaced Docker Desktop with Colima, a lightweight alternative that integrates with Docker CLI. It's easy to toggle on and off, uses less RAM, and doesn't drag down the system. Offloaded Docker to an Old Laptop I had 2 old laptops sitting around, both 10 years old. I turned both into a home server. Installed Ubuntu Server, set up Docker, and now I run all my containers remotely. With Tailscale, I can securely connect to it like it's on the same network. This way, my MacBook doesn't have to run MongoDB, Redis, or RabbitMQ anymore. That alone freed up a lot of memory. I can even run other services like HomeAssistant, MailHog, Immich, etc. Simplified My Terminal Workflow with Tmux Instead of opening a bunch of terminal tabs or windows, I switched to tmux. It lets me manage multiple sessions in one window, split panes, and run different services side by side. It’s lightweight, keyboard-driven, and fits perfectly with NeoVim. Ghostty Initially, I used the Mac's built-in Terminal, but encountered issues with font loading. This led me to explore alternative terminal options. I initially chose Kitty, but after the official release of Ghostty, I made the switch. It has been running flawlessly for me. Aerospace Aerospace is a tiling window manager like i3 on Linux environment. This way I can manage my application windows and put them into different keys. I can navigate through my app windows very quickly with a shortcut: Terminal: option + 1 Browser: option + c Obsidian note: option + o Spotify: option + s Discord: option + d Teams: option + t And many more.. Conclusion With this setup, I have to adapt with a more keyboard-driven dev workflow. I have to get used to use tmux for switching back and forth between projects. Then I have to get used to NeoVim with its keybindings. I live in the Terminal now. Coding is much more fun, and that's what matters to me! You can checkout my dotfiles, still work in progress, I used it daily on my Mac and Ubuntu servers.

Apr 17, 2025 - 03:50
 0
Optimizing My Dev Workflow in 2025

Every Software Engineer has a development setup. Some keep it clean and minimal. Others turn their machine into a digital spaceship and a terminal that looks like it's from The Matrix. Either way, your development setup is personal and built around your role, your habits, and your tools.

This is how mine evolved. What started as a solid full-stack setup slowly turned into a mess. Instead of buying new hardware, I decided to fix the way I work.

My Daily Workflow

Most days look like this:

  • Writing code in VSCode. I usually have to juggle between 3 to 5 projects daily
  • Running local services with Docker
  • Managing multiple Node.js, React, PHP apps. Frontends and Backends
  • SSH, lots of it
  • Using Studio 3T or DBeaver for databases
  • Keeping a bunch of browser tabs open
  • Communicating via Discord and Teams
  • Listening to Spotify
  • Taking notes in Obsidian
  • Drawing flows in Excalidraw

It all works… until one day, my MacBook decided it had seen enough.

The Problem

Memory Overload

I'm using a base model MacBook Pro M2 with 8GB of RAM. It's a very capable machine, but my workflow was pushing it to the edge.

RAM hovered around 90%, with swap memory kicking in constantly. Everything started to lag. App switching, typing, even simple tasks like scrolling through files.

A few seconds of delay here and there might seem minor, but when you're in the flow, it breaks focus fast. I couldn't listen to music while coding. Even opening the browser could spike things. It got frustrating enough that I had to rethink how I worked.

What I Changed

From VSCode to NeoVim

I've used VSCode for years. It's great, no doubt. But when you have to juggle up to 5 projects daily, you'll find that it's going to block you away.
Mine feels heavy, especially with multiple windows and extensions. This is why I decided to find an alternative, until I started using NeoVim instead.

It's fast. With built-in LSP support, I still get syntax highlighting, autocompletion, and linting. The Vim keybindings are taking some time to learn, but the speed and responsiveness make it worth it. Or you can say that I never quit NeoVim because I don't know how to quit.

Replaced Docker Desktop with Colima

I replaced Docker Desktop with Colima, a lightweight alternative that integrates with Docker CLI. It's easy to toggle on and off, uses less RAM, and doesn't drag down the system.

Offloaded Docker to an Old Laptop

I had 2 old laptops sitting around, both 10 years old. I turned both into a home server. Installed Ubuntu Server, set up Docker, and now I run all my containers remotely. With Tailscale, I can securely connect to it like it's on the same network. This way, my MacBook doesn't have to run MongoDB, Redis, or RabbitMQ anymore. That alone freed up a lot of memory. I can even run other services like HomeAssistant, MailHog, Immich, etc.

Simplified My Terminal Workflow with Tmux

Instead of opening a bunch of terminal tabs or windows, I switched to tmux. It lets me manage multiple sessions in one window, split panes, and run different services side by side. It’s lightweight, keyboard-driven, and fits perfectly with NeoVim.

Ghostty

Initially, I used the Mac's built-in Terminal, but encountered issues with font loading. This led me to explore alternative terminal options. I initially chose Kitty, but after the official release of Ghostty, I made the switch. It has been running flawlessly for me.

Aerospace

Aerospace is a tiling window manager like i3 on Linux environment. This way I can manage my application windows and put them into different keys. I can navigate through my app windows very quickly with a shortcut:

  • Terminal: option + 1
  • Browser: option + c
  • Obsidian note: option + o
  • Spotify: option + s
  • Discord: option + d
  • Teams: option + t

And many more..

Conclusion

With this setup, I have to adapt with a more keyboard-driven dev workflow. I have to get used to use tmux for switching back and forth between projects. Then I have to get used to NeoVim with its keybindings. I live in the Terminal now.

Coding is much more fun, and that's what matters to me!

You can checkout my dotfiles, still work in progress, I used it daily on my Mac and Ubuntu servers.