„Połowa wszystkiego, co wiesz, stanie się nieaktualna za 18–24 miesięcy” = (Prawda czy fałsz?) [Zamknięty]


33

Po prostu natknąłem się na to i zastanawiałem się, czy ktoś ma sposób na udowodnienie lub obalenie tego stwierdzenia:

O czym należy pamiętać ... jaki jest okres półtrwania wiedzy w zaawansowanych technologiach? Śledzi to według prawa Moore'a: połowa wszystkiego, co wiesz, stanie się nieaktualna za 18-24 miesięcy.

ŹRÓDŁO: W odpowiedzi Craiga Tradera na to pytanie „ Jaka jest najbardziej skuteczna rzecz, którą zrobiłeś, aby poprawić swoje umiejętności programistyczne?


2
Nie rozumiem, jak można to kiedykolwiek udowodnić.
Oded

50
Statement = (True or False)Tak.
glasnt,

3
Myślę, że to zależy od tego, co wiesz.
LennyProgrammers,

3
@glasnt: w takim przypadku zawsze jest to prawdą: /
Simon

2
Połowa wszystkiego, co wiem, jest już nieaktualna.
JD Isaacks,

Odpowiedzi:


131

To stwierdzenie dotyczy tylko efemerycznych technologii, których i tak powinieneś się uczyć tylko w razie potrzeby. To powiedziawszy, nauczysz się wielu z nich podczas swojej kariery.

Podstawowe zasady i techniki programowania są wieczne.


5
Cudownie lakoniczny. +1
Tim Post

27
@Steven A. Lowe +1 za przyznanie, że szukałeś „efemerycznego”
Tim Post

2
To niesamowite, jak efemeryczna technologia, którą spędziłeś 7 lat na nauce i używaniu, może stać się, gdy przegrywa z Oracle (lub Linuksem). Wprawdzie to, czego dowiedziałem się o tworzeniu i wdrażaniu aplikacji, nie zniknęło, ale nikogo nie obchodzi Pick, Ultrix ani żadna liczba tracących technologii.
Craig Trader

71

Nonsens

Ludzie, którzy mówią takie rzeczy, starają się być sensacyjni, albo uczą się niewłaściwych rzeczy.


8
+1 za „Uczą się niewłaściwych rzeczy”
Martin

4
Wiesz, naprawdę uważam, że powinieneś to całkowicie porzucić i… czekać… WIEWIÓRKO!
Tim Post

+1 za zwrócenie uwagi na sensację występującą w tej branży.
Rei Miyasaka,


17

Najlepszym (najgorszym?) Testem, jaki mogę wymyślić, jest cofnięcie się o rok. Ile wiedzy programistycznej, z której korzystasz na co dzień, nauczyłem się w poprzednich 18 - 24 miesiącach? Co więcej, ile wynaleziono w poprzednich 18-24 miesiącach? Zasada wydaje mi się bardzo podejrzana, ponieważ większość wiedzy programistycznej i technicznej, z której korzystam na co dzień, zdobywałem przez 5-10 lat.

Teraz, jeśli pracujesz dla platformy telefonu komórkowego, być może jest to inna gra.


2
Nie, mobile nie różni się niczym innym. Wszystkie niezbędne umiejętności, których używasz na co dzień, trwają lata. Zgaduję, że łatwo zapomnieć o codziennych umiejętnościach, ponieważ są one półautomatyczne.
Jim

1
Podstawy się nie zmieniają, ale API i techniki się zmieniają. Jeśli programujesz aplikację mobilną, myśląc o komputerze, prawdopodobnie nie będziesz mieć nic użytecznego.
jmort253

Według Apple 85% MacOS X i iOS jest identycznych.
gnasher729,

15

Z mojego doświadczenia wynika, że ​​istnieje ogromny rozdźwięk między medialnym / publicznym wizerunkiem tego, która technologia jest nową nową rzeczą, a tym, co faktycznie jest używane w prawdziwym świecie.

