Dlaczego zawsze brzmi „w jakim języku powinienem się uczyć dalej” zamiast „w jakim projekcie mam zająć się w następnej kolejności”? [Zamknięte]

14

Dlaczego początkujący programiści (tacy jak ja) zawsze pytają o kolejny język, którego powinni się nauczyć, zamiast pytać o kolejny projekt do rozwiązania?

Dlaczego Eric Raymond w sekcji „ Naucz się programować ” swojego eseju „ Jak zostać hakerem ” mówił o kolejności, w której powinieneś uczyć się języków (w porównaniu z kolejnością, w jakiej powinieneś zajmować się projektami).

Czy początkujący stolarze pytają: „Wiem, jak używać młotka ... czy powinienem nauczyć się, jak używać piły lub następnego poziomu?”

Pytam bo jestem stwierdzenia, że niemal każdy znaczący projekt Interesuje mnie w walce (np aplikację internetową, zestaw narzędzi analitycznych poker) wymaga, że uczę się wystarczająco z wielu języków (Python, C, HTML, CSS , JavaScript, SQL) i frameworki / biblioteki (wxPython, tkinter, Django) w celu ich wdrożenia.

Dzięki,

Mikrofon

MikeRand
źródło
5
Szczerze mówiąc, to wydaje się trochę ... łakome. Być może mógłbyś usunąć insynuacje i zostawić swoje pytanie?
Anon.
4
Myślę, że chronologicznie nie zgadzasz się z krokami. Szanse są, że cieśla już wie, jak korzystać z tych narzędzi, jeśli wie, jak ościeżić drzwi. Ale wcześniej w swoim życiu również podążał ścieżką, które narzędzie powinienem zbadać w następnej kolejności.
CrazyPenguin
Uczciwy komentarz dotyczący: ranty ... zamierzał się zabawić. Przepraszam, jeśli okazało się, że jest to nieład.
MikeRand
4
Porównanie języka programowania do narzędzi ręcznych nie jest zbyt dobrym porównaniem. Wydaje się to na pozór sensowne, ale szybko się rozpada i staje się bardziej szkodliwe niż pomocne. Zbyt wiele osób uważa to za niekwestionowaną prawdę. Ten facet wykonuje porządną robotę, wyjaśniając kilka powodów, dla których to nie działa. journal.dedasys.com/2007/12/12/...
Nick Knowlson
Podoba mi się to pytanie ...!
Michael K

Odpowiedzi:

6

Myślę, że kiedy większość ludzi uczy się języka, robią to, ponieważ chcą zająć się projektem napisanym w tym języku, teraz lub w przyszłości. Aby to zrobić, muszą nauczyć się tego języka, co wymaga czasu. Języki programowania są jak narzędzia, ale chociaż możesz nauczyć się posługiwać młotkiem w około sześćdziesiąt sekund, języki potrzebują nieco dłużej; dlatego wiele osób koncentruje się na nauce języka, zanim skoncentruje się na pracy nad projektem napisanym w tym języku.

Na innym uwaga, myślę, że kiedy większość ludzi zapytać, co język, aby dowiedzieć się obok, oni naprawdę mają na myśli to, co wystaje, aby dowiedzieć się obok, ale skupić się na nauce języka pierwszego.

Na koniec nauka języków może być świetną zabawą , nawet jeśli nie masz na myśli konkretnego projektu lub celu.

mipadi
źródło
6
  • Motywacja wielu programistów zatrudnionych w pełnym wymiarze godzin ma być bardziej przydatna.

  • Większa szansa na zatrudnienie oznacza zwykle pokonanie przeszkody przesiewowego HR (a później pokonanie przeszkody w trakcie faktycznego wywiadu).

  • Typowy skaner HR zwykle ma listę kontrolną języków, które można dopasować do CV, ale nie ma możliwości oceny umiejętności lub projektów.

  • Sukces w prawdziwym wywiadzie zależy zwykle bardziej od szczęścia i minimalnych umiejętności w języku niż od doświadczenia i głębokiego zrozumienia języka.

Dlatego bycie przeciętnym w wielu językach jest lepsze dla szans na zatrudnienie niż bycie ekspertem w kilku językach, chyba że ubiegamy się o wyższe stanowiska.

Uri
źródło
Niestety, aby ominąć ekran HR, musisz podać listę popularnych słów dnia. Proces sprawdzania HR jest raczej filtrem kursu, który pozostawia wielu wykwalifikowanych kandydatów.
Jeff
1
@Jeff, z tego, co słyszałem o badaniach przesiewowych HR, chcą jedynie ograniczyć liczbę wznowień do możliwego do zarządzania poziomu i stosują wiele dowolnych filtrów, takich jak „bin, jeśli więcej niż 2 strony”.
Dominique McDonnell,
2

