Fakir yazarlar kötü programcılar yapar mı? [kapalı]


16

Peter Seibel tarafından İşyerinde Kodlayıcıları okuyorum ve çoğu zaman yazamayan programcıların genellikle zayıf programcılar yaptıkları belirtildi - Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (ve ben kitabın sadece yarısını okuyun).

Bu konudaki görüşünüz nedir? Kendinizi İngilizce gibi doğal bir dilde yazarak ifade edememek iyi kod yazmanın bir engelidir mi?


9
Bir programcı olarak beceri hakkında bilmiyorum, ama kendinizi bir programcı olarak SATMAK için, smart = freelance dünyasında seksi. Bu nedenle, iyi yazabiliyor (ve konuşabiliyorsanız), akıllı olarak algılanacak ve bir geliştirici olarak daha güvenilir olarak kabul edilecektir (tamamen topraklanmamış olsa da).
Dan Rosenstark

"Yazamıyorum" derken onların gramerleri yanlış mı demek istiyorsun? Bu muhtemelen kötü akış vb.
Şeylerden

1
@Maxpm: Belki aynı zamanda dilbilgisi açısından doğru olmasına rağmen anlamlarını yazılı olarak iletememe.
gablin

Yanıtlar:


30

Programlamada 'kod yazmaktan çok daha fazlası var. Başarılı bir programcı olmanın büyük bir kısmı iletişimi içerir; Müşterilerle bağlantı kurabilme, ihtiyaçlarını anlayabilme, teknik alana çevirebilme, kodla ifade edebilme ve ardından sonucu müşterilere açıklayabilme.

Kendilerini yazılı olarak açıkça ifade etmekte zorlanan programcılar genel olarak iyi iletişim kuramayabilirken, iyi bir dil ve yazma becerisine sahip olanlar genellikle bu becerileri yazdıkları koda çevirebilirler.

Bence iyi yazamamak ve böylece iyi iletişim kurmak, çok iyi bir programcı olmaktan alıkoyacaktır.

Jason Fried ve David Heinemeier Hansson'in (37 işaretin) Rework kitaplarında söyledikleri gibi:

Bir pozisyon doldurmak için birkaç kişi arasında karar vermeye çalışıyorsanız, en iyi yazarı işe alın.

İyi bir yazar olmak yazmaktan daha fazlasıdır. Açık yazma, açık düşünmenin bir işaretidir. Büyük yazarlar nasıl iletişim kuracaklarını bilirler.


2
Evet, ve bence herkes herkes iyi bir programcının kalitesinden birinin kendini kodda açıkça ifade edebilme yeteneği olduğu konusunda hemfikir. kodunuzda (ve tersi). +1
n1ckp

2
Bunu ikinci yapardım. Yalnızca makine ile değil, iletişim kurmanız gerekir. Etrafınızdaki insanlar ve peşinizden gelen programcılar, hem yazılı hem de yazılı iletişimde netliğe ihtiyaç duyarlar. Er ya da geç insanlarla konuşmak zorunda kaldığınız için yazılır ve kodunuz ve YORUMLARINIZ olduğu için yazılır.
quickly_now

Cevabınızı çok ilginç buldum! Ama çalıştığım, benim için çalıştığım veya benim için çalıştığım en iyi programcıların kim olduğunu bulmak için hafızamda geriye baktığımda, bunların çoğunun yazma konusunda çok kötü olduğunu gördüm. Ancak gülünç derecede iyiydiler. Ancak, mükemmel cevabınızı akılda tutacağım ve gelecekte deneyeceğim. +1

15
  • Bir şeyi yeterince iyi açıklayamıyorsanız, muhtemelen yeterince iyi anlamıyorsunuz Akıllı bir insan olmak, diğer akıllı insanlarla çalışacağınız ve onlarla etkili bir şekilde iletişim kurmanız gerektiği anlamına gelir.
  • Sadece kafanızda varsa, sahip olduğunuz herhangi bir harika fikir
    , fikirlerinizi etkili bir şekilde iletebilmek büyük bir anlayışa işaret eder. Bu sadece programlama alanından daha fazlası için geçerlidir.