Weź coś takiego jak Visual C ++ / MFC w obszarze aplikacji komputerowej. Choć może się to wydawać stare i przestarzałe i prawdopodobnie nie jest czymś, czego nowy programista powinien się teraz uczyć w zakresie tworzenia komputerów stacjonarnych, wciąż istnieje wiele prawdziwych projektów i miejsc pracy, które są w nim utrzymywane - i prawdopodobnie będą utrzymywane przez lata i dekady. Chciałem podać COBOL jako przykład, ale byłoby to mówienie teoretycznie - tak naprawdę znam osobiście przykład VC ++ / MFC.

Zasadniczo nie chodzi o to, że technologie stają się bezużyteczne i nieużywane, gdy stają się „przestarzałe”, a bardziej, że nie są już postrzegane jako najbardziej aktualny sposób robienia rzeczy i rozpoczynania nowych projektów. Ale wycofywanie dużych systemów oprogramowania z prawdziwego świata, które się nie zepsuły i nie wymagają naprawy, dzieje się znacznie wolniej. Wiele projektów Visual C ++ / MFC, nad którymi pracowałem (które rozpoczęły się na początku lat dziewięćdziesiątych), wciąż jest bardzo żywa i zatrudnia wielu programistów (zarówno w zakresie konserwacji, jak i rozwoju) i wydaje się, że nigdzie się nie wybiera w najbliższym czasie. W rzeczywistości jestem pewien, że większość z tych, o których myślę, będzie jeszcze w 2020 roku i dłużej.

Oczywiście nie jest to nawet główny problem. Główny problem polega na tym, że wiele pojęć jest podobnych lub powiązanych i nie uczysz się „od zera” podczas nauki nowej technologii. Na przykład: kiedy zrozumiesz języki znaczników i ich treść, bardzo łatwo będzie nauczyć się nowych. Więc nie ma znaczenia, że ​​JSON jest nową rzeczą, a wszystko, czego używasz od lat, to XML. To tylko kwestia uczenia się nowej składni - w przeciwieństwie do bycia nie-programistą, który nie wie nic o tym, czym są języki znaczników, ani o wewnętrznych koncepcjach danych, które reprezentują itp.

TL; DR: 1) Istnieje wiele „przestarzałych” technologii, ale ponieważ nie jest to seksowna nowa rzecz, nie słyszysz o niej wiele - ale jest to dalekie od bezwartościowości dla osób, które ją stosują . 2) Koncepcje programowania budują się jeden na drugim i ewoluują. Niewiele rzeczy jest naprawdę czymś, czego musisz się całkowicie nauczyć od zera i zapomnieć o starym.


4
MFC - co za ból!
Job

@Job - O tak.
Tabele Bobby'ego,

Lol, czy to nie wszystko boli: P
crosenblum

Hej, pracuję też nad VC ++ / MFC!
David Thornley,

2
+1 Głównie za wskazanie rzeczy nie przestaje się używać, po prostu przestaje być częścią zeitgeist.
Orbling

12

Wszystko zależy od tego, na czym koncentrujesz się w nauce, zapamiętywaniu i ogólnie wypełnianiu mózgu. Szczegóły mogą szybko stać się nieaktualne, ale zasady powinny trwać znacznie dłużej.

Przykłady rzeczy, w które byłem ostatnio głęboko zaangażowany:

  • Java Ogólna składnia a Kontenery wpisane
  • Typy danych MySQL, limity pamięci itp. A zasady skalowalności bazy danych
  • Lekka warstwa abstrakcji bazy danych Pomogłem stworzyć kontra zasady sztywności / elastyczności abstrakcji bazy danych

Odważne rzeczy, których się nauczyłem, będą trwać znacznie dłużej niż rzeczy po lewej stronie. Jeśli chcesz uniknąć pułapek przestarzałości w programowaniu, skoncentruj się na zasadach .


11

Robert Harvey to przybił , ale po przemyśleniu tego jestem zmuszony rzucić zwięzłość na wiatr i odpowiedzieć.

Muszę dodać zastrzeżenie, nie zagłębiałem się w Perl On Rails od momentu ogłoszenia. Miałem wrażenie, że działa dobrze dla bardzo zlokalizowanego zastosowania, do którego został zaprojektowany i zanotowałem go do wykorzystania w przyszłości.

Nie poddałem się także ponad 50 permutacjom standardowej biblioteki C w ciągu ostatnich dwóch dziesięcioleci. Chciałbym móc z nimi linkować, ale wydaje się, że są one obecnie kwestionowane.

