Dlaczego programiści muszą być na bieżąco z technologiami i metodologiami? [Zamknięte]


28

Zawsze dostaję radę, że programiści muszą być na bieżąco z najnowszymi technologiami - takimi jak webrtc, aktualizacje html5 i css3 oraz nowe biblioteki js, metodologie oprogramowania, takie jak TDD, DDD i BDD.

Pytanie brzmi dlaczego ? Dlaczego musimy ciągle się aktualizować? Czy nie możemy po prostu trzymać się tego, co wiemy i stać się z tym lepszym?


16
W rozwoju oprogramowania istnieje potrzeba zrobienia obu: dogłębnego poznania niektórych technologii i nadążania za ciągle zmieniającymi się nowymi technologiami. Po części dlatego tak trudno jest znaleźć dobrych programistów.
joshin4colours

2
Jeśli chodzi o dotychczasowe głosowanie, myślę, że to uczciwe pytanie i nie mogę znaleźć dokładnego duplikatu na stronie. Po prostu staraj się zwracać uwagę na słabe odpowiedzi, abyśmy mogli je oczyścić.
wałek klonowy

4
Nie rozumiem, dlaczego programiści jako klasa muszą „być na bieżąco” z najnowszymi „technologiami sieciowymi”, niezależnie od tego, co obie te koncepcje oznaczają w praktyce. Ciekawy umysł i ciągłe uczenie się są z pewnością kluczowe dla rozwoju osobistego w każdym zawodzie, ale fałszywy dylemat zakładający, że „technologia internetowa” jest jedyną osią rozwoju osobistego, sprawia, że ​​jest to zbyt obciążające pytanie dla moich gustów. Patrząc krytycznie na wysoko głosowane odpowiedzi - czy którykolwiek z nich odpowiada nawet na pytanie inne niż oferowanie frazesów zachęcających i motywacyjnych haseł, aby „pozostać w grze”?
bike

1
@bike: Zgadzam się z tobą: oczywiście ciekawy umysł będzie chciał cały czas uczyć się nowych rzeczy. W tym przypadku nowe rzeczy oznaczają coś, czego nie wiesz, co może być interesującym językiem programowania, który istnieje już od 40 lat lub dłużej (np. Lisp). Przemysł zmusza nas do aktualizacji i do rozważenia najnowszych rzeczy jako interesujących, domyślnie bardziej efektywnych. Moja główna uwaga: nauczenie się technologii, której nie potrzebujesz, ponieważ jest nowa, to strata czasu.
Giorgio

1
@RobertHarvey To nie jest tak, jakby pytanie brzmiało „Jak?” albo co?" jak by to było NC. Pyta DLACZEGO i ja osobiście uważamy, że jest to istotne i odpowiedzialne.
wałek klonowy

Odpowiedzi:


42

Pojawiają się nowe technologie bez powodu. Zazwyczaj powodem jest to, że są bardziej wydajni lub potężni w realizacji określonego zadania.

Nadal warto zachować starą technologię ze względu na starsze systemy, ale kiedy w końcu osiągną kres swojego życia, będziesz za grą.

Pomijając powody biznesowe, ciągłe uczenie się nowych technologii nie pozwala ci się doczekać i otwiera oczy na różne sposoby podejścia do zadań, nawet w przypadku starych technologii i tak dalej.


3
+1: uczenie się nowych technologii jest często pomocne, nawet jeśli nigdy nie zastosujesz bezpośrednio tej technologii: nowe poglądy i perspektywy, które zapewnia, można z pewnością zastosować przy użyciu „starej” technologii.
Joachim Sauer

7
Z drugiej strony, skakanie przy każdej nowej technologii może również przynieść efekt przeciwny do zamierzonego, ponieważ wiele z nich znika tak szybko, jak się pojawia.
Gordon Bell,

@GordonBell - Prawda ... Nie mogę mówić za nikogo innego, ale zwykle nie testuję wód za pomocą nowych technologii, dopóki przynajmniej nie wykażą oznak lub potencjału stania się bardziej „głównym nurtem” - co przynosi wiele korzyści dokumentacja wspomagająca edukację i bazę użytkowników itp.
Anonimowy

Często powstają, aby zaspokoić potrzeby w środowisku akademickim, ale nie w prawdziwym świecie. Musisz o czymś napisać swoją pracę magisterską .
dbracey,