4

Soruyu incelersek, cevabı doğrudan alırız:

Kendinizi İngilizce gibi doğal bir dilde yazarak ifade edememek iyi kod yazmanın bir engelidir mi?

İyi kod yazmak aslında ne anlama geliyor?

Programların insanların okuyabileceği ve sadece tesadüfi olarak makinelerin çalışması için yazılması gerekir.
- Abelson & Sussman, Bilgisayar Programlarının Yapısı ve Yorumlanması

Kendinizi bir programlama dilinde açıkça, özlü, doğru ve zarif bir şekilde yazmanız anlamına gelir.

Kendinizi İngilizce veya programlama dilinde becerikli bir şekilde ifade etme arasındaki tek fark, İngilizce'nin çok daha bağışlayıcı olmasıdır.


3

Ben bir kod maymun için büyük bir engel olduğunu sanmıyorum (Ben kendi ana dilinde kendini ifade etmek için belirli bir temel seviye / yeteneği varsayalım). Ancak, siz (geliştirici) teknik olmayan bir kitleye tasarımları / kemer / planları daha iyi eklemeye başlamak zorunda kaldığından, bunun hızla bir engel olabileceğini düşünüyorum. Benim deneyimlerime göre, kabaca kendimle aynı teknik düzeyde olan bir başkasına rastlamak benim daha kolay ve çok daha az (doğal) dil becerisi alan bir şey, bir müşteri ve / veya yöneticiye bir şeyler eklemektir. Aynı şekilde, konu daha az somutlaştığı için teknik bir kitle olsa bile, bu konuda yazan (veya bu konu için konuşan) oldukça açık bir şekilde ifade edilmelidir.


3

Bu, "iyi kod" ile ne demek istediğinize bağlıdır.

Sadece işe yarayan bir kod kastediyorsanız, insanlarla iletişim kurmak ve bilgisayarlarla iletişim kurmak arasında pek bir ilişki yoktur.

Kodun çalıştığını, sürdürülebildiğini ve kodun amacını açıkça ifade ettiğini kastediyorsanız, iyi kod yazmak ile yalnızca insanlara yönelik bir dilde yazmak arasında kesinlikle bir ilişki vardır.

Anlaşılabilir kod yazmak için iyi bir yazar olmak için gereken tüm farklı becerilere ihtiyaç duymasanız da, her ikisi de insanlar tarafından okunacağı için hala orada olması gereken unsurlardan bazıları var. Bazı yönlerden, bilgisayar tarafından yürütülürken kötü performans gösterecek yapıları kullanmazken, kodla niyeti tanımlaması gerektiği için iyi kod yazmak daha da zordur.


2

Mesele şu ki, kodlama da bir iletişim becerisidir. Jack Ganssle, Embedded Muse e-bülteninde geçenlerde Doug Abbott'tan alıntı yaptı:

Bir program yazarken, gerçekten yaptığınız şey, başka bir insana bilgisayarın ne yapmasını istediğinizi bildirmektir. Programlama, diğer yazı türleri gibi iletişim ile ilgilidir. Evet, bilgisayar bilimi öğrencileri iyi yazmaya maruz kalmalıdır. Ancak bilgisayar biliminde çok az değerli olduğu için, belki de sadece bazı temel yaratıcı yazma sınıflarına ihtiyaçları var.

Düzyazı yazmayı bilmeyen programcılar muhtemelen kod yazmayı da bilmiyorlar.

Bu ilginç makale hakkında daha fazla bilgi:

Kötü Yazma Kötü Programlama Becerilerini Yansıtır mı?


2

Bu tamamen anekdottur, ancak:

Çalıştığım en iyi "rock yıldızı" programcılarından biri çok fakir bir yazardı. Ve "çok fakir" dediğimde, e-postalarını gördüğünüzde ya çok sarhoş ya da zar zor okuryazarmış gibi gelen türden kastediyorum. Yazım hataları, noktalama işaretleri eksikliği, fikirleri net bir şekilde ifade etmede güçlük ve yaygın yazım hataları ("onlar" ve benzerleri) bolca doludur. E-postalarının bazılarını okumak - Müşteriye doğrudan e-posta göndermesi konusunda endişelenirdim (bunu o şirkette yapmamız gerekmiyordu) - çünkü şirket kötü görünecekti!

Yine de süper bir yıldız programcısıydı. Ortalamadan daha verimli ve açık bir büyüklük sırası.

Ne yapacağımdan emin değilim. Bunu birkaç kez farklı insanlarla gördüm. Bazıları oturmak ve bir şeyler yazmak için bir şeye sahip görünmüyor. Ve çoğu zaman diğer alanlardaki yeteneklerini etkilemiyor gibi görünmektedir (göreceli olarak benzer görünen, programlama gibi "bilgi çalışması" yetenekleri). Bağlantılı olacağını düşünürdünüz, ama böyle olmadığı gibi birkaç canlı örnek gördüm. Ben onlar "olduğunu oldukça mümkündür tahmin rağmen üstünlüğünü kanıtlamak istisnalar ben muhtemelen sadece programcılar değil kötü yazarlar fark düşünmemiştim ve iyi yazarlar -" vardır .


3
Kuralda her zaman istisnalar vardır. Birkaç müşterinin yanında da çalıştım, kimsenin yanına asla izin vermemeliyiz, çünkü onlar kıyma haline getirilirdi. Belgelerinde yazım hatalarını düzeltmek için yaşları harcadım. Ancak onlara teknik bir sorun verin ve içgörü ve çözümlerin flaşları şaşırtıcıydı. Bütün bunlar sadece buradaki cevapların genellemeler olduğunu gösteriyor. Ancak, genellemeler çoğu insan için geçerlidir.
hızla

3
@quickly_now: Kodlarını nasıl okuduğunu (siz belirtmediğinizden beri) merak ediyorum. Çok zeki ve iyi bir problem çözücü olabilirler, ancak kodları okunamıyorsa, benim fikrimi istiyorsanız, büyük bir programcı değildirler.
n1ckp

@ n1ck: Şimdi bahsettiğinize göre, düşündüğüm adam kodunu belgelemekte çok iyi değildi. Kodun kendisi iyi ve iyi tasarlanmıştı, ancak doğası gereği karmaşık kod parçalarının etrafına yorum koymadı, bu da olması gerekenden daha zor olduğu anlamına geliyordu. Bunu düşünmemişti. :)
Bobby Tables

@ N1ckp ile hemfikirim. Ayrıca değişkenler / yöntemler / sınıflar için isim seçimini bazen şifreli ve kafa karıştırıcı olacaktır. Son derece yüksek üretkenliğe sahip programcılara karşı çok dikkatli olma eğilimindeyim, çünkü genellikle uzun vadeli sürdürülebilirliği geliştirmek için biraz fazla zaman harcama pahasına gelir.
Hayal Kırıklığı

2

İyi yazamazlarsa, sizi iyi programcı olduklarına nasıl ikna edebilirler?


0

Bir sistem kuruluşunu veya fikrini yazarak tam olarak ifade edemeyen biri, (çok) aptal bilgisayar tarafından doğru bir şekilde yorumlanan kod (kesin talimatlar olan) yazabilir mi?


Ancak, kodunuz doğru bir şekilde yazılmazsa, bilgisayardan çok net ve anında bir geri bildirim döngüsü alırsınız. Son derece zayıf yazılı İngilizce'ye sahip olabileceğinizden ve geliştirmeniz gereken geri bildirimler göz önüne alındığında neredeyse hiç söylenemediğinden şüpheleniyorum.
Carson63000

Derleyici ile bile net ve doğru olmayı öğrenmelisiniz çünkü eğer yapmazsanız sonunda hiçbir şey derlemeyeceksiniz.
Klaim

0

