Jak radzisz sobie z dynamiczną naturą tworzenia oprogramowania na wysokim poziomie? [Zamknięte]


25

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?


1
Co, nie uważasz, że możesz poradzić sobie z Osobliwością? Każdy dobry programista może! - żartuję, nie słuchajcie mnie ...
Klaim

Odpowiedzi:


30

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:

  • Młodsi / mniej doświadczeni praktykujący uwielbiają zwracać uwagę na to, jak ich seniorzy nie osiągają X lub Y, gdy nie rozumieją, że doświadczenie pokazało, że były to złe pomysły. Jednak wydaje się, że każde nowe pokolenie praktyków chce powtarzać te błędy. Zjawisko to jest wspólne dla wszystkich zawodów, nie tylko programowania.
  • Nie wszyscy ludzie, którzy pracowali przez wiele lat, są doświadczeni, dojrzali lub dobrzy. Potrzeba wysiłku, aby stać się lepszym. Dużo wysiłku włożonego w młodość buduje solidne doświadczenie, z którego można później skorzystać.

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ć.


1
Czy chcesz opracować komentarz? Może ci się nie podobać to, co powiedziałem, ale to prawda.
Berin Loritsch

4
Percepcja , że ma to duża część jego zagadki. Wszystko, co zrobiłem, to bezpośrednio poradzić sobie z tym postrzeganiem. Krótko mówiąc, bardziej martwię się o ściganie narzędzia niż o jego umiejętność zostania doświadczonym dobrym programistą. Może nawet stać się świetny . Nie stanie się tak, jeśli całe jego doświadczenie mówi mu, że starsi programiści są do niczego. To straszny demotywator, który stara się dotrzeć tam, gdzie chce być.
Berin Loritsch

1
@Berin Loritsch: To słuszna uwaga. Twój zamiar był dobry. // W Stanach Zjednoczonych zbyt wiele osób potępia się, by zbesztać innych za uogólnienie. Podjąłem wyjątek od twojej odpowiedzi, ponieważ wydawało się, że to robisz.
Jim G.

1
Mamy nadzieję, że z czasem nauczysz się, kiedy inwestować czas w naukę nowych technologii, a kiedy je ignorować. Najważniejsze jest to, że czas jest cennym zasobem. Kiedy pojawiło się SOAP / XML RPC, było za wcześnie, aby powiedzieć, co naprawdę zrobi. Teraz, po kilku latach spędzonych na naszych paskach, nauczyliśmy się bolesnych lekcji i zmodyfikowaliśmy podejście za pomocą usług opartych na REST. Poza tym, my, starzy faceci, potrzebujemy młodych ludzi z nieograniczoną energią, aby dowiedzieć się, co warto poświęcić na naukę. Pociągnięcie za spust może być nieco wolniejsze, ale nie trzeba długo czekać na przyspieszenie.
Berin Loritsch

2
@Berin Loritsch: Być może teraz to rozumiem. W rzeczywistości widziałem niektórych seniorów (w tym mojego obecnego szefa), którzy po prostu kołyszą się, jeśli chodzi o rozwiązywanie problemów. Nie podskakuje z radości, gdy mówię, że możesz łatwo wykonać X przy użyciu tego frameworka, ale nie boi się go używać, gdy widzi, że jest on rzeczywiście użyteczny. Być może więc inni seniorzy, którzy nie są dobrzy, nie są dobrzy, ponieważ nigdy nie byli. Nie dlatego, że są poza zasięgiem ze względu na nowe technologie. Czuję się teraz znacznie lepiej. (Mam nadzieję, że to, co napisałem, ma sens)
Hemant,

20

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.


1
Tak, plus umiejętność / uczciwość, aby wiedzieć, kiedy dostępne narzędzia / umiejętności nie rozwiązują problemu. Więc idź nauczyć się nowych rzeczy, a następnie wróć do „umiejętności rozwiązania problemu”.
Peter Rowell

