Czy biedni pisarze są słabymi programistami? [Zamknięte]


16

Czytam Coders at Work autorstwa Petera Seibela i wiele razy wspominano, że programiści, którzy nie potrafią pisać, ogólnie robią słabych programistów - twierdzi Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (i ja czytaj tylko połowę książki).

Jakie jest twoje zdanie na ten temat? Czy niemożność wyrażenia się w piśmie w języku naturalnym, takim jak angielski, utrudnia pisanie dobrego kodu?


9
Nie wiem o umiejętnościach jako programista, ale za SPRZEDAJĄCĄ się jako programista, inteligentny = seksowny w świecie niezależnych. Dlatego, jeśli umiesz dobrze pisać (i mówić), będziesz postrzegany jako mądry i bardziej wiarygodny jako programista (choć może być całkowicie nieuzasadniony).
Dan Rosenstark,

Przez „nie można pisać” masz na myśli, że ich gramatyka jest nieprawidłowa? To prawdopodobnie większy problem niż rzeczy takie jak słaby przepływ itp.
Maks.

1
@Maxpm: Może, ale także niemożność przekazania swojego znaczenia na piśmie, pomimo poprawności gramatycznej.
gablin

Odpowiedzi:


30

Programowanie to coś więcej niż „pisanie kodu”. Duża część sukcesu programisty polega na komunikacji; Będąc w stanie komunikować się z klientami, rozumieć ich potrzeby, tłumaczyć ich w sferę techniczną, wyrażać ich w kodzie, a następnie tłumaczyć klientom wyniki.

Programiści, którzy mają trudności z wyrażaniem się na piśmie, mogą nie być w stanie ogólnie dobrze komunikować się, podczas gdy ci, którzy dobrze znają język i pismo, mogą przełożyć te umiejętności na kod, który piszą.

Myślę, że niemożność dobrego pisania, a tym samym dobrej komunikacji, powstrzyma kogoś przed byciem bardzo dobrym programistą.

Jak powiedzieli Jason Fried i David Heinemeier Hansson (z 37 sygnałów) w swojej książce Rework:

Jeśli próbujesz wybrać spośród kilku osób stanowisko, zatrudnij najlepszego pisarza.

Bycie dobrym pisarzem to coś więcej niż pisanie. Czyste pisanie jest oznaką jasnego myślenia. Wielcy pisarze wiedzą, jak się komunikować.


2
Tak, i myślę, że prawie wszyscy zgadzają się, że jedną z cech dobrego programisty jest umiejętność wyraźnego wyrażania się w kodzie, więc nie zaskoczyłoby mnie to, że zdolność do wyraźnego wyrażania się na piśmie jest skorelowana z umiejętnością wyraźnego wyrażania się w twoim kodzie (i odwrotnie). +1
n1ckp

2
Poparłbym to. Musisz się komunikować - nie tylko z maszyną. Ludzie wokół ciebie i programiści, którzy przychodzą po ciebie, potrzebują jasności w komunikacji, zarówno w mowie, jak i piśmie. Wypowiedziane, ponieważ prędzej czy później musisz porozmawiać z ludźmi, i napisane, ponieważ taki jest twój kod I TWOJE KOMENTARZE.
szybko_now

Uważam twoją odpowiedź za bardzo interesującą! Ale kiedy spojrzałem w przeszłość, aby dowiedzieć się, którzy byli najlepszymi programistami, z którymi pracowałem, pracowałem lub pracowałem dla mnie, stwierdziłem, że wielu z nich bardzo źle pisało. Były jednak absurdalnie dobre. Będę jednak pamiętać o twojej doskonałej odpowiedzi i wypróbuję ją w przyszłości. +1

