Sposoby nauki frameworków/języka itd

1

Witam :)
Chciałbym z ciekawości poruszyć temat nauki. Otóż ciekaw jestem jak wy - zawodowi developerzy badź też zaawansowani amatorzy pojmujecie jakieś technologie?
Osobiście od jakiegos czasu ucze sie javy i zaczynalem wiadomo, podstawy, swing, teraz badam webówke javową. Jednak sęk w sposobie nauki. Osobiscie robie tak, ze znajduje tutorial interesujacej mnie technologii i czytam go/wykonuje przykładowy kod. Jak dokoncze cały cykl tutoriala to sobie przypominam co było i pisze kilka aplikacji z uzyciem tego, czego się nauczyłem. Nie są to jakies duze projekty, takie małe rzeczy wykonane wielokrotnie zeby utrwalić. Czasami też szukam jakiegos CRUD'a, przykładowych aplikacji, czytam kod, próbuje rozumieć, jednak np w wypadku JEE gdzie jest na prawde wiele nowych klas i rzeczy do zrozumienia - czasami czytam i tak na prawde nie wiem jak rozumieć kod.
Znajomy za to robi inaczej - zaczął uczyc sie C#. Zaczął od prostej aplikacji ktorą oferowało mu Visual Studio zeby pojac lekko składnie. Później (i aż do chwilii obecej) robi tak, ze jesli czegos nie wie - klik klik, google pomaga, z tym, że kopiuje kod. Oczywiscie sam tez cos napisze, ale np na pytanie: czy c# ma wielodziedziczenie, nie wiedział jak odpowiedzieć. Jest jednak istotna różnica - on juz wystukuje całkiem fajne projekty.(nie mam pojęcia jakim cudem)

I tu pojawia sie refleksja - który sposób jest lepszy? Z jednej strony robienie tutoriali pomaga poznać wszystko od podszewki - w razie problemów kiedyś może przypadkiem przypomni nam sie "ah! było to! rozumiem", połączy koniec z koncem i wyjdzie rozwiązanie. Natomiast kopiujac kod, nie uczac się składni - raczej nikła szansa, choć.. kto wie?

Różnica miedzy tymi dwoma sposobami jest taka, że ucząc sie od podstaw zajmuje to po prostu wiecej czasu, za to umiemy "porzadniej", natomiast ta druga droga prowadzi do projektu, ale czy to słuszne? może tak, ale nie na dłuższa metę?
Aktualnie poznaje technologie JSF i "pochodne"(aktywnie sie udzielam w dziale java na ten temat :D) i jeśli chodzi o nauke "wśród tutoriali": kolejna sprawa jest tutaj wybór tak na prawde tutoriala. Jeden jest bardzo długi i wyjaśniany kropka w kropke, a drugi bardziej ogólny. Pytanie: ktory lepiej odwiedzic, poznać wszystko "ogólnie", ale szybciej czy dokładnie, ale nieco dłużej.

Oczywiście temat nie ma na celu użalania się jakie życie jest złe, tylko ciekaw jestem waszych sposobów na poznawanie technologii zwiazanych z programowaniem (szczególnie javowców :)) i co sadzicie o tym co napisałem wyżej (odnosnie 2 sposobów, wyboru tutoriala itd)

licze, że komus chciało sie czytac moje wylewy i sie udzieli! :)

0

Moim zdaniem każdy jest inny i nie ma uniwersalnego sposobu. Liczy się efekt.
Nie patrz jak uczy się ktoś inny tylko ucz się tak jak tobie jest to najlepiej.

Co do języków i frameworków to wszystkie one są do siebie dosyć podobne. Naucz się jednego, to drugiej już szybciej, a trzeciego już bardzo szybko.

0
azalut napisał(a):

I tu pojawia sie refleksja - który sposób jest lepszy? Z jednej strony robienie tutoriali pomaga poznać wszystko od podszewki - w razie problemów kiedyś może przypadkiem przypomni nam sie "ah! było to! rozumiem", połączy koniec z koncem i wyjdzie rozwiązanie. Natomiast kopiujac kod, nie uczac się składni - raczej nikła szansa, choć.. kto wie?

Różnica miedzy tymi dwoma sposobami jest taka, że ucząc sie od podstaw zajmuje to po prostu wiecej czasu, za to umiemy "porzadniej", natomiast ta druga droga prowadzi do projektu, ale czy to słuszne? może tak, ale nie na dłuższa metę?

