Czy amator może zostać dobrym programistą? [Zamknięte]

46

Profesjonalny programista zatrudniony w pełnym wymiarze godzin może wykonać świetną robotę, stale ucząc się ze swojej pracy. Jak programista amator może trenować, aby zostać dobrym programistą?

** Jeśli lubisz grać lub śpiewać, możesz to zrobić, ponieważ jest to twoje hobby i jesteś zainteresowany, i możesz stać się dobrym piosenkarzem lub odtwarzaczem muzyki. Ale nie musisz stać się profesjonalnym piosenkarzem ani zarabiać na życie. Czy dotyczy to również programistów? Każdy programista amator, który jest sławny?

Ted Wong
źródło
3
Dobrze. Więc Woźniak nie był dobrym programistą, dopóki pierwszy Apple nie został sprzedany (i w ten sposób stał się „profesjonalistą”).
KeithS
Zdefiniuj „dobry” ..
2
Każdy „dobry” programista był kiedyś amatorem.
spudwaffle 25.10.11

Odpowiedzi:

84

Kluczem do bycia naprawdę dobrym jest praca w dobrym zespole. Wielu amatorów pracuje samotnie, więc docierają tylko tak daleko. W zespole uczysz się od innych i stajesz się zdyscyplinowany, ponieważ twoi rówieśnicy uderzą cię tym, co przyda się inaczej.

Z tego powodu proponuję dołączyć do zespołu, np. Projekt open source lub zrobić projekt hobby z przyjaciółmi.

użytkownik 281377
źródło
9
+1 Za pracę w dobrym zespole. Posiadanie w zespole osób o równie wysokich lub wyższych umiejętnościach jest niezwykle motywujące.
BenR
Zapomniałem o drużynie na mojej liście „pułapek”, +1
keppla
2
+1 Myślę, że to jest klucz: uczyć się od dobrych ludzi, którzy mają więcej doświadczenia niż ty. Dołączenie do dobrego zespołu jest jednak dużo łatwiejsze do powiedzenia niż do zrobienia.
1
+1 za dobry kawałek zespołu. Jeśli zespół nie jest tak dobry ani lepszy od ciebie, nie uczysz się.
Spencer Rathbun
4
Nie musisz być w zespole, aby uczyć się od innych ludzi.
Emanuil Rusev
53

Droga do dobrego programowania jest taka sama, jak w przypadku śpiewania lub grania muzyki: ćwiczenie, ćwiczenie, ćwiczenie. Jeśli poświęcisz wystarczającą ilość czasu na regularne tworzenie oprogramowania przez kilka lat, istnieje duże prawdopodobieństwo, że będziesz w tym dobry - czy to w godzinach pracy, czy poza nimi.

Teraz, poza spędzaniem więcej czasu na ćwiczeniach, istnieje jeszcze jeden powód, dla którego profesjonaliści stają się w pewnym sensie lepsi od amatorów (zarówno w muzyce, jak i programowaniu). Jeśli jesteś profesjonalistą, musisz wykonywać zadania, które niekoniecznie ci się podobają, ale należą do szerszego zadania tworzenia oprogramowania (np. Testowanie, dyskusje z klientami, pisanie dokumentacji, konfigurowanie środowiska deweloperskiego / kompilacji, pisanie skryptów kompilacji itp. ). I od czasu do czasu jesteś zmuszany do wkroczenia w nieznane obszary, do nauki nowych języków lub platform. Jako amator nie jesteś zmuszony do robienia czegokolwiek, czego nie chcesz, co sprawia, że ​​prawdopodobnie pozostaniesz w strefie komfortu przez większość swojego życia. Innymi słowy, możesz łatwo ograniczyć się do jednego lub kilku konkretnych obszarów, które najbardziej lubisz,

OTOH również wpada w to wielu profesjonalnych programistów, pozostając w tej samej firmie, wykonując tę ​​samą rutynową pracę, prawie nie ucząc się niczego nowego przez dziesięciolecia ... Więc kluczem do poprawy jest twoje podejście. Jeśli będziesz się uczył i świadomie szukałeś możliwości wyjścia ze swojej strefy komfortu na nowe, nieznane terytorium, w końcu osiągniesz lepsze wyniki niż roje powoli skamieniałych „profesjonalistów”. Dobrym sposobem może być przyczynienie się do niektórych projektów typu open source.

