Developer Productivity Tools 2024 yang Gue Pakai

by Marcus Chen
Developer Productivity Tools 2024 yang Gue Pakai

Developer Productivity Tools 2024 yang Gue Pakai Sehari-hari

Awal tahun ini gue kehilangan hampir dua jam cuma gara-gara setup environment baru di laptop yang baru diinstall ulang. Clone repo, install dependency, bingung kenapa Node versinya beda, .env ketinggalan, port konflik — semua sekaligus. Itu bukan masalah skill, itu masalah tooling yang belum solid.

Artikel ini bukan ranking atau review afiliasi. Ini daftar developer productivity tools 2024 yang benar-benar gue pakai, kenapa gue pilih masing-masing, dan di mana gue pernah kena gotcha-nya.


1. Mise — Version Manager yang Akhirnya Bikin Gue Berhenti Pakai nvm + pyenv + rbenv Sekaligus

Kalau kamu punya project Node, Python, dan Ruby di satu mesin (atau bahkan satu monorepo), kamu pasti tahu betapa menyebalkannya maintain tiga version manager berbeda.

mise (baca: meez) adalah satu tool yang handle semua runtime. Dia baca file .tool-versions atau .mise.toml di root project, lalu otomatis switch versi waktu kamu cd ke folder itu.

Install:

curl https://mise.run | sh
echo 'eval "$(mise activate bash)"' >> ~/.bashrc
source ~/.bashrc

Setup project:

# Di root project kamu
mise use node@20.11.0
mise use python@3.12.2

# Ini generate file .mise.toml
cat .mise.toml

Output .mise.toml-nya kira-kira:

[tools]
node = "20.11.0"
python = "3.12.2"

Commit file ini ke repo, dan semua anggota tim (atau kamu sendiri di mesin lain) tinggal jalankan mise install dan langsung dapat versi yang sama.

Gotcha: Kalau kamu masih punya nvm aktif di .bashrc, dia bisa konflik. Pastikan kamu comment out atau hapus baris nvm sebelum aktifkan mise.


2. Just — Pengganti Makefile yang Manusiawi

make itu powerful, tapi syntaxnya menyiksa. Tab vs spasi yang bikin error misterius, variable expansion yang beda dari shell biasa, dan dokumentasi yang tersebar di mana-mana.

just adalah command runner yang pakai syntax lebih bersih. Kamu tulis justfile di root project, lalu jalankan task dengan just <nama-task>.

Install di Linux/Mac:

curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin

Contoh justfile untuk project backend:

# Jalankan dev server
dev:
    uvicorn app.main:app --reload --port 8000

# Install semua dependency
setup:
    pip install -r requirements.txt
    cp .env.example .env

# Jalankan test dengan coverage
test:
    pytest --cov=app --cov-report=term-missing

# Build Docker image
build tag='latest':
    docker build -t myapp:{{tag}} .

# Deploy ke staging
deploy env='staging':
    just build {{env}}
    docker push myapp:{{env}}
    ssh deploy@staging 'docker pull myapp:{{env}} && docker-compose up -d'

Sekarang onboarding developer baru cukup bilang: "jalankan just setup terus just dev". Tidak perlu baca README 500 baris.

Gotcha: just tidak load .env secara otomatis. Kalau task kamu butuh environment variable dari .env, tambahkan baris ini di atas justfile:

set dotenv-load := true

3. Zellij — Terminal Multiplexer yang Tidak Butuh Kamu Hafal Keybinding

Gue pakai tmux selama bertahun-tahun. Tapi setiap kali install ulang atau pinjam laptop orang, gue selalu lupa keybinding-nya. Ctrl+b lalu apa? % atau "? Split horizontal atau vertikal?

zellij punya UI yang nampilin keybinding aktif di bagian bawah layar. Jadi kamu tidak perlu hafal apa-apa.

Install:

# Via cargo
cargo install zellij

# Atau via package manager
brew install zellij          # macOS
apt install zellij           # Ubuntu 22.04+

Layout otomatis saat mulai project:

Buat file ~/.config/zellij/layouts/dev.kdl:

layout {
    pane split_direction="vertical" {
        pane size="60%" {
            command "just"
            args "dev"
        }
        pane split_direction="horizontal" {
            pane {
                command "lazygit"
            }
            pane {}
        }
    }
}

Lalu jalankan dengan:

zellij --layout dev

Satu perintah, tiga panel langsung terbuka: dev server, lazygit, dan terminal kosong untuk hal lain.

Gotcha: Zellij masih aktif develop, beberapa plugin belum stabil di versi tertentu. Stick ke versi stable (zellij --version) dan jangan upgrade di tengah deadline.


4. lazygit — Git di Terminal, Tapi Tidak Bikin Sakit Kepala