Wstaw tutaj długie zdanie na temat wiary we wszystko, co czytasz lub słyszysz.

Gdy pojawi się coś nowego, chwyć go i spójrz. Jeśli powiesz „kutas”, upuść. Jeśli powiesz „wow”, popraw to. Jeśli nie możesz pomyśleć o takiej decyzji, wybierz mózg ludzi, którzy potrafią.

Sędzia wszystko na wartości technicznej sam . Warto poświęcić swój czas, co oznacza, że ​​oszczędza Twój czas, jednocześnie podnosząc kciuki do góry od większości swoich rówieśników.

Teraz odpowiem bezpośrednio na twoje pytanie:

Połowa wszystkiego, co wiesz, stanie się nieaktualna za 18–24 miesięcy, prawda czy fałsz?

Musisz nas poinformować za 18 - 24 miesiące. Firmy płacą znaczne sumy, aby ludzie mówili o tym, jak świetny jest ich produkt. Musimy przedzierać się nie tylko przez nowe firmy, ale także przez gigantów, którzy wydają znaczne sumy gotówki, aby:

  • Niech [sic] szanuje blogerów, którzy zwracają się do czytelników
  • Wysyłaj drogie markowe, gratisowe sprzęty, aby zyskać lokowanie marki w miejscu, gdzie można to zauważyć, przechwalając się lub używając
  • Płać ludziom za upewnienie się, że widzisz „działające rozwiązanie” w pierwszej dziesiątce Google podczas badania problemu
  • Zapłać za „nagrody” z witryn „pierwszej dziesiątki” i udawaj, że są wiarygodne
  • Istna mnóstwo innych środków, aby przekonać ludzi, aby przestali myśleć i po prostu podążali za tłumem

Możesz oczywiście podejmować własne decyzje na podstawie wcześniejszych doświadczeń i prób z czymś nowym. Robiąc to, unikaj pracodawców, którzy mają menedżerów, którzy wydają przykazania na podstawie swojego czytnika RSS.

Mam jednak tę niesamowitą nową bibliotekę do budowania mostów, która jest wystarczająco inteligentna, aby przełączać się między Brooklynem a Londynem w zależności od lokalizacji. Będzie ogromnie, chcesz wejść na parter?

Moja odpowiedź jest rzeczywiście celowo sardoniczna i może anty-boolowska, ale naprawdę? Dla celów obsługi wyjątków moja odpowiedź brzmi jak nieprawda .

Jeśli uważasz, że coś jest technicznie poprawne - obejmij to, w przeciwnym razie będzie to normalne. C jest moim głównym językiem, działa tak samo dobrze, jak prawie dwie dekady temu, podczas gdy dostaję ponad dwukrotnie więcej niż prawie dwie dekady temu.

Podziwiam twoją zwięzłą formę i cytaty, ale wydaje się, że to eksperyment naruszający prawo .

Dobra robota :)


8

To zależy od tego, co spędzasz czas na nauce. Nauczyłem się programowania w powłoce Bourne'a i języku C w 1980 roku. Nadal używam go codziennie. Z drugiej strony czas spędzony na nauce struktur menu Compuserve jest całkowitą stratą i nawet wtedy nie był tak strasznie przydatny. Potem są rzeczy pośrednie, takie jak wyprowadzenia kabla RS-232 i protokoły szeregowe: dzisiaj bezużyteczne, ale niezbędne przez około dziesięć lat mojego życia. Starannie wybieraj technologie, na które poświęcasz dużo czasu.


Pamiętaj, że komunikacja szeregowa jest nadal z nami. Po prostu nie kable.

RS-232 żyje, ma się dobrze i żyje w zagnieżdżonej przestrzeni.
Tim Williscroft,

7

Zasada jest prawdziwa. Rzeczywista wartość jest - według mojej wiedzy - znacznie większa.

Pamiętam prezentację Pragmatic Programmer, w której mówiono o siedmiu latach, ale nie mogę jej teraz zlokalizować, więc wartość może być nieco inna.

Pomyśl tylko, jak zmieniły się technologie: piętnaście lat temu sieć była zupełnie nowa i wszyscy próbowaliśmy pisać strony internetowe - być może nawet przy stołach - i animowany gif. Siedem lat temu AJAX wystartował. Dzisiaj niektórzy ludzie piszą gry typu Doom na telefony komórkowe.

