AUTHOR: Metehan Türkdönmez

Yazılım geliştiriciler için “Çalışma Ortamı” hazırlamak

Evde veya ofiste yazılım geliştiriciliği yapan herkes için bir gerçek var ki, oturuyoruz, monitör-ler-e bakıyoruz, klavyemizdeki tuşlara binlerce defa dokunuyor ve işletim sistemimiz aracılığı ile kodluyoruz. Bu software development -yazılım geliştime- ‘in en masum ve basit şekilde anlatılmış hali. Yani sadece dışarıdan görülen kısmı. Ama bu işin içinde olanların bildiği gibi binlerce satırı kaplayan fonksiyonları yazmak, test etmek, çalıştırmak, düzenlemek ve tabii ki sunmak saatler, günler, haftalar hatta aylar alabiliyor.

Bu zor süreç dışarıdan çok basit tanımlanabilir. Fakat kötü bir sandalyede on gün boyunca sürekli mouse kullanan ve sol elini çenesine götürerek fonksiyon tasarlayan kişiler biliyor ki kötü bir çalışma ortamı zulümden başka bir şey değildir.

Ben çalışırken müzik dinlemeyi seven biriyim. Çalışma dışında da müzik dinlemeyi seven biriyim fakat orası işin kişisel kısmı 🙂 . Kişisel kısım demişken son zamanlarda fırsat bulursam plak alıp, basic vinyl setupımda çalıyorum. Çalışırken plak dinlemeyi sevmiyorum çünkü plak dinlemek sevgiliyle hayal kurmak gibi ya da daha rasyonel tabirle acıkıp Adana kebap yemek gibi bir şey. O olayın içinde kaybolmak, kendini vermek gerekiyor. Lezzet almak için soyutlanmak gerekiyor. Peki ama çalışırken nasıl güzel müzik dinlenebilir.

Yüksek enerjiye sahip saatlerde çalışıyorsam çaldığım müzikler de büyük oranda yüksek enerjili oluyor, eğer geç vakitlerde çalışmak durumundaysam beni sömürmeyecek kadar enerjik ama saate de saygılı tempoda melodik müzikler dinlemeyi seviyorum. Müzik dinlemek işini iyi yapmama yardımcı olan ve vinyl setupımında bir parçası olan Mackie CR3 serisi referans hoparlörler kulanıyorum. Genellikle ofis ortamında bu şansa sahip olamayabilirsiniz, bu da home-office’in güzel taraflarından birisi diyebilirim. Çalışırken ruhunuzu beslemek zulmü hafifletecektir. 🙂

instagram: @designyourworkspace

Başka bir önemli unsur ise: işe başlamadan önce, hayatın içindeki önem arzeden to-doları tamamlamış olmak. Bu yemek yemek de olabilir, son ödeme tarihi gelmiş faturalı ödemiş olmak da, lüzumsuz yere çıkmış bir tartışmayı çözüme kavuşturmak da. Çünkü mantıksal detayların içinde boğulurken duygusal şeyler düşünmek, sinirli, tedirgin veya üzgün olmak kesinlikle negatif etki yaratacaktır. Bu durumlar hatalara yol açabilir, hataları çözmek işi uzatabilir. Bu sebeple temiz ve rahat bir zihne kavuşmadan işe başlamak kesinlikle sadece dışarıdan dolu görünen ama içi boş bir eylemdir. Bu sadece yazılımda değil hayatın her yerinde böyledir.

Stres dolu oyunlar oynamıyorsunuz ve sinirle hızlı bir şekilde klavyedeki tuşlara vurmak gibi bir riskiniz yok. Bu sebeple mekanik ve yüksek ses çıkaran klavyelerden uzak durmanızı tavsiye ediyorum. Tuşların sesi belli bir hıza kadar müziği bastırmaz ise pek tabii mutlu olurum. Saniyede 5-8 karakter yazdığınız full odak eforlarda ise zaten hiçbir sesi duymadığınız için klavyenizi o konuda rahat bırakabilirsiniz.

Proje geliştirirken kullandığınız editörü, terminali, tarayıcıyı veya run window’u rahatlıkla görebileceğiniz bir monitör tavsiye ederim. En azından 21′ boyuta sahip, HD görüntü veren hepsinden önemlisi gözünüzle kavga etmeyen karaktere sahip bir monitör. Ben Philips Brilliance IPS LCD kullanıyorum. Film render etmiyorsanız bu kadar özellik yeterli olacaktır.

İyi bir back-end yazılım geliştiricisi GUI’yi sevmez. Hatta gerçekten iyi ise VIM’i açtıktan sonra mouse’unu çekmeceye atacaktır. Fakat pek tabii xCode dahil bir çok IDE editörü kullanan mobil veya front-end geliştirici de bu yazıya ulaşacağı için standart ve pili erken bitmeyen bir bluetooth mouse tavsiye ederim. DPI oranlarını bırakın Steam’in ağına düşenler düşünsün.