Zalecana lektura to Pragmatyczny programista: Od czeladnika do mistrza , z mnóstwem świetnych i bardzo praktycznych porad na temat tego, jak być coraz lepszym.

Péter Török
źródło
3
+1 Malcolma Gladwella zasada 10.000 godzin z en.wikipedia.org/wiki/Outliers_(book)
StuperUser 24.10.11
Chociaż profesjonalista musi wykonywać nieprzyjemne prace, jest z tego jeszcze jedna strona - te nieprzyjemne prace są często nudnymi, żmudnymi pracami, które niewiele uczą. IOW amator często może dowiedzieć się więcej w tym samym czasie, wybierając interesujące projekty. ALE jedną ważną lekcją jest oczywiście to, że musisz być przygotowany do wykonywania nudnej i żmudnej pracy. Szczególnie podoba mi się twój „wkład w projekty open source”, ponieważ oznacza to pracę z innym kodem - uczenie się na przykładach, jak czytać nieznany kod itp.
Steve314
@StuperUser twój link jest uszkodzony (drugi nawias nie jest zawarty w hiperłączu).
Paperjam
Jedne z najlepszych rad, jakie kiedykolwiek przeczytałem: „Jeśli chcesz zostać porządnym artystą, rysuj. Każdego ranka zrób szkic, nic nie poradzisz, ale stajesz się lepszy”… znajdź projekt… jest mnóstwo nie- istnieje zysk, który potrzebuje pomocy. Poproś o radę („Buduję system fakturowania, od czego zacząć?”, „Jak obsługiwać zabezpieczenia kontekstowe?” itp.). Koszt awarii jest niski, a możesz po prostu dostać z tego płatny koncert.
Bobby D
@ Steve314, lepsi specjaliści napiszą narzędzia do automatyzacji przyziemnych, żmudnych zadań. Używając odpowiednich narzędzi do właściwej pracy, skróciłem czas na niektóre zadania setki razy. (Nawet lepsze narzędzia byłyby w stanie całkowicie zautomatyzować to zadanie, ale osiągnąłem równowagę wysiłku w pisaniu narzędzi i oszczędności czasu.)
22:43
18

Ale dla programisty amatora, jak można trenować, aby zostać dobrym programistą?

Stajesz się lepszy poprzez naukę, która częściowo polega na robieniu, a część na refleksji nad tym, co zostało zrobione.

Zasadniczo więc nie ma różnicy między hobbystą a profesjonalistą, ale pułapki są nieco inne.

Pułapki amatorskie są, imho

  • potrzeba ukończenia projektu, bez względu na wszystko, nie jest tak silna, gdy nie jesteś profesjonalistą . To może być dobra rzecz, ponieważ nie przyzwyczaisz się do cięcia zakrętów, jeśli chodzi o jakość, ale wykończenie (w ogóle! Na czas jest jeszcze lepsze) to bardzo ważna umiejętność, którą trudniej trenować jako amator, ponieważ łatwo jest pozwolić umrzeć projektowi i rozpocząć inny.

  • potrzeba dobrej komunikacji nie jest tak silna. W profesjonalnym projekcie istnieje silna motywacja, aby naprawdę zrozumieć klientów, nawet jeśli całkowicie nie są w stanie sformułować tylko jednego spójnego zdania na temat tego, jaki problem chcą rozwiązać. Jeśli je źle zrozumiesz lub (jak zwykle) nie zauważysz, że nie mówią o czymś, co musisz zrozumieć, to prędzej czy później stanie się twoim problemem. Projekt amatorski może z łatwością stracić wszystkich potencjalnych użytkowników z powodu nierozwiązania ich problemów i zostać „zakończony” technicznie.