Najlepiej jest nauczyć się ogólnych rzeczy, które można zastosować w następnej technologii zamiast mówić „Rozpocznij! Znam tylko Visual Basic!” (lub odpowiednik za 15 lat).


Próbowałem fizz buzz w VB, ale .. nie udało się ... :(
Tim Post

@ Czas, poczekaj 10 lat i mam nadzieję, że nie będziesz musiał ...

5

Nie wydaje mi się, żeby to było dokładne.

Kiedyś było to bliższe prawdy - dawno temu miałeś mały wybór, ale musiałeś programować na stosunkowo niskim poziomie abstrakcji, co oznaczało znajomość ogromnej liczby szczegółów, które nie były już istotne na nowej platformie.

Z czasem jednak coraz więcej programów jest wykonywanych na coraz wyższych poziomach abstrakcji. Wyższy poziom abstrakcji przekłada się mniej więcej bezpośrednio na mniejszą troskę o szczegóły, które mogą się szybko zmienić i stać się nieaktualne.

Oczywiście są ludzie, którzy pracują na takich urządzeniach, jak sterowniki urządzeń lub małe systemy wbudowane, którzy nadal muszą pracować przy niskim poziomie abstrakcji. Poza takimi obszarami nie ma jednak usprawiedliwienia dla takich rzeczy. Tak, wielu ludzi zrobić dowiedzieć się wiele ciekawostek nigdy nie potrzebują, ale jeśli naprawdę używanie takiego rzeczy w kodzie dużo, szanse są całkiem dobre, że jesteś po prostu nie czyni bardzo dobre decyzje. Większość takich rzeczy można (a co ważniejsze należy) na ogół unikać.


Pamiętam, kiedy GNU uruchomił się i stał się opłacalny, i korzystały z niego wszystkie „fajne dzieciaki”. Ale to było w czasach, gdy „fajne dzieciaki” nie miały nawet metody, ale pewien stopień przemyślenia. MUSZĘ powiedzieć, że w dzisiejszych czasach masz rację.
Tim Post

4

Być może prawda, a może nie; Jednak nawet jeśli rzeczy, których się nauczyłem, stają się przestarzałe wkrótce po ich nauczeniu, zawarte w nich koncepcje i pomysły mogą być przydatne znacznie dłużej.


Tak, stają się punktem odniesienia, a w najgorszym razie anty-wzorem. :)
ideasman42

4

Jeśli tak było tylko 5.39x10 -6 z Mityczne Man-Month byłoby dzisiaj istotne. Ponieważ jest bardzo niewiele kluczowych zasad, które szczegóły Freda Brooksa datowały znacznie lub okazały się zasadniczo fałszywe.


1
Nie jestem tego taki pewien. Niektóre rzeczy są przestarzałe (czy ktoś naprawdę korzysta obecnie z Głównego Zespołu Programistów?), Bardzo niewielu jest całkowicie w błędzie (jego konkluzja na temat ukrywania informacji jest tym, co przychodzi na myśl), a sporo rzeczy zostało ustalonych w popularna kultura i prawdopodobnie nie są bardziej istotne niż argumenty Zygmunta Freuda, że ​​istnieją części naszego umysłu, których jesteśmy nieświadomi. Nadal warto przeczytać i oczywiście jest o wiele więcej niż pięć części na milion (dwie litery?), Które są istotne.
David Thornley,

Dobry komentarz, (+1) do odpowiedzi, argumentowałbym, że Zespół Głównego Programisty nie jest zasadą, ale odpowiedzią. To prawda, że ​​bardzo mylił się co do ukrywania informacji; ale przyznaje to również w 20. edycji rocznicowej. Twierdziłbym, że wiele z tego, co powiedział Brooks, nie ugruntowało się w kulturze tworzenia oprogramowania, w przeciwnym razie nie mielibyśmy tak ekstremalnego wskaźnika awaryjności w tworzeniu oprogramowania.
AlexC,

