Zacząłem programować w wieku 6 lat na Commodore 64. Teraz mam 28 lat i muszę ukończyć 4 kursy pierwszego stopnia z informatyki.
Po tylu latach zaczynam się nudzić pisaniem kodu. Wziąłem kurs informatyki w teoretycznych językach komputerowych i 10 lat kodowania systemu C w dziedzinie bezpieczeństwa sieci i po prostu nie czerpię żadnej zachęty z pisania kodu.
Mogę pisać kod w C, C ++, Python lub dowolnym innym języku, ale nie mogę się ekscytować tym, co robię. Nie czuję żadnego wyzwania. Napisałem kod wielowątkowy, serwer proxy HTTPS MITM i aplikację WSGI bez potrzeby posiadania szczególnych umiejętności algorytmicznych.
Czuję, że wszystkie te nowe rzeczy są takie same, z prostszymi (lub więcej) abstrakcjami lub automatyzacją, ale dla mnie wszystko brzmi tak samo. W kółko. Język obliczeniowy jest w całości obliczalny przez Turinga, więc kodowanie jest jedynie replikacją podobnego wzorca w tym podzbiorze funkcji częściowej.
W codziennej pracy nudzi mnie nawet wyszukiwanie błędów, wykonywanie testów porównawczych kodu lub rozwiązywanie problemu z biblioteką X, Y, Z.
Jestem bardzo ciekawą osobą. Zawsze coś mnie stymuluje. Ale nie mogę, nawet gdy patrzę na świetny kod. Czuję się bardziej komfortowo, jak to działa.
Czy nadszedł czas, aby zrobić postęp w mojej karierze? Lub zdobyć trudniejsze rzeczy z informatyki? Może zdobędziesz dyplom z CS?
Zacząłem czytać swoją pierwszą książkę na temat zarządzania projektami „Peopleware” i coraz bardziej interesuję się cyklem rozwoju oprogramowania. Co sugerujesz zrobić?
Być może próbuję dostać się do Google, Microsoft lub Apple, tak jak zrobili to moi przyjaciele. A może bardziej karierowa ścieżka kariery. Próbowałem także znaleźć dobrą książkę o zasadach komunikacji i „osobowości ludzi”, która przygotowałaby mnie na możliwość zarządzania.
Jakieś sugestie?
PS: Interesuję się, nie jestem przygnębiony :) Uwielbiam góry, trekking, robię sesje zdjęciowe i jestem wspinaczem sportowym, uwielbiam pływać i uprawiać sport w ogóle, czasem biegam, właściwie „ m czytam książkę o historii mojego kraju (Włochy) od AC do dziś i uwielbiam wycieczki (tego lata zrobiłem 4000 km, aby zobaczyć dużo miejsca w Hiszpanii i wspiąć się na nią, w ciągu zaledwie 3 tygodni, nie wakacje, ale maraton , 24 km trekkingu spowodowało uraz przepukliny), uwielbiam teatr i życie w ogóle.
Dzięki wszystkim, myślenie o wszystkich odpowiedziach daje mi szansę, aby moja ścieżka była bardziej przejrzysta.
W celu podsumowania możemy uogólnić na temat najczęściej głosowanej odpowiedzi.
Przede wszystkim ludzie głosują za koniecznością uczynienia z naszej pracy wsparcia dla twojego życia, a nie jedynym powodem do pozostania w życiu (to nie jest mój przypadek), więc jeśli jesteś powodem dla życia, jeśli pracujesz, to szybko przychodzisz do naprawdę depresyjnej sytuacji. Jak mówią ludzie, Wiedeń nie czeka na ciebie :)
Po tym przypomnieniu ludzie sugerują:
- zwiększyć złożoność techniczną, nad którą faktycznie pracuję, aby zwiększyć wyzwanie i mniej się nudzić.
- zmień dziedzinę wiedzy na dziedzinę nietechniczną, starając się zostać menedżerem lub poczyń postępy opiekuna w dziedzinach nietechnicznych związanych z Twoją pracą.
- zmienić specjalizację w innym rodzaju wyzwania technicznego, czy jesteś programistą systemowym? staraj się mniej nudzić, opracowując aplikację dla ludzi, abyś mógł czuć się bardziej komfortowo oglądając ludzi za pomocą swojego przydatnego oprogramowania
- poczynić postępy w dziedzinie informatyki na ścieżce akademickiej
Moim celem właściwą odpowiedzią jest postęp w informatyce, ponieważ uważam, że myślę, że programowanie nie jest jedynym sposobem, aby uzyskać dostęp do informatyki i myślę, że mogę poczuć się lepiej, wybierając inną ścieżkę w informatyce inną niż opiekun inżynierii oprogramowania.
źródło
Odpowiedzi:
To musiało się stać.
Jeśli twoje główne zainteresowania dotyczą kodu, doprowadzą cię do szaleństwa, frustracji i depresji raz na jakiś czas, pewnego dnia na stałe.
Zainteresuj się tworzeniem produktów i ciesz się, że ludzie z nich korzystają. To jest ostateczny cel napisania kodu, prawda? Kod jest jedynie narzędziem do zrobienia czegoś większego.
źródło
Odpowiem na twoje pytanie pytaniem ...
Czy zadaniem programisty jest kodowanie lub rozwiązywanie problemów?
Mówisz, że się nudzisz, ponieważ pisanie kodu wydaje się czymś, co zrobiłeś wcześniej, tak jak każdy fragment kodu został już zrobiony wcześniej.
Ale jak doszedłeś do wniosku, że ten kod jest kodem, który należy napisać? Większość problemów ma setki sposobów na rozwiązanie tego problemu, ale jest tylko jeden najlepszy sposób.
Jeśli naprawdę nie znajdziesz wyzwania, ciekawości ani zainteresowania znalezieniem rozwiązań lub rozwiązywaniem problemów, to naprawdę powinieneś coś zmienić. Chociaż nie jestem pewien, czy byłoby to zarządzanie programowaniem. Nie chciałbym pracować dla menedżera oprogramowania, który odczuwał tyle apatii na temat rozwiązywania problemów. Prawdopodobnie powinna to być inna branża, z innym zestawem problemów.
Jeśli lubisz rozwiązywać problemy, ale nie lubisz kodować, być może nie masz wystarczająco dużo problemów do rozwiązania. Za każdym razem, gdy moja praca zaczyna być nudna, wierzę, że jest problem do rozwiązania. Dlaczego pracuję intensywnie? Jakie rozwiązanie mogę wymyślić, aby usunąć zajętą pracę z mojej pracy? To jest piękno programowania.
źródło
Brzmi dla mnie jak zrobiłeś LOT programowania proceduralnego i uprawiane zmęczony - co w pełni rozumiem. Określanie krok po kroku jest prawie takie samo w każdym języku proceduralnym.
Ponieważ brzmi to tak, jakbyś miał dużo zajęć niezwiązanych z pracą, proponuję nauczyć się niektórych pojęć, które nie przypominają tego, co wiesz teraz, i - tak - jest ich mnóstwo, ale na początek polecam Haskell, ponieważ jest
Oto pełna funkcja sortowania:
(Zobacz wyjaśnienie na http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding )
Jeśli coś takiego jest dla ciebie nowe, zachęcam do rozpoczęcia przygody.
Powodzenia baw się dobrze.
źródło
Komputery nudzą konsumentów. Gdy cały dzień kodujesz interakcje między maszynami, reagują one tak samo za każdym razem. Dobrze zrobić projekt, ale po pewnym czasie jest nudny. Naprawdę pomaga przełamać monotonię czymś, co nie jest bezpośrednio związane z maszyną.
Inspirację czerpałem zarówno z fotografii, jak i studiowania doświadczeń użytkowników. Pomyśl o tym, w jaki sposób Apple może sprawić, że ludzie zaczną ślinić się nad sobą, aby kolejna rzecz wydostała się z Santa Clara, gdy inni kupcy otrzymają ciepłą odpowiedź? Czy naprawdę myślisz, że Android otrzymałby tak wielką reakcję, gdyby Apple tak długo nie opierało się wypuszczeniu iPhone'a na Verizon? Dam ci wielką wskazówkę: niekoniecznie są to produkty tak zaawansowane technologicznie. W manii jest ogromny element psychologiczny.
Zrozumienie projektu produktu i doświadczenia użytkownika jest czymś, o czym wielu z nas musi się wiele nauczyć. Co sprawia, że ktoś tyka? Jak zaprojektować coś na tyle fajnego, aby ludzie opuścili ustalone rozwiązanie? Jak tworzysz swój własny kult technologiczny, taki jak Apple (nie żebym chciał być przywódcą kultowym?) To są bardzo interesujące i stymulujące pytania. Wracają do rozwoju oprogramowania - ale teraz twoja uwaga jest inna.
źródło
Prawdopodobnie po prostu nie masz wystarczającego wyzwania technicznego?
Itd. Oczywiście, bądź przygotowany, aby początkowo zarabiać mniej na polu, gdzie rzeczy są dla ciebie trudne, a nie nudne.
źródło
Motywację znalazłem, przenosząc się na dziedzinę, w której nie ma „poprawnych” rozwiązań, piszę narzędzia redakcyjne, a moja praca jest tak dobra, jak użytkownicy uważają ją za przydatną. Spotykam się z wieloma nietechnicznymi ludźmi i razem staramy się opracować sposoby ulepszenia oprogramowania, z którym muszą współpracować, uważam interakcję człowieka i potrzebę ciągłej zmiany perspektyw całkowicie przyjemną i nagle kodowanie nie jest takie nudne.
Wiem, że nie jest to dla wszystkich, niektórzy radzą sobie z niepewnością związaną z brakiem obiektywnej oceny jakości pracy bardziej niż inni.
Ale warto rozważyć tę opcję.
źródło
Tak, czasami mam wrażenie, że w rzeczywistości ciągle pisze się ten sam kod. Ale nie, nie jestem jeszcze znudzony. Dlaczego?
Ponieważ w zasadzie lubię odkrywać nowe sposoby kodowania oraz nowe, zwięzłe, eleganckie sposoby wyrażania czegoś w kodzie. Można to zrobić na dwa sposoby: ucząc się nowych języków programowania lub ucząc się nowych bibliotek lub ram.
Nauka nowego języka programowania stała się dla mnie łatwiejsza z każdym językiem, którego próbowałem. Po pewnym czasie przestało być bardzo interesujące. Ale potem, jakieś rok lub dwa lata temu, w końcu przeszedłem do programowania funkcjonalnego, które jako paradygmat programowania różni się wystarczająco od OOP, aby stanowić nowe wyzwanie. Wydaje mi się, że to naprawdę wzbogaciło moje możliwości programowania i dało mi nową perspektywę, z której mogę spojrzeć na problem z programowaniem. Teraz próbuję odkryć różne paradygmaty programowania, a nie tylko różne języki programowania. To większe wyzwanie.
Po drugie, uczenie się nowej biblioteki, frameworka lub interfejsu API: jak już dobrze powiedziałeś, nowe frameworki często nie rozwiązują nowych problemów; po prostu rozwiązują to w inny sposób, np. dodając dodatkową warstwę abstrakcji. Jest to możliwe, ponieważ dzisiejsze komputery są mocniejsze niż wcześniejsze maszyny; a może dlatego, że jako całość jesteśmy lepsi w pisaniu oprogramowania.
Ten ostatni fragment prawdopodobnie wymaga wyjaśnienia. Podam przykład: Przez najdłuższy czas, ćwicząc umiejętności programowania, nigdy tak naprawdę nie zastanawiałem się poważnie nad utrzymywaniem kodu, który pisałem. Odkąd zacząłem programować w pracy, moja perspektywa się zmieniła. Pisanie łatwego do utrzymania kodu jest często bardzo ważne w środowisku korporacyjnym, ponieważ każda godzina, którą spędzasz na kodowaniu, kosztuje prawdziwe pieniądze, więc korporacja będzie próbowała zachować istniejący kod, jeśli to możliwe, i istnieje szansa, że w końcu będziesz musiał go pominąć twój kod do następcy.
Uważam, że pisanie łatwego do utrzymania kodu jest w rzeczywistości dużym wyzwaniem. Często oznacza to, że nie napiszesz super-sprytnego i wysoce zoptymalizowanego kodu asemblera (pamiętasz Historię Mela - prawdziwego programistę , ktoś? ;-) Zamiast tego masz większe szanse na skorzystanie z abstrakcji. Im bliżej kodu można znaleźć reguły biznesowe i problematyczne domeny, tym lepiej. Tam właśnie wkraczają wszystkie nowe biblioteki. Jeśli pozwalają ci napisać kod, aby był czysty, przejrzysty, zwięzły i łatwy do zrozumienia, to dobrze.
Przepraszam, jeśli ta odpowiedź jest nieco długa. Próbowałem pokazać, skąd bierze się moja motywacja w programowaniu ... i chciałbym wiedzieć, czy kiedyś czułeś się tak samo i czy (i dlaczego) ostatecznie zrezygnowałeś z motywacji.
źródło
Jeśli masz dość pisania kodu, jeśli go nie podniecasz, jeśli cię nudzi, to może być czas na zmianę. Możesz spojrzeć na przejście na stanowisko kierownicze oraz zarządzać innymi programistami i kierować nimi dzięki swojemu wieloletniemu doświadczeniu. Lub spróbuj przejść na bok do architektury systemu, w której możesz projektować i planować systemy, a inni ludzie wykonaliby większość implementacji.
Możesz też całkowicie zmienić karierę na coś, co absolutnie nie ma nic wspólnego z komputerami. Czy zastanawiałeś się, jaka byłaby Twoja wymarzona praca, gdyby ktoś mógł Ci ją dać?
źródło
Zacznij grać z mikrokontrolerami. To najbardziej odświeżająca i ekscytująca aplikacja talentów programistycznych, o której mogę myśleć.
źródło
Wygląda na to, że punkty początkowe naszych środowisk są podobne, ponieważ oboje zaczęliśmy programować w wieku około 6 lat na podobnych maszynach i z różnych powodów byliśmy w trakcie programowania i poza nim. Żaden z moich stopni nie ma nic wspólnego z programowaniem - mam wszystkie stopnie muzyczne - chociaż wziąłem kilka kursów informatycznych na poziomie magisterskim.
Myślę, że masz rację, obserwując, że programiści często rozwiązują te same problemy wielokrotnie i że „nowe” wszystko opiera się na „starych”. Zdajesz sobie sprawę z tego faktu; zbyt wielu programistów i ludzi biznesu postrzega nowe technologie jako całkowicie oderwane od starych.
Zatem rozwiązywanie tego rodzaju problemów nie jest dla ciebie interesujące. Co by było interesujące? Czy ogólnie lubisz rozwiązywać problemy? Być może życie jako twórca oprogramowania „biznesowego” nie jest dla ciebie.
Wiem, że dostarczyłem więcej pytań niż odpowiedzi, ale mam nadzieję, że udzielenie odpowiedzi na te pytania da wgląd w kierunek, w którym powinieneś pójść.
źródło
Brzmi dla mnie jakbyś utknął. Jesteś w sytuacji, w której nie chcesz być i nie wiesz, jak się z tego wydostać. Moja rada jest prosta: zrób coś innego, aby zrobić coś innego. Nawet jeśli to nie rozwiąże twojego problemu, prawdopodobnie utkniesz.
Nie bierz tego źle (są to przyzwoite osiągnięcia), ale nie jest to wyczerpująca lista wszystkich trudnych i ekscytujących problemów w programowaniu. Nadal istnieje wiele trudnych problemów do rozwiązania. Najtrudniejsze problemy dotyczą pracy na dużą skalę. Napisałeś aplikację WSGI, ale czy napisałeś taką, która może obsłużyć miliard wyświetleń stron dziennie? Napisałeś kod wielowątkowy, ale czy napisałeś kod dla wielu komputerów (z setkami komputerów)?
Krótko mówiąc, jeśli chcesz spróbować zrobić coś nietechnicznego, wybierz to. Ale nie rób tego, ponieważ czujesz, że rozwiązałeś wszystkie problemy, które należy rozwiązać, ponieważ tak nie jest.
źródło