Chcę się uczyć rzeczy trudnych, lecz mniej czasochłonnych

0

Cześć.

Mam taki nietypowy problem. Uczę się programowania i mam już za sobą zawodowe doświadczenie jako programista front-end. Interesuje mnie rozwój, z tym, że stanąłem przed pewnym problemem. Mam wysokie predyspozycje, jeśli chodzi o zdolności logicznego i abstrakcyjnego myślenia (tak przynajmniej mówią mi inni). Programowanie uważam za PROSTE, LECZ CZASOCHŁONNE.

Czy ktoś jest na takiej drodze lub teoretycznie zna jakieś kierunki nauki i rozwoju, tak aby robić rzeczy TRUDNE, lecz za to MNIEJ ROZŁOŻYSTE (że tak powiem) i czasochłonne? Wolałbym więcej podumać i pomedytować nad problemem, niż lepić klocki i robić nużącą mnie robotę, która zajmuje czas, a nie wymaga myślenia. Wolałbym nauczyć się czegoś nowego w krótszym czasie, ale za to żeby było to trudniejsze, wymagało więcej koncentracji i myślenia. Oczywiście w obrębie programowania albo chociaż IT ogólnie.

Proszę o pomoc.

Pozdrawiam Szanownych

3

Dlaczego uważasz że rzeczy trudne nie wymagają czasu?

2

Jak taki cwaniak jesteś to idź w deeplerning albo na filozofię.

2

aby robić rzeczy TRUDNE, lecz za to MNIEJ ROZŁOŻYSTE (że tak powiem) i czasochłonne?

Ale szukasz czegoś dla własnego rozwoju i rozrywki, czy jako główne zajęcie?

Budowanie czegoś na serio zawsze będzie czasochłonne, chyba że ograniczysz się do etapu Proof of concept.

Więc z taką motywacją to prędzej szukałbym czegoś w rodzaju rozrywki/wyzwań/łamigłówek np.:

  • Leetcode czy inne podobne stronki, gdzie masz challenge, robisz challenge i przechodzisz do następnego
  • taki kanał na Youtube jest The Coding Train, gdzie gościu w każdym odcinku robi coś ciekawego
  • możesz się uczyć implementacji różnych algorytmów. To jest wszystko opisane, więc powinno szybko pójść, a jednak będzie jakieś wyzwanie

Wolałbym więcej podumać i pomedytować nad problemem

Ale to właśnie rozkminianie rzeczy zajmuje czas. Jak wiesz, co masz zrobić, to robisz to szybko (co najwyżej należałoby zadać pytanie, czy da się to zautomatyzować).

Więc by robić rzeczy, które jednocześnie są trudne jak i szybkie w implementacji to należałoby implementować gotowe algorytmy albo np. zacząć się uczyć nowego języka czy technologii albo pouczyć się matmy (czyli coś, co już jest gotowe i ty tylko się tego uczysz).

niż lepić klocki i robić nużącą mnie robotę, która zajmuje czas, a nie wymaga myślenia.

jaka to jest ta nużąca robota?

2

Widzę 2 opcje:

  1. Albo klepiesz za dużo powtarzalnego kodu, a więc brakuje ci znajomości dobrych praktyk, frameworków, bibliotek i narzędzi.
  2. Albo jeżeli pierwsze jest nieprawdą, to tak bardzo nie lubisz programować, że nudzi cię wszystko po za prototypami.

W pierwszym przypadku wszystko przed tobą i szukaj jak ułatwić sobie nużące i powtarzalne zajęcia. W drugim przypadku ten zawód po prostu nie dla ciebie, bywa. Bo to tak jakby mechanik mówił, że naprawianie aut jest proste, tylko nie chce mu się tych śrub już odkręcać. Wypalenie?

2

Szachy? Strategia to duzo myslenia, kminienia a implementacja to przesuwanie bierek

2

Po pierwsze proszę podziel się z nami jak to robisz. Jeśli masz patent, który pozwala pracować z kodem w prosty sposób naucz nas chociaż części z tego. Pokaż jakieś próbki, bo to co mówisz jest interesujące i nie chciałbym z miejsca wykluczyć opcji, że faktycznie jesteś lepszy od większości z nas.

PROSTE, LECZ CZASOCHŁONNE

Tak odnośnie tego co piszesz, czyli proste, lecz czasochłonne to ja mam odwrotne zdanie.Widzę to tak, że jak mam wiedzę i wiem co chcę zrobić, to biorąc pod uwagę dzisiejsze narzędzia, wszelkie udogodnienia jakie mamy w pracy to po prostu klawiatura dymi. Nie powiedziałbym, że programowanie jest czasochłonne, ale jak nie mam wiedzy (czasem nawet nie wiem czego nie wiem), to muszę trochę powalić głową w ścianę, by rzucać odpowiednie pytania, a potem stopniowo szukać na to odpowiedzi. Zdobywanie informacji, wiedzy, a także obrazu jaki warto mieć w głowie kosztuje. To jest najciekawsze część pracy, gdzie zakładam, że większość ludzi wymięka, bo nie wie jak się do tematu zabrać.