Profesjonalne pułapki są

  • często motywacja do poprawy jest niewielka . Jesteś tam przez 40 godzin / tydzień, bez względu na to, czy znajdziesz lekarstwo na raka, czy po prostu pijesz kawę w sposób, który wygląda produktywnie. Uczenie się jest czymś, co robisz głównie dla siebie i często, jeśli spróbujesz zastosować to, czego się nauczyłeś, istnieją siły, które działają przeciwko temu (konserwatywne myślenie grupowe, hierarchie, a nawet przewodniki po stylach mogą być używane jako broń przeciwko ulepszeniom). Zawód wymaga dużo miłości, aby po prostu się nie poddać, zlikwidować godziny i szukać alternatywnych celów w życiu.

  • często niewiele można się nauczyć . Tak, jeden MOŻE spróbować potraktować wszystko jako wyzwanie, ale musimy być szczerzy: po 1 roku kodu Spaghetti nie można refaktoryzować („komplikujesz!”) W języku, który masz więcej lat doświadczenia, które prawdopodobnie nie będą trwać, jedyne, czego się uczy, to budowanie tolerancji wobec frustracji i polityki korporacyjnej.

Jeśli grasz muzykę lub śpiewasz, możesz grać dla interesu, nadal możesz stać się dobrym piosenkarzem lub odtwarzaczem muzycznym, ale nie musisz stać się profesjonalnym piosenkarzem lub śpiewać dla życia.

Oczywiście nie musisz, ale ilu muzyków odmówiłoby okazji do rzucenia pracy i zarabiania na swojej muzyce?

W IT te możliwości są nieco bardziej prawdopodobne niż w muzyce, dlatego myślę, że nie jest niemożliwe, aby stać się sławnym amatorem, ale często amatorzy wykonują swoją pasję (z podobnymi problemami, kiedy muzycy muszą ustalić ich granicę między handlem a sztuką)

keppla
źródło
To boli moją duszę, to tak prawdziwe dla mnie atm, lol. 1 rok kodu Spaghetti, którego nie można refaktoryzować („komplikujesz to!”)
Terrance
1
„często motywacja do poprawy jest niewielka”. gdybym kiedykolwiek miał pracownika, który traktowałby tworzenie oprogramowania w ten sposób, wolałbym zwolnić go niż osobę, która próbuje zrobić to lepiej, nawet jeśli nieumyślnie zepsuć rzeczy.
@Chris Marisic: chętnie bym z tobą współpracował. niestety
byłbyś
8

Obawiam się, że jest więcej możliwości nauki dla amatorów niż dla pełnoetatowych korporacyjnych dronów. Jako amator nie jesteś ograniczony żadną technologią, środowiskiem, projektowaniem i metodologią rozwoju. Możesz robić wszystko, co uznasz za przydatne dla rozwoju osobistego. Jako programista pracujący w pełnym wymiarze godzin prawdopodobnie będziesz pracować nad tym samym produktem od lat, stosując tę ​​samą procedurę, ograniczoną tymi samymi wytycznymi korporacyjnymi. Dla większości z nas jest to stagnacja. Po zapoznaniu się z podstawowymi podstawami można się trochę nauczyć ze środowiska korporacyjnego.

Dlatego wielu programistów pracujących w pełnym wymiarze godzin jest także amatorami, kodują po pracy, bawią się własnymi projektami zabawek - to jest trochę swobody niezbędnej do rozwoju.

Logika SK
źródło
6

Jako programista amator masz dziś wiele możliwości, aby poprawić swoje umiejętności. Wykonałem następujące czynności, aby poprawić swoje umiejętności podczas nauki inżynierii oprogramowania.

Oczywiście musisz także zastosować swoją wiedzę. Zrób to poprzez staż, projekt z przyjaciółmi lub kurs nauki. Istnieje wiele sposobów na poprawę siebie, po prostu chcesz zainwestować swój wolny czas. Miłej zabawy ucząc się czegoś nowego !

BenR
źródło
4

Czy amator może zostać dobrym programistą?

Tak, jest to możliwe , jednak zajmuje to dużo czasu:

