Czy nowy programista powinien skupić się na jednej technologii, dopóki nie będzie w tym biegły? [Zamknięte]

10

Ok, od jakiegoś czasu uczę znajomego, jak programować. Jest bardzo szybkim uczniem i na razie jest całkiem dobry w programowaniu. Ma jednak jeden „problem”, który ciągle próbuję rozwiązać.

Wskakuje i zaczyna programować na wysokim poziomie, nie ucząc się podstaw (stworzył pełnowartościową aplikację internetową, ale wciąż nie zna stronicowania ani zarządzania sesjami).

Ale to nie jest problem. Wciąż przeskakuje do nowej technologii (Node.js, MongoDB, EC2 itp.). Próbowałem mu powiedzieć, że powinien nauczyć się kilku podstawowych informacji na temat wybranego przez siebie RDMS (MySQL), ponieważ używa go codziennie, zanim zainwestuje sporo czasu w naukę podstaw MongoDB (i prawdopodobnie przejdzie do czegoś nowego).

Czy to ja tu jestem w błędzie, czy powinien starać się skupiać na jednej rzeczy na raz i być w tym naprawdę dobry?

Brandon Wamboldt
źródło
6
Brzmi jak dobra okazja, aby zażądać, aby jego aplikacja internetowa obsługiwała sesje i paginację. Czy to nie sprawi, że się go nauczy?
Również których pojedyncza technologia powinna się nauczyć?
@ ThorbjørnRavnAndersen Nie tyle pojedyncza technologia, ale stos LAMP jest tym, z czym współpracuje na co dzień. Myślę, że powinien nauczyć się wszystkich podstawowych / istotnych dla swojej pracy szczegółów dotyczących MySQL, Apache, PHP i JavaScript.
Brandon Wamboldt,
1
Następnie zasadniczo odpowiedziałeś na swoje pytanie „nie”.
1
Czy nie uczy się już wielu technologii, takich jak sieć, baza danych itp. Na raz? Jakie są granice tego, co stanowi tutaj technologię?
JB King

Odpowiedzi:

18

Osobiście uważam, że dobrym pomysłem może być wypróbowanie różnych technologii i języków podczas nauki programowania. Skupienie się na jednej technologii ma oczywistą zaletę, dzięki której jesteś w niej bardzo dobry, ale oczywistą wadą jest znajomość tylko jednej technologii.

Ale myślę, że ważniejszym subtelniejszym minusem jest to, że języki i ramy generalnie mają ideologię. Jest wielu programistów (być może większość programistów), którzy stosują tylko jedną ideologię we wszystkim, co programują. Często dzieje się tak dlatego, że naprawdę dobrze nauczyli się jednego frameworku w jednym języku, a teraz nie widzą niczego bez tych okularów.

Zwłaszcza dla kogoś, kto dopiero uczy się programować, nie sądzę, że to problem, aby spróbować tego, co tam jest, i poczekać, aż skupię się na czymś później. W końcu trudno będzie napisać coś znaczącego, nie znając dobrze technologii.

Kris Harper
źródło
2
+1 za drugi akapit. Dodam, że patrzenie na różne języki, frameworki i interfejsy API może wiele nauczyć o DLACZEGO projektanci zdecydowali się na implementację danego języka / frameworka / API w taki sposób, w jaki to zrobili. Lepsze zrozumienie programowania i oprogramowania jako całości. Przynajmniej imho
Jamie Taylor,
+1 Są sytuacje, w których nauczysz się koncentrować, na przykład gdy wykonujesz „prawdziwą” pracę programistyczną. Ale jak zdobyć pracę, jeśli jesteś narażony tylko na jedną strukturę? Naucz się pisać coś w więcej niż jednym frameworku / bibliotece, abyś mógł uzupełnić swoje CV i pokazać, że nie jesteś nastawiony na jedną konkretną technologię. ;-) Możesz dowiedzieć się czegoś takiego jak paginacja i RMDB później, kiedy uzyskasz rzeczywisty kontekst, aby to zrobić.
Spoike 18.04. Kwietnia
@Spoike Ma „prawdziwą” pracę programistyczną, dlatego staram się, aby skupił się na technologii, której używa na co dzień w tej pracy
Brandon Wamboldt
1
@RougeCoder: Daj mu odpowiednie zadania (przejdź do tej gigantycznej listy, filtruj elementy, narysuj diagram z pogrupowanymi próbkami itp.), Aby umożliwić mu nauczenie się pojęć, o których ma wiedzieć. Jeśli nie ma takich zadań, nie ma dla niego kontekstu, aby utrwalić tę wiedzę.
Spoike,
1
Kiedyś myślałem, że to BS, a przynajmniej przesada, kiedy ludzie mówili, że „nauka programowania funkcyjnego sprawia, że ​​myślisz inaczej”. Okazuje się, że zmniejszali wpływ, jaki wywiera on na twój kod. Mój kod jest już zupełnie inny i jeszcze nie biegle posługuję się wybranym językiem funkcjonalnym, ani nie próbuję zmieniać sposobu pisania kodu. To naprawdę jest otwieracz do oczu.
Steven Evers
5