Analogiczne opcje programowania dla stolarza brzmiałyby: „Jaką aplikację powinienem zbudować w następnej kolejności?” lub „Jaki system powinienem następnie zbudować?” które są raczej ważne i niezależne od projektu, który można naprawdę zastosować niemal powszechnie. Mógłbym mieć projekt zmiany diety lub zrzucenia 20 funtów tak łatwo, jak mogłem mieć coś, co wymaga napisania nowego oprogramowania do powiązania rzeczy.

Aby odpowiedzieć na to pytanie, uważam, że pomysł polega na tym, że język reprezentuje narzędzie w zestawie narzędzi tej osoby, które może być przydatne w CV. Niektóre osoby mogą zostać programistami, aby płacić rachunki, a jeśli tak, mogą zapytać, które następne narzędzie powinny dodać, który często byłby językiem, ale są też inne możliwości, takie jak nauka wdrażania, kontroli źródła, testowania i metodologii programowania wymienić kilka innych obszarów. Gdyby cieśla musiał ujawnić, jakie miał narzędzia, mógłby mieć podobną perspektywę. Istnieje jednak ogólny zestaw narzędzi, które zakłada się, że większość stolarzy ma lub ma dostęp, aby uzyskać je dość szybko. Czy kiedykolwiek widziałeś, ile różnych rodzajów pił i młotków jest dostępnych dla ludzi?

JB King
źródło
1

Może po części chodzi o mentalność hakerów, przynajmniej dla niektórych programistów. Hacker jest zdefiniowany w pliku Jargon jako

„Osoba, która lubi odkrywać szczegóły systemów programowalnych i jak rozszerzyć swoje możliwości, w przeciwieństwie do większości użytkowników, którzy wolą uczyć się tylko niezbędnego minimum”.

Tak więc dla duszy hakerów chodzi bardziej o naukę i „majstrowanie” przy procesie, koncepcjach, narzędziach i tak, językach tworzenia czegoś, niż o samym produkcie końcowym. Więcej o samym procesie.

To ciągłe dążenie do następnej nowej rzeczy i / lub wyzwania. Ukończony projekt szybko traci atrakcyjność. Czasami (przez większość czasu?) Największe wyzwania twórcze lub techniczne są podbijane przed zakończeniem projektu. Wiele projektów zostaje porzuconych, gdy umysł spragniony nowych wyzwań mentalnych idzie do przodu.

Szczególnie hakerzy są zainteresowani nowymi punktami widzenia, koncepcjami, abstrakcjami i sposobami myślenia, rodzajem mentalnego hakowania:

„Nie warto znać języka, który nie wpływa na sposób myślenia o programowaniu”. - Alan Perlis

Maglob
źródło
0

Obecnie dostępnych jest wiele kiepskich języków: C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic itp. Programiści nadrabiają wrodzoną słabość tych języków, ucząc się i mieszając wiele z nich razem.

Istnieje niewielka społeczność znana jako społeczność Lisp, która jest wolna od szaleństwa, które przenika współczesne komputery.

Ponieważ Lisp jest programowalnym językiem programowania, możesz wyrazić w nim wszystkie swoje pomysły bez konieczności odchodzenia od innych języków lub innych formatów danych, takich jak XML. Lisp może być stosowany wszędzie, nawet do poziomu sprzętowego, jak widzieliśmy z maszynami Lisp .

jhuni
źródło
Musisz znać jak najwięcej różnych języków, aby efektywnie kodować w Lisp. W przeciwnym razie skończysz na nowo wymyślając koło zamiast po prostu ukraść odpowiednie koncepcje i pomysły z innych języków i wdrożyć je na Lisp.
SK-logic
Zgadzam się z twoim sentymentem na temat mocy Lisp, ale nie zgadzam się, że nauka innych języków nie jest pomocna: większość sztuczek, których używam w Lisp, aktywnie wykorzystuje to, czego się nauczyłem z innych języków (czy to jako wzorce, czy anty-wzorce ...)
mikera
0

Ponieważ nauka nowego języka programowania jest ogromną inwestycją i nikt nie lubi dokonywać złych inwestycji.
Nauka nowego języka programowania nie polega na zapamiętywaniu, jak pisać konstrukcje pętli, deklarować klasy, importować kolejny moduł ...
Musisz wiedzieć, jak napisać idiomatyczny kod w tym języku, a proces ten zajmuje naprawdę dużo czasu i poświęcenia .
Czas jest ograniczonym zasobem, wysiłek jest ograniczonym zasobem, ale rozproszenie uwagi, codzienny stres, rachunki i niedziele gry sportowe są zawsze dostępne i muszą z nimi żyć.
Programiści chcą mądrze inwestować.

Chiron
źródło