Wpis z mikrobloga

A więc tak. @Felonious_Gru prosił, abym zrobił ponownie podsumowanie odnośnie tego wpisu:
http://www.wykop.pl/wpis/14407511/

Jak widać minęło od tamtego czasu 1,5 roku... a ja się teraz z tego śmieje ;)
Wciąż wydaje mi się, że nie umiem nic. Mimo, że pracuje w branży jako Junior. Choć programowanie faktyczne... to już będzie kilka lat (od chwili zaczęcia, game maker, unity etc).

Zacznijmy od tego, że programowanie polega na rozwiązywaniu problemów. Nie ważne jak go rozwiążesz. Liczy się efekt. I... czytelność kodu.

Kiedyś żyłem w przekonaniu, że programista to zna wszystkie komendy, a polecenia i tak dalej ma w głowie. I nie musi w ogóle wchodzić w internet aby programować.

A tymczasem się okazuje, że nie... za każdym razem jak tworzę tablicę w obojętnie jakim języku muszę googlować.
Czemu? Bo każdy język programowania używa innej składni :D

Chyba, że siedzę nad projektem dłużej, albo w jednym języku... to jako tako pamiętam, ale po zmianie języka muszę sobie przypominać :)

I to jest tak z wieloma rzeczami. Na szczęście Google twoim przyjacielem, a StackOverflow podaje pomocną dłoń.

I tym sposobem nie uczę się języka programowania, a uczę się konceptów. Każdy język programowania ma trochę swój własny styl działania. Jak mam podany algorytm, albo pseudo kod to łatwiej się pewne rzeczy programuje. A jak zna się wiele języków to, jak nie można ogarnąć napisania algorytmu to podpatruje się z C++.

I tym sposobem jak chcę napisać łańcuchy markowa, to patrze jak ktoś to rozwiązał w C++ (jak mi się rozwiązanie w Javie nie podoba). Co prawda dochodzą takie rzeczy jak ograniczenia języka, składnia, etc, ale raczej nie zawsze się to tak od siebie różni.

Albo oglądam gotowe projekty na GitHubie.

A czytanie kodu jest ważne. Nawet nie macie pojęcia jak bardzo. Zanim przystąpię do pisania jakiegokolwiek projektu zawsze patrzę w Google, czy ktoś już nie napisał czegoś podobnego. A jak napisał... to podpatruje i piszę po swojemu. A samą koncepcję ulepszam (zawsze coś da się zrobić lepiej).

No i można się przez takie czytanie kodu fajnych rzeczy nauczyć.
"O! Jakie fajne rozwiązanie problemu!".

Pamiętam jak pisałem AI do gry z komputerem pod Kółko i Krzyżyk. Nawet nie macie pojęcia ile fajnych rzeczy można znaleźć z tak banalnego zadania.

Na przykład algorytm MinMax:
http://neverstopbuilding.com/minimax

A tu macie listę przykładowych innych rozwiązań:
http://www.ntu.edu.sg/home/ehchua/programming/java/javagame_tictactoe_ai.html

I tym sposobem jak znam algorytm MinMax, to mogę go zacząć używać w innych projektach :)

A to co piszecie teraz, zawsze bazuje na tym co już wiecie. A więc im więcej wiecie, tym będziecie znajdować więcej rozwiązań jednego problemu. A jak wiedzieć więcej? Czytać kod na githubie :) I artykuły naukowe (research pappers).
Niektórzy do swoich projektów uczelnianych dodają na GitHubie PDFa. Naprawdę sporo fajnej wiedzy :D
Szczególnie jeżeli chodzi o nowe rzeczy.

Gita ogarnijcie jak najszybciej i wrzucajcie to nad czym pracujecie na GitHuba. Zawsze to dodatkowy plus w szukaniu pierwszej pracy.

Pierwszą pracę/praktyki można znaleźć po pół roku. Wydaje mi się, że po 600-1000 godzinach spędzonych z programowaniem można zacząć coś w tym kierunku szukać.

