Jak wskoczyć na wyższy poziom programowania?

0

Hej, od trzech lat pracuję jako programista mobilny. Każdego dnia staram się pogłębiać swoją wiedzę, czytać ciekawe nowinki czy pisać swoje projekty. Jednak zauważyłem, że jeśli chodzi o rozwiązywanie bardziej skomplikowanych problemów to mam z tym problem. Nie potrafię przestawić się na odpowiednie myślenie. Często mam też tak, że próbując zagłębić się w danym problemie tracę koncentrację i nie potrafię jakoś w głowie ułożyć sobie optymalnego rozwiązania. Staram się cały czas nad tym pracować jednak czasami już poddaję się z bezradności. Wiem, że dobrym programistą nie zostaje się od razu jednak faktycznie chciałbym zauważyć jakiś postęp. Obecnie przygotowuje się na studia, ponieważ chciałbym wystartować w następnym roku. Rozwiązuję z czystej przyjemności zadania z matmy czy po godzinach uczę się bardziej skomplikowanych algorytmów w Javie. Podsumowując bardzo mi zależy na tym aby stać się lepszym programistą, nie mam może wybitnego talentu ale chęci i pasję do tego co tworzę :) Jak myślicie ? Czy to jest wykonalne czy po prostu niektórzy się już tacy rodzą i naprawdę to jest ciężkie do zmiany ? Dziękuję za wszelkie odpowiedzi :)

0

Ja się od razu urodziłem lepszy także niewiele pomogę.

A tak na poważnie to musisz zwiększyć ekspozycję na problemy, które chcesz docelowo rozwiązywać. W moim przypadku było to stworzenie własnych configów do basha i vima, które są dopasowane pode mnie. Dzięki temu mogę w dowolnym momencie zacząć szybko nowy projekt i nie marnuję czasu na szukanie przycisku dyskietki w IDE, żeby zapisać plik.

1

Podsumowując bardzo mi zależy na tym aby stać się lepszym programistą[...]
Jak stać się lepszym programistą. Przewodnik

0

To tracenie koncentracji nie brzmi normalnie. Często Ci się zdarza?

0

Staram się cały czas nad tym pracować jednak czasami już poddaję się z bezradności.

Może potrzebne ci więcej przerw? (albo dłuższe przerwy / czy bardziej odprężające?). Wtedy można uzupełnić zapasy motywacji.

Jeśli pracujesz w teamie, to może warto zapytać kogoś o możliwe rozwiązanie problemu, przegadać, bo męczyć samemu się można, ale niekoniecznie będzie to optymalne.

Nie potrafię przestawić się na odpowiednie myślenie. Często mam też tak, że próbując zagłębić się w danym problemie tracę koncentrację

  • możesz sobie rozrysować na kartce papieru problem.
  • możesz sobie notatki robić, żeby nie zgubić ciągu myślenia
  • możesz pracować w TDD. To pomaga na koncentrację, bo wymusza od ciebie podzielenia problemu na małe przypadki testowe i pisania jednego testu po kolei i tylko tyle implementacji, żeby dany test przeszedł. I nawet jak stracisz wątek, to i tak masz to "zapisane" w kodzie w postaci testów, co jest zrobione, a co jeszcze nie. Nie mówiąc już o tym, że jak coś zepsujesz, to też od razu wyjdzie

(chociaż downside jest taki, że TDD nie wszędzie i nie zawsze się sprawdza. Bo czasem TDD męczy. Ale to też pytanie, co robisz. TDD najlepiej stosować, jak się ma dokładnie zdefiniowane wejście i oczekiwane wyjście danego "modułu", gorzej jak coś jest bardziej rozmyte albo niezdefiniowane do końca)

0