@dbracey: Racja, a dwadzieścia lat później jakaś duża firma może znaleźć tezę, że tymczasem naukowcy rozwinęli się w dojrzałą technologię i zaczynają sprzedawać ją jako nową technologię .
Giorgio

27

Chociaż z pewnością możliwe jest zbudowanie kariery na jednym stosie technologii, jeśli zdobędziesz szczęście 1 , jest prawie pewne, że technologia zmieni się więcej niż raz w czasie, gdy jesteś zatrudniony. Możesz (i powinieneś) być lepszy w tym, co już wiesz, ale uczenie się nowych rzeczy z wyprzedzeniem pomoże ci ograniczyć krzywą uczenia się, gdy kolejna zmiana technologii pojawi się w twoim zakątku branży.

Ma też mniej oczywistą stronę: uczenie się nowych rzeczy bardzo często pomaga dostrzec rzeczy, które już znasz z innej perspektywy, w taki sam sposób, jak uczenie się nowego języka pomaga ci dowiedzieć się więcej o twoim obecnym języku 2 .

Wreszcie, nie należy lekceważyć czystej rozrywki związanej z uczeniem się nowych rzeczy: dla mnie bije to oglądanie telewizji bez reszty.


1 Na przykład wybierając COBOL zamiast PL / I na początku swojej kariery w 1965 roku.

2 Działa to zarówno dla języków naturalnych, jak i języków programowania.


1
+1 @dasblinkenlight Uwielbiam to stwierdzenie: „... nauczenie się nowych rzeczy z wyprzedzeniem pomoże ci ograniczyć krzywą uczenia się, gdy kolejna zmiana technologii pojawi się w twoim zakątku branży”. Właśnie dlatego uczę się Opa teraz
Anthony

12

Czy nie możemy po prostu trzymać się tego, co wiemy i stać się z tym lepszym?

Państwo może , ale to bardzo łatwo wpaść w pułapkę nie chcąc dowiedzieć się czegoś nowego. Twoje perspektywy pracy maleją, twoi koledzy z zespołu przestają chcieć z tobą współpracować, ponieważ jesteś „tym programistą, który jest całkowicie bez kontaktu”.

Przeważnie musisz zachować równowagę. Próba ciągłego uczenia się wszystkiego nowego doprowadzi cię do bycia biednym w wielu sprawach, postrzeganych jako kiepski majsterkowicz. Naucz się kilku rzeczy dobrze i skup się przynajmniej na wiedzy o tym, co istnieje, nawet jeśli nie możesz z niego skutecznie korzystać.


2
Nic nie denerwuje mnie bardziej w pracy, niż konieczność utknięcia w zespole z programistą, który pisze kod tak jak 10 lat temu. Ramy ewoluowały. Narzędzia ewoluowały. Nie chcesz ułatwić swojej pracy? Nie widzisz stolarzy używających wiertarek ręcznych i pił ręcznych przez cały dzień, gdy mają teraz elektronarzędzia. Ewoluowały. I jak w każdym zawodzie wymyślane są nowe narzędzia w celu zaspokojenia potrzeb. Nieużywanie nowego narzędzia i próba zhakowania czegoś w stary sposób zwykle szkodzi jakości budowanego obiektu. Czy to w kodzie, czy w drewnie.
CaffGeek,

2
„Ramy ewoluowały. Narzędzia ewoluowały. Czy nie chcesz ułatwić swojej pracy?”: Istnieją nieskończone sposoby rozwiązywania niektórych problemów, a czasem nowe narzędzie lub język nie jest lepsze, ale jest równoważne ze starym. Ale masz znacznie więcej doświadczenia ze starym, dzięki czemu możesz być bardziej produktywny. Zbyt często zakładamy, że NOWOŚĆ == LEPIEJ. Zamiast tego powinniśmy zawsze kwestionować to stwierdzenie.
Giorgio

2
@Giorgio - Zdrowa sceptycyzm wobec „następnej wielkiej rzeczy” to jedna rzecz. Kolejną rzeczą jest położyć głowę na piasku, gdy mijają cię prawdziwe postępy. Później jest zbyt powszechne.
Telastyn

4
@Telastyn: Przypisałbym 50% do obu postaw: czasami mam wrażenie, że nowa technologia jest wykorzystywana tylko dlatego, że jest nowa. Jest to tylko alternatywny (nie lepszy) sposób robienia rzeczy. Musimy więc spędzić miesiące na doskonaleniu się w nowej technologii, a potem znów jesteśmy tak wydajni, jak w przypadku starej. Ale oczywiście masz rację, że wkładanie głowy w piasek jest również niewłaściwe i zawsze należy uważać na nowe rzeczy.
Giorgio

