Uważam się za programistę wysokiego poziomu. Bardzo lubię czytać i pomogło mi to w trakcie mojej kariery. Myślę, że mam się dobrze.
Obecnie spędzam dużo czasu ucząc się nowych rzeczy. Nie jestem do kitu, jeśli chodzi o pisanie kodu, ale zaraz założę rodzinę i regularnie widzę wielu seniorów z 14-15-letnim doświadczeniem, którzy - ponieważ ograniczają naukę nowych rzeczy - teraz są do kitu w programowaniu. W pewnym momencie były inspirującymi postaciami, ale już nie są.
Możesz argumentować, że podstawy nigdy się nie zmieniają, ale wydaje się, że robi to różnicę, gdy kodujesz na Delphi przez 10 lat i nagle wszyscy używają frameworku .NET. To prawda, że doświadczony deweloper zajmie mniej czasu podczas nauki nowych ram, ale jeszcze nie czas popytu i wysiłku.
W jaki sposób twórca oprogramowania radzi sobie z wymaganiami związanymi z pracą, a jednocześnie jest w stanie skoncentrować się na rzeczach, które niekoniecznie wykluczają cię z pracy, takich jak założenie rodziny?
Odpowiedzi:
Coś, co powiedziałeś, wyróżniało się: „Regularnie widuję wielu seniorów z doświadczeniem 14-15 lat… teraz są do bani w programowaniu”. To dość szeroki pociągnięcie pędzlem, którego używasz do malowania ludzi z doświadczeniem. Chciałbym wskazać kilka rzeczy do rozważenia:
Być może ludzie, o których mówisz, nigdy nie byli dobrzy. Jest tak możliwe, że patrzą na ciebie, zastanawiając się, dlaczego upierasz się, aby robić rzeczy w trudny sposób?
Prawdą jest jednak, że zakładając rodzinę, masz znacznie mniej czasu na nadrobienie nowych zabawek. W rzeczywistości masz mniej czasu, gdy twoje dzieci starzeją się niż ty, kiedy są młodsze. Zabawki nie czynią cię lepszym programistą. Nie rób też narzędzi. To, co czyni cię dobrym, to umiejętność rozwiązywania problemów i budowania działającego rozwiązania. To, co czyni cię wielkim, to umiejętność nauczania innych, jak być dobrym. Właśnie tam doświadczenie zaczyna świecić.
źródło
Trudno przewidzieć przyszłość. Ale jedna rzecz jest na pewno najbardziej cenna bez względu na technologię.
To zdolność programisty do rozwiązywania problemów .
Wiele jakości programistycznych jest niezależnych od technologii. Na przykład zdolność analityczna jest najważniejszą cechą, o której wiem. To jak nauka matematyki. Jest po prostu ponadczasowy.
źródło
Chciałbym mieć pozytywną lub konkretną myśl - ale myślę, że programista jest na bieżąco i równoważy pracę / rodzinę, różni się ogromnie od programisty do programisty.
Losowe przemyślenia:
źródło
Po pierwsze, Microsoft zajmuje się sprzedażą narzędzi programistycznych i platform do uruchamiania tego oprogramowania. To zachęca ich do wprowadzania zmian, niezależnie od tego, czy są potrzebne, czy nie. Nie oznacza to, że wszystkie ich zmiany są bezużyteczne, tylko że w naszym zawodzie jest wiele obszarów, które są znacznie bardziej stabilne. Dzięki doświadczeniu lepiej rozpoznasz, które bandwagony są warte natychmiastowego skoku, a na które możesz poczekać.
Po drugie, doświadczenie wymaga tylko czasu. Większość programistów z 15-letnim doświadczeniem, którzy są teraz źli, była zła 15 lat temu. Nie mylcie się z wiekiem, co można odpowiednio wytłumaczyć niekompetencją.
Po trzecie, nie należy mylić posiadania przestarzałej wiedzy z niemożnością korzystania z najnowszych i najlepszych w razie potrzeby. Zwykle wystarczy po prostu wiedzieć, co tam jest. Na przykład do niedawna moja wiedza na temat programowania stron internetowych była pod koniec lat 90., ale kiedy chciałam zbudować witrynę internetową dla mojego brata, wiedziałam wystarczająco dużo, aby sprawdzić „nowomodne” technologie, takie jak CSS, jQuery i systemy zarządzania treścią, i byłam dość przyspieszyć w ciągu kilku tygodni. Innymi słowy, jeśli nie potrzebowałeś czegoś w ciągu ostatnich 10 lat, prawdopodobnie nie zdarzy się sytuacja kryzysowa, w której chciałbyś być na bieżąco.
Wreszcie bycie rodzicem jest naprawdę dużym zaangażowaniem, ale wydaje się, że jest to mniej czasu niż myśli wielu bezdzietnych ludzi. Rodzicom nadal udaje się czytać książki, oglądać telewizję, grać w gry, surfować po Internecie, a nawet brać udział w zajęciach. Shocker, wiem. Po prostu robisz to w mniejszych porcjach i ustalasz priorytety. Jedyne, co całkowicie zrezygnowałem, to oglądanie powtórek.
źródło
Zapewniam cię, że osoby wykazujące słabe umiejętności programistyczne po dziesięciu do piętnastu latach nigdy tak naprawdę nie zinternalizowały tworzenia oprogramowania. Opanowanie zestawu narzędzi to nie to samo, co opanowanie sztuki tworzenia oprogramowania.
Piszę kod od ponad trzydziestu lat. Przeszedłem przez kilka okresów, w których musiałem umieścić swoją karierę na autopilocie z powodu zewnętrznych zobowiązań i / lub zainteresowań. Trzeba się uczyć, jak się starzeć, aby uniknąć wczesnego skakania na modę. Większość technologii nie spełnia swoich wymagań. Jako starszy praktykujący z obowiązkami niezwiązanymi z pracą, trzeba być skąpym w swoim czasie. Doświadczony praktykujący może pozwolić sobie na kilka lat oczekiwania na nową technologię, ponieważ opanował już sztukę tworzenia oprogramowania.
źródło
Przez moje wieloletnie doświadczenie:
flavor of the day
(czasem dobre, często złe).Jak zauważono w dyskusji na temat wzorów, czteroosobowy gang nie wymyślił wzorów. Wymyślili terminologię i szablony rozwiązań, które już były stosowane.
W przeciwieństwie do wielu innych dziedzin wciąż jest wiele rzeczy, które nie są powszechną praktyką. Widziałem wiele nowatorskich rzeczy, które przychodzą i odchodzą. Wiele z nich polegało na przeredagowaniu technik już stosowanych w praktyce, a te zwykle do pewnego stopnia się udawały. Inni mniej lub bardziej odeszli i większość z nich ma nowe podejście. (Czy ktoś ostatnio widział język 5. generacji?)
Programiści, których widziałem, którzy są najbardziej efektywni, mogą wybierać i montować sprawdzone komponenty w działające rozwiązanie. Rzadko wiąże się to z czymś najnowocześniejszym, co ogólnie zwiększa ryzyko projektu. Umiejętność budowania na pracy, która została już wykonana, pozwala nam zwiększyć zakres tego, co jest możliwe.
Języki programowania należą do stosunkowo niewielu rodzin. Znajomość jednego języka w rodzinie ułatwia pracę z podobnymi językami. Zrozumienie bibliotek dostępnych w tym języku i wykorzystanie ich może znacznie zwiększyć wydajność i niezawodność. Ogólnie rzecz biorąc, wybrałbym starszy język z odpowiednimi bibliotekami niż nowy język bez odpowiednich bibliotek.
Podczas stosowania nowych technologii ważne jest, aby uniknąć
Because We Can
syndromu. Dodanie nowej technologii, ponieważ jest to smak roku, powoduje więcej problemów niż rozwiązuje. Wiedza, kiedy technologia rozwiąże prawdziwy problem, a kiedy tylko zwiększy złożoność, jest przydatną umiejętnością.Naprawdę dobry programista rozwiąże nowe problemy, a resztę wykorzysta istniejące rozwiązania. Niewiele firm potrzebuje najnowocześniejszej technologii, wszystkie potrzebują solidnych rozwiązań.
Zwykle żałuję zsuwania się żyletki. Nie przypominam sobie, by kiedykolwiek żałowałem, używając sprawdzonej technologii. Jednak wiele z tego, co jest opisane jako
new
przepakowanie czegoś istniejącego. Zazwyczaj takie przepakowywanie ułatwia zrozumienie i zastosowanie.źródło
Nikt nie może nadążyć za wszystkim. Prawdopodobnie byłeś zajęty nadążaniem za ofertą Microsoft. Czy spojrzałeś na Ruby w bazach RAILS i Python i NoSQL oraz tworzenie aplikacji Hadoop i aplikacji mobilnych oraz CSS i HTML5 oraz jQuery i ExtJS i ...?
Od dłuższego czasu jestem w oprogramowaniu. Staram się nadążać za naprawdę nową technologią, taką jak nowe pomysły na masowo równoległe bazy danych, i ignoruję brzydkie (np. MFC, WinForms, SOAP, XML, EJB) i trywialne, o ile to możliwe. Przeważnie widzimy, jak wielkie stare pomysły zostały przepakowane i ostatecznie przyjęte. Programowanie funkcjonalne? Korzystałem z INTERLISP w 1977 roku. Aplikacje na telefony komórkowe? To ta sama grafika interfejsu użytkownika i grafiki 2D, którą tworzymy od co najmniej 30 lat. Oczywiście istnieje sztuka projektowania użytecznej aplikacji na mały ekran dotykowy, ale programowanie wcale nie jest nowe.
źródło
Zgadzam się z @Amir, że twoja umiejętność polega na rozwiązywaniu problemów nie na domenie językowej, ale doceniam twoją troskę, więc:
Jeśli masz swobodę wyboru aktualnego języka, wybierz taki, który jest jak najbliżej pierwszych zasad (tj. Język C ++), aby po przesunięciu pracy do nowej domeny krzywa uczenia się była mniejsza - ponieważ jest to po prostu abstrakcje nad tobą. Jeśli obecnie inwestujesz tylko w języki wysokiego poziomu, przejście w dół jest znacznie trudniejsze (nawet jeśli tylko w percepcji).
Jeśli nie masz tego feedom, po prostu w pełni wykorzystaj swoje 8 godzin w pracy. Jeśli masz wysoką pasję, nie utkniesz i zawsze znajdziesz ciekawe problemy do rozwiązania, które w naturalny sposób doprowadzą Cię do zdobycia dodatkowych informacji. .
źródło
Będzie to zależeć od twojej pracy i pracy, którą chcesz. Są stanowiska, na których programiści nadal korzystają ze starszych technologii. Ciągle dużo COBOL-a (jestem pewien, że coś się zmieniło).
Praca w firmie, która dokonuje ważnej zmiany, jak opisano, może spowodować, że niektórzy ludzie stracą pracę. Czasami firma inwestuje w szkolenie, a zamiast tego wymaga nauki w swoim własnym czasie.
Posiadanie rodziny może ograniczyć wybór pracy. Może sprawić, że będziesz mniej mobilny. Czy możesz iść do pracy na starcie za połowę swojej pensji w nadziei na dużą wypłatę - może nie z dziećmi i hipotekami.
Nowsze nie zawsze są lepsze i wiele nie trwa.
źródło
Nie jestem medykiem, ale co powiesz na analogię między deweloperem a lekarzem? Oba pola uległy ogromnym zmianom w ciągu ostatnich 20 lat, a tempo zmian jest coraz szybsze. Czy wszyscy lekarze nadążają? Nie. Czy wszyscy programiści nadążają? Nie. Czy możesz uogólnić programistów lub lekarzy z 14-15-letnim doświadczeniem? Większe doświadczenie oznacza, że masz większy zestaw odpowiedzi na podobne problemy. Czy doświadczenie jest atutem? Nie w dłuższej perspektywie.
Myśl jak rekin, który musi pływać lub umrzeć. Kontynuuj naukę lub umrzyj (lub przejdź do zarządzania, czyli tam, gdzie większość wybiera się, gdy linia kariery programistów osiąga szczyt około 10-15 lat).
źródło
Mam takie same obawy w moich myślach, ale moje ostatnie myślenie o tym polega na tym, aby przestać próbować przewidzieć własną zdolność do przystosowania się i po prostu przystosowania się. Uważam, że jeśli zakładam, że mogę nadążyć, zwykle tak robię. Jeśli martwię się o to, że jestem przestarzały, może to uczynić z niego samospełniającą się przepowiednię.
Jak powiedziałeś, pozostań na palcach. A jeśli nie możesz nadążyć, nie przejmuj się zbytnio. Technologia ma zabawny sposób, by zatoczyć pełne koło, i możesz znaleźć się z powrotem w głównym nurcie, grając doskonale.
źródło