Geliştiricilerle kod karmaşıklığı hakkında konuştuğumda, genellikle istemek basit bir kod yazmak, ancak son tarih baskısı veya altta yatan meseleler, hem görevi tamamlamak hem de sadeliği sadeleştirmek için gerekli zamana veya bilgiye sahip olmadıkları anlamına gelir.
Pekala, geliştiricilere zaman baskısı koymanın karmaşık kod yazmalarına yol açma eğiliminde olduğu kesinlikle doğru. Ancak, son tarihler yok var karmaşıklığa yol açmak. “Bu son tarih benim basit kod yazmamı engelliyor” demek yerine, “Eşit bir şekilde“ Bunu basitleştirmek için yeterince hızlı bir programcı değilim ”diyebilir. Yani, bir programcı olarak ne kadar hızlı olursanız kod kalitesi o kadar düşük olur teslim tarihlerinden etkilenmesi gerekiyor.
Şimdi, bunu söylemek güzel, ama gerçekte nasıl olmak Daha hızlı? İnsanların doğduğu sihirli bir beceri mi? Bir şekilde diğer insanlardan daha "akıllı" olmakla hızlı hale geliyor musunuz?
Hayır, sihir değil ya da doğuştan değil. Aslında, eğer takip edilirse nihayetinde sorunu tamamen çözecek basit bir kural vardır:
Kendini düşünmeyi bıraktığın zaman, bir sorun var.
Belki bu kulağa inanılmaz geliyor, ama çok iyi çalışıyor. Bir düşünün – editörünüzün önünde otururken ancak çok hızlı bir şekilde kodlama yapmıyorken, yavaş bir yazıcı olduğun için mi? Şüpheliyim — “çok fazla yazmanız gerekiyor” nadiren bir geliştiricinin verimlilik sorunu. Bunun yerine, bulunduğunuz duraklamalar değil yazarak yavaşlatır ne. Geliştiriciler bu duraklamalar sırasında genellikle ne yapıyor? Düşünmeyi kesmek – belki de sorun hakkında, belki de araçlar hakkında, belki de e-posta ile ilgili, her neyse. Ancak bu ne zaman olursa olsun, bir sorun olduğunu gösterir.
Düşünme, problemin kendisi değildir; işaret başka bir sorun. Pek çok farklı sorundan biri olabilir:
anlayış
Geliştiricilerin düşünmeyi bırakmasının en yaygın nedeni, bir kelime veya sembolü tam olarak anlamadıklarını düşünmeleridir.
Bu bana geçen gün başıma geldi. Gerçekten basit bir hizmet olması gereken şeyi yazmam saatlerimi alıyordu. Nasıl düşünmesi gerektiğini denemek için düşünmeyi bırakıp durdum. Son olarak, ana değişkene giriş değişkenlerinden birini anlamadığımı fark ettim. Biliyordum isim türünün türünü, ancak hiçbir zaman gitmemiş ve türün tanımını okumamıştım. anlama Bu değişkenin (bir kelime veya sembol) anlamı. Türün kodunu ve dokümanlarını ararken en kısa sürede her şey netleşti ve bu hizmeti bir iblis (kısmen amaçlanan pun).
Bu neredeyse sonsuz şekillerde olabilir. Pek çok insan (,), (,), {,}, +, * ve% 'nin bu dilde gerçekte ne anlama geldiğini öğrenmeden bir programlama diline dalar. Bazı geliştiriciler bilgisayarın gerçekten nasıl çalıştığını anlamıyor. Rockstar Programcısının Tekil Sırrını yazdığımı hatırlıyor musun? Bu nedenle! Çünkü gerçekten anladığınızda, düşünmeyi bırakmanıza gerek kalmaz. Aynı zamanda kitabımın arkasındaki büyük bir motivasyon; yazılım tasarımında sarsılmaz yasaların olduğunu anlamak, “düşünmeyi bırakma” anlarının çoğunu ortadan kaldırabilir.
Dolayısıyla, düşünmeyi bıraktığınızı tespit ederseniz, zihninizdeki sorunu çözmeye çalışmayın – anlamadığınız şeyi kendi dışınızda arayın. Sonra gidin bak anlamanıza yardımcı olacak bir şey. Bu, “Bir kullanıcı bu metni hiç okur mu?” Gibi sorular için de geçerlidir. Bu soruyu gerçekten cevaplamak için bir Kullanıcı Deneyimi Araştırma Departmanınız olmayabilir, ancak en azından bir çizim yapabilir, birisine gösterebilir ve görüşlerini sorabilirsiniz. Sadece orada oturup düşünme –bir şey yap. Sadece eylem anlayışa yol açar.
Çizim
Bazen geliştiriciler düşünmeyi bırakır çünkü bir kerede akıllarında yeterince kavram tutamazlar – birçok şey birbiriyle karmaşık bir şekilde ilişkilidir ve düşünmeleri gerekir. Bu durumda, bir şeyi yazmak ya da çizmek, her zaman düşünmekten daha etkilidir. İstediğin şey yapabileceğin bir şey. bak veya bir şekilde kendi dışınıza da algılayabilirsiniz. Bu bir anlayış biçimidir, ancak kendi başıma söylemek istediğim kadar özel.
Başlangıç
Bazen sorun “Hangi kodu yazmaya başlayacağım hakkında hiçbir fikrim yok.” Buradaki en basit çözüm, bildiğiniz herhangi bir kodu yazmaya başlamanızdır. kutu hemen yaz. Sorunun anladığınız kısmını seçin tamamenve bunun için çözümü yazın; yalnızca bir işlev veya önemsiz bir sınıf olsa bile.
Genellikle, başlamak için en basit kod parçası, uygulamanın “çekirdeği” dir. Örneğin, bir YouTube uygulaması yazacak olsaydım, video oynatıcı ile başlardım. Sürekli teslimatta bir alıştırma olarak düşünün – gerçekten yapacak bir kodu yazın. ürün ilk olarak, bu ürün ne kadar aptal ya da küçük olursa olsun. Başka bir UI içermeyen bir video oynatıcı, olmasa bile faydalı bir şey yapan (video oynatma) bir üründür. tamamlayınız henüz ürün.
Bu ana kodu nasıl yazacağımı bile bilmiyorsan, kodunu kullan. Hangi hakkında eminim. Genel olarak, sorunun bir kısmı çözüldüğünde, geri kalanını çözmek daha kolay olur. Bazen sorun adımlar halinde ortaya çıkar – bir parçayı çözersiniz, bu da bir sonraki parçanın çözümünü açık hale getirir, vb. Hangi kısmı oluşturmak için fazla düşünmeyi gerektirmiyorsa, o kısmı şimdi yazın.
Bir Adım Atlama
Bir diğer uzmanlık anlayışı problemi, doğru gelişim sırasındaki bir adımı atlamanızdır. Örneğin, Bisiklet nesnemizin Tekerlekler, Pedallar ve Çerçeve nesnelerine bağlı olduğunu varsayalım. Tüm Bisiklet nesnesini, Tekerlekler, Pedallar veya Çerçeve nesnelerini yazmadan yazmaya çalışırsanız, düşünmek Var olmayan sınıflar hakkında çok şey. Öte yandan, hiçbir Bisiklet sınıfı olmadığında Wheels sınıfını yazarsanız, Wheels sınıfının Bike sınıfı tarafından nasıl kullanılacağı hakkında çok fazla düşünmeniz gerekebilir.
Doğru çözüm, Jantlara ihtiyaç duyduğunuz noktaya gelmek için yeterli Bisiklet sınıfını uygulamak olacaktır. Daha sonra Bike sınıfındaki acil ihtiyaçlarınızı karşılamak için yeterince Wheels sınıfını yazın. Sonra tekrar Bisiklet sınıfına gidin ve bir dahaki sefere altta yatan parçalardan birine ihtiyacınız olduğunda bunun üzerinde çalışın. Tıpkı “Başlangıç” bölümü gibi, problemin düşünmeden çözebileceğiniz kısmını bulun ve hemen çözün.
Sisteminizin gelişimindeki adımların üzerinden atlamayın ve üretkenliğinizi beklemeyin.
Fiziksel problemler
Yeterince yemek yemediysem, dikkatim dağılıyor ve düşünmeye başlıyorum çünkü açım. Düşünceler olmayabilir hakkında midem ama ben olmaz eğer dolu olsaydım düşünmeye çalış – odaklanmış olurdum. Bu ayrıca uyku, hastalık veya herhangi bir vücut probleminde de olabilir. Yukarıdan gelen “anlama” sorunu kadar yaygın değildir, bu yüzden önce her zaman tam olarak anlamadığınız bir şey arayın. Eğer gerçekten anladığından eminsen her şeyo zaman fiziksel problemler bir aday olabilirdi.
Dikkatiniz
Bir geliştirici gürültü gibi dışsal bir şeyden rahatsız olduğunda, çözümlerinde nerede olduklarını hatırlamak biraz düşünebilir. Buradaki cevap nispeten basit – gelişmeye başlamadan önce, sizi rahatsız etmeyecek bir ortamda olduğunuzdan emin olun veya dikkat dağıtıcıların sizi rahatsız etmesini imkansız hale getirin. Bazı insanlar ofislerine kapıyı kapatıyor, bazıları kulaklık takıyor, bazıları ise “rahatsız etmemek” işareti koyuyor; ne pahasına olursa olsun. Gelişim için dikkat dağıtıcı bir ortam yaratmak için yöneticinizle veya iş arkadaşlarınızla birlikte çalışmak zorunda kalabilirsiniz.
Kendinden kuşku duyma
Bazen bir geliştirici oturur ve düşünür çünkü kendilerinden veya kararlarından emin değiller. Bunun çözümü “Anlama” bölümündeki çözüme benzer – ne hakkında emin değilseniz, kod yazacak kadar kesin olana kadar bu konuda daha fazla bilgi edinin. Sadece bir programcı olarak genellikle belirsiz hissediyorsanız, bu olabilir çok Programcılar Neden Emilir? bölümünde listelenen temel bilgiler gibi, daha fazla bilgi edinmeniz için gerekenler. Gerçekten anlayana kadar öğrenmeniz gereken her parçayı gözden geçirin, ardından bir sonraki parçaya geçin, vb. Programlama sürecine dahil olan her zaman öğrenme olacaktır, ancak onun hakkında daha fazla şey bildiğiniz gibi, daha hızlı ve daha hızlı olacak ve daha az ve daha az düşünmek zorunda kalacaksınız.
Yanlış Fikirler
Pek çok kişiye, düşünmenin akıllı insanların yaptığı şey olduğu söylenir, böylece akıllı kararlar almak için düşünmeyi bırakırlar. Ancak, bu yanlış bir fikirdir. Eğer yalnız düşünmek, bir dahi olsaydı, o zaman herkes Einstein olurdu. Gerçekten akıllı insanlar öğrenir, gözlemler, karar verir ve hareket eder. Bilgi edinirler ve bu bilgiyi önlerindeki problemleri ele almak için kullanırlar. Eğer gerçekten zeki olmak istiyorsanız, fiziksel evrende harekete geçmek için zekanızı kullanın; yalnızca kendinize harika düşünceler düşünmek için kullanmayın.
Uyarı
Yukarıdakilerin tümü hızlı bir programcı olmanın sırrıdır otururken ve kod yazarken. Tüm gün e-posta okumak ve toplantılara katılmakla yetişirseniz, o zaman hiçbir programlama yapılmaz – bu farklı bir problemdir. Bunun bazı yönleri benzer (“düşünmeyi bırakmak” gibi bir organizasyon gibi) ama aynı değil.
Yine de deneyebileceğiniz bazı benzer çözümler var. Belki de kuruluş tam olarak anlamıyor sen veya rolünüz, bu yüzden size çok fazla e-posta gönderiyorlar ve sizi bu kadar çok toplantıya sokuyorlar. Belki de, daha az toplantıya nasıl gideceğiniz ve daha az e-posta alacağınız gibi, kuruluş hakkında tam olarak anlamadığınız bir şey vardır. 🙂 Belki de bu görevdeki çözümleri bireyler yerine insan gruplarına uyarlayarak bazı kurumsal zorluklar çözülebilir.
-Max