Skocz do zawartości

SzinekDev

  • wpisy
    4
  • komentarzy
    53
  • wyświetleń
    5 245

Programista bez studiów część 3.


Szinek

3 812 wyświetleń

Jakbym się uczył progamowania, wiedząc to co wiem teraz.

Ho-ah! Przede wszystkim: skupiłbym sie na jednej technologii i koncepcjach programowania ogólnie. Moim głównym językiem jest Java, więc na niej będę budował posta.

Na początku o kursach i literaturze stricte dotyczącej języka. Jako, że zanim ogarniałem Jave miałem już jakieś pojęcie o programowaniu, ale nie sądzę, by to jakieś miało jakiś megawpływ na odbiór następujących pozycji: JavaStart oraz Thinkin in Java. Na pewno z obu bym pominął o projektowaniu okienek ;) Spotkałem się (i wy też się spotkacie) z opiniami, że Myślenie w Javie może być trudne w odbiorze ze względu na dość specyficzny styl autora. I to jest prawdą. Dlatego z pomocą przychodzi JavaStart, które jest za darmo, znacznie bardziej przystępne, skondensowane i wogle. Najlepiej w miarę możliwości róbcie obie rzeczy symultanicznie ( ͡º ͜ʖ͡º)

Rzecz jasna nie czytajcie tylko. Przepisujecie przykłady, rozbudowujcie je, wymyślajcie własne rzeczy - nikt się nie nauczył niczego pożytecznego patrząc na tekst. Bawcie się językiem (jak ktoś lubi to tym w jamie też może sobie pomagać), próbujcie nowych rzeczy, szukajcie rozwiązań... Rozwiązań? Ale 90% kontentu w Internecie jest po angielsku. Jak mam szukać rozwiązań?

Kolejna sprawa: jeżeli nie umiesz angielskiego, to go szlifuj. Koniecznie. Bez niego jesteś na starcie skreślony w IT. I nie żartuje. Na każdej rozmowie kwalifikacyjnej miałem chociaż minimalne sprawdzenie skilla. Ja angielskiego nauczyłem się czytając angielskie teksty piosenek i obok mając polskie tłumaczenie (thanks, tekstowo!), a potem przeszedłem do filmów i seriali wyłącznie z oryginalną ścieżką dźwiękową i angielskimi napisami. I tak oto jestem na poziomie B2/C1. Jakbym przykładał większą uwagę do słownictwa w szkole to pewnie byłbym pewnym C1.

Dalej... Pisanie kodu w Notatniku? Co kurna?! Ile ja sie nawkurniałem na to, ile naprzeklinałem, ile szukałem brakującego średnika. Aaaaaaargh! Możecie Hello Worlda tak klepnąć i skompilować z konsoli, ale już coś większego polecam w porządnym IDE. Osobiście zaczynałem od w pełni darmowego Eclipse, jednak gdy tylko zacząłem pracować komercyjnie poznałem Intellij IDEA. I to też wam polecam. Darmowa wersja Community w pełni wystarcza na start - dostarcza pełną przyjemność z użytkowania, jednak nie obsługuje frameworków webowych. Do tego jeszcze wam daleko, uwierzcie. Jednak jeżeli ktoś chce inwestować, to za raptem 1200zł macie dożywotnią licencje i gwarant rocznych aktualizacji. Ale po pierwszej wypłacie w branży zainwestujcie ;) Nie pożałujecie.

Ze środowiskiem się oswójcie, poszukajcie ściagi ze skrótami klawaturowymi, wydrukujcie, postawcie przy ekranie, nie bójcie sie z nich korzystać. Każde narzędzie jest tam aby wam pomóc. A w szczególności debugger.

Dobra, wiem co to Java, znam składnie i pisze nawet jakieś swoje programy.

Ale jak je piszesz? Dobrze? Czy znasz zasady DRY, KISS, SOLID? Czy w pełni stosujesz zasady programowania obiektowego? Nazywasz zmienne, metody i klasy po angielsku? Piszesz samowyjaśniający się kod (minimum komentarzy, nazwy powinny wyjaśniać jak najwięcej w jak najkrótszy sposób). Przed państwem istna biblia, koran, święta księga programistów, Czysty kod od Wujka Boba. Must read dla każdego developera, po jej przeczytaniu ujrzycie wiele spraw o których wcześniej nie mieliście pojęcia (chyba, że naprawdę programowanie was pochłonie i przejrzycie pół Internetu na jego temat). Jest też wersja wideo, ale ja wolę książkę, bo przynajmniej w każdej chwili mogę wrócić do wybranego fragmentu.