Myślę, że masz rację. Wyklikanie prostej aplikacji w Visual Studio to nie jest wielka filozofia, wypełnienie jej kodem z internetu również nie. Powstaje coś, co jakoś działa, i może nawet czasami robi to, czego chciałby autor. Ale nie rozumiejąc jak to działa, nie będzie w stanie tego zmodyfikować ani ulepszyć.
A ktoś, kto nie wie, czy jego język oferuje wielodziedziczenie czy nie, to jest małpa kodowa, a nie programista.

ktosik23342 napisał(a):

Co do języków i frameworków to wszystkie one są do siebie dosyć podobne. Naucz się jednego, to drugiej już szybciej, a trzeciego już bardzo szybko.

Ile z tych "wszystkich" języków i frameworków widziałeś na oczy, że takie głupoty pleciesz?

0

Około 10 języków i trochę mniej frameworków używałem. Przeglądałem dużo więcej. Nie wszystkie są identyczne oczywiście, ale pewne wzorce się powtarzają.
Nie pieprze głupot. Tylko piszę z doświadczenia, choć daleko mi jeszcze do eksperta to już pewne rzeczy widzę.

Weźmy takiego Haskella i Ocamla. Prawdą jest to, że o ile jeden z nich to jest język leniwy, a drugi gorliwy.
Ocaml jest do w swój dziwny sposób obiektowy, ale jednak oba te języki są funkcyjne i nauczenie się jednego znacznie ułatwia nauczenie się drugiego, bo o ile w wielu aspektach się różnią, to mają też wiele wspólnego. Z oboma miałem styczność podczas mojej nauki na studiach i o ile nie jestem ekspertem zdecydowanie, a wręcz daleko mi do tego, to zauważyłem, że nauczenie się Ocamla było dla mnie dużo łatwiejsza z moją istniejącą już znajomością części Haskella. Tak więc nie gadaj, ze piszę od rzeczy, bo popieram to doświadczeniem.

Podobnie w innych językach programowania. Znajomość obiektowego programowania w Javie, Pythonie oraz funkcyjnego w w/w językach sprawiła, że np. taka Scala nie jest już zaraz językiem aż tak bardzo orientalnym czy dziwnym dla mnie. Ucząc się jej zobaczyłem wiele zapożyczeń znanych mi z innych języków mechanizmów. Oczywiście pełno jest tam rzeczy, których jeszcze nie znam czy do końca nie rozumiem. Tak czy siak znając już kilka języków nauka kolejnego jest nieporównywalnie szybsza. Człowiek nie bawi się z podstawowymi problemami, a skupia się na nauce tego co daje Fun w używaniu tego języka. Pamiętając i mając tutaj na uwadze, że pomimo podobieństw pewnych mechanizmów już sama składnia może zmieniać język. Weźmy takich CoffeeScript i JavaScript. Pomimo tego, że CoffeeScript to po prostu uproszczenie składni JS i nie wprowadza jakiś własnych mechanizmów, który w JS nie ma, to już sama składnia narzuca pewien sposób działania i myślenia.

Z Frameworkami webowymi jest podobnie. Nauczyłem się pierwszego, a później drugi pomimo dużych różnic szybciej poszedł. Po prostu pewne rzeczy się powtarzają.

Teraz ucząc się programować na Androida widzę np. pewne mechanizm znane mi ze Swing'a. Oczywiście pełno jest też nowych dla mnie rzeczy. Generalnie jednak w miarę zdobywania doświadczenia zawodowego widzę, że pewne schematy czy jak to woli wzorce projektowe powtarzają się często w frameworkach. Tak więc przestań mi zarzucać gadanie od rzeczy. Jeśli tego nie widzisz to tylko współczuje trudu w programowaniu.

0
ktosik23324 napisał(a):

Tak więc nie gadaj, ze piszę od rzeczy, bo popieram to doświadczeniem.

Sorry, ale najpierw napisałeś:

Co do języków i frameworków to wszystkie one są do siebie dosyć podobne.

Zgodnie ze znaczeniem słowa "wszystkie" napisałeś, że C, JavaScript, Prolog i Haskell są do siebie podobne. Rozumiesz już, czemu uznałem to za plecenie głupot?

Jeśli tego nie widzisz to tylko współczuje trudu w programowaniu.

Ja widzę podobieństwa między językami i technologiami z tych samych grup, a nie między wszystkim. ;]

