Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Usystematyzowanie wiedzy.

adriano1191 13 Mar 2016 19:20 762 8
  • #1
    adriano1191
    Level 10  
    Witam,
    Piszę tutaj z nadzieją że pomożecie mi z moim dość dziwnym problemem i nie chodzi mi tutaj o problemy z kodem czy technologią a z moją wiedzą i umiejętnościami.
    Od 3 lat studiuję informatykę na studiach dziennych, podoba mi się programowanie lubię pisać kod i po ukończeniu studiów chciał bym pracować jako programista. Lecz przez 4 lata technikum i teraz przez 3 lata studiów gdzie sporo uczę się programowania mam kilka problemów.
    Jednym z nich jest to że uczymy się wszystkiego i niczego, przez co moja wiedza jest wyrywkowa, poznałem wiele języków, narzędzi ale żadnego dobrze nie opanowałem.
    Dodatkowo nie potrafię określić poziomu moich umiejętności, nie wiem co trzeba potrafić żeby być dobrym programistą. Na zajęciach pisaliśmy wiele programów i do tej pory nie natrafiłem na problem którego nie był bym wstanie rozwiązać ale nie wydaję mi się żeby te programy były jakoś nadzwyczajnie skomplikowane.



    Tak więc precyzując moje pytania chciał bym was prosić o pomoc w usystematyzowaniu mojej wiedzy, żeby ktoś wskazał mi drogę, co powinienem potrafić, czego się uczyć, może polecicie mi dobrą lekturę na ten temat lub jakieś kursy sam już nie wiem.
    Z tego wszystkiego zapomniał bym tylko dodać że ze wszystkich języków które do tej pory poznałem najbardziej przypadł mi do Gustu C#. Ostatnio piszę w nim wszystkie projekty na zajęcia w Visual Studio.

    Przepraszam za moje drobne wodolejstwo ale mam nadzieję że znajdzie się ktoś kto mi pomoże.
    Pozdrawiam.
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • Helpful post
    #2
    Dżyszla
    Level 42  
    Trzeba pamiętać, że programowanie głównie polega na sprawnej analizie problemów, umiejętności ich podziałów na poszczególne składowe, tworzeniu algorytmów rozwiązujących te problemy, planowaniu i umiejętności enkapsulacji rozwiązań. Na to wszystko znajomość języka nie ma dużego wpływu, lub nawet nie zawsze ma jakikolwiek wpływ; ergo, implementacja to margines programowania wbrew pozorom.

    Natomiast wg mnie dobrze naprawdę jest poznać jakiś język, środowisko, jakie daje możliwości, jak pracuje optymalizator oraz jak zachowuje się samo komputer (a ściślej: CPU + ewentualnie grafika, jeśli chcemy programować właśnie w tej odrębnej raczej dziedzinie). To pomoże pisać dobry kod, a nie tylko poprawny i działający kod.

    C# to dobry wybór, bo ma przyszłość przy łatwości pisania kodu. Natomiast są też pewne minusy, ale to nie jest istotne w tym temacie.
  • Helpful post
    #3
    wiesniak
    Level 31  
    Mniej więcej tak samo opisałbym moje studia ;] Twoja wiedza będzie na raczej podstawowym poziomie, natomiast powinieneś umieć dość łatwo i szybko łapać podstawy języków, których jeszcze nie znasz - ot trochę inna składania, ale reszta zbliżona do tego, co już znasz.
    Na pewno przydatne będą Ci wzorce projektowe. Warto poczytać o ich zaletach i wadach, kiedy stosować itd, a przede wszystkim warto poznać i zrozumieć ich implementację . Sucha teoria i diagramy uml są mało przydatne - dopiero rzeczywisty kod i zastosowanie uwidaczniają sens wzorców.
    Druga rzecz to bazy danych. Niemal każda aplikacja bardziej złożona niż kalkulator wykorzystuje jakąś bazę danych. Marne szanse na znalezienie pracy bez znajomości baz danych (choć nie jest to niemożliwe - można się specjalizować np we frontend).
    Skoro lubisz C#, to zapoznaj się z technologiami otaczającymi ten język. Możesz w nim tworzyć UI (konsola, WindowsForms, WPF, ASP.NET) jak i backend (vide m. in: WCF, EF, ADO.NET, LINQ, windows service).
    Zamiast czytać kolejne książki, idź na praktyki a później złap robotę - spokojnie pół etatu wyrobisz w semestrze. Po miesiącu pracy nauczysz się więcej niż przez połowę studiów ;]
  • Helpful post
    #4
    rufek90
    Level 24  
    Miałem podobne odczucia co do uczelni informatycznej. Nie czułem się przygotowany do zawodu. Musisz sobie zdawać sprawę, że to właśnie praca w zawodzie nauczy cię najwięcej i pomoże wskazać te elementy języka/technologii, nad którymi musisz popracować.
    Jeżeli chodzi o źródło wiedzy, to mogę polecić pluarsight. Dostęp niestety kosztuje, ale kursy są na wysokim poziomie.
    Abyś nie bazował wyłącznie na odpowiedziach na forum po prostu zerknij na oferty pracy i sprawdź, jakich technologii oczekuje pracodawca. Jeżeli chcesz iść w stronę c# to na pewno warto się zainteresować asp mvc albo sharepointem jak lubisz dziwne rzeczy :). Na pewno warto znać jakiś system kontroli wersji (tfs, git), html, css, js.
  • Helpful post
    #5
    marcinj12
    Level 40  
    To zależy od naprawdę wielu rzeczy - nikt Ci jednej drogi nie wskaże ani nie podejmie decyzji za Ciebie...

    Poniższe przemyślenia są moje własne, oparte na własnym doświadczeniu i obserwacji tzw. "rynku".
    Programista "z grubsza" może odnaleźć się w następujących dziedzinach:
    - programowanie mikrokontrolerów
    - pisanie stron internetowych
    - tworzenie aplikacji okienkowych
    - rozwijanie logiki biznesowej jakiegoś większego systemu
    - programowanie w bazach danych
    - programowanie "graficzne", 3D, gry etc.
    - testowanie w/w

    Każda z tych dziedzin jest nieco inna, w każdej wymaga się czegoś innego. Dokładniejszy ich opis by pewnie zajął parę stron.

    Są stanowiska - np. w dużych koncernach - gdzie masz zająć się tylko jakimś wycinkiem programowania, np. tworzyć tylko raporty w Javie. Są też takie, gdzie wymaga się znajomości kilku technologii - np. SQLa, logiki biznesowej i stron internetowych.

    Inaczej pracuje się w dużych firmach typowo programistycznych, gdzie jest duży podział obowiązków i wąskie specjalizacje, a inaczej w mniejszych, gdzie wymaga się od Ciebie znajomości wszystkiego. A już inna para kaloszy to tzw. freelancer - choć do własnego biznesu jako programista chyba trzeba mieć jakieś solidniejsze podstawy, żeby nie zginąć w gąszczu konkurencji...

    Pytanie pierwsze, które powinieneś sobie zadać, to jaki rodzaj stanowiska Cię interesuje? "Klepacz kodu", który ma odtworzyć zebraną przez kogoś funkcjonalność w wybranym języku, czy programista "kreatywny", który sam zbiera wymagania, dobiera język i je implementuje.

    Pytanie drugie - na jakie stanowisko się dostaniesz? To nie jest tak, że chcesz np. programować w języku A i przyjmują Cię z otwartymi rękoma. Może się okazać że tam gdzie mieszkasz, jest więcej ofert w języku B i wtedy pytanie - jesteś gotowy przenieść się np. do Warszawy żeby poszukać stanowiska w języku A, czy, jeśli dostaniesz taką propozycję, zajmiesz się językiem B?

    A oprócz "popularnych" języków programowania (C#, JAVA, PHP) są jeszcze różne fajne stanowiska w językach, których na uczelniach nie uczą, np. SAPowy ABAP.

    Zgodzę się z Tobą, że programy pisane na uczelni nie mają zbyt wiele wspólnego z rzeczywistością. Dopiero w zawodzie uczysz się konkretnego "stylu" programowania. Ze swojej strony polecam poświęcić trochę czasu i napisać jeden-dwa jakieś większe programy, żeby móc w razie czego pokazać pracodawcy, że opanowałeś nie tylko "suchą" teorię.
  • #6
    adriano1191
    Level 10  
    Szczerze nie spodziewałem się tak szybkiego i dużego odzewu więc chciał bym wam wszystkim za to podziękować.

    Co do waszych porad, w tym semestrze razem z znajomym robimy trochę większy projekt na zajęcia w którym właśnie będziemy musieli wykorzystać bazy danych oraz planujemy używać do tego wszystkiego gita.
  • #7
    Marvinn8686
    Level 20  
    Dżyszla wrote:
    Trzeba pamiętać, że programowanie głównie polega na sprawnej analizie problemów, umiejętności ich podziałów na poszczególne składowe, tworzeniu algorytmów rozwiązujących te problemy, planowaniu i umiejętności enkapsulacji rozwiązań. (...)

    Myślę, że to jest bardzo dobre ujęcie tematu w jednym zdaniu. Takich umiejętności człowiek uczy się w praktyce, choć można częściowo poszerzyć swoją wiedzę na ten temat. Jeśli w miarę sprawnie przyswajasz wiedzę z książek, to poniższe pozycje są moim zdaniem dobrym uzupełnieniem praktycznych ćwiczeń:
    "Lekcja programowania. Najlepsze praktyki" Brian W. Kernighan, Rob Pike
    "Zrozumieć programowanie" Gynvael Coldwind
    "Perełki programowania. Wydanie II" Jon Bentley
    "Myśl jak programista. Techniki kreatywnego rozwiązywania problemów" V. Anton Spraul.
    "Kod doskonały. Jak tworzyć oprogramowanie pozbawione błędów." Steve McConnell.
    "Pragmatyczny programista. Od czeladnika do mistrza" Andrew Hunt, David Thomas

    To takie ogólne pozycje, bo szczegóły zależą od typu programowania. Inaczej pisze się aplikacje internetowe, mobilne, kod na mikrokontrolery czy system biznesowy system dla bankowości.
  • #8
    adriano1191
    Level 10  
    Dżyszla wrote:
    Trzeba pamiętać, że programowanie głównie polega na sprawnej analizie problemów, umiejętności ich podziałów na poszczególne składowe, tworzeniu algorytmów rozwiązujących te problemy, planowaniu i umiejętności enkapsulacji rozwiązań.


    Przyznam, patrząc u mnie na roku duża część osób ma problemy z programowaniem z powodu tego że nie bardzo potrafią "myśleć jak komputer?". Osobiście często korzystając z różnych aplikacji lub grając w jakaś grę lubię zastanawiać się jak twórcom udało się to zrobić, jak obeszli dany problem itp, lubię sobie w ten sposób teoretyzować jak ja bym to zrobił.
    Co do książek, chyba żadnej całej nie przeczytałem ale głównie chodzi mi oto że często potrafię rozwiązać teoretycznie trudniejszy problem a nad prostym główkuję godzinę bo czegoś nie znam a potem okazuję się to banalne.
    I zdaję sobie z tego sprawę że umiejętności praktyczne są dużo bardziej przydane / potrzebne od teorii ale po prostu kończąc te studia i mając tytuł inżyniera chciał bym mieć tej wiedzy na temat programowania trochę więcej niż teraz.
    I jeszcze raz dziękuję wszystkim za udzielenie mi porad.
  • #9
    Dżyszla
    Level 42  
    To je jeszcze dorzucę kilka zdań, nieco w kontekście wypowiedzi poprzedników:

    Studia faktycznie nie nauczą programowania. Ja nigdy na to nie zwracałem uwagi, bo programowałem o 8 roku życia (ach, ten Basic!). I wiem, ile lat potrzeba na to, by dobre programowanie opanować. Studia to ani czas, ani miejsce na naukę tego od podstaw.

    Odnośnie książek, to bardzo wiele czytałem i uważam, że potrafią zwrócić uwagę na wiele zagadnień i można się z nich uczyć, ale pod jednym warunkiem: trzeba natychmiast przekładać to na praktykę, próbować modyfikować podawany kod tak, żeby w pełni go rozumieć zarówno jednostkowo jak i całościowo. Im później szersza wiedza, tym łatwiej czyta się książki i można sobie pozwolić na poszerzanie wiedzy czytając duże fragmenty bez konieczności ich testowania - po prostu myśli się już inaczej i z kartki doskonale zna zachowanie kodu. Natomiast można nauczyć się ciekawych rozwiązań i algorytmiki czy sztuczek, trików i możliwości, jakie daje już konkretny język programowania / środowisko.

    @marcinj12 ładnie zwrócił uwagę, że tak, jak już od dość dawna nie istnieje zwykły "informatyk", bo każdy ma swoje specjalizacje, tak samo nie istnieje po prostu "programista", bo obszarów programowania jest wiele i każdy jest specyficzny. Raczej trudno o człowieka, który ogarniałby każdy z nich.