David Eagleman’ın Incognito, Beynin Gizli Hayatı isimli kitabında sürekli aynı kıyafeti giyen bazı yöneticilerin bunu neden yaptığını anlattığı bir kısım var.
Yazara göre(bu arada kendisi beyin bilimci, yani dediklerinin doğru olma ihtimali bir hayli yüksek) beynin karar vermeye ayırdığı bir gücü var. Bunu oyunlardaki Mana gibi düşünebiliriz. Güne tam ‘Mana’ ile başlıyoruz ve her karar verdiğimizde bu ‘Mana’ biraz azalıyor. Yazar, bu isimlerin sadece aynı kıyafeti giymediğini, her gün aynı kahvaltıyı yaptığını, ofise gitmeden önce kahve alırken hep aynı kahveyi seçtiğini, yani kısacası hayatlarındaki rutin kararları almayı bir nevi hayatı otomatize ederek bıraktıklarını söylüyor. Bu da gün içinde almaları gereken daha önemli kararlar için ‘Mana’ bırakıyor ve bunların daha isabetli olmasına dolaylı olarak yardımcı oluyor.
Benzer şekilde beynimizin ’tahammül’ için kullandığı ayrı bir sınırlı kaynağı daha var. Örneğin, bir akşam arkadaşlarınızla dışarıdasınız ve bir kebapçıda oturuyorsunuz. Ama aynı zamanda diyettesiniz ve o gece çalışmak için eve erken dönmek istiyorsunuz. Eğer o gün diyetten çıkmamak için özel bir çaba sarf eder ve bir kebapçıda olmanıza rağmen diyetinize sadık kalırsanız, akşam çalışmak için eve dönme ihtimaliniz daha düşük oluyor. Eğer diyetten bir günlüğüne çıkar da güzel, bol kalorili bir yemek yerseniz, o zaman da çalışmak için eve dönme iradesini gösterme ihtimaliniz artıyor(Tabii ki herkesin bu ’tahammül’ ya da ‘irade’ kaynağı birbirinden farklı, ama herkesin, az ya da çok, harcadığı bir kaynağı var.).
Bunlardan anladığımız şu: beynimiz her an aynı performansı veren mekanik bir makine değil. Sınırlı kaynakları var ve biz bu kaynakları her kullandığımızda bir sonraki hareketimiz için daha az kaynak kalıyor.
Developer’lar olarak işimizin bence en yorucu kısmı gün içinde çok fazla düşünmek, çok fazla karar almak zorunda olmak. Dolayısıyla beynimizin sınırlı kaynaklarını koruma noktasında bizim de hassas olmamız gerektiğini düşünüyorum. Bu yazıda da kendi adıma bana yardımcı olan şeylerden bahsedeceğim.
Mesela Terminal. Hepimizin gün içinde tekrar tekrar yaptığı işlemler vardır, bunlara ‘Mana’ ve zaman harcamaktansa Shell’inize göre otomatize etme metodunu bulup bunu kullanabilirsiniz. Mesela kodumun style‘ını kontrol etmek istediğim zaman ben o komutun her parametresini sürekli sürekli düşünmek, yada Ctrl + r
ile aramak istemiyorum. Ben Fish Shell kullanıyorum ve basitçe check-format
isimli bir fonksiyonum var:
function check-format
clojure -M:test:cljfmt -m cljfmt.main check
end
Formatı kontrol etmek için tek yaptığım check-format
yazip ENTER
a basmak. Ya da sırali işlemler, örneğin bir Docker
container’ını durdurmak ve silmek, iki komut yazmakla uğraşmak istemiyorum:
function remove-container
docker stop $argv
docker remove $argv
end
Bir dosyanın içeriğini (şifre girmek için olabilir, sık kullandığınız bir query’dir, her ne için olursa) mi kopyalayacağım:
function copy-file-content
xclip -sel clip < $argv
end
Hatta migration mı yapacağım, sadece migrate:
function migrate
clj -M:dev -m urbest.core migrate
end
Evet çok küçükler, ama hepsini topladığımızda bana iyi bir zaman kazandırıyor, daha da önemlisi, bunları düşünmekle uğraşmıyorum, Mana harcamıyorum(Sanki ülke yönetiyorsun, sanki neyi bu kadar düşüneceksin dediğinizi duyar gibiyim. Söyleyeyim. Bugün Trabzonspor’un bu seneki 40 milyonluk maaş bütçesinin işler ters giderse oluşturabileceği olası enkazdan çıkmanın yollarını düşüneceğim.).
Bu şekilde yirmiye yakın Fish fonksiyonum var, bir şeyi bir kez yaparsam öyle hemen Shell fonksiyonunu yazmam, ikinci kez yaparsam tesadüftür der geçerim, ama üçüncü kez yaptığımda artık önce fonksiyonunu yazarım, sonra o fonksiyonu çağırırım.
Yine size çok zaman kazandırabilecek, daha az düşünmenizi ve efor sarfetmenizi sağlayabilecek noktalardan birisi editörünüzü kullanma biçiminiz olabilir. Şu ana dek yapmadıysanız editörünüze dair bir Tips And Tricks
videosu izlemenizi öneririm. Mesela ben IntelliJ kullanıyorken böyle bir videoyu ilk kez izlediğimde Tab’ların navigasyonun en inefektif biçimi olduğunu öğrenmiştim, video linklediğim değildi ama burada da aynı noktaya değiniyor..
Ben şu an editör olarak Spacemacs kullanıyorum. Hayatımı şöyle kolaylaştırıyorum:
Bir expression’ı parantezle mi çevreleyeceğim? Faremi en başa getirip, parantez açıp, en sona getirmiyorum. SPC + k + w
işimi yapıyor.
Parantezi bir ileri mi kaydıracağım? Sil, imleci götür, ekle yapmıyorum. SPC + k + s
bu işi yapıyor.
Örneğin alttaki map
işleminden vazgeçtim ve sadece fonksiyonun kalmasını istiyorum,
Yani bunu
(map
(fn [x] (* x 3))
[1 2 3])
Buna dönüştüreceğim:
(fn [x] (* x 3))
İçeridekini kopyalayıp her şeyi silmekle, sonra yapıştırmakla uğraşmıyorum. SPC + k + r
benim için tek hamlede bunu yapıyor, iki satırın(daha doğrusu expression’ın) yerini değiştireceksem SPC + k + t
kullanıyorum. Bu şekilde sürekli kullandığım onlarca, belki yüze yakın kısayolum var. Editörüm açıkken hemen hemen hiç fare kullanmıyorum, hem zaman tasarrufu sağlıyor, hem daha eğlenceli, hem de daha şekil. :p
Uzun lafın kısası, geliştiriciler olarak çok fazla düşünüyoruz ve beynimizin işini kolaylaştırmak için otomatize edebileceğimiz tekrar eden çok fazla gün içi aksiyonumuz var. Neyse ki bunların çoğunu otomatik ya da daha kolay yapmanın yolları zaten var, yeni bir icat gerekmiyor; sadece olan iyi yolu, kısa yolu kullanmaya başlamamız lazım. Daha eğlenceli ve daha pratik.
Son olarak, dikkatinizi çektiyse Emacs’te üstte örneğini verdiğim her komut SPC + k
ile başlıyor. Bunun sebebi Emacs’in bir Modal Editor olması ve SPC + k
ile parantez düzenleme moduna geçmem. Modal editing’den de başka bir yazıda başka bir gün bahsedeceğim.