Skocz do zawartości

Jak zostać programistą? Blog o programowaniu i tym jak zamierzam tego dokonać.


Recommended Posts

Kilka dni temu założyłem bloga na którym zamierzam dodawać nowe posty na temat tego jak zamierzam zdobyć swoją pierwszą pracę jako programista C# .NET. Obecnie pracuję w branży nie związanej z IT i pomimo dobrych zarobków i miłej atmosfery w pracy nie jestem z niej zadowolony. Lubię programować i chcę się przekwalifikować. Ma mi w tym pomóc mój blog na którym będę opisywał swoje projekty, ich postęp oraz pisał posty związane z programowaniem. Wymyśliłem 5 aplikacji jaki napisze na stanowisko juniora, pytanie czy są one wystarczające na juniora, zakładając że kod będzie poprawnie napisany? Link do aplikacji jakie zamierzam napisać. Aplikacje na juniora C#.

Link to post
Share on other sites

Wg mnie za dużo chcesz naraz.. Zakładając, że uczysz się od zera sam, to są lata nauki, jeśli chciałbyś to wszystko robić poprawnie. Pójdzie masa czasu na rozgryzanie co, jak i dlaczego. A większość i tak się nie przyda, bo nie ma firm, które robią jednocześnie gry, web, desktop i mobile. A nawet jeśli, to mają do tego osobne działy i w każdym z nich siedzą ludzie, którzy specjalizują się w danej rzeczy. Lepiej się skoncentrować na jednym. Naucz się od A do Z z tym pracować i zrób jeden sensowny projekt. O programowaniu innych rzeczy sobie doczytasz, kiedy swój temat już dobrze ogarniesz. O ile nadal będzie to w ogóle interesować, bo w praktyce pewnie się wciągniesz w szczegóły swojej piaskownicy i reszta stanie się mało istotna. Przykładowo, w mobile będzie ważne zrozumienie cyklu życia aplikacji, obsługa ekranu dotykowego i obrotu telefonu, podczas gdy w webie liczy się zrozumienie działania przeglądarki internetowej i różnic między HTTP POST i GET.

 

Poza tym, junior to junior. Raczej się nie oczekuje cudów. Nie sądzę, by przeciętny junior umiał zrobić 10% tego, co wymieniłeś. W wielu firmach są to osoby, które znają tylko sam standard języka, ideę programowania obiektowego, podstawy wybranej technologii i coś im się obiło o wzorcach projektowych. A reszta przychodzi z czasem.

 

Jeśli chodzi o własną apkę, to za przykład wezmę webówkę. Robię w JAVIE, ale zakładam, że w .NET ideologia jest podobna. Napisałbym prostego CRUDA. Coś w stylu lista zakupów, notatnik, wypożyczalnia kaset. Dwie tabele w bazie danych z relacją 1-n, kod podzielony na warstwy (DAO, serwisy, kontroler), dowiedzieć się, co to jest MVC i zorientować się jakie biblioteki/frameworki są popularne w użyciu (jeśli w ogóle, bo .NET ma chyba większość wbudowaną w standard). Na froncie jakiś podstawowy JS z jQuery + AJAX i wsio. Może jeszcze obsługa sesji, ciasteczek i coś poczytać o Dependency Injection. Ale wszystko razem to jest wiedza znacznie wykraczająca poza wiedzę juniora w 90% firm. Nad stażem nawet bym się wtedy nie zastanawiał.

 

Im szybciej trafisz do pracy, tym lepiej, bo zaoszczędzisz sobie dużo czasu na naukę. Dużo łatwiej i szybciej jest, gdy ktoś doświadczony, powie, że coś robi tak i siak, a tu lepiej będzie tak bo coś. Poza tym zobaczysz, jak się konfiguruje i integruje serwery oraz środowiska, jak się zarządza kodem i z jakich narzędzi korzysta w praktyce. Wbrew pozorom, programista to nie tylko pisanie kodu przez 8h.

Edytowane przez Karister
  • Popieram 1
Link to post
Share on other sites
Poza tym, junior to junior. Raczej się nie oczekuje cudów.

 

Hahaha tu bym ostro polemizował. Gdyby tak było jak piszesz już dawno byłbym seniorem. A tak co chwila widzę ogłoszenia na juniora z minimum 2 letnim doświadczeniem w ZENDzie lub Symfony, znajomością SVN, bdb znajomością javascript popartą portfolio, znajomość Jira i magento do tego jeszcze czasem dochodzi programowanie zwinne i szereg innych pierdół które na ogół powinny określać zwykłego developera lub wyżej. Jak czytam takie ogłoszenia widzę przed sobą senior developera, który z perwersyjną przyjemnością wypełnia formularz wymagań dla działu kadr. 

 

