Co zrobić, gdy kodowanie zaczyna być nudne, jakby to wszystko było tak samo? [Zamknięte]

33

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.

wygwizdanie
źródło
10
To jest naprawdę przygnębiające. Dlaczego chcesz zostać menedżerem?
14
Na nieszczęście dla Ciebie i choć może to zabrzmieć ostro, menedżerowie muszą zrozumieć, jak skutecznie się komunikować. To, co napisałeś powyżej, jest niezwykle niejasne i ledwo zrozumiałe. Jeśli planujesz zmianę kariery w zarządzaniu, pracowałbym nad twoimi umiejętnościami komunikacyjnymi zanim cokolwiek innego. Przepraszam za twoją sytuację.
George,
9
@George: Myślę (ale przyznaję, że nie jestem pewien) to jest napisane przez kogoś, kto nie mówi / pisze po angielsku jako swoim pierwszym języku.
FrustratedWithFormsDesigner
2
Zobacz: Po co używać metaprogramowania, aby uzyskać zabawną metaforę na ten temat (robienie tego samego przez cały czas).
2
@George: oczywiście, angielski nie jest moim pierwszym językiem. zaczynam trochę edytować, aby poprawić swój angielski i wyjaśnić swoją frustrację związaną z kodowaniem.
boos,

Odpowiedzi:

50

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
Moje pierwsze zainteresowania to nie tylko kodowanie, jestem wspinaczem sportowym, uwielbiam chodzić do teatru, uwielbiać wycieczki i zobaczyć nowe miejsce, 2/3 europejskiego miasta co roku i 4000 km na wakacjach. nie o to chodzi. pomyślałem o tym, że osiągnąłem punkt, w którym nie ma powrotu do kodowania. problem w mojej pracy nie jest tak trudny do rozwiązania i nie mogę dostać większego wyzwania. Myślę, że właściwą odpowiedzią jest zmiana pracy i uzyskanie większego wyzwania w bardziej złożonym problemie. właściwie jestem już w dziale badań i rozwoju.
boos,
@boos, spróbuj clojure.org/Jobs
Job
2
+1 Czym jest kodowanie bezcelowe? Jest to podobne do kontynuowania budowy ściany zamiast domu.
Mayank
+1 Zacząłem kodować i kontynuowałem do tej pory (ponad 10 lat) tylko po to, aby tworzyć gry i oglądać, jak ludzie je lubią. Byłem w naprawdę trudnych okresach, kiedy zacząłem rozumieć, że w końcu nic nie wiedziałem. W tym momencie nauczyłem się wszystkiego od samego początku, ponieważ nadal chciałem tworzyć gry dla ludzi.
Klaim
To z pewnością zadziałało dla mnie. Niedawno wykonałem niewielką darmową pracę programistyczną dla firmy mojej żony i chociaż obsługa oprogramowania jest trochę uciążliwa, to rozbudziła przyjemność w programowaniu, której od dawna nie odczuwałem.
hermiod
21

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.

Nicole
źródło
1
@Rnesis: uwielbiam rozwiązywać problemy, przestaję kochać kodowanie! to jest sedno mojego „pytania”. Problemem wszystkich programów są zawsze te same rzeczy, szukaj rzeczy, zamów inny, jeśli to zrobisz, jeśli inne, do innych rzeczy, połącz się z bazą danych, nawiąż połączenie ze zdalną usługą, komunikuj się z nią, z powrotem do innej usługi, itd.
boos,
1
@boos - Dziękujemy za odpowiedź, dodano akapit „jeśli lubisz rozwiązywanie problemów”.
Nicole
9

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

  • funkcjonalny - piszesz funkcje składane razem, aby tworzyć większe funkcje, które ostatecznie tworzą program.
  • leniwa ocena - zamiast określać krok po kroku, środowisko wykonawcze pobiera potrzebne wartości w razie potrzeby. Oznacza to, że bardzo często ma się do czynienia z nieskończonymi listami w swoich programach.
  • dopasowywanie wzorców - zamiast dużych struktur if, wyświetlasz wzorce dla wyglądu parametrów, a środowisko wykonawcze wybiera odpowiedni wzorzec i wykonuje odpowiedni kod.

