Czy spędzanie czasu na Programmers.SE lub Stack Overflow może zastąpić dobre książki programistyczne dla początkujących? [Zamknięte]


44

Mógłbym spędzić czas (i aktywnie uczestniczyć) w Programmers.SE i Stack Overflow pomóc mi poprawić swoje umiejętności programistyczne w przybliżeniu do tego, co pomoże spędzić czas na czytaniu książki takiej jak Code Complete 2 (która w przeciwnym razie byłaby następna na mojej liście lektur).

Ok, może być odpowiedź na to pytanie dla kogoś, kto zaczyna od programowania, może być proste nie, ale chciałbym dodać, że to pytanie zadaję w kontekście, gdy osoba zna języki programowania, ale chce poprawić jego umiejętności programistyczne. Czytałem to pytanie na temat SO, a także tę książkę poleciło wielu innych (w tym Jeff i Joel ).

Mówiąc dokładniej, dodam również, że chociaż programuję w C, Javie, Pythonie itp., Ale nadal nie jestem zadowolony z moich umiejętności kodowania i czytania recenzji CC2, zdałem sobie sprawę, że nadal muszę wiele poprawić .

Zasadniczo chcę wiedzieć, jaki jest najlepszy sposób na poprawę umiejętności programistycznych - spędzaj więcej czasu tutaj / SO lub kontynuuj CC2 i może być tu, kiedy tylko pozwoli na to czas.



1
To zdecydowanie przytłaczające dla początkującego programisty.
surfasb

Odpowiedzi:


102

Nie, to nie jest substytut, ale idealne uzupełnienie . Wydaje mi się, że połączenie tych dwóch cechuje dużą moc.

Dlaczego dobry wykład uczy Cię czegoś więcej niż tylko czytania książki? Interakcja i umiejętność zadawania pytań.

Czytając książkę, mogą pojawić się pytania, na które nie znajdziesz odpowiedzi. Poszukaj tych pytań tutaj lub zapytaj, czy nie były wcześniej omawiane.


+1 za doskonałe uzupełnienie. Mogę sobie tylko wyobrazić, jak wyglądałyby lata osiemdziesiąte, gdyby SE lub SO były w pobliżu. są świetnymi zasobami.
Michael Riley - AKA Gunny

1
+1 jako idealny komplement dla idealnego uzupełnienia. Tylko czytanie „rzeczywistym świecie” pytania i próby odpowiedzi (lub powielać rozwiązań dotychczasowych odpowiedzi) są świetne mini-kata, aby zwiększyć umiejętności, wiedzy i intuicji
Dave Newton

Co więcej, umiejętność wyrażania problemów i rozwiązań w łatwo zrozumiałym i dostępnym kanale poprawia twoje umiejętności programistyczne, a także poprawia umiejętności komunikacyjne.
surfasb

+1 (ponownie) dla idealnego komplementu. Codziennie czytam P.SE. Nie zawsze czytam wszystkie odpowiedzi, ale czytam większość pytań i najważniejsze odpowiedzi. To świetny sposób, aby zastanowić się nad rzeczami w dziedzinie, których w innym przypadku nie spotkasz. Czasami widzę coś w pytaniach i odpowiedziach, które nie są bezpośrednio związane z tym, co robię, co w końcu też jest przydatne, co jest miłe.
Andy Hunt

12

Jestem (obecnie) członkiem StackOverflow od 1 roku i 10 miesięcy. W tym czasie stałem się zdyscyplinowanym studentem sztuki: znającym architekturę, wzorce, odsprzęganie, testowanie jednostkowe, a lista mogłaby trwać ... ale jaką rolę odegrała TAK ?

Po pierwsze, odpowiedział na moje bezpośrednie pytania. Ale kiedy zacząłem odkrywać SO, odkryłem, że byłem bardzo złym programistą. Pragnąc być rzemieślnikiem w moim rzemiośle, kupiłem książki ... ale nie potrzebowałem C # Unleashed, Learn C # Programming lub innego niestandardowego tekstu dla początkujących. Kupiłem odpowiedni rodzaj książek, które wskazywały, że obszary umiejętności okazały się wadliwe. Oczywiście nie spieszyłem się z tym, co zalecili eksperci od SO.

Po drugie, SO dało mi miejsce do dalszego uczenia się od tych, którzy (reprezentowani przez reputację) naprawdę wiedzą, co robią - syntaktycznie i filozoficznie. Istnieje pewna wiedza na temat SO, CodeReview i programistów, których po prostu nie można uzyskać z książki.