Trochę lepiej jest w angielskojęzycznych ofertach firm międzynarodowych.

Edytowane przez doman18
Link to post
Share on other sites

Nie. "ukończone studia informatyczne", "5 lat doświadczenia", znajomość pierdyliarda pojęć i tym podobne to tylko straszaki na osoby, które nie są pewne siebie. Wielokrotnie aplikowałem na oferty, które miały wymagane 2 lata więcej doświadczenia od mojego i nigdy nie zdarzyło się, by mi odmówiono. Ewentualnie zaproponowano kilkaset zł mniej od tego, co było w ofercie, jeśli rekruter uznał, że czegoś brakuje. Jeśli dobrze znasz i rozumiesz połowę z wymagań, to nie problemu. Firma weźmie z pocałowaniem ręki, bo skoro ktoś się nauczył 5 technologii, to kolejne 3 też szybko ogarnie. Liczy, się, że ktoś jest kumaty i rokuje. Technologii i narzędzi jest tyle, że nie znajdziesz człowieka, które umie akurat te, co stosuje dana firma. Trzeba umieć się sprzedać, a nie ubolewać nad ułomnie stymulowanymi wymaganiami. Umiem to, to i to, potrafię zrobić to i owo, a tu jeszcze brakuje mi wiedzy i zamierzam się doszkolić. A tu jest mój projekt, w którym napotkałem takie i takie problemy, dzięki którym dobrze nauczyłem się tego i owego. 2 lata doświadczenia w IT to jest bardzo dużo dla kumatej osoby i na pewno nie jest to junior.

 

Na pierwszej rozmowie o pracę powiedziałem wprost, że umiem tylko JAVE SE, a o webie nie mam pojęcia i dopiero zaczynam tutoriale w necie i póki co ogarniam podstawy podstaw. I jakoś problemu nie było. Dostałem stanowisko juniora, a senior z zespołu rzucił mi pojęcia, o których mam poczytać, dał zadanie treningowe i potem wyjaśnił, co zrobiłem dobrze, a co źle  i dlaczego. Po 3 miesiącach spokojnie podejmowałem prostsze zadania , a po pół roki już spokojnie potrafiłem ocenić, co jest proste, co trudne i jakie zadanie sobie biorę.

 

SVN/ZEND to fatalne przykłady. Bo czemu nie GIT i Symphony? A czemu nie Mercurial? Technologii i narzędzi są miliony.Skoro ktoś umie GIT, to SVN pozna w tydzień i dla żadnej normalnej firmy nie będzie to najmniejszym problemem. Na juniora wystarczy, że kandydat powie, że wie o istnieniu takich narzędzi i sensownie wyjaśni, po co ich się używa. Nikt nie będzie pytał o jakieś niuanse i wydumane wyjątkowe sytuacje. A jeśli tak - im dalej od tej firmy, tym lepiej.

Edytowane przez Karister
Link to post
Share on other sites

Tak jak napisałeś Karister, jeżeli byłoby to takie łatwe i tak mało wymagali, to cos czuję że już umiem na juniora. I nie zaczynam do końca od zera, nie wiem gdzie to wyczytałeś. Znam dobrze css3, html5, podstawy js+jquery. Umiem napisać jakiś program w C#,mam podstawy z baz danych,WinForms oraz WPF.

 

Nowy wpis, tym razem coś technicznego. Jak wykonać połączenie w C# z bazą danych MySql.

Edytowane przez winiardesign
Link to post
Share on other sites

Skoro znasz cały stos technologii potrzebny do stworzenia apki od A do Z, skoncentrowałbym się na nauce wzorców projektowych i dobrych praktyk pracy z kodem. Gdzieś na pewno wygooglujesz albo wyczytasz w książkach, jak zaprojektować taką aplikację i jak dzielić kod, żeby było dobrze. Dlatego skupiłbym się na jednym - webie/mobile/desktop. Są w nich inne techniki, inne zalecenia i w ogóle inne podejście do tematu. Wrzuciłbym jeden solidnie zrobiony projekt na GitHub'a i wysyłał CV.

Link to post
Share on other sites

 Dlatego skupiłbym się na jednym - webie/mobile/desktop. Są w nich inne techniki, inne zalecenia i w ogóle inne podejście do tematu.

Też myślę podobnie, że trzeba skupić się porządnie na jednym. I jak wcześniej wspominałem będzie to ASP.NET MVC.

 

 Wrzuciłbym jeden solidnie zrobiony projekt na GitHub'a i wysyłał CV.

Nawet jeślibym był w stanie dostać prace już teraz, to i tak nie mogę jej podjąć. Za 2 miesiące mam poważną operację, nie zmienię teraz pracy, bo muszę jeszcze na nią wziąć kredyt. Trochę lipa, ale za to będę od września miał czas na naukę. Na chorobowym będę prawdopodobnie około pół roku. Po rehabilitacji zacznę szukać pracy.

