Czy należy uczyć się nowych języków, czy tylko skoncentrować się na językach, które już znasz, i pogłębiać swoją znajomość? [Zamknięte]

22

Który sposób jest bardziej korzystny i produktywny?

Chankey Pathak
źródło
1
Czy to nie zależy od rodzaju pracy i projektów? Jeśli pracujesz dla dużej korporacji, prawdopodobnie nie zmieniasz technologii zbyt często, jeśli masz swobodę wyboru.
Chris
@Chris: Sugestia, „Języki i frameworki”, większość programistów nie współpracuje już tylko z kompilatorem wiersza poleceń i edytorem tekstu, ale bibliotekami, IDE, BD, Thrid-Party Tools, ... ;-)
umlcat
1
Sądząc po liczbie głosów, pytanie to jest konstruktywne w opinii wielu osób. Myślę, że Mark Trapp to program komputerowy napisany w celu zamykania pytań.
T. Webster,

Odpowiedzi:

18

Myślę, że potrzebujesz obu. Musisz skupić się na swoich kluczowych kompetencjach i lepiej je zrozumieć, ale jednocześnie dobrze jest spojrzeć na zewnątrz i zobaczyć, co jeszcze tam jest. Kontakt z innymi podejściami i innymi językami jest bardzo ważny, aby uczynić z nich ogólnie lepszego programistę. Jest wiele sposobów na skórowanie kota, a znajomość jak największej liczby z nich sprawi, że będziesz psychopatą w lepszym wyborze odpowiedniego narzędzia do określonego zadania.

Spędzaj więc większość swojego czasu na poprawianiu swojej biegłości i poświęć trochę czasu na naukę czegoś nowego.

Adam Lear
źródło
4
+1 Za umiejętność dobrego posługiwania się „młotem”, ale także za to, że istnieją takie rzeczy, jak „śrubokręty”, „piły” i „lepka przyczepność”.
Ryan Hayes
1
I przez większość czasu nauka nowego języka może narazić Cię na wzornictwo projektowe lub coś, co jest przydatne, o czym nigdy nie pomyślałeś, używając własnych języków.
AttackingHobo
8

Ktoś powiedział: „Nie warto uczyć się języka, który nie zmienia sposobu myślenia o programowaniu”.

Tak więc, jeśli znasz Javę, nauka języka C # (lub odwrotnie) jest niewielka. Jeśli nie z powodów pragmatycznych (tzn. Potrzebujesz go, aby rozwiązać problem), sugerowałbym trzymanie się jednego języka na paradygmat, a twój harmonogram jest wciąż wystarczająco pełny;).

Z drugiej strony specjalizacja jest z mojego doświadczenia najczęściej osiągana „w terenie”, tj. Podczas pracy nad projektem, więc przychodzi naturalnie.

keppla
źródło
1
C # oferuje interesujące nowe funkcje dla programistów Java. Wyrażenia Linqa i lambda mogą otworzyć oczy na nowy świat.
Carra
Właściwie powiedziałbym, że wprowadzenie programu C # na rynek było łatwiejsze (przynajmniej dla mnie), niż wprowadzenie programu Java na rynek. W tym sensie otworzyłem oczy, dzięki czemu mogłem korzystać z wygody Javy, unikając niektórych jej braków. Niezależnie od wojen językowych, powiedziałbym, że to dobry punkt.
riwalk
+1 Zaczynałem w .NET i naprawdę wiele się nauczyłem od moich dabblowania z Objective C i JavaScript.
Trevor
@Carra: nie zdawałem sobie z tego sprawy (moje ostatnie dogłębne doświadczenie z oboma było, gdy Java 1.5 była aktualna). Czy różnica w twoim doświadczeniu stała się wystarczająco duża, aby uczynić je wystarczająco różnymi, aby uzasadnić zalecenie uczenia się obu (z perspektywy „akademickiej”)?
keppla
Prawdopodobnie nadal lepiej jest nauczyć się jednego i funkcjonalnego języka. Więc ogólnie się z tobą zgadzam.
Carra
3

Po obu stronach jest wiele naprawdę dobrych argumentów. Wiele lat temu postawiono mi dokładnie to pytanie ... skoncentruj się na moim podstawowym języku i postaraj się zostać „ekspertem” LUB wybrać nowy język i poszerzyć moją sprzedaż. Postanowiłem skoncentrować się na jednym języku.

Naprawdę nie będzie złej odpowiedzi. Oba mają zalety, ale tak naprawdę sprowadza się do tego, który z nich najlepiej pasuje do ciebie i gdzie chcesz, aby Twoja kariera się odbyła.