0
Majkel22 napisał(a):

jeśli chodzi o zdolności logicznego i abstrakcyjnego myślenia (tak przynajmniej mówią mi inni).

Ten mechanizm w społeczeństwie jest bardzo często używany, jak ktoś jest na ciebie wściekły to może cię zwyzywać, że jesteś głupi, a jak chce cię wykorzystać żebyś w czymś mu pomógł to będzie ci mówił, że jesteś inteligentny, zdolny.

Większość powiedzeń, których używamy sprowadza się do tego że wystarczy podstawić pod implikację i wychodzi, że są błędne logicznie.
Społeczeństwo lubi sobie nadużywać tego.

Abstrakcyjne myślenie właśnie pomaga wyjść z takich problemów jak twój, czyli jakby nie wyróżniasz się zbyt dużą umiejętnością abstrakcyjnego myślenia.

Zwiększanie poziomu trudności jest w zasadzie bardzo proste i można powiedzieć, że nieskończoność możliwości osiągnięcia tego.
Rzeczy są proste jak próbujemy zbudować telewizor, mając do dyspozycji monitor, dekoder i antenę to wtedy ktoś powie, że elektronika jest prosta.
Tak samo jest w programowaniu, korzystasz z samych gotowych bibliotek, modułów, systemu, nie ma tu nic trudnego kilka rzeczy połączysz i masz gotowy produkt.

Wystarczy zejść poziom niżej i to już samo w sobie zwiększy poziom trudności i pozwoli się czegoś nauczyć.

Prosty przykład, możesz sobie grę sapera napisać, spróbować rozwiązanie znaleźć, możesz spróbować wykorzystać inne metody niż tylko przeszukiwanie np. wnioskowanie statystyczne, RL.
Dodatkowo zamiast w pamięci trzymać tablicę i ją rozwiązywać, możesz analizować obraz z ekranu i odtworzyć w pamięci z obrazu tablicę.
Możesz pójść jeszcze niżej i wykonać to sobie na sprzęcie w fpga.

Możesz spojrzeć sobie na świat dookoła i zasymulować go, jako że bywa to bardzo trudne i czasem nie ma gotowych rozwiązań to wciąż jest wiele do odkrycia.
Masz butelkę z wodą i dziurkę z której ucieka woda, możesz wyprowadzić wzór na objętość naczynia, otwór, wyprowadzić wzór na zmianę obojętności w czasie i policzyć całkę, żeby otrzymać wzór.
Jako że jest tam wiele parametrów to zaczynając od prostego wzoru można go w nieskończoność ulepszać, schodząc coraz niżej, na początek możesz z bernoulli equation policzyć, potem możesz rozszerzyć wzór o lepkość cieczy i inne coraz bardziej skomplikowane zjawiska.

Można tak z każdym zjawiskiem próbować go zasymulować na komputerze, heat equation żeby policzyć jak szybko ciepło będzie się roznosić.
Lub sterować laserem bez ruchomych części, wyprowadzając wave equation i dla kilku różnych źródeł można stworzyć takie array z laserów, które przy pewnych warunkach tak się wygaszą, że tylko w specyficzne miejsca dotrze laser(interferencja destrukcyjna) i tak można uzyskać bez ruchomych części sterowanie laserem.

Chodź takie leżenie pół dnia i wymyślanie algorytmu, którego potem klepnie się w pół godziny to najczęściej matematyka, np. sterowanie silnikami, możesz sobie wyobrażać jak każde ramie jest trójkątem, teraz kilka takich trójkątów daje ci forward kinematic i potem próbujesz policzyć inverse kinematic, wszystko to geometria czyli w większości w wyobraźni sobie wyobrażasz jak 2d do 3d przekształcić.
Praktycznie da się często w głowie ułożyć cały program jak ma działać i potem tylko trzeba to przepisać z głowy do pliku.

Jako, że często takie pytania padają i zawsze autor zakłada jeden post przy nowym koncie i nigdy już więcej nie wraca, to trochę wydaje mi się że to troll :>

1

Sa komputery kwantowe, AI, jakas robotyka a może doktoracik na boku. Trochę tego jest.

0

Research, architektura, algorytmy, testowanie?