Wzorce projektowe? Słyszeliście o czymś takim? Nie będę tłumaczył, Wikipedia robi to dobrze. Dobrze jest je poznać. Tak naprawdę dopóki sami ich nie "odkryjecie" w kodzie, to ich nie utrwalicie. Ale żeby je zacząć zauważać, trzeba wiedzieć o ich istnieniu. I tutaj z pomocą przychodzi Głowa Pierwsza: Wzorce Projektowe. Książka, jak i cała seria książek, jest napisana lekkim piórem, świetnie się czyta, dużo obrazków (ułatwiają odbiór).

Jeżeli ci się jeszcze nie zdarzyło, że po zmianie kawałka kodu chciałbyś jednak wrócić do wersji sprzed 20 minut, to wkrótce możesz się znaleźć w takiej sytuacji. I wtedy nie chcesz mieć kopii zapasowej. Ale zamiast robić backupów, warto zainteresować się systemami kontroli wersji, a w szczególności GITem. SVN ssie pauke. Ogarnij podstawowe komendy do pobierania projektów, wrzucania do repozytorium, rozgałęziania (branchingu) i  zapisu lokalnych zmian. Tyle styka na początku.

I tak naprawdę po ogarnięciu powyższych rzeczy jesteś gotów do pracy programisty. Reszte nauczycie sie na produkcji :P 

Programisty czy klepacza kodu?

No właśnie. Programista nie będzie wiecznie klepał formatek, robił tych samych rzeczy, kopiował gotowce ze stacka. Czasami zdarzy mu się, że musi wymyślić coś nowego, przyspieszyć działanie programu, pomyśleć nad efektywnym rozwiązaniem problemu.

Ćwiczcie na SPOJu. Jest to platforma online z zadaniami algorytmicznymi, gdzie macie podany zestaw danych oraz słowny opis oczekiwanego rezultatu. I teraz przenieście go na kod :) A jak będzie szybko się wykonywał to już w ogóle bajka! Z innych podobnych platform jest Project Euler, Rosetta Code i pewnie milion innych.

Również trochę teorii styknie, jeżeli już nie chcecie iść na te studia ;) Tutaj przychodzi CzterechProgramistów z ich listą najlepszych książek na ten temat. Wszystkie poziomy zaawansowania, od siebie polecam Niklausa Wirtha i jego Algorytmy + Struktury Danych = Programy.

Tak dużo?!

A to dopiero wierzchołek góry lodowej. Wypada poznać techniki rozwoju oprogramowania, testowanie kodu (bo kto lubi bugi i fuckupy wychodzące u klienta na żywym produkcie?), metodyki zwinne, automatyzacja budowy projektu. Jakiś język skryptowy (w przypadku platformy JVM może to być np. Groovy czy w innym wypadku Python), bazy danych, jakieś podstawy obsługi Linuksa po stronie serwera, a w końcu i web: podstawy budowy stron WWW po stronie klienta (HTML, CSS, JS), sesja, ciasteczka, architektura HTTP, serwisy RESTowe, SOAP, sesja, frameworki webowe (oh, te bydlaki). Dużo by wymieniać.

Praca programisty to nieustanny rozwój, ciężka praca, bolące plecy, oczy oraz garb. Ale jest zdecydowanie satysfakcjonująca (jeśli lubisz to co robisz) oraz fajnie wypełnia kieszenie co miesiąc ;) 

Pewnie wielu z was nie będzie chciało pisać kodu do emerytury, dlatego już koncząc wspomnę o kompetencjach miękkich czy też interpersonalnych.

 

Pytajcie, komentujcie, sugerujcie jeszcze jakieś tematy, bo dobrze mi sie zbiera repy ;a 

 

  • Super 10

10 komentarzy


Rekomendowane komentarze

AAAH, FUCK. Wiedziałem, że o czymś zapomniałem. Lista programów do napisania przez początkujących: eF9fdhi.png 

Ja sam jej nie znałem wcześniej (bo jej nie było?), a z czasem zaczynało mi brakować pomysłów na to co napisać.

  • Super 2
Odnośnik do komentarza

Czy zawsze chcesz pracować u kogos wygodnie czy wolałbyś rozpocząć swoje projekty? Troche ambitniej ale moze w przyszłości bardziej lukratywnie? :) 

Odnośnik do komentarza

