- Yeni bir şirkete başlarken ilk yaptığım şey yeni bir not defteri satın almak oldu; bu, basit bir sevinçten öte, onun bir geliştirici olarak temel araç olduğu düşüncesinden kaynaklanıyordu
- Kod yazmak yalnızca son aşamadır; daha önemli olan, neyin nasıl yapılacağını düşünme sürecidir ve bu süreç çoğu zaman bilgisayarda değil not defterinde başlar
- Not defterinde yazı ve çizimlerle düşünceyi görselleştirmek, soyut fikirleri somutlaştırır ve bilgideki boşlukları da ortaya çıkararak daha iyi tasarım yapmaya yardımcı olur
- Yazdığınız kodu yazıyla açıklayarak yeniden gözden geçirme alışkanlığı, tutarsızlıkları veya hatalı tasarımları bulmada etkili bir refactoring aracı işlevi görür
- Bu tür kayıtlar, gelecekteki kendiniz için de karar alma bağlamını yeniden kurmaya yarayan bir kaynak olur ve bir tür otomatik retrospektif belgeye dönüşür
Kalem ve not defterinin en önemli olmasının nedeni
- İşe başlamadan önce en çok heyecan duyduğum şeylerden biri yeni bir not defteri seçmekti
- Geliştiriciler için not defteri, yalnızca bir kayıt aracı değil, bir düşünme aracıdır
- Kod yazmak, düşüncenin en ucundaki uygulama aşamasıdır; neyi inşa edeceğini düşünme süreci daha önemlidir
- Çoğu durumda bilgisayar başında yaratıcı düşünce iyi akmaz
- Editörü açınca yalnızca “çalışan kod”a odaklanılan bir 'işlev modu'na girilir
Bilgisayardan uzaklaşıp düşünmek
- Yürüyüş yapmak ya da not defterini alıp koltukta veya dışarıda problem üzerine düşünmek
- Yeni bir problemin yaklaşım tasarımı, UI eskizleri, akış şemaları ile mevcut kodun veri akışı analizi ve işlev genişletme fikirlerini not defterinde düzenlemek
- Yazı ve çizim yoluyla düşünceyi görselleştirmek, belirsiz fikirleri somutlaştırmada son derece etkilidir
- Yalnızca zihnin içindeki düşüncelerde hızla atlanan mantıksal boşluklar, yazarken açıkça ortaya çıkar
Yazmak en iyi refactoring aracıdır
- Kodu yazdıktan sonra, sanki başka birine anlatıyormuş gibi yazıyla açıklama alışkanlığı
- Mümkünse bunu blogda yayımlamak; mümkün değilse iç doküman biçiminde bile açıklama sürecinde tutarsızlıklar, kötü tasarımlar ve hatalar keşfedilir
- İlgili yazı: Yazmak benim yeni favori refactoring aracım
Düşüncenin yan ürünü ve kaydın değeri
- Yazı yoluyla düşünme yönteminin bir başka avantajı da, düşünce izlerinin doğal olarak kayıt olarak kalmasıdır
- Ayrı bir dokümantasyon yapılmasa bile, düşünceleri düzenlemenin yan ürünü harika bir retrospektif malzemeye dönüşür
- Daha sonra biri (özellikle gelecekteki ben) “neden böyle yapıldı?” diye sorduğunda not defterini açıp olduğu gibi açıklamak mümkündür
Daha derinlemesine geliştirici notları tutma üzerine
1 yorum
Hacker News görüşü
Bunun harika bir tartışma olduğunu hissediyorum. Bence asıl mesele dizüstü ya da dijital araçların kendisi değil, beynimin vitesini değiştirmesi. Mod değiştirdikçe beyin farklı şekilde dikkat kesildiği için, yeni bağlam odaklanmayı, yaratıcılığı ve hafızayı artırıyor. Örneğin sürekli kod yazarken geceleri yazı yazma gibi yeni bir hobiye başlayınca beynimin sıfırlandığını hissettim ve gündüz performansım gerçekten arttı. Plan yaparken kısa süreliğine dijitalden kalem ve kağıda geçmek de rutini kırıp beynin farklı çalışmasını sağlıyor. Sonuçta önemli olan araç değil, değişim sayesinde uyanık kalmak
Günümüz geliştiricileri arasında temel teknik resim dersi almaya zorlanmış kaç kişi vardır merak ediyorum. Lego ile oynamış olan çoktur tabii. 3 boyutlu bir nesneyi 2 boyutlu kağıtta anlatmanız gerektiğinde genelde üç yönden izdüşüm çizmeniz gerekir; 3 boyuttan daha karmaşıksa anlatabilmek için daha fazla açıdan göstermek gerekir
Smarter Faster Betterkitabında karşılaştığımdisfluencykavramı çok etkileyiciydi. Rahatsız eden fontlar, yeni ortamlar, farklı araçlar gibi şeyler otomatik pilot modundan çıkıp yeniden düşünmeyi sağlıyor. Bu kavramı başka hiçbir yerde görmedim ama son 9 yıldır problem çözmeye ve öğrenmeye yaklaşımım tamamen değişti. Bende de dizüstüne geçmek bu etkiyi tetikleyen iyi bir işaret oluyorBenim durumumda notları gerçekten üç ortamda tutuyorum: kağıt defter, eski usul ses kayıt cihazı ve metin dosyaları. Her ortamın kendine özgü artıları ve eksileri var; bu yüzden fikirler de farklı şekillerde ifade ediliyor. Ses kayıt cihazını giderek daha az kullanıyorum ama zamanın dar olduğu ve hızla ilerlemek gerektiği anlarda en iyisi o. Kaydı sonradan dinleyip tekrar yazınca, her tekrar süreci fikri farklı biçimde dönüştürüyor. Bu süreç sayesinde aynı fikre birden çok açıdan bakabiliyorum
Bir zamanlar duyduğum bir araştırmaya göre bağlam değiştirme ortalama 15 dakikalık bir maliyet yaratıyor. Ne kadar doğru bilmiyorum ama yöneticilerim de buna çok dikkat edip saygı gösteriyor
Bunu canlı webinar serileri dinlerken ve aynı anda kalem kağıtla not alırken deneyimledim. Başta yetişmek çok zordu ama birkaç gün sonra dinleme ve yazma arasındaki bu geçişte giderek daha becerikli hale geldim ve işitsel bilgileri daha iyi hatırladığımı hissettim
Tanıdığım matematik, fizik ve bilgisayar bilimi alanındaki en zeki insanlardan bazılarının defteri bile yok. Onun yerine yazıcı kağıdına kalemle yazıp işleri bitince çöpe atıyorlar. Çok eski kişisel notlarda faydalı bir şey bulduğum pek olmadı. Gerçekten önemli olan şeyleri belgelendirip başkalarının da bulabileceği hale getiriyorum; mutlaka ezberlemem gerekenleri ise spaced repetition ile flashcard kullanarak çalışıyorum. Elbette bu benim yöntemim, başkalarına uymayabilir. Bu yazının başlığı sadece bir geliştiricinin felsefesini paylaşmak için; herkes mutlaka böyle yapmalı demiyor. Kalem ve defter size uymuyorsa kullanmak zorunda değilsiniz
Bilimsel olarak bakarsak bir şeyi yazmak hafızayı, ezberi ve öğrenme kapasitesini artırıyor. Yazdığınızı hemen çöpe atsanız bile etkisi var. İlgili makale da var. Elle yazmak, yazı yazarken devreye giren daha fazla duyu ve beyin bölgesini, özellikle de motor korteksi, etkinleştiriyor. Ben de bunu bahane edip Moleskine almak istiyorum diye sık sık düşünüyorum ama el yazısı benim iş akışıma uymuyor. Ben düz metin tamponlarına büyük miktarda yazarım, sonra GPT gibi LLM'lerle işlerim. Kafam durduğunda, anlamadığım kelimeleri bile rastgele yazmaya devam edersem zihnim yavaş yavaş yeniden çalışmaya başlıyor ve oradan yapılacaklar listesi, e-posta taslağı, kod taslağı gibi şeyler çıkıyor. Bu süreçte ilk karalamaların çoğu kayboluyor. Yine de el yazısı hafızaya daha çok yardımcı oluyor
Eski notların işe yaramadığı yönündeki düşüncene katılıyorum. Ama ben o defterleri ve kağıtları yine de saklıyorum. Uzun zaman sonra onlara bakmak eski aile fotoğraflarına bakmak gibi; sanki geçmişteki düşünme sürecimin fotoğrafları
Benim beynim de öyle çalışıyor. Benim de notlarım var ama bir günün düşünceleri bir sayfaya sığıyor. Ertesi gün bir sonraki sayfayı yazıyorum. Öncekilere neredeyse hiç dönüp bakmıyorum. Geçmişe bakmanın bir değeri olabilir ama pratikte bunu yapamıyorum
Bende işe yaraması için not tutma yönteminin tamamen serbest ve yapılandırılmamış olması gerekiyor. Klavyeyle akışı yakalamak zor. Amaç doğrusal olmayan, sözel olmayan, ilişkisel, mekansal verileri ya da kısa süreli hafızaya yönelik bilgileri yazmak. Belirli aralıklarla notları gözden geçirip anlamlı olanları takvime, ticket'lara, wiki'ye, spaced repetition sistemlerine aktarıyorum. Sonunda saklamaya gerçekten değer içerik çok az çıkıyor ama bu sorun değil. Kağıt defter benim için resmi kayıt sistemi değil, çalışma belleğimin bir uzantısı
Eskiden notlarımı sık sık kaybederdim. Şimdi teknoloji araçlarıyla notları metne dönüştürüp Obsidian vault içinde düzenliyorum. Gelecekte notlar arasındaki bağlantıları otomatik keşfetmeyi ya da etiketlemeyi deneyip fikirleri daha kolay bulmak istiyorum
Defteri "en önemli araç" diye adlandırmak fazla romantik. Bazı insanlar için faydalı olabilir ama bir debugger, sürüm kontrolü ya da CI'dan daha önemli olduğunu söylemek abartı. Yazılım mühendisliği zanaatkâr cosplay'i değil
OP benim. Blogum HN'e her düştüğünde bana "hayal dünyasında yaşıyor", "tam bir romantik" deniyor. Saydığın araçlar elbette önemli. Sürüm kontrolü ya da debugger olmadan geliştirme yapmak verimsiz olurdu; ben de bundan kaçınırım. Ama benim için defter gerçekten daha önemli. Kodu yazıp çalıştırmaya yarayan araçlar sadece işin yürümesini sağlayan araçlar; yazılım geliştirmede gerçekten önemli olan değerli bir şey inşa etmek ve problemleri çözmek. Bu noktada kodun kendisi yalnızca küçük bir uygulama adımı. Ne yapacağını ve nasıl yapacağını düşünmek çok daha önemli. Bazı insanlar kod editöründe ve dijital araçlarda daha iyi düşünebilir. Ben ise sadece kod editöründe kalırsam ayrıntılı uygulamaya fazla gömülüyor, genel yapıyı görmekte zorlanıyorum. Bu yüzden benim için defteri kodlamadan önce ve sonra birlikte kullanmak işin çok temel bir parçası. Bu araç olmasa düşünme gücüm, problem çözme yeteneğim ve yaratıcılığım ciddi biçimde körelir ve kötü yazılım üretirim
Senin anlattığın şey yazılım mühendisliği değil, yazılım işçiliği. Mavi yaka ile beyaz yaka arasındaki fark tam da bu "araç" yaklaşımı. Bir mühendis için slide rule da, hesap makinesi de, süper bilgisayar da sadece birer araçtır. Araç yüzünden mühendislik yapılmaz. Öz, "düşünme"dir; araçlar ise bu süreci sadece hızlandırır. İşçilik yapan içinse makinenin kendisi her şeydir. Makine yoksa ürün de yoktur. Öz "üretim" değil, "düşünme"dir
Bu biraz "ev yaparken elbette çekiç plandan daha önemlidir; burası sanat dersi değil, şantiye" demek gibi
Buna dikkat çektiğin için teşekkürler. Aynı şekilde üretkenlik sistemlerine inanılmaz zaman harcayıp GTD notlarını sekmeler ve listelerle düzenleyip gerçekte üretken hiçbir şey yapamayan çok kişi var. İnsanlar Obsidian iş akışları hakkında yazıyor ama gerçekten anlamlı notlar bırakmıyor. Blogun kendisini yapmaya tüm zamanını harcayıp aslında hiç yazı yazmayan insanlar da var. (Ben de öyleydim.) "Bu zanaatkâr cosplay'i değil, yazılım mühendisliği" cümlesini çok sevdim, not alacağım
craftsmanship cosplayifadesi hoş. Her yorum için kişinin işi ya da kariyeri, yaşı, geliri ve eğitimiyle ilgili verileri görmek isterdim. Görüşler, başarılı yazılım geliştirmeden çok konuşan kişi hakkında bir şey söylüyor gibi. OP sadece kendisi için odak ve yaratıcılığı en iyi ortaya çıkaran yöntemi kullanıyor. Gerek yazıyı gerek eleştirileri sanki standartmış gibi okumak hata olur. Deseni taklit etmek sonunda cargo cult davranışından farklı değilYorumların çoğu sanırım kalem ve kağıdın fiziksel yönüne odaklanıyor ama gerçek temel ilke kaçırılıyor. Yazarın kalem ve kağıt kullanma sebebi, bilgisayar başına oturunca otomatik olarak "uygulama modu"na geçip tasarımdan çok uygulamaya odaklanması. Yani önemli nokta, tasarım gerektiğinde sadece uygulamaya kapılıp gitmemek; bunun dengesini nasıl kuracağını bilinçli olarak seçmek
Bu sonuçta kişisel üretkenlik alanına giriyor. Farklı yöntemleri deneyip kendine uygun ortamı ve süreci bulman gerekiyor. Kalem ve kağıt, aşırı ayrıntıya saplanmadan ve dikkat dağılmadan düşünmeyi ve tasarlamayı teşvik ediyor. Ben de bazen kalem-kağıtla yaptığım düşünceyle doğrudan Sublime Text'e yazdığım düşünce arasında gidip geliyorum; ikisi de gayet iyi çalışıyor
Reddit'te dolaşan çan eğrisi memi buna cuk oturuyor; iki uç aynı çözümü kullanırken "ortalama" kesim şikâyet ediyor. OP'nin asıl noktayı yakaladığını düşünüyorum: kod yazmadan önce düşün. Kariyerimin neredeyse sonuna geldiğim bu dönemde (1988'de başladım, yani onlarca yıl oldu) en ilginç şeylerden biri araçların nasıl değiştiğini görmek. Büyük bir şirkette kıdemli principal yazılım mimarıyım ve tek satır kod yazmıyorum. Tüm çıktılarımı Visio, Word, PowerPoint ve bazen PlantUML ile üretiyorum. Soyutlama seviyesi yükseldikçe araçlar daha da basitleşiyor. Çizdiğim mimariler 10 yıldan fazla yaşayacak askeri, tıbbi ve otomotiv tier-1 sistemleri için. Gerçek uygulama kodu — çoğunlukla C, C++, eskiden Ada, belki ileride Rust — ya da kullanılan dil mimariyi hiç etkilemiyor. Gerçekten önemli olan bloklar, API'ler ve encapsulation. Çünkü bunlar silikon, güvenlik, üretim ve test üzerinde etkili. Birkaç slaytla anlatılabilen şey asıl önemli olan; kodun kendisi değil. (Tabii diyagramlarımın tasarım kusurları sonradan ortaya çıksa bile ayakta kalması gerekiyor. Eğlenceli tarafı da bu)
Leuchturm 1917 A4 Master defter (noktalı ızgarayı şiddetle tavsiye ederim). Kalitesi harika ve dolma kalemle kullanmak büyük keyif. A4 boyutu büyük olduğu için gevşek sayfa eklemek de kolay; özellikle UI tasarımı için A4 gerçekten ideal boyut
20 yılı aşkın süredir yazılım geliştiriyorum, ondan önce de organik kimya doktorası ve araştırma geçmişim vardı. Avustralya'da "senior" seviyesinde rahatça kazanıyorum. Bende aphantasia var, yani zihnimde görüntü canlandıramıyorum; bu yüzden kalem-kağıt ve whiteboard'u çok yoğun kullanıyorum. ERD, mind map, sequence diagram gibi pek çok görselleştirme yapıyorum. ReMarkable kullanmaya başladıktan sonra içerikleri taşımak çok daha kolaylaştı ve verimliliğim arttı. Bazı insanlara "tam romantizm" gibi görünebilir ama benim başarımda kalem ve kağıt vazgeçilmezdi
Çeşitli not araçları ve uygulamalarıyla düzenli olma alışkanlığı kurmaya çalıştıktan sonra, bu yıl yeni yıl kararı olarak tarih yazılabilen bir To-Do notepad destesi aldım ve toplantılarda ya da çalışırken sadece serbestçe kullanmaya başladım. Sonuçta üretkenliğim çok arttı. Merak edenler için kullandığım ürün
Ofiste çalışırken en çok özlediğim şeylerden biri, büyük bir whiteboard'un önünde durup bir meslektaşımla tasarım yapmaktı. Marker alıp birlikte mimariyi düşününce gerçekten zarif sınıf tasarımları çıkıyordu
Ben bunun için excalidraw kullanıyorum ve bence whiteboard'dan daha iyi. 1) Daha güzel görünüyor ve dağınık olmuyor, 2) dijital marker kurumuyor, 3) düzenleme ve değişiklik yapmak çok kolay. Teknik tasarıma başlarken hep excalidraw ile başlıyorum
Ben 24 inç kalem ekran kullanıyorum. CTO olduğum dönemde ekipteki herkese de vermiştim. Paylaşımlı dijital whiteboard olarak tekrar tekrar yeniden çizmeden sürekli düzenlenebildiği için inanılmaz pratik. Whiteboard'u silmeden önce fotoğraf çekme derdi de yok
Whiteboard (kara tahta dahil) candır