Po obu stronach tej kwestii istnieje dobre uzasadnienie. Znajomość „ wystarczającej ” liczby różnych technologii jest z pewnością cenna. Wiedząc „ trochę ” o wielu różnych technologiach? Nie tak bardzo.

Głęboka znajomość określonych technologii może być z pewnością cenna - JEŚLI istnieje stałe zapotrzebowanie na nie. Wiedząc „ wszystko, co trzeba wiedzieć ” na temat konkretnej technologii? ... najprawdopodobniej przesada.

Wszystko jest w równowadze. Jeśli skończy budować wspaniałe aplikacje za pomocą nosql, dlaczego miałby znać różnicę między silnikiem InnoDB a silnikiem MyISAM?

pbr
źródło
Różnica między InnoDB i MyISAM to w zasadzie transakcje. Jeśli nie rozumie transakcji, jaka jest szansa na poprawną pracę z pojęciami takimi jak „ostateczna spójność”?
Michael Borgwardt,
Przebaczenie? Nikt nie powiedział, że nie rozumie transakcji, a to, co napisałem, wcale tego nie sugeruje.
pbr
3

Częściowo się zgadzam. Musi znać podstawowe zasady - ale nie musi po prostu siadać na jednej rzeczy i być w tym naprawdę dobry. Nikt tego nie robi.

Usiąść z jedną rzeczą i stać się naprawdę dobrym

Obecnie pracuję z C # i Microsoft XNA, aby stworzyć grę. Uczę się dużo na temat XNA w trakcie pracy i chociaż jestem już dość kompetentny w C #, moja wiedza stopniowo się poszerza (dziś dowiedziałem się o ograniczeniach parametrów typu ).

Jednak nie muszę być „naprawdę dobry” na XNA lub C #. Gdybym miał teraz zakończyć swój projekt i przejść dalej i nigdy więcej nie używać żadnego z nich, byłbym całkowicie zadowolony, a moja nauka byłaby kontynuowana gdzie indziej.

Zasady są jednak ważne

Przynajmniej rozumiem podstawowe zasady. Kiedy tworzę rzeczy w C # i XNA, rozumiem, co robię - a jeśli nie, to dowiaduję się o tym.

Gdybym napisał paginację, zrozumiałbym, jak działa paginacja. Jeśli twój przyjaciel stworzył podział na strony i nie ma pojęcia, jak to działa, jest to problem. Jeśli nie stworzył paginacji, nie ma powodu, dla którego musiałby wiedzieć.

Problem w tym, że: czy on wie, co @ $ #! robi, czy jest programistą, który nie ma pojęcia, jak programować?

doppelgreener
źródło
Podnosisz dobre punkty. Problem polega na tym, że z niektórymi rzeczami wie, co robi, ale z innymi rzeczami, których nie robi (myślę, że po prostu nie chce się tego uczyć, więc kopiuje go z innych projektów). Na przykład napisał paginację, przejrzałem ją kawałek po kawałku, ale nadal nie rozumie. Wiem, że mógł to zrozumieć, ponieważ jest to bardzo prosta koncepcja i zrobił znacznie bardziej skomplikowane rzeczy.
Brandon Wamboldt,
Tak i to jest problem. Jeśli pisze kod, nie rozumie, że jest w połowie drogi do bycia programistą kopiującym i wklejającym oraz bycia programistą, który nie ma pojęcia, co robi.
doppelgreener
3

Zgaduję, że próbuje innych języków, ponieważ ma coś, co chce zbudować. Zawsze możesz wrócić do języka lub struktury i dowiedzieć się więcej.

Pomiędzy uczeniem się teorii / budowaniem podstaw a próbą utrzymania motywacji istnieje cienka granica.

Przynajmniej nie utknął w jednym języku. Czasami bierzesz dobro ze złem.

JeffO
źródło
3

Uważam, że jego podejście jest raczej zaletą niż zobowiązaniem. Jego zdolność do prowadzenia badań jest powyżej średniej. Jego krzywa uczenia się jest również płytka. Wykorzystaj te cechy, jeśli chcesz, żeby się czegoś nauczył.