Geniş bir masanızın olması sizi rahat hissettirecektir. Çünkü benim gibi bazı geliştiriciler deftere not almayı sevebiliyor. Bu da kalemlik, defterler, ajandalar vs. demek. Masanız dolacak, yer bulamayacaksınız, fincanı klavyenin dibine koyacaksınız ve o devrilecek. Bugün devrilmezse yarın küçük kuzeniniz gelip devirecek, proje müdürünüz eli kalabalık diye sizin masanızı işgal ederken gelip devirecek. Geniş masalar iyidir. Fincanınızı klavyeden uzak tutun. Vazgeçemediğim tuş takımlı Apple klavyesi için iki yıl içerisinde bir Mac Mini parası ödediğim için söylüyorum, uzak tutun 🙂

Ve tabi ki assolist ve sahnenin final üyesi olan bilgisayar! Ben bir Mac Mini (Late 2012) kullanıyorum. fakat şunu söyleyebilirim i3 hatta 4 çekirdekli herhangi bir işlemcide back-end yazılım geliştirebilirsiniz. Ben bir back-end yazılımcısı olduğum için grafiksel tarafla ilgilenen arkadaşlar lütfen o konu ile ilgilenen diğer arkadaşlarına danışarak development için bilgisayar alsınlar. Çünkü Oculus(VR) sistemi için yazılım geliştirilen bir Monster görmüş ve hayretler içerisinde kalmıştım.

Bilgisayardan daha değerli bir bonus daha var. Oturduğunuz koltuk, sandalye ya da her ne ise adı lütfen rahat olsun. Arkanıza yaslanınca belinizi desteklesin. Vücudunuzu ileri atan bir kalasın üstünde oturmayın, içine gömüldüğünüz bir pufun üstünde oturmayın, saatler geçerken ömür, ömür geçerken sağlık zedeleniyor. Elinizden geldiğinde fiziksel sağlığınızı üç kuruşluk düzgün sandalyeler almamak pahasına feda etmeyin.

Emin olun geri dönüşü çok zor ve tedavi süreci uzun süren bir bel rahatsızlığına sahip olmak istemezsiniz. Bu konuda nasıl oturmanızı gösteren tablolardan yararlanabilirsiniz. Asın duvarınıza size hatırlatsın. Bu konuda ağrılar çeken biri olarak vurgulayarak söylüyorum: yazılımcıysanız oturuşunuza çok dikkat edin.

Benim teknik bir kalemim maalesef olamadı. Bu sebeple monitör anlatırken renk profillerinden, klavye anlatırken  fonksiyon tuşların yararlarından vs. bahsedemedim. Bu tür detaylar için profesyonel yazılara her yerde ulaşabilirsiniz. Bu yazı da araştırmak için ilk sebebiniz olsun, herkese iyi çalışmalar..

Hayal kurmak plan yapmak değilmiş..

Şimdi anlatacağım durumu, yeni öğrendiğim bir durum veya farkettiğim eksik bir noktam olarak adlandırabilirim.

Bugüne kadar plan yapmak ve hayal kurmak arasındaki farkları bilen, bunları terminolojiye göre açıklayabilen fakat uygularken ikisini birbirine karıştıran bir insandım. Belki bir çoğumuz için de bu durum böyledir. “Nasıl?” derseniz bu rehaveti şöyle açıklayabilirim:

Plan yapmak. Belli bir zaman aralığında, belirli kişiler ile, belirli şekilde bir işi, oluşu eyleme geçirme halidir. Örneklersek. 1 Nisan – 10 Nisan aralığında, x kişisi ile çalışarak, belirlenen günlerde belirlenen kısımları tamamlayarak bir yazılım projesini tamamlamak. 11 Nisan gününü sunum tarihi olarak belirlemek. Negatif durumlar dahilinde sapmaları hesaplamak ve bunları da göz önünde bulundurarak bu işi yerine getirmek. Veya Haziran ayında çıkılacak tatil için 20 gün öncesinden bilet almaya karar vermek. Bu durumlara plan yapmak deniyor. Tutarlı, belirli, olası ve imkanlar dahilinde gözüken eyleme geçme kararları plandır. Gerçekleşmemesi durumunda sebepler gözden geçirilir ve kriz yönetimleri gerçekleştirilir.

Fakat hayal kurmak!..

