Opanowanie języka programowania bez programowania?

9

Informatyk Peter Norvig przekonywał w swoim eseju „ Naucz się programować za 10 lat” , że potrzebujesz około 10 000 godzin ćwiczeń.

Ale Jeff Atwood przekonywał w swoim poście How To Zostań lepszym programistą, nie programując , że uważa, że jedynym sposobem, aby stać się lepszym programistą jest nie programowanie.

Artykuły te są sprzeczne. Czy istnieją dowody naukowe potwierdzające podejście Jeffa Atwooda?

bywronski
źródło
12
Nie widzę, jak są w ogóle przeciwni, patrząc na tytuły. Oba są ważne, ale w rzeczywistości programują, a także pracują nad umiejętnościami nieprogramowymi wykorzystywanymi w pracy. Ani też nie mówi, że nie powinieneś robić tego drugiego. Każdy z nich mówi, że jedno jest ważne oprócz drugiego.
Servy
2
Proszę, przenieśmy meta komentarze do meta. meta.programmers.stackexchange.com/q/6137/53019

Odpowiedzi:

28

Nie rozumiesz sedna sprawy.

Jeff Atwood mówi, że bycie doskonałym programistą wymaga czegoś więcej niż tylko umiejętności kodowania. Wymaga to również bycia dobrym projektantem, dobrej współpracy z innymi ludźmi i ogólnie lepszym myśleniem i rozwiązywaniem problemów.

Największą brakującą umiejętnością jest osoba, która zarówno dobrze rozumie inżynierię, jak i ma dobre relacje z hardkorowymi inżynierami i łączy to z pracą z klientami.

- Bill Gates

Punktem Petera Norviga jest to, że nie można po prostu wybrać kopii „Zostań programistą w ciągu 24 godzin” i oczekiwać, że zadziała. Ale dokładnie tak wielu ludzi zadających pytania w Stack Overflow wydaje się zbliżać do programowania. Myślą, że mogą załadować Eclipse, nauczyć się kilku słów kluczowych i napisać kolejne Angry Birds. To zajmuje trochę więcej.

Robert Harvey
źródło
5
Nie, wściekłe ptaki to prawdopodobnie 2 lub 3 słowa kluczowe powtarzające się w muzeum z zabawnymi zdjęciami ptaków. Tak. To baza danych dla ornitologów, prawda?
Jimmy Hoffa
No cóż, ale w pewnym sensie punkt Petera Norvinga odnosi się do faktu „opanowania” niewiedzy powierzchownie (to jest centralny punkt jego artykułu) języka programowania. W rzeczywistości Peter i Jeff Atwood odnoszą się do „mistrza”. W ten sam sposób, w jaki opisujesz postawę Jeffa Atwooda, opisuję, że Peter Norving mówi, że bycie doskonałym programistą wymaga dużo kodowania (z ukrytymi tematami uczenia się) i praktyki.
bywronski
2
@ Wroński: Ach, wróciłeś, rozumiem! Miło cię znowu widzieć. Kiedy cię nie było, omawialiśmy twoje pytanie, zamykając je i otwierając ponownie. W każdym razie, więc co dokładnie mówisz? Peter Norving twierdzi, że nie możesz być mistrzem w 24 godziny, a nawet 21 dni. Jeff Atwood ma na myśli to, że nie można być mistrzem, pisząc tylko kod. Oboje mają rację.
Robert Harvey
@RobertHarvey Po co go zamykać i otwierać ponownie ?. Czy powinienem tłumaczyć artykuł Petera Norvinga, aby był dobrym „kodowaniem”, a artykuł Jeffa Atwooda, aby być dobrym „inżynierem”? Jestem trochę zmieszany.
bywronski
1
@Wronski: Masters są zarówno dobrymi programistami, jak i dobrymi inżynierami.
Robert Harvey
10

Część „Nie programowanie” powinna pojawić się po wielu praktykach programowania.

the only way to become a better programmer is by not programming

Najpierw musisz być programistą, aby stać się lepszym. Pierwsza bariera uczenia się języka programowania sama w sobie wymaga dużego wysiłku, a część rozwiązywania problemów będzie trywialna w porównaniu z problemami, z którymi będziesz musiał się później zmagać.

AKTUALIZACJA:

Jak zasugerowano w komentarzach, nadal możesz czerpać korzyści z „nieprogramowania aka: (myślenia)”, kiedy zaczynasz jako programista, ale nie odejdę od klawiatury tylko dlatego, że ktoś mówi, że powinienem to robić, aby się poprawić. powinieneś to zrobić, ponieważ wiesz, że musisz o tym więcej pomyśleć.

Korey Hinton
źródło
2
Być może. Ale umiejętności projektowe nie są tak dalekie, nawet gdy zaczyna się od pierwszego; a umiejętności ludzi są cenne, niezależnie od umiejętności kodowania.
Robert Harvey
@RobertHarvey Tak, ale artykuł Jeffa Atwooda wydaje się bardziej na temat rozwiązywania problemów i odejścia od komputera, aby pomyśleć o tym, co programujesz.
Korey Hinton
2
@KoreyHinton Który byłby całkowicie odpowiedni dla kogoś, kto zrobiłby to, rozwiązując swój pierwszy problem programowy. Możesz i powinieneś robić to od pierwszego dnia, a nie kiedy już jesteś biegły, tak mówi Robert.
Servy
1
@KoreyHinton Dlatego nikt (ani artykuł, ani żadna z osób, które tu odpowiadają) mówi, że powinieneś robić tylko jedno lub drugie. Mówią, że ważne jest, aby robić obie rzeczy, ponieważ umiejętności się uzupełniają.
Servy
1
@ Wroński Myślę, że Robert argumentuje przeciwnie, że umiejętności nieprogramowych można nauczyć podczas pierwszej nauki programowania. Zgadzam się z tym również, ale cieszę się, że osobiście nie nadmiernie skomplikowałem procesu uczenia się na początku. Skupiłem się na tym, jak wspomniałeś, priorytetem były umiejętności programistyczne, najpierw umiejętności myślenia, a teraz ciągle staram się je poprawić.
Korey Hinton