rozwinięcie wiedzy specjalistycznej w wielu różnych dziedzinach, w tym gra w szachy, kompozycje muzyczne, operacja telegraficzna, malarstwo, gra na pianinie, pływanie, tenis i badania w dziedzinie neuropsychologii i topologii zajmuje około dziesięciu lat. Kluczem jest celowa praktyka: nie tylko powtarzanie tego w kółko, ale stawianie czoła wyzwaniu, które wykracza poza twoją obecną zdolność, wypróbowywanie go, analizowanie wydajności podczas i po wykonaniu oraz poprawianie błędów. Następnie powtórz. I powtórz jeszcze raz.


Jak programista amator może trenować, aby zostać dobrym programistą?

Ponownie z tego samego źródła :

  • Zainteresuj się programowaniem
  • Program
  • Porozmawiaj z innymi programistami
  • Jeśli chcesz, oddaj cztery lata na studia
  • Pracuj nad projektami z innymi programistami
  • Pracuj nad projektami po innych programistach
  • Naucz się co najmniej pół tuzina języków programowania
BЈовић
źródło
Często nie daje +1 odpowiedzi zawierających tylko linki, ale ten artykuł jest wart przeczytania. Dzięki.
sarnold
czy mógłbyś wyjaśnić to bardziej szczegółowo - jak i dlaczego odpowiada na zadane pytanie? „Tylko odpowiedzi” nie są mile widziane na Stack Exchange
gnat
1
@gnat Link mówi wszystko - mam nadzieję, że po edycji lepiej.
BЈовић
3

Jako amator masz więcej możliwości poszukiwania lepszych praktyk niż wielu profesjonalistów. Specjaliści są często pod presją, by „po prostu załatwić sprawę”.

Nie widziałem żadnych kursów, na których uczyłem się programowania, ale nauczyłem się z krótkich (1-3 godzinnych) bezpłatnych kursów prezentowanych przez uniwersytet, na którym uczestniczyłem. Miały one na celu umożliwienie przedsiębiorcom zrozumienia kodu napisanego dla nich. Kursy prezentowały bardzo dobrze napisany kod (wraz z komentarzami), który rozwiązał powszechny problem z życia. Kod został następnie przejrzany wraz z objaśnieniem funkcji języka i tego, dlaczego zostały użyte w sposób, w jaki się znajdowały. Żaden z pełnych kursów językowych, które widziałem, nie skutkuje kodem zbliżonym do jakości tego, czego się nauczyłem z tego kursu. Minęło kilka lat, zanim zacząłem studiować informatykę.

Internet i biblioteka zapewniają wiele zasobów i przykładów. Uważam, że wiele przykładów nie nadaje się do niczego poza robieniem tego. Patrząc na przykłady, najpierw spójrz na kod. Czy potrafisz zrozumieć cel i strukturę bez wyjaśnienia? Jeśli tak, być może znalazłeś dobry przykład.

Niektóre kluczowe praktyki, których powinieneś się nauczyć i zastosować:

  • SUCHO (nie powtarzaj się).
  • DRO (Don't Repeat Other); Używaj standardowych bibliotek językowych, używaj innych bibliotek.
  • Prosty kod. Elegancki kod jest trudniejszy w utrzymaniu. Co gorsza, optymalizatory często wytwarzają wolniejszy kod maszynowy niż w przypadku prostszego kodu.
  • Moduły powinny mieć tylko jeden cel. (Lepiej, jeśli celem jest praca lub podejmowanie decyzji).
  • Używaj dobrych nazwisk. Nie używaj krótkich nazw, aby uniknąć pisania, zamiast tego użyj IDE z autouzupełnianiem. Poznaj konwencje nazewnictwa swojego języka.
  • Nie optymalizuj kodu. Poczekaj, aż będziesz mógł zmierzyć jego wydajność i wiedz, że optymalizacja będzie miała zauważalny efekt.
  • Ucz się. Naucz się identyfikować zasoby, które zapewnią przydatne informacje, z których możesz teraz korzystać.
BillThor
źródło
2

Jeśli lubisz grać lub śpiewać, możesz to zrobić, ponieważ jest to twoje hobby i jesteś zainteresowany, i możesz stać się dobrym piosenkarzem lub odtwarzaczem muzyki. Ale nie musisz stać się profesjonalnym piosenkarzem ani zarabiać na życie. Czy dotyczy to również programistów? Każdy programista amator, który jest sławny?

Ani trochę. To inżynieria oprogramowania . Nie opiera się na „naturalnym talencie”. Bycie świetnym programistą opiera się na latach edukacji i wieloletnim doświadczeniu . Pracujesz tylko przy prawdziwych projektach .

vartec
źródło
2
W rzeczywistości jest to w znacznym stopniu naturalny talent. Nie możesz wyszkolić biednego inżyniera oprogramowania, aby był świetny, ale ogólnie możesz wyszkolić każdego, aby był dobry. To bardzo podobny do talentu muzycznego lub artystycznego, możesz wyszkolić prawie każdego, aby być całkiem dobrym, ale nie możesz wyszkolić nikogo, aby był świetny, oni trenują siebie i prawdopodobnie są lepsi niż ŻADNY ze swoich trenerów. Podobnie jak światowej klasy sportowcy, niewielu spotkało światowej klasy talent programistyczny, co może wyjaśniać, dlaczego większość programistów nie wie, że istnieją :)
Bill K
2