Im większy projekt wybierzecie na początek tym lepiej... ale duże projekty mają to do siebie, że można się szybko zniechęcić, szczególnie jak zmieniacie język programowania... dlatego pisanie programów w konsoli, czy prostych ciągów stringów, czy prostych modeli OOP nie jest niczym złym.

Pozwala to przyswoić koncept, może być momentami nudne... ale nie zniechęcicie się.

Sam zmagam się czasem z tym problemem, że gdy nie mogę czegoś rozwiązań, to zamiast siedzieć nad rozwiązaniem zadania robię bezsensowne rzeczy, aby sprawiać wrażenie produktywnego.

A w takich momentach trzeba zacząć rozkładać problem na części i zaczynać od najłatwiejszej rzeczy.

Krok po kroku (One Step at a Time).

Czasem do swoich prywatnych projektów wracam po kilku miesiącach, albo do zadań, które kiedyś postanowiłem zrobić, ale moje umiejętności były zbyt niskie.

Kolejną rzeczą jest Myślenie poza Schematem (Thinking Outside the Box).

Bardzo ważna umiejętność. Często za bardzo skupiam się na tej jednej funkcji, metodzie, klasie, programie, zapominając, że czasem problem może leżeć gdzie indziej. Na przykład w pliku źródłowym (Web Developerka to pewnie zna :D ).

Przed wykonywaniem jakiegoś projektu dobrze jest zaplanować co ma on konkretnie robić i jaki problem rozwiązywać.
Z planem działania implementacja jest o wiele prostsza.

Co do rozwiązywania problemów... najłatwiej rozwiązuje się je na kartce z ołówkiem, bądź długopisem.
Przynajmniej jeżeli coś się źle kompiluje, albo wynik jest mało zadowalający.

Czasem trzeba oderwać wzrok od ekranu monitora :)

Podsumowując. Uczcie się algorytmów i konceptów. Programowanie jest łatwe, jeżeli się wie jak działa komputer, pamięć, procesor, kompilator, układy logiczne.

Komendy, funkcje, metody, język programowania to tylko wytwór człowieka. Można je wielokrotnie przenieść na inne płaszczyzny.

Czystość kodu i jego struktura jest ważna, więc warto o nią zadbać od początku.

Książki czasem są mniej potrzebne i mogą was po prostu zanudzić i zniechęcić na początku, więc może warto więcej posiedzieć na grupach, forach, albo po prostu pogadać ze znajomym o programowaniu, bądź w wątku w internecie.
Czasem takie pisanie i znajdowanie odpowiednich ludzi jest o wiele efektywniejsze w nauce, niż kolejna godzina spędzona nad książką do nauki programowania :)

To tyle. Udanej soboty :)

#naukaprogramowania
  • 5
@Rezix: Ogólnie się z tobą zgadzam, ale trzeba niesamowicie uważać, żeby przy tym "kopiowaniu pomysłów" z C++ do np. Pythona pisać idiomatyczny kod, a nie kalkę z C++. Nie każdy pomysł i nie każdą konstrukcję należy kopiować a już nigdy 1:1. Inaczej pisze się w Javie, inaczej w C++ a jeszcze inaczej w Pythonie. Bardzo łatwo w twoim sposobie zgubić prawdziwą umiejętność pisania dobrego kodu.

Inna sprawa, że jak musisz sprawdzać
@rav33: Ogólnie zarobki bym mógł powiedzieć, tylko że one zbytnio nie odzwierciedlają realiów.
Bo to zależy dużo od tego na ile się cenisz i jak dobrze umiesz się targować.

Pracuję w Niemczech, więc i realia trochę inne :D

Ale generalnie Java Developerzy i PHP Developerzy dochodzą do tych 60k na rok brutto na midzie.
Junior może liczyć na minimum 35-45k Brutto rocznie.

Ale tak jak mówię.

Możesz mieć w teamie dwie