15
  • Jeśli nie potrafisz wyjaśnić czegoś wystarczająco dobrze, prawdopodobnie nie rozumiesz go wystarczająco dobrze Bycie mądrym oznacza, że ​​będziesz pracować z innymi inteligentnymi ludźmi i będziesz musiał skutecznie się z nimi komunikować.
  • Każdy świetny pomysł, który masz, jest bezużyteczny, jeśli istnieje tylko w twojej głowie.
    Umiejętność skutecznego komunikowania swoich pomysłów jest oznaką wielkiego zrozumienia. Dotyczy to nie tylko dziedziny programowania.

4

Myślę, że jeśli przeanalizujemy pytanie, uzyskamy odpowiedź bezpośrednio:

Czy niemożność wyrażenia się w piśmie w języku naturalnym, takim jak angielski, utrudnia pisanie dobrego kodu?

Co to właściwie znaczy pisać dobry kod?

Programy muszą być napisane, aby ludzie mogli je czytać, a tylko przypadkowo, aby maszyny mogły je uruchomić.
- Abelson i Sussman, Struktura i interpretacja programów komputerowych

Oznacza to wyraźne, zwięzłe, prawidłowe i eleganckie pisanie w języku programowania.

Jedyną różnicą między umiejętnym wypowiadaniem się w języku angielskim lub języku programowania jest to, że angielski jest o wiele bardziej wybaczający.


3

Nie sądzę, że jest to poważna przeszkoda dla małpy kodowej (zakładam pewien podstawowy poziom / umiejętność wyrażania siebie w języku ojczystym). Myślę jednak, że może to szybko stać się poważną przeszkodą, ponieważ Ty (programista) musisz zacząć lepiej artykułować projekty / arch / plany dla nietechnicznych odbiorców. Z mojego doświadczenia wynika, że ​​kontaktowanie się z kimś innym, kto jest mniej więcej na tym samym poziomie technicznym co ja, jest dla mnie łatwiejsze i wymaga znacznie mniej (naturalnych) umiejętności językowych niż robi to, aby wyrazić coś klientowi i / lub menedżerowi. Z tego samego powodu, nawet jeśli jest to publiczność techniczna, ponieważ temat staje się mniej konkretny, osoba, która pisze na ten temat (lub mówi w tej sprawie), musi być dość wyraźna.


3

To zależy od tego, co rozumiesz przez „dobry kod”.

Jeśli masz na myśli kod, który po prostu działa, nie ma prawie żadnego związku między zdolnością do komunikowania się z ludźmi a zdolnością do komunikowania się z komputerami.

Jeśli masz na myśli kod, który działa, jest łatwy do utrzymania i wyraźnie wyraża jego intencję, istnieje absolutny związek między pisaniem dobrego kodu a pisaniem w języku przeznaczonym wyłącznie dla ludzi.

Chociaż nie potrzebujesz wszystkich różnych umiejętności, aby być dobrym pisarzem do pisania zrozumiałego kodu, wciąż istnieje kilka elementów, które muszą być tam, ponieważ oba będą czytane przez ludzi. Pod pewnymi względami jeszcze trudniej jest napisać dobry kod, ponieważ powinien opisywać intencję z kodem, nie używając konstrukcji, które działałyby źle podczas wykonywania przez komputer.


2

Chodzi o to, że kodowanie to także umiejętność komunikacji. Jack Ganssle w swoim e-biuletynie Embedded Muse niedawno zacytował Douga Abbotta:

Kiedy piszesz program, tak naprawdę robisz to komunikowanie się innemu człowiekowi, co chcesz, aby komputer zrobił. Programowanie dotyczy komunikacji, tak jak każda inna forma pisania. Tak więc, studenci informatyki powinni być narażeni na dobre pisanie. Ale ponieważ w informatyce jest go tak niewiele, być może potrzebują tylko podstawowych zajęć z kreatywnego pisania.

Programiści, którzy nie wiedzą, jak pisać prozę, prawdopodobnie również nie wiedzą, jak pisać kod.

Więcej na temat tego interesującego artykułu:

Czy złe pisanie odzwierciedla słabe umiejętności programistyczne?


2

Jest to całkowicie niepotwierdzone, ale:

Jednym z najlepszych programistów „gwiazdy rocka”, z jakim kiedykolwiek pracowałem, był bardzo biedny pisarz. A kiedy mówię „bardzo biedny”, mam na myśli typ, który spotkał się z tym, że był albo wyjątkowo pijany, albo ledwo umiał czytać - kiedy zobaczyłeś jego e-maile. Literówki, brak interpunkcji, trudności z wyraźnym wyrażaniem pomysłów, a także częste błędy ortograficzne („ich / ich” i tak dalej) obfitowały - czasami wręcz przerażająco. Czytam niektóre z jego e-maili - martwiłbym się tym, że bezpośrednio wysyła e-maile do klientów (nie musieliśmy tego robić w tej firmie) - ponieważ to sprawiłoby, że firma wyglądałaby źle!

Mimo to był programistą super gwiazd. O rząd wielkości bardziej produktywny i włączony niż średnio.

Nie jestem pewien, co z tym zrobić. Widziałem to kilka razy z różnymi ludźmi. Niektórzy po prostu nie mają talentu do siadania i pisania rzeczy. I często wydaje się, że nie wpływa to na ich talenty w innych obszarach (nawet stosunkowo pozornie podobne talenty „pracy z wiedzą”, takie jak programowanie). Można by pomyśleć, że będzie to połączone, ale widziałem kilka żywych przykładów takich jak ten, gdzie nie było. Chociaż wydaje mi się możliwe, że są one „ wyjątkami, które dowodzą reguły ” - prawdopodobnie po prostu nigdy nie pomyślałem o złych pisarzach, którzy nie są programistami, i dobrych pisarzach, którzy .


3
Zawsze są wyjątki od reguły. Pracowałem również z kilkoma - błyskotliwymi ludźmi, których nigdy nie pozwoliliśmy zbliżyć się do klienta, ponieważ zrobiono by z nich mięso mielone. Od wieków poprawiam literówki i tak dalej w ich dokumentacji. Daj im jednak problem techniczny, a przebłyski wglądu i rozwiązań były niesamowite. To wszystko pokazuje, że odpowiedzi tutaj są uogólnieniami. Jednak uogólnienia dotyczą większości ludzi.
szybko_now

3
@quickly_now: Zastanawiałbym się (ponieważ nie określiłeś), jak czytał ich kod. Mogą być bardzo sprytni i dobrze rozwiązywać problemy, ale jeśli ich kod jest nieczytelny, nie są świetnym programistą, jeśli chcesz mojej opinii.
n1ckp

@ n1ck: Teraz, kiedy o tym wspominasz, facet, o którym myślę, nie był zbyt dobry w dokumentowaniu swojego kodu. Sam kod był dobry i dobrze zaprojektowany, ale nie komentował z natury skomplikowanych fragmentów kodu, co oznaczało, że trudniej jest go utrzymać niż powinien. Nie myślałem o tym. :)
Tabele Bobby

Zgadzam się z @ n1ckp. Jestem również skłonny założyć się, że wybór przez niego nazw zmiennych / metod / klas byłby czasem tajemniczy i zagmatwany. Zazwyczaj uważam na programistów o wyjątkowo wysokiej wydajności, ponieważ często wiąże się to z kosztem spędzenia trochę dodatkowego czasu, aby poprawić długoterminową konserwację.
Rozczarowany

2

Jeśli nie potrafią dobrze pisać, to jak mogą cię przekonać , że są dobrymi programistami?


0

Czy ktoś, kto nie jest w stanie precyzyjnie wyrazić organizacji systemu lub idei, jest w stanie napisać, że mógłby napisać kod - to są dokładne instrukcje - poprawnie zinterpretowane przez (bardzo) głupi komputer?


Ale jeśli Twój kod nie jest poprawnie napisany, otrzymasz bardzo wyraźną i natychmiastową pętlę zwrotną z komputera. Podejrzewam, że mógłbyś mieć bardzo słabo napisany angielski i prawie nigdy o nim nie mówić, nie mówiąc już o opinii, którą musisz poprawić.
Carson63000,