Myślę, że podchodziłem do tego z pytaniem, jak duża część książki jest dziś aktualna. Na przykład rozdział CPT nie jest istotny, ale rozdział dotyczący harmonogramów jest martwy i oczywiście nie jest częścią obecnej kultury. Wydanie z okazji 20. rocznicy otrzyma oczywiście częściowo dzięki esejowi „No Silver Bullet”. (Wyszło to 16 lat temu, a zatem zasada w tytule powinna być odpowiednia w około 0,4% i myślę, że możemy się zgodzić, że jest bardziej istotna.)
David Thornley

Ostatnio słyszałem, że IBM nie korzystał z zespołów Chief Programmer ze względu na brak ludzi, którzy mogliby być Chief Programmer, niż brak metody. Byłem głównym programistą, działa całkiem dobrze.
Tim Williscroft,

3

Duża część twojej wiedzy pozostanie aktualna podczas próby czasu (choć może wymagać aktualizacji w miarę upływu czasu), szczególnie podstawowych, takich jak struktury danych itp.

Oczywiście, jeśli znasz język programowania X i Y, nauka języka Z będzie łatwiejsza niż w przypadku, gdy nie znasz X ani Y, więc możesz wykorzystać swoją wcześniejszą wiedzę do dostosowania nowej wiedzy.

Warto również wspomnieć, że wiele umiejętności, które były ważne kilkadziesiąt lat temu, są nadal aktualne, nawet konkretne technologie, takie jak C (początek 1970 r., Nadal aktualne).

Możliwe, że połowa tego, co wiesz, będzie z czasem przestarzała i prawdopodobnie więcej niż tylko połowa, ale każde 18–24 miesięcy brzmi trochę ekstremalnie.


2

Pojedyncze fakty nie mają wielkiego znaczenia. Bierzesz je, rozumiesz, stosujesz tylko na chwilę.

Ale uczy to procesu obsługi faktów lub przynajmniej obsługi określonego podzbioru faktów. Nauczyłem się wielu matematyki w szkole, z których tak naprawdę nigdy nie korzystałem. Wciąż uczyłem się i trenowałem matematyczne myślenie.

Pracowałem jako programista internetowy w Ruby on Rails. I chociaż obecnie nie piszę stron internetowych, mocno wpłynęło to na mój kod myślenia i uczyniło mnie lepszym koderem C ++. (Na przykład użyj więcej STL).

Podobnie jest z nauką rakiety. Nigdy nie napisałem żadnego dużego programu, ale dało mi to nowy punkt widzenia do zastosowania w obszarze problemów.

Chodzi tylko o trening umysłu ...


2

Myślę, że możesz z łatwością obalić to stwierdzenie, bawiąc się przedmiotem, który znajduje się w „połowie wszystkiego, co wiesz”.

Istnieje pewna dystrybucja wiedzy, z której część stanie się przestarzała (bez względu na tempo). Tak więc, jeśli dana osoba zawiera tylko wiedzę z połowy tego spektrum, która pozostanie po 18-24 miesiącach, łamie to stwierdzenie.


2

Oto lepsza wersja zdania: połowa wszystkiego, czego nauczyłeś się dzisiaj (lub w tym tygodniu, w tym miesiącu lub w tym roku), stanie się przestarzała za rok lub dwa. To prawda - uczysz się, jak zrobić coś w wersji 5 narzędzia, a gdy pojawi się 6, robi to automatycznie, lub uczysz się, jak robić coś w języku, który się nie chwyta, więc nigdy więcej tego nie użyjesz. Ale druga połowa tego, czego uczysz się każdego dnia, pozostaje z tobą i rośnie, i to sprawia, że ​​programista z 20-letnim doświadczeniem jest lepszy niż ten z dwuletnim doświadczeniem.


1

Jest tu bryłka prawdy lub trafności, ale myślę, że została przedstawiona niedokładnie.

Lepszym sposobem przedstawienia tego byłoby

Jaką wiedzę wykorzystałeś dzisiaj 18–24 miesięcy temu?

lub

W ciągu 18-24 miesięcy, ile wiedzy, o którą się ubiegasz, już wiesz? Ile musisz się dziś nauczyć, aby wykonać te zadania?