Oto pełna funkcja sortowania:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(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
+1 Do tego samego wniosku dochodzę po przeczytaniu OP. PO musi odejść od proceduralnych. Świat programowania jest o wiele większy, po prostu musi wyjść i odkrywać! :)
Darknight
8

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.

Berin Loritsch
źródło
1
+1 Czuję dużą satysfakcję w programowaniu i myślę, że podoba mi się to ze względu na aspekty projektowe, ale przyznaję, że brak aspektu wizualnego w programowaniu nie sprawia, że ​​jestem całkowicie spełniony. Ja też uwielbiam fotografować i próbuję ćwiczyć inne rodzaje projektowania, takie jak grafika czy architektura.
Nicole,
Spróbuj zaprogramować grę: D, to głównie problemy wizualne
Dominique McDonnell,
7

Prawdopodobnie po prostu nie masz wystarczającego wyzwania technicznego?

  • Wypróbuj wysoko rozproszone systemy. Czy potrafisz w prosty sposób zakodować system do zbierania dzienników z 1000 komputerów w klastrze z mikrosekundową precyzją?
  • Spróbuj w czasie rzeczywistym. Spakuj wszystkie procesy w jednym obrocie silnika.
  • Wypróbuj wizję komputerową lub przetwarzanie obrazu. Przydają się umiejętności matematyczne, umiejętności formułowania kodu, optymalizacja.
  • Wypróbuj AI. Zobacz, jak komputer IBM gra w Jeopardy? Prawdopodobnie w tym obszarze występuje pewna złożoność algorytmiczna.

Itd. Oczywiście, bądź przygotowany, aby początkowo zarabiać mniej na polu, gdzie rzeczy są dla ciebie trudne, a nie nudne.

9000
źródło
4

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

biziclop
źródło
4

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.

stakx
źródło
wszystkie języki i wszystkie paradygmaty i ogólnie można przypomnieć „maszynie Turinga”, bez względu na to, czego nauczysz się nowego języka, nową strukturę, wszystkie rachunki mogą być wykonane przez maszynę Turinga, więc nie mogę się bardziej ekscytować kodowaniem. Uwielbiam pisać czysty kod, a czasem lubię pisać dziwne fragmenty kodu, aby żartować z moim kolegą, jak coś w rodzaju małego zaciemnienia.
boos,
1
+1 Też się tak czuję. Myślę, że moim osobistym ulubionym wyzwaniem nie jest robienie czegoś nowego, ale robienie tego w najlepszy możliwy sposób. Najlepszym komplementem, jaki mogłem uzyskać, jest: „Przeczytałem twój kod i zrozumiałem doskonale”. Uwielbiam recenzje kodu, w których nikt nie może wymyślić nic lepszego.
Michael K,
@boos, jeśli lubisz teorię, to w cs / matematyki / fizyce są tysiące tematów, w których można się zastanowić.
Job
3

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

FrustratedWithFormsDesigner
źródło
3

Zacznij grać z mikrokontrolerami. To najbardziej odświeżająca i ekscytująca aplikacja talentów programistycznych, o której mogę myśleć.

Rob S.
źródło
2

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

Andrzej
źródło
2

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.

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.

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.

Jason Baker
źródło
Oczywiście wiem, że jest tu wiele trudnych rzeczy :) Jestem teraz małym programistą! Problem polega na tym, że złożoność programowania nie sprawia, że ​​jestem szczęśliwy. Z całą odpowiedzią, którą rozumiem, muszę uczyć się więcej rzeczy akademickich, aby poczuć się lepiej. W każdym razie dzięki :)
boos