Link to post
Share on other sites

Wzoruj się na dobrych blogach i stronach MS, bo na pewno masz to i owo do poprawienia w swoim programie.

  • Nie nazywaj klas przy pomocy czasowników, Tylko rzeczowniki. DBConnect -> DBConnectionConfig
  • connectionString nie powinien być zahardcodowany. Takie rzeczy trafiają do plików konfiguracyjnych
  • Obsługa logowania poprzez sklejanie SQl z hasla i loginu jest podatne na atak SQL Injection. Na pewno jest już jakiś gotowiec w .NET, który autentykuje usera (coś w stylu Auth(username, password)) albo pozwala tworzyć parametryzowany SQL (coś w stylu "Select * from users where UserName=@username and Password=@password)
  • Ruszyłeś temat hashowania haseł - dorzuć solenie. Bez tego hasła typu P@ssw0rd!, 123456, user, tomek15 zostaną złamane przy pomocy tabel tęczowych
  • Nie dawaj komentarzy, że metoda coś robi. Co ona robi ma wynikać z jej nazwy.
  • Metoda powinna robić jedną rzecz. U Ciebie metoda otwiera połączenie do bazy i modyfikuje interfejs. Z pomocą przyjdą MVC, MVP, MVVC, itp.
  • Nie znam się na desktopie, ale tworzenie nowego obiektu DBConnect za każdym kliknięciem guzika na 99% jest złym rozwiązaniem. W Webie przez cały czas życia aplikacji istnieje jedna instancja (singleton) takiej klasy i trzyma ona aktywne połączenie do bazy. W webie ogarnąć taki kod pomaga Dependency Injection. Nie wiem jak się to ma w Desktopie.
  • Dziel aplikację na warstwy. Data Access Layer, Services, Front. Tu Dependency Injection tez się przyda.
  • Kolega od .NET twierdzi, że LINQ i Entity Framerowk są cool.

Dobrej zabawy i powodzenia. Ja jako junior powyższego nie znałem. :P

Link to post
Share on other sites

Cenne wskazówki, z pewnością przetobie program i dowiem sie jak trzymać polaczenie, żeby za każdym razem nie robić nowej instancji. W sumie podejrzewałem, że coś jest z tym nie tak. O singelton coś już słyszałem, o zabezpieczeniach pisałem że ich nie zastosowałem bo to temat na inny wpis. Właśnie też dla tego typu komentarzy założyłem bloga. Ktoś rzuci okiem, powie co jest źle, co poprawić, podpowie jakieś rozwiązanie, mam nadzieję, że ułatwi mi to naukę.

Kolejny wpis. Różnice między interfejsem a klasą abstrakcyjną.

Edytowane przez winiardesign
Link to post
Share on other sites

Jeśli chcesz się szybko przekwalifikować i wdrożyć znajdź jakiś kurs. Ja kiedyś robiłem kurs C# i visual studio z eduweba. Niewiele kosztuje a szybko można złapać podstawy. Później oczywiście własne tworzenie projektów i rozwijanie aplikacji. Jeśli IT Cię nie kręci to może i dobrze że zrezygnowałeś. Jak się jest dobrym programistą można większą kasę podłapać.

Link to post
Share on other sites

E tam. Wiele osob zaczynało programowanie w późniejszym wieku i jakoś dają sobie radę. Nie jest to na pewno taka lekka branża ale liczy się zacięcie i ilośc pracy jaką się na to przeznaczy. Poza tym ludzie są rózni. Jednemu wolno przychodzi wiedza ale drugi łapie bardzo szybko. Autorze może zainteresuje Cię jeszcze :

http://strefakursow.pl/kursy/web_develop/kurs_tworzenie_stron_asp_net.html

Link to post
Share on other sites
  • 2 tygodnie później...

Jeśli miał bym porównywać to eduweb właśnie ma konkretniejsze materiały, kiedyś z jednych i drugich korzystałem i porównanie mam. Może cenowo nie wychodzi tak samo, ale i tak są to śmieszne pieniądze.

 

E tam. Wiele osob zaczynało programowanie w późniejszym wieku i jakoś dają sobie radę. Nie jest to na pewno taka lekka branża ale liczy się zacięcie i ilośc pracy jaką się na to przeznaczy. Poza tym ludzie są rózni. Jednemu wolno przychodzi wiedza ale drugi łapie bardzo szybko. Autorze może zainteresuje Cię jeszcze :

http://strefakursow.pl/kursy/web_develop/kurs_tworzenie_stron_asp_net.html

Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...