W IT możesz zająć się np. research'em jakichś problemów zarówno rozwiązanych jak i tych, które być może jeszcze nie zostały rozwiązane. W przypadku tych rozwiązanych możesz się zająć weryfikacją ich poprawności, ulepszeniem istniejących, bądź opracowaniem całkiem nowych podejść do rozwiązania a w przypadku tych nierozwiązanych zaproponować własne - zakładając, że masz też przedyspozycje do bycia kreatywnym w tej dziedzinie. Wtedy programowanie będzie tylko dodatkiem i narzędziem do uzyskania celu jak np. potwierdzenie poprawności twojego podejścia bądź znalezieniem luk w podejściu innych osób.

Mówiąc inaczej możesz spróbować popracować nad własnymi algorytmami rozwiązującymi jakieś problemy bądź też już bardziej szczegółowo - skupić się np. na opracowaniu jakichś metod generowania schematów testowania bądź zbioru corner-case'ów dla usprawnienia procesu testowania oprogramowania. W przypadku tego testowania może to być bardzo cenne ponieważ wiele osób ma problemy z wymyślaniem sobie corner-case'ów albo ogólnie wymyślaniem schematów testowania. Gdybyś był w stanie jakoś zautomatyzować ten proces byłoby to bardzo przydatne.

Możesz się zająć problemami synchronizacji w systemach współbieżnych a już konkretniej np. opracowaniem nowych metod wykrywania i eliminowania wyścigów. Wymagane będą podstawy teoretyczne (np. studia na kierunku informatyka) i praktyka w tym zakresie. Zajomość działania poszczególnych metod synchronizacji i ich implementacji będzie niezbędna.

Opracowywanie optymalnych algorytmów realizujących określony cel. Specjalizacja w projektowaniu rozwiązań informatycznych.

Ogólnie możesz się zająć czymś wspomagającym bądź to procesy powstawania oprogramowania bądź weryfikacji.

Ale na początek możesz spróbować opracować algorytm szacowania prawdopodobieństwa ryzyka wypalenia zawodowego w IT bazując na profilu danej osoby i tych pytaniach:
Wypalenie - pytania do specjalistki

Oczywiście niektóre z tych pytań mogą się pokrywać inne mogą być zbyt szczegółowe - możesz je zoptymalizować, uporządkować, w niektórych przypadkach doprecyzować albo i przy pomocy innych metod znaleźć inne pytania, które mogłem pominąć :)

1
Majkel22 napisał(a):

programista front-end

Ho, ho, to faktycznie wziąłeś się za coś bardzo trudnego.

Ps: żart, bo zacząłeś chyba od najbanalniejszej rzeczy od jakiej się da, a potem zakładasz wątek na forum "chcę czegoś trudniejszego".

1

Skoro twierdzisz, że masz wspaniałe myślenie abstrakcyjne to stawiaj klastry kubernetesowe. Jak postawisz parę systemów z sukcesami to potwierdzisz swoje domniemanie a i kasa za to będzie odpowiednia.

1

@TheWypierdzisty:

Zgadzam się.
"jestem inteligentny ale niczym większym a trudnym tego nie zweryfikowałem"

Zresztą w społeczeństwoe a-matematycznym, a-technicznym bardzo łatwo dostać kadzenie "jaki jesteś ścisły itd" ...
Jedyne co jest pewne, to chyba OP jest bardziej inteligentny od statystycznej blondynki, ale wysztko inne to "może":

0

Trudne rzeczy raczej kojarzą mi się z wymaganą dużą wiedzą, doświadczeniem i oczytaniem w literaturze

Rzeczy które są ciężkie i poziom potrzebny do ich zrozumienia wydaje się być niski kojarzą mi się z zagadkami matematycznymi typu

no three positive integers a, b, and c satisfy the equation a^n + b^n = c^n for any integer value of n greater than 2. The cases n = 1 and n = 2 have been known since antiquity to have infinitely many solutions.

ale z drugiej strony później okazuje się że do rozwiązania czegoś takiego potrzebna była wiedza i narzędzia z kilku innych branchy matematyki, i ogólnie wymagało to pchnięcie świata matematyki do przodu

a, no i jeszcze Ph.D z matmy 13 lat wcześniej udowadnia że trzeba było włożyć w to niemało czasu

Wiles's proof uses many techniques from algebraic geometry and number theory, and has many ramifications in these branches of mathematics. It also uses standard constructions of modern algebraic geometry, such as the category of schemes and Iwasawa theory, and other 20th-century techniques which were not available to Fermat. The proof's method of identification of a deformation ring with a Hecke algebra (now referred to as an R=T theorem) to prove modularity lifting theorems has been an influential development in algebraic number theory.