Może to zależeć od dziedziny, w której pracujesz, ale wiem, że ciągle pracuję nad nowymi technologiami. Wydaje się, że każdy projekt zawiera ogromną ilość nowych rzeczy, których muszę się nauczyć - nowe ramy i wzorce, nowe podejście do nieco różnych problemów lub po prostu nowe narzędzia, które (podobno!) Są lepsze niż te, których wcześniej używaliśmy.

Jeśli co sześć miesięcy projekt wymaga zaledwie 12,5% nowej wiedzy, to w ciągu dwóch lat pełne 50% wykorzystanej wiedzy będzie „nowe”.

To powiedziawszy, nie jest to zbyt znaczące ani dokładne.

  • „Stare” rzeczy nie są przestarzałe.
  • „Nowe” rzeczy w znacznym stopniu pokrywają się ze starymi
  • Zasady są ogólnie zbywalne

1

O Boże, taka cudowna, rozsądna odpowiedź jest powyżej. Dobra robota.

Krótko mówiąc, jeśli jest to moda lub trend, jeśli jesteś dobrym programistą, przeczytasz o tym, a następnie wrócisz do tego, co zwykle robisz lub pracujesz.

Chyba że istnieje coś istotnego dla tego, co robisz, lub nowe praktyki, które mają dla ciebie sens.

Tylko dlatego, że coś jest nowe, nieco nowe lub nieco stare, nie oznacza, że ​​musi to być rozwiązanie do niczego.

Mam proste zdanie, które obejmuje wszystko.

„Jeśli to działa, użyj go”

Oznacza to, że jeśli ta nowa technologia jest niesamowicie fajna, ale nie ma nic, co zwiększyłoby wydajność pracy, jakość, podatność na błędy lub rozwiązania problemów technicznych, takich jak rozwiązania mobilne lub klient / serwer. Niż najlepiej go przeczytać, a następnie zignorować, dopóki nie będziesz miał praktycznego zastosowania.

Widziałem i czytałem więcej ludzi marnujących czas, próbujących znaleźć nową, gorącą rzecz, a następnie użyć tej nowej. Co zwykle kończy się całkowitą stratą czasu i pieniędzy.

Ważne jest, aby zawsze uczyć się i ćwiczyć oraz doskonalić swoje rzemiosło i umiejętności.

Powinieneś jednak dowiedzieć się, co jest przydatne lub co daje różne perspektywy rozwiązywania problemów, które zwykle masz.

Ale poza tym powinien wrócić do podstaw bycia niesamowitym programistą.

  1. http://www.joelonsoftware.com/articles/fog0000000043.html
  2. Planowanie
  3. Proces zarządzania projektem - aby upewnić się, że żaden kod nie zostanie uruchomiony przed ustaleniem jasnego planu i zatwierdzeniem go przez osoby, które poprosiły o pracę.
  4. Popraw czytelność swojego kodu - Ponieważ wszyscy pracujemy nad kodem innych osób
  5. Zorganizuj się, bądź wydajny

Stosuję najlepsze praktyki zdrowego rozsądku, których wszyscy uczymy się na podstawie naszych doświadczeń. Nie trać czasu na rzeczy, które są po prostu fajne.

Ponieważ szczerze mówiąc, fajne nie jest po prostu fajne.


0

Słyszałem to wyrażenie przypisane do dziedzin inżynierii, a nie programowania. Mówiąc dokładniej, słyszałem: „Zanim uzyskasz tytuł licencjata inżyniera, pierwsze dwa lata studiów będą oparte na starej technologii”. (Lub coś w tym rodzaju).

Nie sądzę, że w ogóle dotyczy to programowania. Jedynym możliwym sposobem, w jaki mogłem to zobaczyć, jest to, że funkcje są przestarzałe lub usunięte z języka programowania / biblioteki / cokolwiek innego.


0

Przeciętna platforma technologiczna utrzymuje się od 10 do 25 lat, więc wydaje mi się to mało prawdopodobne, nawet jeśli całkowicie pominiesz fakt, że znajomość wzorów utrzymuje się dzięki technologiom. Jeśli jesteś na jakiejkolwiek dużej platformie, możesz liczyć na to, że ten stos będzie popularny przez co najmniej 5 lub 6 lat, zanim zacznie on zanikać. Znam programistów, którzy kodują w RPG od 30 lat, używając prawie identycznego sprzętu i oprogramowania.

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.