Oczywiście SO nie może zastąpić książek ani wszystkich innych zasobów internetowych (chociaż, gdybym mógł połączyć MSDN i SO w jeden zasób treści ...); zamiast tego SO uzupełnia te inne zasoby. Jednak najlepszym nauczycielem pozostaje doświadczenie .


11

Jaki jest najlepszy sposób na poprawę umiejętności programowania?

Programowanie więcej. Czytanie książek i stron internetowych ma drugorzędne znaczenie.

Najlepiej uczysz się, robiąc.


17
Tak i nie. Zrobić więcej można zrobić bez uczenia się więcej. Mógłbym programować w określonym języku rok po roku i nie uczyć się niczego nowego. Czytanie i szkoła uczy rzeczy poza „strefą komfortu”. Za mało, aby głosować negatywnie, ale nadal nie jest to dobry komentarz.
WernerCD,

1
Prawda jest taka, że ​​dużo programowałem bez nauki. Więc stworzyłem strony internetowe w PHP bez znajomości obiektów i korzystania ze środowiska. Musisz odejść od kodu i iść się uczyć
Bojan Kogoj,

@ Werner - bardzo prawda. Chciałem „zaprogramować więcej” w sensie „znaleźć coś, co chcesz zbudować, i zbudować to, najlepiej w nowy sposób, aby nauczyć się czegoś nowego”
Humphrey Bogart

Pamiętam, kiedy byłem stażystą, „nauczyciel” w pracy czasami dawał nam zadania programistyczne, oczekując, że najlepiej się nauczymy, robiąc to. Problem polegał na tym, że bez względu na problem często nie byliśmy jeszcze na tym poziomie. A kiedy ktoś zadałby jej pytanie, wciąż powtarzała: „Och, to takie proste! Musisz to rozgryźć. W ten sposób najlepiej się uczysz”. Minęło kilka godzin, a my przeglądaliśmy dokumentację, próbowaliśmy rzeczy itp. Kiedy w końcu powie nam odpowiedź ...
Panzercrisis

... byłoby to coś, czego po prostu nie dostalibyśmy informacji niezbędnych do zrozumienia . Znalezienie niezbędnych informacji zajęłoby cały tydzień lub dłużej, gdy nie mieliśmy czasu, a czasem informacje te nie były dostępne ani dla nas, ani dla ogółu społeczeństwa. Wystarczy powiedzieć, że instrukcja jest bardzo ważna, a po prostu mówienie komuś, by sam coś wymyślił, jest dobre, gdy tylko jest gotowy i do tego poziomu.
Panzercrisis

5

Nauka wymaga pewnych składników:

  1. Uczeń (którym oczywiście jesteś)
  2. Czas (który powinieneś zarządzać i poświęcić)
  3. Zasoby (z których strony SE to tylko niewielka część)

Czy jesteś dobrym uczniem? Czy spędzasz wystarczająco dużo czasu na nauce? Jeśli odpowiedź na te 2 pytania brzmi „ tak” , oznacza to, że masz już wystarczający potencjał, aby uczyć się niemal z dowolnego źródła.

Ale aby odpowiedzieć na twoje pytanie, tak, osobiście wiele się nauczyłem z witryn SE. IMHO nie powinny stać się twoim jedynym źródłem nauki, ale są korzystne.


5

Dwie rzeczy, które oferują SO i P.SE, które nie oferują ani czytania innych książek, ani pisania kodu: testowanie i nauczanie. Jeśli po prostu ślepo zadajesz pytania takie jak

Dlaczego to się nie kompiluje

wall
of
code
100
lines
long

I ktoś mówi „w wierszu 33, że przecinek powinien być średnikiem”, a ty akceptujesz odpowiedź i kontynuujesz i nadal zadajesz te same pytania na zawsze, to możesz nie poprawić.

ALE, jeśli czytasz pytania innych ludzi, zastanawiasz się nad odpowiedzią, obserwujesz, jakie odpowiedzi się pojawiają i jak porównują się do tego, co wiesz, to naprawdę cię poprawi. Jeśli wpiszesz kod do swojego ulubionego edytora i spróbujesz kilku rzeczy, aby zobaczyć, jaka jest odpowiedź, to naprawdę cię poprawi. A kiedy zaczniesz próbować wyjaśniać pojęcia (a ludzie czekają tam, aby „wyjaśnić”, co mówisz), to również cię ulepszy.