Podczas rozmów o pracę, w których byłem (po stronie pracodawcy), zawsze prosiłem o rzeczy, które programista przeprowadzał jako amator (z wyjątkiem zadań szkolnych) - zrobienie tego jest pewnym znakiem prawdziwego zainteresowania w tej dziedzinie i posiadania pasja do nauki na własną rękę. Jest to nie tylko możliwe, ale prawie wymagane, aby stać się dobrym.

Imre
źródło
2

Czy to możliwe? Tak. Im więcej czasu poświęcisz na programowanie, tym więcej czasu będziesz musiał na tym poprawić. Mówi się, że potrzeba 10 lat / 10 000 godzin celowej praktyki, aby rozwinąć wiedzę specjalistyczną w zakresie umiejętności technicznych. To nie 10 000 godzin pisania tego samego rodzaju kodu w strefie komfortu (np. Pisanie prostego kodu jQuery dla różnych stron internetowych), ale 10 000 godzin nauki / czytania o programowaniu / czytaniu kodu źródłowego / pisania kodu źródłowego / nauki innych języków / praca z innymi itp.

Jeśli zamierzasz poświęcić mu ten czas; równie dobrze możesz dostać pracę jako programista i porzucić status amatora. (Chyba że jesteś niezależnie bogaty).

dr jimbob
źródło
1

Wszyscy są amatorami we wszystkim w jednym punkcie. Jeśli chcesz zostać dobrym programistą i lubisz to robić, to zrobisz. Kluczem jest samodzielne programowanie. Szkoła nauczy Cię prawie nic. Większość nauki będzie się odbywać samodzielnie i w pracy. Jeśli chcesz być dobry, idź bądź dobry.

Yatrix
źródło
1

biorąc pod uwagę prawdziwe oryginalne znaczenie tego słowa (francuski amator „miłośnik”, ze starofrancuskiego i ostatecznie z łacińskiego amatora nom. amator , „kochanek” - Wikipedia), chciałoby się wierzyć, że wielu profesjonalistów to także amatorzy. Jeśli nie kochasz swojego rzemiosła, czy ćwiczysz go?

Oczywiście jest to możliwe - jeśli kochasz programowanie, poćwiczysz je i z czasem staniesz się w tym dobry. (Może nigdy nie świetnie, biorąc pod uwagę osobiste talenty lub ich brak), ale przynajmniej dobre

StevenV
źródło
Prawdziwe znaczenie amatora to znaczenie, które znajdziesz w OED lub NOAD. Etymologia słowa nie dyktuje jego znaczenia. „Osoba, która zajmuje się zajęciami, nauką, nauką lub sportem raczej jako rozrywkę niż zawód”.
Django Reinhardt
prawdziwe. może powinienem był napisać „oryginalne znaczenie” zamiast „prawdziwe znaczenie”. Szkoda, że ​​nasz obecny język nie ma wspólnego słowa „ludzie, którzy coś robią, bo naprawdę to lubią”. Myślę, że pomogłoby to odpowiedzieć na pytanie PO: „Czy amator może zostać dobrym programistą?” Oczywiście jest to możliwe - jeśli kochasz programowanie, poćwiczysz je i z czasem staniesz się w tym dobry. (Może nigdy nie świetnie, biorąc pod uwagę osobiste talenty lub ich brak), ale przynajmniej dobre.
StevenV,
0