@Ciamciaj możliwie, że ambitniej, ale pod względem organizacyjnym. Idąc na "swoje" w 100% (nie zwykły kontrakt zamiast UoP, tylko właśnie w pełni funkcjonujące przedsiębiorstwo/freelancing) raczej nie dostanę do zaprogramowania jakiejś części konfiguratora do stacji bazowych LTE (jak robię to teraz), lecz bardziej sklep dla Janusza czy Portal Podatkowy dla jakiegoś Pcimia Dolnego :P To drugie będzie zapewne megaopłacalne, bo przetargi publiczne w IT zawsze takie są, ale znowu praca w samotności, bez teamu, nie jest taka ciekawa.
Będę próbował zdalnie, na początku dam sobie szansę jako javowiec w Roche'u (gdzie aktualnie jestem kontraktorem-specjalistą ds. Doogle Sites tak wogle :|), a w przyszłości chciałbym dla zachodu.
 Ale boję się, że to też będzie wymagało przekwalifikowania na jakiegoś Rubyego czy Pythona, bo w Javie głównie korpo albo gównosoftware house'y :)

  • Super 1
Odnośnik do komentarza

Bardziej chodziło mi o robienie czegoś takiego jak Make-Shot ale lukratywnego :) Własny projekt, portal w dochodowej dziedzinie :) Jak ktoś robi takie rzeczy dla Web aplikacji to od ręki miałbym dla niego parę projektów z finansowaniem :P 

Odnośnik do komentarza
Gość Raczysz śmieszkować?

Opublikowano

Przeczytałem 1,2 i 3. Przyznam, że trochę chaotycznie to piszesz, mam wrażenie, że każde zdanie o czymś innym :v  To tyle, jeśli chodzi o czepialstwo.

Jesli chodzi o studia i odrzucanie kandydatów(często wymiataczy i pasjonatów) ze względu na ich brak, to zazwyczaj jest to fantazja HR`owców, którzy powierzchownie rozumieją programowanie i nie są w stanie pojąć, że programowania w dużej mierze człowiek uczy się sam.  Mimo to wcale nie  zdarza się to często i załapać się bez studiów do firmy która jako "must have" stawia mgr. wcale nie tak trudno jak to może na pozór wyglądać, wystarczy zabłysnąć wiedzą i przede wszystkim jakimiś własnymi, praktycznymi projektami zbudowanymi na jakościowym kodzie. Jak to mówią " w teorii każdy jest genialnym programistą... dopóki nie napisze pierwszej linii kodu".

Co do pracy "na swoim", freelancingu itp... to zależy od człowieka. Mi to na przykład bardzo nie leży, bo robiąc to jako programista przy okazji trzeba być jak człowiek-orkiestra, czyli mieć gadane do klientów, oraz znać wiele pobocznych dziedzin technicznych, takich jak frontend(który na dzień dzisiejszy to już nie są rurki z kremem i to nie jest sam HTML/CSS/jQuery tylko Node, Angular, React, zależności, MV*, itp), kwestie serwerów i wydajności, kwestie baz danych i wydajności, i tak dalej i tak dalej. Fullstack dev to gatunek wymarły ze względu na rozwój i złożoność technologii które były dawniej banalnie proste. Jasne, że część pracy możesz zlecić, ale to też dostarcza kolejnych problemów do których trzeba mieć głowe osoby która dobrze zarządza ludźmi.

Osobiście preferuje specjalizacje. Jak najbardziej ścisłą specjalizacje w swojej dziedzinie, niż dłubanie we wszystkim po troche. Mam na myśli oczywiście ogarnianie wszystkiego/większości samemu a nie działanie w zespole który masz "pod sobą". Kolejna rzecz jest taka, że pieniążki. Na zleconkach i polskich klientach nie zarobisz tyle co specjalista w firmie z zagranicznym kapitałem, która obsługuje poważny klientów a nie januszy biznesu którzy potrzebują "tanio i dobro wizytówke" a w porywach ambicji sklep lub portal ogłoszeniowy. Zresztą Java to nie jest technologia pod takie rozwiązania, chyba, że planujesz przesiadke na pythona, pehapa czy ror.

Odnośnik do komentarza

Szczery post! Zawsze uzywalem angielskich stron typu code academy czy sololearn. Niestety po skonczeniu kursow nie bardzo wiedzialem gdzie sie udac. Przejde przez javastart.pl i reszte tych rzeczy ktorych wymieniles :) Pozdrawiam foreignseo

Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Ta strona korzysta z ciasteczek, aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie z witryny oznacza zgodę na ich wykorzystanie. Polityka prywatności .