0

Hmm... Ok wyraziłem się niejasno. Bardziej chodzi mi o to, że języki programowania ogólnie zawierają dużo elementów powtarzających się w wielu językach. Nie koniecznie, że każdy język jest podobny do każdego innego.

0

Liczy się efekt.

Nie patrz jak uczy się ktoś inny tylko ucz się tak jak tobie jest to najlepiej.

No właśnie i stąd pytanie czy efekt w postaci napisanej aplikacji czy wiedzy ktora pozwoli pisac od podstaw, ale jej zdobycie potrwa znacznie dłużej niz wyklepanie/wklejenie kodu kogo innego itd. Mimo wszystko z obu sposobów cos tam sie uczymy. Jedni wybieraja najpierw teorie potem biora sie za praktyke, a inni na odwrót. Pytanie, który sposób z czysto praktycznego względu sie sprawdza lepiej?

0

Moim zdaniem nie ma uniwersalnego sposobu dla każdego. Oczywiście liczy się zrozumienie, ale wcale nie jest tak, że wykorzystując cudzy kod czy gotowe rozwiązania ich nie rozumiemy.
Tak naprawdę przecież korzystając z frameworka robisz dokładnie to samo, ale w sposób lepszy i bardziej zorganizowany. Nikt nie ma sensu czasem implementować tych rzeczy od zera. Oczywiście możesz to zrobić jeśli chcesz się przekonać czy potrafisz lub just for fun. Czasem też być może dojdziesz do wniosku, że nic istniejącego nie odpowiada twoim potrzebą wtedy też się za to zabierzesz.

Tak naprawdę korzystanie z języka wysokopoziomowego to też wykorzystywanie cudzego kodu, bo te wszystkiej konstrukty językowe ktoś musiał zaimplementować. Niektóre języki idą już tak daleko, że właściwie można powiedzieć, że pozwalają na definiowanie własnej składni (np. Scala), czyli w zasadzie różnica między językiem programowania a wykorzystywanymi w nim narzędziami się zaciera powoli. Tutaj jednak wcale nie jesteś gorszy jeśli nie klepiesz wszystkiego w ASM.

Generalnie to liczy się efekt. Krótko terminowo aplikacja ma działać, a długo terminowo ty masz uzyskać zrozumienie pewnych mechanizmów, których właśnie używałeś.

0

Czy jeszcze ktoś może coś wnieść do tematu :P?

0

Podejście masz dobre, ale niestety czasami jest tak, że po prostu nie ma czasu na dogłębne przestudiowanie danego problemu i trzeba szybko znaleźć rozwiązanie. Więc moim zdaniem, trzeba sobie wypracować "złoty środek" pomiędzy programowaniem ctrl-c ctrl-v, a własną inwencją, pomysłowością i chęciami. Co do samej nauki: ja często robię tak, że zabieram się za jakiś temat bardzo "ostro", tzn. uczę się długo i intensywnie przez kilka dni, a później robię kilka dni/kilkanaście godzin przerwy na coś innego (niekoniecznie związanego z programowaniem), tak aby dać tej zdobytej wiedzy "ułożyć" się w umyśle. Potem wracam do tematu i próbuję już coś wykonać bazując tylko na tym co zostało w głowie. Musisz też wziąć pod uwagę fakt, że po jakimś czasie zdobywając doświadczenie, nauka nowego frameworka/technologii jest znacznie szybsza, więc ciężko jest w zasadzie tylko na początku.

0

Ja, nie licząc przygód z odpalaniem gier na C64 i robieniem "bajerów" w HTML/ CSS/ JS (to było kilkanaście lat temu), zacząłem przygodę z programowaniem od asemblera pod WinAPI. Na początku była to dla mnie czarna magia i zupełnie nie wiedziałem co się dzieje. W zasadzie to już praktycznie nie pamiętam jak to się stało, ale po kilku miesiącach w asemblerze i WinAPI czułem się jak ryba w wodzie.

Wniosek: trzeba drążyć temat i się nie zrażać. Wyniki same przyjdą ;]

Dobrze jest jednak sobie poczytać najpierw jak coś działa i dlaczego jest zrobione w taki a nie inny sposób. Dzięki temu szybciej nabiera się intuicji podczas poznawania języka/ frameworka - które to znowu najszybciej poznaje się dzięki praktyce i rozwiązywaniu konkretnych problemów.

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