Gue tidak anti-GUI, tapi buka aplikasi Git terpisah itu context-switch yang mahal. lazygit adalah TUI (terminal UI) untuk Git yang jalan langsung di terminal kamu.

Install:

# macOS
brew install lazygit

# Linux (via package manager Go)
go install github.com/jesseduffield/lazygit@latest

# Atau download binary langsung
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep '"tag_name"' | sed -E 's/.*"v*([^"]+)".*/\1/')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
install lazygit /usr/local/bin

Fitur yang paling sering gue pakai:

  • Stage/unstage file atau baris tertentu dengan satu tombol
  • Interactive rebase tanpa hafal command git rebase -i
  • Resolve merge conflict dengan visual diff
  • Cherry-pick commit antar branch

Gotcha: Kalau repo kamu ada di dalam Docker container atau remote server via SSH, lazygit tetap jalan selama kamu SSH ke sana dan jalankan lazygit di sana. Tidak perlu setup tambahan.


5. Atuin — Shell History yang Bisa Dicari dan Disync

Berapa kali kamu tekan Ctrl+R terus scroll panjang cari command yang kamu jalankan minggu lalu? atuin replace shell history biasa dengan database SQLite yang bisa kamu query, filter by directory, by exit code, by time range.

Install:

curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

Setelah install, tekan Ctrl+R dan kamu dapat fuzzy search dengan filter:

# Cari command yang dijalankan di folder ini saja
[filter: directory]

# Cari command yang exit code-nya 0 (sukses)
[filter: success]

Kamu juga bisa sync history antar mesin via self-hosted server atau server Atuin (gratis untuk personal).

Setup self-hosted sync (opsional):

# Jalankan atuin server via Docker
docker run -d \
  --name atuin-server \
  -p 8888:8888 \
  -v atuin-data:/data \
  ghcr.io/atuinsh/atuin:latest server start

# Di client, set ke server kamu sendiri
atuin register -u username -e email@kamu.com
atuin login -u username

Gotcha: Pertama kali atuin import history lama kamu, prosesnya bisa makan waktu beberapa menit kalau history-mu sudah ribuan baris. Biarkan selesai sebelum tutup terminal.


6. Hurl — Test HTTP Endpoint Tanpa Buka Postman

Postman bagus, tapi berat. Insomnia juga. Untuk testing API sederhana di CI/CD atau saat development, gue pakai hurl — tool yang baca file .hurl plain text dan jalankan HTTP request plus assertion.

Install:

curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/latest/download/hurl-x86_64-unknown-linux-gnu.tar.gz
tar xvf hurl-x86_64-unknown-linux-gnu.tar.gz
sudo mv hurl /usr/local/bin/

Contoh file tests/api.hurl:

# Test login endpoint
POST http://localhost:8000/auth/login
Content-Type: application/json
{
  "email": "test@example.com",
  "password": "secret123"
}

HTTP 200
[Captures]
token: jsonpath "$.access_token"

# Gunakan token dari response sebelumnya
GET http://localhost:8000/users/me
Authorization: Bearer {{token}}

HTTP 200
[Asserts]
jsonpath "$.email" == "test@example.com"
jsonpath "$.is_active" == true

Jalankan:

hurl --test tests/api.hurl

File .hurl bisa di-commit ke repo dan dijalankan di CI pipeline. Tidak ada lagi "collection Postman yang cuma ada di laptop gue".

Gotcha: hurl tidak handle OAuth flow yang kompleks dengan redirect. Untuk itu, tetap pakai Postman atau script Python/JS. Tapi untuk REST API biasa, hurl lebih dari cukup.


Yang Gue Lakukan Sekarang

Setup di atas bukan sesuatu yang gue pasang semua sekaligus. Gue mulai dari satu masalah konkret — version conflict — lalu fix dengan mise. Minggu berikutnya, onboarding ke project baru terasa ribet, jadi gue tambah just. Dan seterusnya.

Kalau kamu mau mulai, urutan yang gue rekomendasikan:

  1. mise dulu — ini yang paling langsung kerasa manfaatnya kalau kamu handle lebih dari satu project.
  2. lazygit — install, buka di repo yang sudah ada, dan eksplorasi sendiri. Kurva belajarnya rendah.
  3. just — mulai dari satu project, tulis tiga task paling sering kamu jalankan.
  4. Sisanya bisa menyusul sesuai kebutuhan.

Semua tool di sini open source, aktif di-maintain per 2024, dan tidak butuh akun berbayar untuk fitur dasarnya. Itu kriteria utama gue waktu pilih developer productivity tools 2024 — kalau besok servicenya tutup atau pricing-nya berubah, workflow gue tidak boleh ikut rusak.

Kalau kamu sudah coba salah satu dan kena gotcha yang belum gue mention, drop di kolom komentar.