Od około 30 lat odkryłem, że nigdy nie uczę się tak dobrze, a kiedy, wierząc, że go znam, postanowiłem go uczyć. Dla mnie jest to główny wkład stron * .se w moje umiejętności programistyczne. Dodatkowo, kiedy chcę tylko poznać prosty fakt, to moje miejsce numer jeden do patrzenia (lub od czasu do czasu pytam).


3

Twoje umiejętności programowania są poprawiane najlepiej nie poprzez czytanie stron internetowych lub książek, ale przez powtarzanie

  1. pisać kod na podstawie aktualnej wiedzy
  2. oceń wynik
  3. ucz się na podstawie oceny tego, co robić, a czego nie robić.
  4. przejdź do 1

Praktyka czyni mistrza. To, co wygląda ładnie na blogu lub w książce, może okazać się nieporęczne w użyciu z jakiegoś powodu niezrozumiałego dla autora bloga lub tego, którego autor książki nie opisał.


2
Książki (i blogi oraz SO) mogą narazić Cię na koncepcje, których sam nie wymyśliłeś, ale możesz stać się lepszym programistą, pisząc kod.
Annika Backstrom

2
Z drugiej strony, jeśli nigdy nie zwrócę uwagi na porady zewnętrzne, nie posunę się zbyt daleko. Inni nauczyli się na własnej skórze i głupotą byłoby nie uczyć się na ich doświadczeniach. Jasne, nie polegaj wyłącznie na czytaniu i słyszeniu, ale nie popełniaj błędu, próbując uczyć się bez pomocy innych.
Phil

odczyt zewnętrzny idzie w # 2

czytanie zewnętrzne jest konieczne, aby odkryć nieoczywiste, unikalne lub zaawansowane funkcje dla określonej techniki lub języka programowania lub bibliotek. Są to rzeczy, które nie są absolutnie niezbędne do wykonywania jakichkolwiek zadań, ale mogą poprawić sposób, w jaki to robisz (np. Metaprogramowanie). Ponieważ nigdy nie są absolutnie konieczne, ludzie rzadko szukają ich na drodze samych eksperymentów.
Lie Ryan,

2

Jak sam odpowiedziałeś, nie, ale spędzanie czasu tutaj jest przydatnym dodatkiem do bardziej ustrukturyzowanego uczenia się. Nie zależałbym od tego samodzielnie, ponieważ w niektórych koncepcjach mogą występować luki, które mogą nie zostać uwzględnione. Jednym z najlepszych sposobów na poprawę kodowania dla facetów na poziomie średnim jest czytanie innego dobrego kodu programisty przez spędzanie czasu na GitHub lub innym repozytorium open source.


1

Krytyczna myśl i analiza są nadal wymagane

Sam w sobie nie. Jedynym sposobem na zdobycie źródła nauki (książka, blog, strona internetowa, SO itp.) Jest zrozumienie, analiza, a następnie ponowne włączenie. To, co ludzie piszą na takich forach, nie jest ewangelią i nie powinno być traktowane jako takie bez względu na to, ile głosów ma. Musisz wykonać własną analizę opinii, aby dowiedzieć się, czy jest to:

  1. Dobry pomysł
  2. Pomysł odpowiedni do twojej sytuacji

Najlepszy sposób na poprawę

Jest często specyficzny dla danej osoby. Niektóre osoby stają się lepsze dzięki czytaniu i badaniom. Niektórzy ludzie stają się lepsi poprzez zabawę i eksperymenty. Inne mogą się nawet poprawić dzięki autorefleksji i analizie. Spróbuj tego, co ci się podoba i sprawdź, czy to działa lepiej.


0

Nauka języka Java stała się znacznie łatwiejsza, gdy dowiedziałem się o przepełnieniu stosu. Nie zadawałem pytań, ale zacząłem codziennie czytać pytania Java. Wiele pytań było poza moim zrozumieniem, ale od czasu do czasu ktoś zadawał pytanie początkującym. Wiele osób pyta o koncepcje, które czytają z książki, ale ich nie rozumie, i uzyskuje tutaj o wiele bardziej zrozumiałą odpowiedź, często z niewielką próbką kodu w celu dalszego wyjaśnienia problemu.

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.