Walter
źródło
2

Nauka nowych języków to przede wszystkim sposób na poznanie nowych koncepcji i zwiększenie wydajności programowania. Nauka programowania sama w sobie bardzo różni się od nauki nowego języka do programowania.

Powinieneś skoncentrować się na ulepszaniu swoich programów (i jest wiele wskaźników do pomiaru tego, wiele subiektywnych; nie ma znaczenia, wybierz metryki i dopracuj je z czasem, wykorzystaj je do edukacji).

Powiedziawszy to, nauka „nowszych” języków (powiedzmy Python) na starszej liście (np. Powiedz „ C” i wielu innych) pomoże ci myśleć bardziej efektywnie i skoncentrować się na tych podstawowych pojęciach, które należy ulepszyć. Biorąc przykład dalej, może nie pojawić się od razu, ale możesz Cpoprawić swoje programowanie, ponieważ myślałeś w Pythonie. Możesz nawet zacząć pisać Python zamiast psudo-code C. Teraz jest to o wiele bardziej czytelny i weryfikowalny kod psudo.

Co prowadzi nas do podsumowania podstawowego pytania:
Tak, powinieneś skupić się na językach, które już znasz, i poszerzyć swoją wiedzę na ich temat - o ile są one nadal w użyciu. A , należy również parać się nowych języków, aby dać swój mózg nowsze narzędzia do myślenia (może nawet szybciej) rozwiązania dla potrzeb programowania.

nik
źródło
1

Zdominuj środowisko programistyczne (i powiązany język) i pozostaw trochę wolnego czasu na inną, najlepiej inną „domenę”. Przykład: klient + serwer C ++, Ruby on Web

umlcat
źródło
1

Nauka nowego języka

To zależy od celu, w jakim uczysz się języka. Jeśli uczysz się języka, ponieważ używa on innego paradygmatu lub jest odpowiedni dla określonej domeny problemowej. Jeśli jednak jest to język bardzo podobny do tego, który już znasz, a wszystko, co planujesz zrobić, to przepisać cały istniejący kod w tym nowym języku, prawdopodobnie nie ma aż tak dużej wartości (na przykład przepisywanie aplikacji sieci Web w języku Python w ruby) w tym.

Głębsza znajomość obecnego języka

Jeśli już czujesz się bardzo komfortowo programując w języku, znasz wszystkie jego idiomy i potrafisz pisać w nim programy bez konieczności przeglądania dokumentacji dla każdego wywołania biblioteki, prawdopodobnie nie ma o wiele więcej do nauczenia się na ten temat. Z drugiej strony, jeśli twoja znajomość języka nie jest tak głęboka, nauka może się przydać. Istnieją dobre sposoby oceny, czy przebywasz w byłym czy drugim obozie dla języka X

  1. Ile programów napisałeś w języku X?
  2. Jeśli przejdziesz do opcji Przepełnienie stosu i spojrzysz na pytania oznaczone X, na ile z nich czułbyś się dobrze, udzielając odpowiedzi?
  3. Czy ludzie przychodzą do ciebie po pomoc w języku X?

Jeśli twoje odpowiedzi na te pytania są gdzieś w stylu „dużo”, „większość z nich” i „tak, i robi się irytujące”, to dobra wskazówka, że ​​opanowałeś język i powinieneś przejść do czegoś Nowy.

Zhehao Mao
źródło
0

Jeśli jesteś już wystarczająco dobry w języku, który znasz, nie ma potrzeby uczyć się bardzo szczegółowych, konkretnych sztuczek dla odrobiny chłodu ... to będzie całkowicie strata czasu. Jednak gdy czujesz się niekomfortowo z jakimś językiem, sugerujemy najpierw opanowanie tego języka.

Oprócz języków istnieją frameworki, wzorce ... aby nauczyć się frameworka, musisz znać język, więc w przypadku bardzo podobnych języków nauka ich pomaga jedynie przynieść trochę niezbyt zabawnej zabawy.

Osobiście uważam, że zawsze powinieneś rozwijać swoje umiejętności, aby tworzyć szybsze, bezpieczniejsze, bardziej niezawodne oprogramowanie dla większej liczby platform i skracać czas, w tym celu może być konieczne nauczenie się nowego języka, nowej struktury, nowego IDE (jest to tak samo ważne jak język) i tylko wtedy, gdy jesteś w tym celu, Twoja inwestycja jest opłacalna.

Przynajmniej nie ucz się nowego języka, aby zwiększyć liczbę języków, które znasz.

tactoth
źródło