“Mutlu bir birlikteliğe sahip olmak istiyorum!” diye düşünmek veya “Önümüzdeki 3 yıl içinde araba almak istiyorum.” demek hayaldir. Hayaller tutarlılık talep etmezler. Mars’a çıkmayı da pek tabii hayal edebilirsiniz. Ama.. İmkanlarınızı düşünmeden bu uçarı fikrin planını yapmaya başlarsanız ve çok emek harcarsanız maalesef tutarlılığınızı yitirir ve gerçeklikten uzaklaşırsınız. Bazı hayaller ulaşılmak için kurulur. Ulaşılması zorunlu değildir, hayale giden yol dahi değerli ve geçerli ise finale gelmek zorunda hissetmezsiniz.

Ben burada vaktiyle yanlış yapmış olabilirim 🙂

Geçtiğimiz aylardan birinde hayatımda şu zamana kadar geçerli olan tüm hayal, kalıp ve uzun vade planları gözden geçirmek zorunda hissettim. Sadece aynada gördüğü kendisini düşündükçe trajikomik bir hal alıyor insan. Şartlanmak insanı üzüyor.

Şimdilerde daha uçarı ve yapmak zorunda olmadığım hayallerim ve tutarlı şekilde gerçekleştirdiğim kısa vade planlarım var. Daha mutluyum, daha yargısız ve daha kendine kalmış bir insanım.

Çocukken ailemizin bizi nerede görmek istediğiyle, gençken rakiplerimizin varmak için çabaladıkları yerlerle ve hayatı deneyimledikçe “ben ne istiyorum?” sorusuyla cebelleşiyoruz. Ne yazık ki çoğu kez “kendimize ne istediğimizi sormamız” çok geç olabiliyor/muş. Ben kendimi bu konuda şanslı hissediyorum. Ben kendimi hissediyorum.

Terminal / Uçbirim kullanmak için başlıca sebepler

İşletim sistemlerinde kullanılan GUI (Graphical User Interface) yani Grafiksel Kullanıcı Arayüzü, yazılım geliştirme işlemlerinde sistemsel sınırlamalar ve yetersiz alanlar sebebi ile eksik kalmaktadır. Linux ve Mac OS sistemlerde bulunan “Terminal” penceresi, bu arayüzü geçip direkt sistemin çekirdeğine ulaşarak işlem yapmamızı sağlar. Basit bir örnek olarak; bir dosyayı indirmek, kullanıcı izinleri atamak, çoğaltmak, taşımak, kopyalamak, başka bir alana iletmek gibi işlemleri GUI kullanarak yapmaktan daha hızlı bir şekilde yapmamıza olanak sağlar. Fakat bunlar hali hazırda GUI ile yapabileceğimiz basit işlemlerdir. Terminal (uçbirim), Mac OS ve Linux işletim sistemlerinde kullanıcılar tarafından aktif bir şekilde kullanılmaktadır. Ama Windows üzerinde GUI’i aşıp direkt çekirdek (kernel) üzerinden işlem yapmak mümkün değildir.

Komutları öğrenmek ve geliştirme aşamasında bu komutlar ile çalışmak yeni başlayanlar için zahmetli olabilir. Peki bu aracı -terminal- kullanmak ve pek tabii ki öğrenmek için en ikna edici sebepler neler olabilir?

  • GIT (Dağıtık Çalışma Akışları) programlarını kullanarak repolarınız üzerinden işlem yapmak basittir. Fakat büyük sistemler yazarken imlecinizi efektif butonların üzerinde dolaştırmanın, çetrefilli checkboxları kliklemenin uzun vadede vaktinizi çaldığını fark edeceksiniz. Terminal üzerinden GIT kullanımı daha hızlı ve pratik bir hal alıyor.
  • Dosya izinleri ve güvenlik, sistem yöneticilerinin demirbaşlarındandır. Bu sebeple local veya public ağlar üzerinde Terminal aracılığı ile dosya ve dizin yönetimleri  -özellikle büyük projelerde- çok daha detaylı ve önizlenebilir olacaktır.
  • Paket kurulumları yaparken önce tarayıcıyı açmak, url alanına indireceğimiz dosyanın bulunduğu alan adını yazmak, indirme butonuna tıklamak, indirdiği klasörü açmak ve kurulum sihirbazını çalıştırmak, kurulumu tamamlamak belli bir seviye üstü kullanıcılar için gereksiz derecede meşakkat demektir. Terminal aracılığı bu işlemler sağ eliniz hiç mouse’a gitmeden çok daha hızlı bir şekilde yapılabilmektedir.

Bunlar benim bireysel en temel sebeplerim. Bu hız ve performans ihtiyacı tabii ki kişiden kişiye değişmektedir. Terminal – Uçbirim- kullanımı, bir game user için manasız gelebilecekken, bir Python Developer için vazgeçilmez ihtiyaçlardan olacaktır.