@Giorgio, skąd wiesz, czy nowy sposób jest lepszy, czy nie, jeśli się go nie uczysz lub nie wypróbujesz?
CaffGeek,

7

Prawdopodobnie wynika to z faktu, że jesteś programistą, a technologie w tej dziedzinie są bardzo zmienne, a języki, platformy, narzędzia i metodologie rosną i maleją. Jest to pole bardzo BARDZO wysokie. Jeśli którakolwiek z warstw pod nią jest zmieniona, zmienia to pozycję na górze. I szczerze mówiąc, jest nowy (ish). Nowe pola mają wiele miejsca na innowacje.

Osobiście pracuję na urządzeniach wbudowanych, nauczyłem się C, i to działało całkiem dobrze dla mnie.

Ale wciąż uczę się nowych rzeczy dość regularnie. Gniazda, biblioteki SQL, ncurses, obiekty w C. A metodologie są luźno połączone z technologiami. Testy jednostkowe były strasznie nauczane w mojej szkole, a ja właśnie owijam wokół to głowę. Niedawno usłyszałem o iniekcji zależności i zdałem sobie sprawę, że właśnie w ten sposób rozwiązałem swój ostatni problem z testowaniem funkcji konsoli przez jednostkę.

Większość programistów nie jest pracownikami fabrycznymi, którzy robią to samo każdego dnia. Te zadania można (i należy) zautomatyzować. Nikt nie płaci za kolejną implementację sortowania bąbelkowego. To zostało zrobione.


+1: Dobra odpowiedź. Należy nauczyć się technologii, które są potrzebne lub które są przydatne. Nowe technologie są ważne i należy się rozejrzeć, aby dowiedzieć się, co się dzieje. Ale NOWOŚĆ nie powinna być jedynym kryterium wyboru tego, czego się uczymy. Ponadto, jeśli C odpowiada twoim potrzebom programistycznym, zgadzam się, że może to być dobry język do pracy, nawet jeśli istnieje już od dłuższego czasu.
Giorgio

Wskazuje to również, że nowe technologie są często więcej warstw niż istniejące starsze technologie. W czym jest zaimplementowana Twoja maszyna wirtualna? C lub C ++.
dbracey,

Wstrzykiwanie zależności to tylko nowa nazwa bardzo starego pomysłu.
MarkJ

6

Powiedziałbym, że możesz zignorować wiele z tego, co tam jest. Wiele z nich to szum i moda oraz nowe nazwy dla starej technologii. Rzeczywiste postępy zostaną wkrótce zastąpione nowszymi, które tak naprawdę nie zależą od starych, chociaż dawni zegary mówią, że powinieneś zrozumieć stare, aby zrozumieć nowe. Jeśli opuściłeś pole na 10 lat, po powrocie będziesz miał tylko 2 lata za sobą.

To powiedziawszy, zauważenie prawdziwej nowej technologii może być trudne. Cieszę się, że nie tęskniłem za OOP, ale na początku wyglądało to jak garstka słów. I często musisz korzystać z obecnej technologii, aby wykonać pracę, nawet jeśli wszyscy zapomną ją za 3 lata.

Hype i zamieszanie związane z technologią oprogramowania zwielokrotnia zmianę, z którą musimy sobie radzić z dnia na dzień. Ale technologia elektroniczna faktycznie jest szybko naprzód, i pcha oprogramowanie wraz z nim. Istnieje wiele prawdziwych zmian. Nadal prowadzimy samochody, latamy samolotami i lecimy w kosmos tymi samymi pojazdami, których używaliśmy w 1965 roku. Ale sprzęt elektroniczny z 1995 roku jest beznadziejnie przestarzały.

Tak więc głęboka odpowiedź na twoje pytanie jest taka, że ​​naukowcy i inżynierowie pracujący z elektrycznością byli bardzo zajęci. Oprogramowanie musi ewoluować, aby móc korzystać ze sprzętu. Co gorsza (a raczej - lepsza?), Myślę, że oprogramowanie zostało daleko w tyle za sprzętem. Gdyby wszyscy ludzie sprzętu przechodzili jutro na emeryturę, oprogramowanie ewoluowałoby gwałtownie przynajmniej przez następne dwie dekady.