@tsz: jeżeli chodzi o problemy z koncentracją to zdarzają mi się często. Nie potrafię się skupić, skoncentrować na problemie bo od razu uważam, że jest on dla mnie zbyt abstrakcyjny. Głównym problem polega na tym, że nie potrafię rozbić trudnego zadania na prosty i elastyczny kod, który będzie łatwiejszy w utrzymaniu. Podejrzewam, że to może być problem z brakiem koncentracji lub ogólnym przemęczeniem jednak nawet jak jestem wyspany to przy trudnym zadaniu nie do końca wiem jak sobie z nim poradzić ;)

I ogólnie dziękuję za wszystkie odpowiedzi :)

0

Kurde mam podobny problem.
Od dłuższego czasu siedzę i czuję że mam szklany sufit nad głową albo blokadę w głowie. Co siadam do jakiegoś cięższego przypadku to zaczyna mnie odcinac i nie mogę tego zrozumieć.
Takie wrażenie jakby czytasz książkę i po przeczytaniu strony nawet nie wiesz o czym była i czytasz od nowa

0

Odnośnie koncentracji - najszybciej idzie ją stracić jeśli zadania jakie robisz wymagają przełączania kontekstu czyli w sytuacji gdy robisz zadanie i musisz trochę zrobić wygląd, trochę bazę, trochę logiki i tak wszystko po trochu. Łatwiej zachować koncentracje, gdy patrzysz na projekt z perspektywy warstw i wtedy generalnie dbasz o to, by warstwa z jaka pracujesz była spójna i np. u mnie taka rzecz sprawia, że koncentracja zachowuje się na dłużej.

Poprawę większego skupiania uzyskuję też poprzez wprowadzania osobno różnych poprawek w obrębie jednej warstwy, i takie poprawki mają na celu poprawę pracy z kodem, rozwiązanie jakiejś rzeczy. Poprawki warto robić, ale oczywiście w granicach rozsądku.

Odnośnie horyzontów typowo programistycznych:

  1. jeśli znasz język statycznie typowany, poznaj dynamicznie typowany i vice versa
  2. jeśli znasz język obiektowy, poznaj funkcyjny i vice versa
  3. jeśli piszesz kod głównie synchroniczny, poznaj metody pracy z kodem asynchronicznym

Pracując z różniącymi się językami poznasz trochę inny sposób radzenia sobie z programami i taka rzecz kształci sposób pracy z róznymi problemami, a i też umiar w doborze technik. Ja języki postrzegam trochę przez pryzmat street fighter, gdzie każdy język ma swoje mocne i słabe strony, i gdy np piszę w pythonie to nie próbuje robić z niego javy bo w tym jest słaby, zamiast tego staram się stawiać na te elementy w pythonie, które mogą podkreślić jego mocne.

Odnośnie kombinowania załatw sobie książkę: Jak to rozwiązać - G. Polya Ta ksiażka tłumaczy jak należy podchodzić do problemów, to podejście sprawdza się również przy programowaniu. Kolejny krok jaki możesz podjąć to np. uczyć inne osoby, ucząc kogoś musisz sam zrozumieć wcześniej, tok rozumowania prowadzi do efektywnego rozwiązywania zadań. Dzieląc się wiedzą zwrócisz uwagę na wiele rzeczy o których rzadko kiedy idzie pomyśleć gdy piszesz kod.

0

@ret: Faktycznie, być może nauka chociaż jeden osoby może sprawić, że zacznę skupiać się rownież na rzeczach, które do tej pory wydawały mi się obce w języku ;) Co do książki, którą poleciłeś to chętnie sprawdzę :P Właśnie czasami takie doświadczenie innych osób może sprawić, że zacznę szybciej rozumieć pewne problemy (oczywiście w połączeniu z praktyką). Nie ukrywam, nie jestem jakimś bardzo dobrym programistą, jednak chciałbym właśnie iść w tym kierunku, aby stawać się coraz lepszy bo daję mi to dużą satysfkację. A jeśli chodzi o sport, to faktycznie warto dodać do swojego życia :P

Dzięki chłopaki za cenne rady :)

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