Nie wiem, co to określa dobrego programistę. Ale uczenie się czegoś własnego i praca z grupą ludzi to coś innego. Namiętni programiści amatorzy naprawdę uczą się nowych rzeczy i hakują. Tam znaleźli rzeczy bardziej interesujące. Ale praca z grupą ludzi jest nieco zdyscyplinowanym działaniem, w którym współpracujesz, komunikujesz się, dzielisz / zdobywasz informacje od ekspertów w tej dziedzinie.

Ale zdobywanie wiedzy to tylko kwestia pasji. Są ludzie, którzy spędzili noce na samodzielnym uczeniu się różnych rzeczy, a na koniec przynieśli coś nowego na świecie, jak Bill G Mark Zuck itp. Trudno to porównać. ale jeśli chcesz być lepszym inżynierem oprogramowania (nie zadzwonię do programisty), dołącz do firmy lub pracuj nad dobrymi produktami, z których korzystają inni.

Na koniec przeczytaj dużo, aby poprawić swoje umiejętności, nastawienie, aktualizacje branżowe, rozwinąć gust i iść z pasją. Rzeczy z łatwością podążą za tobą!

sarat
źródło
Zarówno Bill Gates, jak i Mark Zuckerberg studiowali informatykę na Hardvard, dopóki nie założyli własnej firmy i nie porzucili nauki. To nie jest dobry przykład amatorów .
vartec
Wątpię, czy Harvard odegrał ważną rolę w rozwijaniu umiejętności programistycznych oprócz środowiska naukowego!
sarat
0

Na pytanie: „czy jacyś programiści amatorzy stali się sławni?” Odpowiedź brzmi: „Tak, ale większość tak nie pozostała”. Najsłynniejszym przykładem, jaki mogę sobie wyobrazić, jest Roy Fielding, który wykonał część swojej najważniejszej pracy, podczas gdy (jak sądzę) nieopłacony na uniwersytecie (amator oznacza z definicji nieopłacony).

Sztuką bycia profesjonalistą jest posiadanie mentora lub zestawu mentorów (takich jak zespół w projekcie open source) i poważne poświęcenie czasu na ten temat. Jako dawniej profesjonalny muzyk, moje doświadczenie jest takie, że oba są niezbędne, aby być dobrym, zarówno jako profesjonalista, jak i amator. Niektórych można się nauczyć z książek, ale bez konsekwentnej krytyki zewnętrznej bardzo trudno jest przejść przez złe nawyki nabyte jako nowicjusz.

To powiedziawszy, w przypadku programisty znacznie łatwiej jest nauczyć się niż muzyk - z mojego doświadczenia wynika, że ​​jako muzyk jest znacznie trudniej dostrzec twoje błędy pedagogiczne niż kod, który tylko nie działa Z drugiej strony, aby być dobrym deweloperem, potrzeba dużo więcej czasu.

cwallenpoole
źródło
0

Jak wszystko inne, najlepszym sposobem na polepszenie czegoś jest zanurzenie się w środowisku, w którym chcesz stać się dobrym, i otoczenie się ludźmi o wiele lepszymi od ciebie, którzy są gotowi cię tolerować i uczyć. Nie jest to łatwe, ale to, co znalazłem, jest najlepszym sposobem, aby nauczyć się być dobrym w czymś najszybszym.

Ale jeśli chodzi o bycie naprawdę utalentowanym programistą, musisz być właśnie tym, uzdolnionym. Jeśli nie jesteś naturalnie utalentowanym skrzypkiem, nigdy nie będziesz tak dobry jak mistrzowie, bez względu na to, jak bardzo się starasz i jaki instrument kupujesz. Podobnie, jeśli nie masz tego daru, który czyni programistów naprawdę genialnymi, nigdy nimi nie będziesz.

stu
źródło