Together, the two papers which contain the proof are 129 pages long, and consumed over seven years of Wiles's research time. John Coates described the proof as one of the highest achievements of number theory, and John Conway called it "the proof of the century." Wiles's path to proving Fermat's Last Theorem, by way of proving the modularity theorem for the special case of semistable elliptic curves, established powerful modularity lifting techniques and opened up entire new approaches to numerous other problems. For proving Fermat's Last Theorem, he was knighted, and received other honours such as the 2016 Abel Prize. When announcing that Wiles had won the Abel Prize, the Norwegian Academy of Science and Letters described his achievement as a "stunning proof".

Więc imo - beż inwestowania ogromu czasu marne szanse na trudne rzeczy

1
Riddle napisał(a):
Majkel22 napisał(a):

programista front-end

Ho, ho, to faktycznie wziąłeś się za coś bardzo trudnego.

Ps: żart, bo zacząłeś chyba od najbanalniejszej rzeczy od jakiej się da, a potem zakładasz wątek na forum "chcę czegoś trudniejszego".

Frontend jako całość nie jest łatwy wcale. Łatwe to mogą być co najwyżej konkretne taski frontendowe u kogoś, ale łatwe taski tak samo przecież można znaleźć na backendzie.

Np. tworzenie pojedynczych komponentów w React jest łatwe, ale zaprojektować całą skalowalną i utrzymywalną apkę React już trudniej.

Zrobić prosty layout w HTML/CSS jest łatwo, ale zrobić do tego jakieś zaawansowane animacje już może być trudniej.

Poza tym ogólnie - może i łatwo jest coś "naklepać" we frontendzie (czy w każdej innej działce), ale jednak żeby to dobrze potem działało i było wydajne - to już trudniejsze zadanie. Wiele rzeczy wydaje się łatwe, jeśli się je robi byle jak. Jednak jak chce się zrobić coś dobrze, to się okazuje, że to jednak nie takie proste.

0

W tej chwili frontend bardzo dobrze sie rozwija np. JS->NODE->REACT. W ogolnie w życiu rzeczy trudne, nalezy rozłozyć na mniejszcze prostrze kroki, nie tylko w programowaniu tak jest, matmie też skomplikowana całka rozklada sie na sumę całek. Częściową odpowiedzią na twoje pytanie jest tworznie sobie bazy snipetów i podpowiedzi czy to w notatniku czy za pomoca plików, nie wszytsko można zrobic "z palca" (pamięci). Te podpowiedzi ulatwia ci programowanie, to wszytsko jest rozwój zawodowy. Czasmi odpowiedzią na czasochloność programowania jest robienie kilku projektów naraz, gdzie bedziesz miał jakąś zagwostkę nad kodem, mozesz zmiec projekt na inny może łatwiejszy, a zagwostkę zostawiasz do przymyslenia, bo tak naprawde powinno się wiecej w glowie robic niz na kodzie.

0

ML/DeepLearning bym powiedział tyle że tam jest rozminka na koncept a potem cała masa inżynierskiej/żmudnej pracy.
Przygotowanie datasetów/klepanie modeli/analiza wyników/labelowanie i pewnie mnóstwo innych rzeczy.

Chyba że udałoby się skupić na tej działce researchu a reszte "rzemieślniczej" roboty wkonywałby ktoś inny.
Ale takiej pracy pewnie jest mało i bez tzw; rzemiosła i tak sie kariery nie zrobi.

3

Z doświadczenia wiem, że jeśli ktoś twierdzi że ma wysokie zdolności i wszystko dla niego jest proste, to znaczy że jest kiepski i tylko mu się wydaje, że coś potrafi.

1
pvalue33 napisał(a):

W tej chwili frontend bardzo dobrze sie rozwija np. JS->NODE->REACT.

Ta, jasne.

I wcale 99% nie jest w ogóle niezmodularyzowane, ma 0 testów i 0 coverage, i jest zależne od 100 bibliotek, które jak się podbije chociaż jedną wersję w górę to się wywala.

Moze front faktycznie jest lepszy dzisiaj niż np 10 lat temu, ale jak go porównasz do dowolnego projektu niewebowego, to to nadal jest niebo a ziemia.

0
Majkel22 napisał(a):

Mam wysokie predyspozycje, jeśli chodzi o zdolności logicznego i abstrakcyjnego myślenia (tak przynajmniej mówią mi inni). (...)
Czy ktoś jest na takiej drodze lub teoretycznie zna jakieś kierunki nauki i rozwoju, tak aby robić rzeczy TRUDNE (...). Oczywiście w obrębie programowania albo chociaż IT ogólnie.

Hmm, spróbuj może z układaniem płytek? Niby wydaje się proste i czasochłonne ale to tylko pozory. Powodzenia!

1 użytkowników online, w tym zalogowanych: 0, gości: 1