Musisz nauczyć się być klarownym i poprawnym nawet z kompilatorem, ponieważ jeśli tego nie zrobisz, nigdy nie skompilujesz niczego na końcu.
Klaim,

0

Myślę, że dla programisty bardzo ważna jest dobra komunikacja, zarówno w mowie, jak i piśmie. Umiejętność przetłumaczenia pomysłu na słowa jest warunkiem wstępnym pisania kodu.

Bez względu na to, czy komunikujemy się z komputerem, czy z osobą, musimy układać słowa w kolejności zgodnej z zasadami gramatyki. Musimy poprawnie wymówić słowa lub przeliterować je, aby druga strona konwersacji je zrozumiała. Komputery będą zgłaszać błędy składniowe, współpracownicy powiedzą „CO?” lub pomijaj to, co mówi się jako głupi bełkot lub gorzej, irytującą rozrywkę.

Zdecydowanie odradzam zatrudnianie kandydatów, ponieważ nie mogli ukończyć myśli ani kontynuować tematu. Jedna osoba i tak została zatrudniona przez naszego szefa i okazało się, że nie był w stanie wykonać prostego zadania na czas, ponieważ jego uwagę rozpraszała jasna i błyszcząca nowa technologia lub zabawka.

Tak, ważne jest, aby programiści mogli dobrze się komunikować. Jeśli nie potrafią skutecznie komunikować się z człowiekiem, nie mogą tego zrobić z komputerem.


0

Biedni pisarze tworzą biednych pisarzy i nic więcej. Słaba umiejętność pisania nie oznacza wcale, że nie potrafią się porozumiewać, ale po prostu nie potrafią pisać ani dobrze wyrażać. Oczywiście każdy może powiedzieć, że umiejętność komunikacji jest ważna i kluczowa w firmie i tak dalej, ale to nie znaczy, że programista o słabych umiejętnościach komunikacyjnych nie może dobrze wykonać pracy. Programowanie i pisanie są sztuką, ale zupełnie innego rodzaju. Pisanie polega na tym, jak sprawić, by jakiś inny człowiek zrozumiał, co mówisz i / lub działał odpowiednio, ale programowanie nie sprawia, że ​​komputer rozumie twoje wymagania, ponieważ żaden komputer nie zrozumie żadnego wymagania użytkownika (przynajmniej w ciągu 100 lat od chwili obecnej IMO). Programowanie polega na tym, jak przełożyć wymaganie na język programowania i dlatego umiejętności pisania nie są tak powiązane.


1
Częścią pracy programisty jest wyraźne wyrażenie się w kodzie (i komentarzach), aby nie tylko komputer, ale także inni ludzie mogli czytać kod. Rozumie (ale nie jest to udowodnione AFAIK), że umiejętności te są skorelowane.
n1ckp,

0

Absolutnie nie!

Dobry pisarz to nic innego jak dobry pisarz. Poproś dobrego pisarza, aby opisał koncepcję bazy danych osobie nietechnicznej. Jak myślisz, co dostaniesz ...?

Dobry pisarz, pisze. Dobry programista pisze dobry kod.

  • Kod, który inni mogą przeczytać sześć miesięcy po jego opracowaniu.
  • Kod, który ma sens o 2:00 rano, gdy system się zepsuł i trwa debugowanie.
  • Kod, który wszyscy lubią pożyczać, ponieważ go rozumieją i mogą łatwo modyfikować
  • Kod działający 24/7 365

Miałem zamiar kontynuować, ale wolę spędzać czas na odpowiadaniu na inne posty. Myślę, że wiecie, jak stoję w tej sprawie.


1
Myślę, że punktory 1,2 i 3 wymagają, aby oprócz dobrego programisty być dobrym pisarzem. Zasadniczo rozważasz dobre umiejętności pisania jako ukrytą cechę.
Mamta D,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.