Bir programcının yaptığı işte kötü olduğunu nasıl düşünürdünüz?
Mümkünse ... Nasıl gelişmelidir?
Hatalarından ve akran incelemelerinden öğrenemedikleri zaman.
Bir noktada hepimiz yeşiliz; ancak, daha iyi olmuyorsanız veya daha iyi olmaya çalışıyorsanız, o zaman kötü bir programcısınız demektir.
Neyi bilmediğini ve hiç ilgilenmediği bir programcı.
Büyük bir uyarı işareti, bir "kargo kült" programcısı ise - yani bir şeyler yapıyorlar ama bilmiyorlar neden bunları yapıyorlar (sadece "sihirli"). Eric Lippert'in harika gönderisi burada .
Makaleden:
kodun ne yaptığını anlayan, ancak nasıl yaptığını bilmeyen programcılar.
Benim için büyük bir ipucu, size veya diğer programcılara kendi başlarına anlamaya kesinlikle sıfır çaba gösterdiklerini açıkça gösteren geliştirme soruları sorduğunda.
Sonuç, aynı programlama sorusunu birden fazla kez bilgi içselleştirmediklerini belirten soru sormalarıdır.
FizzBuzz sorununu çözmek uzun zaman aldığında.
Yeni teknolojiler/diller öğrenmeyi reddeden ve zaten bildiklerine sadık kalmakta ısrar eden programcılar.
Zeyilname: (yorumlarda aşağıda belirtilen çizgiyi ekleyerek)
Bunun bir uzantısı, bazı teknolojilerin işlevselliğinin bir alt kümesini bilen, ancak bu konuda daha fazla şey öğrenmek istemeyen kişilerdir. Programlama dili, editör, diğer araçlar ...
Düzenli olarak Daily WTF üzerine bir şeyler ürettiklerinde.
Bir şeyleri yapmanın daha iyi yolları olduğunu bildiğinde, ancak zaman izin verdiğinde bile bunları yapmayı reddediyorlar.
Şahsen, bir süre önce yazdıkları kendi kodlarına bakabilen ve bununla ilgili yanlış bir şey bulamayan herhangi bir programcının iyi olmadığını düşünüyorum. "Bir süre" tecrübeyle ölçeklenebilir ... Birkaç haftadan bir yıla kadar söyleyebilirim.
Kodlarında uyarıları görmezden gelen ve yalnızca hatalara önem veren kişiler.
Ufacık bir dükkanda takım lideriyken, yeniden atamam gereken birkaç kişi vardı (ne ben ne de doğrudan amirimin bir ton olmadan sonlandırma yeteneği yoktu) Bürokrasi ve bir yığın belge.) veya mevcut sözleşmenin sonunda sözleşmenin yenilenmemesi. Numaralandırılmış türlerden bazıları diğer takım liderleri için de çalıştı ve hemen hemen aynı görüşü aldılar. Kitabımdaki "Kötü Programcı" kategorisine giren şeyler:
Bunlar üzerinde çalışmak zorunda kaldığım kötü karakterlerden bazıları ...
/ s/BezantSoft
Açık bir bilgi/yetenek eksikliğinin yanı sıra, kodlarının olması gerektiği gibi okunması ve/veya sürdürülmesi daha zorsa, bir programcı kötü bir programdır.
Gelecek teknolojilere uyum sağlayamıyor
Kimse kodunu okuyamazsa. Ne kadar parlak olduğun önemli değil; hiçbir programcı bir ada değildir.
Benim için programcılar için iki kategori var - solo ve takım.
Kötü solo programcılar
Kötü takım programcıları kötü solo programcılar kategorisine girenlerdir.
Ayrıntılara dikkat etmeyen ve her zaman "işe yarıyor, bu yüzden onu yalnız bırakıyorum. Günlüklerdeki tüm bu istisnalar önemli değil" modunda.
Deneyimlerime büyük bir uyarı işareti ne zaman onların kesmek yorum yok olduğunu.
Ne demek istediğimi biliyorsun: Çok acayip bir şey yapmak zorunda kaldığın zaman bunu yapmanın daha iyi bir yolu yok.
İyi programcılar bunu yapmaktan nefret edecek ve bu tür bir saldırıya girmekten ne kadar nefret ettiklerini söyleyen satır içi yorumlarda bulunacaklar, ancak başka seçenek yok. Kötü programcılar sadece kesmek ve yorum yapmazlar.
İtiraf etmek istemiyorlar cevabı bilmiyorlar ve/veya bir şeyler aramak istemiyorlar.
Eğer bilmiyorsanız, vazgeçmeyin - anlayın ve halledin.
Repreategly olmak bunu yapmak için sağ yol gösterdi ve tekrar tekrar sadece kolay yolu yapıyor.
Bir programcı bir sürü kod yazdığında açık bir şekilde sessiz. Çok büyük fonksiyonlar, belki satırları veya kod bloklarını kopyalayabilir/yapıştırabilir, daha sonra gerekliyse daha fazla yol kullanarak, vb.
Cevabımı buraya kapalı bir yinelenen konudan hareket ettiriyorum Kötü bir programcı olup olmadığınızı anlayabiliyor musunuz? Yanıtımı oluştururken diğer konu kapatılıyordu. Cevabım soruyu doğrudan diğer asker tarafından ifade edildiği gibi ele alıyor ve anlarsanız daha iyi okuyacaktır.
İç çekmek! Bir parçam zaten meşgul olan bu konuya eklemek istemedi, ancak diğer tarafım kazandı! Neden kazandı; neden bu özel çoklu-diyaloga daha fazla kelime eklemek için uğraşıyorum? Çünkü, bir dereceye kadar, bunu önceki yorumculardan biraz farklı bir şekilde ele alabilirim.
İkili bilgisayarlarda harika çalışır: '1' veya '0', "açık" veya "kapalı" dır. Bu ünlü iki eyaleti kullanarak birçok bilgiyi soyutlayabilir ve kodlayabiliriz. Ancak, insani konular için çok iyi çalışma eğilimi göstermez: "iyi" veya "kötü", "aklı başında" veya "deli," "iyi" veya "kötü," "akıllı" veya "aptal," "şişman" veya "ince", "canlı" veya "ölü?" Bu tür kutuplaşmış değerlendirmeler, önemseyen insanı her zaman benim bir parçam olarak son derece tatminsiz bıraktı. Uygulamayı seçtiğim ölçüm şemalarına göre, genellikle bu tür keskin kontrastların cevaplarının aslında her iki ucunda değil, böyle bir kutup ile diğeri arasında bir süreklilik boyunca bir yerde olduğunu görüyorum.
Kutuplaşma eğilimi ile uzunca bir süredir mücadele ediyorum ve kişisel çözümüm, böyle bir değerlendirmeye üç kelime uygulamayı çok daha kullanışlı bulmam: " ne dereceye kadar! "
Yani, sorunuza cevabım onu yeniden ifade etmenizi önermek ve kendinize şu soruyu sormak: "Ne dereceye kadar kötü bir programcıyım?" Ya da daha iyisi, diğer yöne sormak için: "Ne kadar iyi bir programcıyım?" Eğer gerçeği takip ederseniz, muhtemelen kendinizi "kötü" bir programcı ile "iyi" bir program arasında bir yerde bulacaksınız. Daha sonra, bu yol boyunca yaklaşık olarak bulunduğunuz yeri bulmayı başardığınızda, muhtemelen "iyi" sona biraz daha yakın bir noktayı tanımlayabilirsiniz - yakın gelecekte kendinizi bulmak istediğiniz bir nokta.
Bu noktayı çok uzakta ayarlamazsanız, muhtemelen arka ucunuzu vitese alabilir ve o yönde hareket ettirmeye başlayabilirsiniz. Bu oldukça basit sezgisel algoritmayı birkaç kez yinelemeyi başarırsanız, yakında bu soruyu tekrar sormak için çok meşgul programlama bulabilirsiniz! Oh, ve klavyede mümkün olduğunca çabuk ve sık sık kod vurmaya başlarsanız muhtemelen daha hızlı ilerleme kaydedersiniz; ve ara sıra biraz ara verirseniz, akranlarınız tarafından yazılmış yüksek kaliteli kodları okuyun! Dinamik Açık Kaynak geliştirmenin bu günlerinde, öğrenmek için ücretsiz ve zarif kod sıkıntısı yok!
Bu yüzden, size üç küçük kelimemi, "ne dereceye kadar" denemenizi ve sizi ne kadar iyi bir yöne götürebileceklerini görmenizi şiddetle tavsiye ederim!
SOLID, DRY, OOP vb.) Gibi ilkeleri bilmeyenler, belirli teknolojileri bilmektense programlama ilkelerini ve temelleri iyi anlamak önemlidir. kolayca yeni konular öğrenebilir ve daha iyi kod üretecek.
Kötü bir programcıyı yeni başlayan bir programcıdan ayıran bir şey, en sevdikleri sistemi çalıştıkları dil ve API'de uygulama konusunda inatçı ısrar etmektir.
Bir zamanlar önceki geliştiricinin (Java'da) özel dbf erişim kütüphanesinin üstünde katmanlı büyük bir Ashton Tate DBase III + api setini yeniden uyguladığı bir sistemi devralmıştım. Java koleksiyonlar çerçevesinin hiçbiri kullanılmadı.
Bu, DBase III + (veya muhtemelen kırpma) uygulaması gibi görünen ve hareket eden bir Java/swing uygulaması yazabildi.
Bu sistemde yazdığı Uygulamaların lite-bar menüleri vardı ve lite-bar seçeneğine gittiğinizde altta bir dizi düğme içeren tam pencere formu açar. 1980'lere kadar küçük bir zaman makinesi gibiydi.
Adam açıkça yetenekli bir geliştiriciydi. Tüm sistemi, o projenin zaman çerçevesinde yazabildiğini yeterince biliyordu. Ayrıca birkaç başka iç sistemde de yeniden kullanabildi.
Ancak, kodunun üzerinde çalıştığı sistemlerin özelliklerini kötüye kullandığı için korkunç bir programcıydı. Java/Swing/SQL öğrenmekten ziyade özel bir şüpheli fayda lib 3 ayını harcamaya daha istekliydi.
"Yapamaz" diyen biri.
Bence her şey problem çözme ile ilgili, araç aslında iş yapmaktan çok daha az alakalı olmalı. MS-Access veya Assembly dilini kullanarak çözmem gerekirse, bu bir zaman ve para meselesi, "Bu yapılamaz" meselesi değil
Bir uyarı işareti, şeyleri yapmanın akademik ve "uygun" yoluna çok fazla odaklanır ve işin yapılmasına yeterince odaklanılmaz.
Sadece bir dilin sözdizimini biliyorsa, ancak algoritmaların temel kavramlarını bilmiyorsa.
Çok fazla iddiasız ama çok az ürettiklerinde.
Anlamayan gömülü bir programcı, çok iyi veya çoklu görevi kesintiye uğratır. Ayrıca bit alanlarıyla çalışması gereken ancak üzerlerinde mantıksal işlemleri kavramayan ve kaydırmayan programcılar.
Anında tanınma sinyali diyen biri: "Neden işe yaramadığını anlamıyorum. Her şeyi doğru yaptım."
! (akıllı ve işleri halleder)
Bugün, birçok programcı bu karmaşıklığın en iyi programlarında sadece iyi anlaşılmış küçük bir dizi teknik kullanılarak yönetildiğine inanmaktadır. Programların sahip olması gereken formlar hakkında katı kurallar oluşturdular ve aralarındaki daha gayretli, bu kuralları kötü programcılar olarak ihlal edenleri kınacak
Kodu başka yerlerden kopyalayıp yapıştıran ve kodun gerçekten nasıl çalıştığını anlamayan bir programcı kötü bir programcı olarak bilinir! Bunu genellikle javascript ile görüyorum.
Bir programcının programlamada kötü olabilmesinin tek yolunun, diğer insanların söylediklerini dinlemeyi bırakmasıdır.
Programlama bilgi ile ilgilidir. Kişinin kulakları ve gözleri açık tutması gerekir.
Bir programcı ancak kitaplara vurarak ve çok çalışarak gelişebilir. Ancak, aynı şeyi tekrar tekrar öğrenmeye değil, yeni şeyler öğrenmeye odaklanmalısınız (kendi alanınızda/endüstrinizde yeni deneyimler arayın).
İyi şanslar.