1
eh ... To jest trochę niejasne, i thh, to jest trochę wybrakowane. Jeśli programista nadal jest całkowicie zadowolony z „rozwiązywania problemów” w vb6 ... cóż, tak naprawdę nie chcę pracować z ich kodem. Utrzymywanie aktualności nie przewiduje przyszłości, wymaga czasu / pracy i jest mniej okazji, gdy masz rodzinę.
Steven Evers

5

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:

  • Nie każdy projekt oprogramowania lub firma potrzebuje absolutnie najnowszej technologii - nawet w oprogramowaniu. Ta zmiana jest najbardziej dramatyczna w przypadku najnowocześniejszych rozwiązań - firmy, które nieco wyprzedzają najnowocześniejsze rozwiązania, często mają wiele możliwości rozwoju i zmian, ale nie są to powszechne pilne żądania natychmiastowych ciągłych zmian.
  • Im bardziej doświadczony programista, tym bardziej powinien być w stanie wykorzystać doświadczenie zamiast najnowszego / największego modnego hasła. Zauważyłem, że osoby, które najbardziej podziwiam od ponad 20 lat w branży, mają mnóstwo metafor dotyczących tego, jak najnowsza C # jest idealną odpowiedzią na problem, jaki mieli pod koniec lat 80. z C. Korzystając z poprzednich problemów i rozwiązań, przynieś więcej zrozumienia do stołu przy mniejszej liczbie badań.
  • Za każdym razem, gdy musiałem oceniać programistów w zespole, umiejętność wykonywania zadań i grania dobrze z innymi przebiła zakres technologii, z którymi przyszedł do pracy programista. Mimo że branża rozwinie wiele konkurencyjnych, nowych języków, interfejsów API i narzędzi, istnieje duża szansa, że projekt będzie korzystał tylko z usług konkurencji. Ale robienie rzeczy i pomaganie innym w tym samym nigdy nie wychodzi z mody, a sposób, w jaki to się dzieje, ewoluuje znacznie wolniej - nie to, że komunikatory internetowe, media społecznościowe, smartfony i wszystko inne w erze cyfrowej nie zmienia tego aspektu programowania , zbyt.

Interesująca może być również praca w firmie, która działa nieco dalej za najnowszą technologią, powiedzmy 3-4 lata. Możesz lepiej widzieć błędy popełniane przez innych i mieć przewagę nad bardziej dojrzałymi narzędziami i implementacjami.
Michael K

Zgadzam się. Właściwie sam trochę pracuję za krawędzią i lubię wiedzieć, że inni uderzyli w nią głowami, zanim będę musiał spróbować. :)
bethlakshmi

5

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.


3

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.


Więc nie jest ci trudno być na bieżąco z nowymi technologiami, gdy dojrzeją?
Hemant,

1
Przemysł ten ma charakter cykliczny. Większość nowych technologii to niewiele więcej niż przepakowane stare pomysły. Jeśli podstawy są mocne, nie będzie problemu z nadążeniem. Pamiętaj, że nie trzeba być w czołówce technologii, aby zarabiać na życie jako inżynier oprogramowania.
bit-twiddler 30.03.11

2

Przez moje wieloletnie doświadczenie:

  • Języki się zmieniły (zwykle stosunkowo powoli).
  • Wzrósł zakres problemów, które można rozwiązać praktycznie (nieco szybciej);
  • Rozmiar i złożoność rozwiązań wzrosła (stosunkowo szybko);
  • Było coś, co jest 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 Cansyndromu. 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 newprzepakowanie czegoś istniejącego. Zazwyczaj takie przepakowywanie ułatwia zrozumienie i zastosowanie.


2

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.


1

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. .


1

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.


1

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).


Nie jestem pewien co do sytuacji, w której mieszkasz, ale w Australii pracownicy medyczni muszą uczestniczyć w ciągłym kształceniu i egzaminach, aby zachować swoją rejestrację (a tym samym zdolność do wykonywania zawodu lekarza).
Sedate Alien

0

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.

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.