Jego dociekliwy umysł jest zawsze w ruchu, dlaczego nie dać mu wskazówek. Zacznij od wyjaśnienia mu, dlaczego paginacja jest ważna i niezbędna. Pozwól mu spojrzeć na strony z paginacją i strony bez nich.

Co powiesz na konstruktywną krytykę tego, co robi. „Wow, zrobiłeś coś wspaniałego, ale czy nie byłoby lepiej, gdybyś zrobił to w ten sposób, kładąc nacisk na optymalizację i najlepsze praktyki.

Myślę, że dokonanie porównania dobrej i złej praktyki może naprawdę pobudzić jego umysł.

Nie ograniczaj go, w końcu znajdzie coś, co chciałby i przez jakiś czas się z tym godzi. Gdybym był tobą, zapewniam mu wiele materiałów do nauki na temat rzeczy, które jest jego pasją.

Myślę, że on robi podejście od góry do dołu, podczas gdy ty z drugiej strony chcesz, aby zrobił podejście od dołu do góry

Dorward Villaruz
źródło
1

Czemu to jest złe?

Przeciwnie, myślę, że to bardzo dobrze! Pokazuje ciekawość i chęć do nauki. Co więcej, chce znaleźć odpowiednie narzędzie do właściwej pracy! Lepiej niż trzymać się nieodpowiedniej technologii pierwszego wyboru. ;)

W rzeczywistości robię to podobnie, jako doświadczony programista. I polecam to. Ilekroć mam nowy projekt, moje zachowanie jest następujące:

  1. eksploruj (potencjalne technologie, które mogą być przydatne)
  2. eksperyment (z tymi, które wyglądają obiecująco)
  3. wybierz swoje technologie (lub eksperymentuj trochę dalej, aż się dowiesz)
  4. trzymaj się tego (rozwiń swoją aplikację i przeciągnij ją)

Myślę, że to ma sens.

Dagnele
źródło
1

Osobiście, gdyby ktoś musiał skupić się tylko na jednej technologii, powiedziałbym, że powinna to być C # / Java, używana wraz z SQL.

Wierzę, że dzięki temu możesz dostosować się do dowolnej innej technologii.

Ale trzymanie się jednej technologii może być ograniczające, jeśli facet chce wejść do środowiska korporacyjnego.

Idealnie, jedna platforma obiektowa, jedna platforma mobilna, jedna platforma internetowa, a następnie bardzo dobra znajomość SQL (lub dowolnego innego środowiska db).

Najpierw podstawy, w przeciwnym razie utknie później!

Pierre Pretorius
źródło
0

Nie jest źle, jeśli jest on początkującym w programowaniu.

Zobaczy, jak działają niektóre rzeczy. Ale jeśli nie rozumie, co robi, lepiej w ogóle tego nie robić.

Miałem ten problem ze sobą, chcę wiedzieć wszystko Java, C, C ++, C #, Phyton, ASP.NET ... itd., Ale zdałem sobie sprawę, że nie mogę tego wszystkiego wiedzieć, więc skupiłem się na kilku rzeczach i to dużo lepszy.

Więc co powinien zrobić (doradzić mu):

  1. Zastanów się, co chcesz robić
  2. Poznaj wszystkie opcje
  3. Znajdź to, co Ci odpowiada
  4. Naucz się tego
  5. Nigdy nie przestawaj się uczyć

Nie zgodziłbym się z @arnaud, jeśli zawsze odkrywasz i uczysz się nowych rzeczy, gdy nowy projekt jest przed tobą (cóż, nie do końca). Przeszukiwanie i uczenie się nowych rzeczy zajmuje zbyt wiele czasu, a niektóre projekty mają limit czasowy. Ale z drugiej strony, jeśli chcesz nauczyć się kilku prostych nowych rzeczy, jest w porządku: D.

Eon
źródło
0

Zgadzam się z tobą, że czasami łatwo jest uzyskać powierzchowną wiedzę na temat konkretnego frameworku, technologii lub języka, ale aby naprawdę zrozumieć, najlepiej jest zaangażować się w rozwój prawdziwego świata aż do jego ukończenia i utrzymać go - stać się kimś, kogo inni przyjść po poradę. Lepiej zostać waletem wszystkich zawodów, mistrzem jednego, a nie waletem wszystkich zawodów, mistrzem żadnego . Powiedziawszy to, nie zniechęciłbym go do nauki nowych rzeczy, ponieważ oczywiście ma dobry poziom entuzjazmu.

dodgy_coder
źródło