Jeśli potrzebujesz nowej technologii do wykonania pracy, musisz się jej nauczyć. Jeśli istnieje szansa, że ​​nowa technologia będzie nadal dostępna za 20 lat, musisz ją mieć na oku - a jeśli zobaczysz 20 technologii, które umierają za każdego żyjącego, masz się całkiem nieźle. I faktycznie możesz zignorować wszystko inne. Poza tym jednym odrobiną oczywistego dymu, który będzie podstawą całego oprogramowania na lata 2020.


+1: Zgadzam się z tobą w sprawie szumu. Wiele innowacji to (niestety) szum i powinniśmy bardzo ostrożnie wybierać nowe technologie, nad którymi spędzamy czas. Jedną z hipotetycznych chwil jest lambdas (które, BTW, uważam za bardzo przydatną koncepcję): każdy współczesny język musi je mieć (C #, C ++, Java?), Inaczej nie jest już fajny! Ale lambdy istnieją już od 50 lat i nikogo to nie obchodziło, kiedy te języki były początkowo projektowane. Teraz są one dodawane jako uzupełnienie, aby śledzić najnowsze trendy. ;-)
Giorgio

@Giorgio: Mam nadzieję, że nie Java. Lambda są dobrym przykładem (choć prostsze i mniej kłopotliwe niż niektóre). Używam ich w języku C # i uwielbiam je, ale jedyną osobą, która kiedykolwiek będzie żałować, że nie wie, co to jest, jest osoba, która właśnie została poproszona o naprawienie pełnego kodu.
RalphChapin

Co rozumiesz przez „mam nadzieję, że nie Java”? Że nie zostaną wprowadzone? Lubię i używam lambdas (w Scheme, Haskell): są dość łatwą koncepcją. Ale w C #, C ++ i Javie wydają mi się późnym dodatkiem, który w jakiś sposób nie pasuje do reszty języka. Wątpię, aby wynalazcy nie znali żadnego Lispa, ale uznali, że lambda nie należą do tych języków. Teraz stały się koniecznością. Tak więc bardzo lubię lambdy, ale w C #, C ++ i Javie wydają się być tylko szumem, który jest używany do sprzedaży nowych kompilatorów, książek i tak dalej.
Giorgio

1
@Giorgio: Java jest (lub była) językiem minimalistycznym. Nie musisz dużo wiedzieć (na przykład lambdas), aby zrozumieć, co napisał ktoś inny. Lubię to. C # jest językiem maksymalistycznym. Każda nowa linia może wprowadzać technologię, której nigdy wcześniej nie widziałeś. Świetnie jest pisać, a mniej czytać. Żadne z nich nie potrzebuje lambda, chociaż pomagają bardziej w języku C # niż w Javie z powodów składniowych. Ale są fajne i oszczędzają kilka linii kodu. Innymi słowy, masz rację. Ale to C #, nie Java. Jeszcze.
RalphChapin

1
@iconoclast: Z 20-letnim doświadczeniem jako programista nie uważam się za początkującego. Jednak fakt, że Java jest (był) stosunkowo prostym i czystym językiem, sprawia, że ​​jestem bardziej produktywny (mogę tworzyć bardziej złożone oprogramowanie przy mniejszym wysiłku). Myślę, że błędem jest, że prosty język jest dla początkujących: prosty język pozwoli każdemu programistowi o dowolnym stopniu doświadczenia skoncentrować się bardziej na niektórych aspektach rozwoju (np. Zarządzaniu złożoną architekturą, refaktoryzacji), ponieważ spędzają mniej czasu na zajmowaniu się inne aspekty (np. zarządzanie pamięcią, tajemnicza składnia itp.).
Giorgio

3

IMHO, musisz znaleźć równowagę. To wymaga umiejętności i doświadczenia.

Musisz znaleźć jeden lub dwa języki, w których się specjalizujesz, być na bieżąco ze zmianami stylu / ram, które ewoluują w tym języku, i utrzymywać swoje umiejętności na najwyższym poziomie.

Ale musisz także zobaczyć, jak rozwija się ten język i zrozumieć dynamikę rozwoju oprogramowania jako całości. Czy Java będzie dostępna za 10 lat, czy Phyton zostanie, czy PHP zostanie zastąpione przez .NET i Mono?

Są to strategiczne pytania na dużą skalę, na które odpowiedzi pozwolą Ci zostać wysoko cenionym profesjonalistą w swojej dziedzinie, mając przy tym solidną kopię zapasową (1 lub 2 języki) i wiedząc, kiedy przejść z głównej platformy.

IMHO, śledzenie wszystkich współczesnych języków, które są opracowywane każdego dnia, jest jednym z największych problemów dla całej branży. Mamy mnóstwo nierozwiniętych, ślepych języków, w których prawie nie ma specjalistów, a ludzie, którzy marnują na nie czas, rzadko są prawdziwymi profesjonalistami nawet w jednym języku. Przeważnie piszą kod, który jest mieszany we wszystkich językach i nic nie robi dobrze. Jednocześnie wiele osobolat zmarnowanych na te niestandardowe języki można by przeznaczyć na ulepszenie kilku podstawowych ram i specyfikacji językowych.


2

Jak zauważyli inni, powstaje wiele nowych technologii w celu zaspokojenia nowych potrzeb i dlatego ułatwiają rozwiązywanie określonych problemów. Dlatego powinieneś być na bieżąco i przynajmniej wiedzieć, co dzieje się w Twojej dziedzinie oraz zrozumieć, które nowe technologie są dla Ciebie odpowiednie.

Z drugiej strony myślę, że czasami w niektórych innowacjach pojawia się również szum: niektóre pomysły są bardzo stare, ale dopiero w ostatnich latach są zmuszane do włączenia się w główny nurt. Czasami mam wrażenie, że nowy język programowania (lub jego nowa wersja) jest wypychany tylko dlatego, że „nowy jest lepszy”, a nowa technologia oznacza nowe książki, nowe narzędzia programistyczne, nowe kompilatory, nowe kursy programowania lub innymi słowy, dochód.

Może się więc zdarzyć, że będziesz musiał nauczyć się nowej technologii, nie widząc żadnej realnej przewagi nad technologią, z której korzystałeś wcześniej, w przeciwnym razie ryzykujesz, że nie będziesz mógł skorzystać z rynku, ponieważ twoje umiejętności wyglądają na staromodne . Od Ciebie zależy śledzenie rozwoju nowych technologii i próba zrozumienia, które z nich mogą zwiększyć produktywność, a które są wygodne, aby Twoje CV wyglądało lepiej.

Konkluzja: Myślę, że powinieneś spróbować dowiedzieć się, co naprawdę uważasz za przydatne, niezależnie od tego, czy jest to nowe, czy stare.


2

Ponieważ „trzymanie się tego, co wiesz” oznacza brak „poprawienia się”. Nie musisz przyjmować wszystkich nowych praktyk i ram, które się pojawią, ale powinieneś przynajmniej mieć świadomą opinię na temat popularnych. W tworzeniu stron internetowych samo zadawanie pytań wyglądałoby okropnie dla ankietera. Web dev jest zaśmiecony karierami ludzi, którzy chcieli przestać uczyć się nowych rzeczy po 2000 roku i tak powinno być, ponieważ robią więcej dla reszty z nas. Trzymaj się z dala od deweloperów, jeśli cię to nie interesuje. Jest to kiepski stosunek ceny do godziny, jeśli część, w której uczysz się nowych rzeczy, wydaje się być pracą.


Ponieważ „trzymanie się tego, co wiesz” oznacza brak „poprawienia się”. Jednym ze sposobów na przeczytanie tego jest to, że pozostając przy tej samej technologii przez dłuższy czas zyskujesz głębszą wiedzę na ten temat, podczas gdy skacząc z jednej technologii do następnych co dwa lub trzy lata pozwoli ci jedynie uzyskać powierzchowną wiedzę, tj. nigdy nie będziesz tak naprawdę zaznajomiony z żadnym z nich.
Giorgio

Nie zrozumiałbym JavaScript tak dobrze, jak ja, gdybym się trochę nie rozwinął i zrozumiał z perspektywy tego, jak naprawdę działają inne języki, lub miał oko na aktualne pojęcia najlepszych praktyk i sprawdził, co ludzie robią w ramach kaptur ich frameworków i bibliotek. Nie sądzę, aby można było ulepszyć programistę w tempie rozsądnym dla kariery bez regularnego kontaktu z nowymi pomysłami.
Erik Reppen

Reppen: Całkowicie się z tym zgadzam.
Giorgio
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.