Bence bir programcının hem sözlü hem de yazılı dilde iyi iletişim kurabilmesi çok önemlidir. Bir fikri kelimelere çevirme yeteneği, kod yazmak için bir ön koşuldur.

Bir bilgisayarla veya bir insanla iletişim kuruyor olsak da, dilbilgisi kurallarını takip eden mantıklı bir sıraya kelimeler koymak zorundayız. Konuşmanın diğer tarafının bunları anlayabilmesi için kelimeleri doğru telaffuz etmeliyiz veya doğru şekilde hecelemeliyiz. Bilgisayarlar sözdizimi hataları atar, iş arkadaşları ya "NE?" veya inan gevezelik ya da daha kötüsü, rahatsız edici bir oyalama olarak söylenenleri indirim.

Adayları işe alma konusunda kesinlikle cesaret kırdım, çünkü bir düşünceyi tamamlayamadılar veya bir konuda duramadılar. Yine de bir kişi patronumuz tarafından işe alındı ​​ve zamanında parlak bir ödev teslim edemediği ortaya çıktı çünkü parlak ve parlak yeni teknoloji veya oyuncak gözlerini yakaladığında dikkatini dağıttı.

Bu nedenle, evet, programcıların iyi iletişim kurabilmeleri önemlidir. Eğer bir insanla etkili bir şekilde iletişim kuramazlarsa, bunu bir bilgisayarla yapamazlar.


0

Yoksul yazarlar fakir yazar yaparlar ve başka hiçbir şey yapmazlar. Kötü yazma becerisi, hiç iletişim kuramadıkları anlamına gelmez, ancak çok iyi yazamaz veya iyi ifade edemezler. Tabii ki herkes iletişim becerisinin şirkette önemli ve çok önemli olduğunu söyleyebilir ve bu böyle devam eder, ancak bu, zayıf iletişim becerisine sahip bir programcının işi iyi yapamayacağı anlamına gelmez. Programlama ve yazma sanattır, ancak tamamen farklı türdedir. Yazma, başka bir insanın söylediklerinizi nasıl anlamasını ve / veya buna göre hareket etmesini sağlamakla ilgilidir, ancak programlama bilgisayarın gereksiniminizi anlamasını sağlamaz, çünkü hiçbir bilgisayar herhangi bir kullanıcı gereksinimini anlamayacaktır (en azından 100 yıl sonra IMO). Programlama, gereksinimin programlama diline nasıl çevrileceğiyle ilgilidir ve bu yüzden yazma becerisi bu kadar ilgili değildir.


1
Bir programcının işinin bir parçası, kendini sadece bilgisayar değil, aynı zamanda diğer insanlar da kodu okuyabilmesi için kendini kodda (ve yorumlarda) açıkça ifade etmektir. Bu becerilerin ilişkili olduğunu hissettirir (ancak kanıtlanmış AFAIK değildir).
n1ckp

0

Kesinlikle hayır!

İyi bir yazar, iyi bir yazardan başka bir şey değildir. İyi bir yazardan, veritabanı kavramını teknik olmayan bir kişiye tarif etmesini isteyin. Sizce ne alacaksınız ...?

İyi bir yazar, yazar. İyi bir programcı iyi kod yazar.

  • Geliştirildikten altı ay sonra başkalarının okuyabileceği kod.
  • Sistemin başarısız olduğu ve hata ayıklamanın devam ettiği sabah saat 2: 00'de anlamlı olan kod.
  • Herkesin ödünç almayı sevdiğini kodlayın çünkü anlıyorlar ve kolayca değiştirebiliyorlar
  • 7/24 çalışan kod 365

Devam edecektim ama zamanımı diğer yayınlara cevap vermek için harcamayı tercih ederim. Bu konuda nerede olduğumu bildiğinizi düşünüyorum.


1
Bence kurşun noktaları 1,2 ve 3 iyi bir programcı olmasının yanı sıra iyi bir yazar olmasını gerektiriyor. Özünde, iyi yazma becerilerini örtük bir özellik olarak görüyorsunuz.
Mamta D
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.