Typowe obawy

Istnieje najlepszy język do nauki programowania?

Nie, nie ma "najlepszego" języka do nauki programowania. Wszystko uzależnione jest od tego co chcesz tworzyć. Twoim zadaniem jest wybrać ten, który jest najbardziej odpowiedni do Twoich celów.

Czy wybór pierwszego języka ściśle określa przyszłość mojej kariery?

Oczywiście, że nie. Twój pierwszy język programowania nie ma żadnego wpływu na Twoją przyszłość związaną z programowaniem. To co jest ważne, to poznanie głównych fundamentów programowania, które można zastosować w różnych językach. Jeśli opanujesz jeden język, to przejście do kolejnego jest naturalną rzeczą. Im więcej ich dotkniesz tym lepsze będziesz miał spojrzenie na świat. Jednak ciężko jest wyspecjalizować się w wielu technologiach na raz, dlatego gdy przebrniesz przez klika i znajdziesz swoją ulubioną, warto przy niej pozostać.

Mam N lat, czy jest już za poźno na naukę programowania?

Nie, nigdy nie jest za późno na rozpoczęcie nauki programowania. Wiek nie ma tu żadnego znaczenia.

Czy muszę być dobry z matematyki by umieć programować?

Niekoniecznie - to zależy od dyscypliny, którą będziesz się zajmować. Wiadomo, że istnieją takie, które bez tego się nie obejdą, np. tworzenie złożonych gier 2D, 3D, silniki graficzne, analiza danych itp.. Jednakże większość askpektów programowania nie będzie od Ciebie wymagać znajomosci matematyki na wysokim poziomie, wystarczą podstawy. Wiele programistów podczas swojej całej kariery ledwo co ją dotyka. Z drugiej strony, pewne jest to, że programowanie wymaga logicznego i matematycznego sposobu myślenia, a znajomość matematyki może być przydatna. Nieco inaczej wygląda sytuacja jeśli chcesz studiować Informatykę. Wtedy tego nie unikniesz. Ba, nawet matma stanie się Twoim najlepszym przyjacielem.

Jaki wybrać edytor / IDE / komputer / system operacyjny itd.?

W większości przypadków nie ma to żadnego znaczenia, tym bardziej nie ma "najlepszego". Zwłaszcza na początku nauki nie powinieneś się na tym skupiać. Jest to uzależnione tylko i wyłącznie od twoich preferencji i od tego, z czym pracuje Ci się komfortowo. Jeśli chodzi o systemy operacyjne to zależy już od Ciebie, na jaką platformę chcesz tworzyć oprogramowanie. Niektóre języki są stworzone dla konkretnego systemu, ale większość z nich posiada narzędzia, które umożliwią prace na wielu. Są jednak pewne wyjątki. Niemniej jednak dobrze być zaprzyjaźnionym z każdym systemem, żeby w razie spotkania z nim np. w pracy, nie być zaskoczonym.

Co powinienem umieć aby zacząć programować?

Podstawowa rzecz to język angielski. Potrzebny jest do rozumienia kodu, do czytania dokumentacji, która zazwyczaj występuje po angielsku oraz do korzystania z wielu anglojęzycznych źródeł, których, nie oszukujmy się, jest o wiele więcej niż polskich. Na przykład największe forum programistyczne Stack OverFlow jest w całości po angielsku, a jest to źródło odpowiedzi na większość twoich początkujących problemów związanych z programowaniem. Do tego matematyka, przynajmniej podstawy. Istnieje pytanie na ten temat w naszym FAQ. Musisz także nauczyć się myśleć algorytmicznie i rozkładać problemy na czynniki pierwsze. Ważne jest też, żebyś potrafił samodzielnie googlowac/szukać odpowiedzi. Umiejętność ta jest niezbędna, stosuje się ją niemal każdego dnia. Miej też na uwadze to, że do pewnego stopnia zaawansowania, nie ma problemów, które gdzieś nie są już rozwiązane. Najważniejszą jednak rzeczą w programowaniu jest PASJA. Musisz mieć do tego zamiłowanie. Programista to taki zawód, w którym uczymy sie praktycznie całe życie, ze względu na zmieniające się technologie i trendy. Jeśli usłyszałeś gdzieś, że to fajne i opłacalne, spróbowałeś, ale raczej Cię to nie kręci i robisz to na siłe, według mnie powinieneś porozglądać się za inna dyscypliną ;)

Czy jako programista będę dużo zarabiać?

Tak i nie. Od wielu lat istnieje trend na programowanie, często opisywany jako łatwe siedzenie przed komputerem i zarabianie ogromnej forsy. To jest tylko "american dream". Postawmy sprawę jasno. Zarabiać bedziesz dużo jeśli będziesz w tym naprawdę dobry. Jest to jednak oczywista oczywistość, bo tak samo jest w każdym innym zawodzie. Programowanie nie jest bezpieczną i zagwarantowaną wysoko opłacaną pracą dla wszystkich.

Czy do zostania programistą potrzebne są studia?

Aby zostać programistą studia nie są konieczne. Wykształcenie wyższe nie jest wymagane przez większość pracodawców, a ścieżka freelancera całkowicie pomija ten aspekt. Plusem dyplomu jest to, że dwa lata po zakończeniu studiów dostajesz gratis 4 dni rocznie urlopu więcej. Jednak studiowania nie można traktować jako przygotowania do pełnoprawnego programisty. Prawdopodobnie studia nie dadzą Ci wiele wiedzy związanej z programowaniem. Będziesz musiał uczyć się na własną rękę, musisz mieć to na uwadze. Jeżeli jesteś już w tym dobry, może być nawet tak, że będziesz wiedział więcej od wykładowców. Więc czy przez studia coś zyskasz? No pewnie, że tak. Prawdopodobnie poznasz wielu ciekawych ludzi z branży IT oraz będziesz miał okazję uczestniczyć w interesujących inicjatywach. Kontakty są ważne. Studia prawdopodobnie nauczą Cię dyscypliny i samodzielnośći, jeśli masz z tym problemy. Nie wiesz też czy programowaniem będziesz się zajmował całe życie, studia dadzą Ci pewne rozeznanie. Dowiesz się o rzeczach, których sam pewnie byś nie ruszył, bo wydają Ci się zbędne. “Zbędne” przedmioty dają perspektywę, czynią Cię bardziej świadomym programistą. Powinniśmy podejść do tego z pokorą. Jeżeli przez te 5 lat będziesz się rozwijał i uczył programowania także w wolnym czasie, nie będziesz żył studenckim życiem na całego, to na pewno nie będą to lata stracone.

Praca czy studia?

Często zastanawiamy się nad wyborem pracy zamiast studiów. Jeśli sytuacja materialna pozwala Ci iść na studia, według nas lepiej je właśnie wybrać. Praca i pieniądze nie uciekną, a wszystkie korzyści płynące ze studiowania już tak. Unikniesz wtedy rozmyślań w przyszłości typu „a mogłem...”. Trzeba dodać, że studiując możliwa jest praca na pół etatu. Może nie być łatwo wszystko to pogodzić, ale kto mówi, że ma być łatwo? :D

Istnieje najszybszy język programowania?

Im bliżej sprzętu działa język programowania (im jego poziom abstrakcji od sprzętu jest mniejszy) i mniej wykonuję za nas pracy oraz jest mniej elastyczny, tym jest wydajniejszy. Jednak dla większości osób i programów szybkość wykonywania kodu nie jest istotną sprawą, zwłaszcza, że procesory stają się coraz mocniejsze i różnice te są coraz mniej zauważalne. W zwykłych zastosowaniach ważniejsza jest produktywność, czyli szybszy proces tworzenia aplikacji. Wykorzystywane są, więc technologie, które są elastyczne, mniej złożone i wykonują za nas więcej rzeczy. Większość języków w swoich zastosowaniach jest wystarczająco wydajna, więc nie powinniśmy się tym martwić. Trzeba też mieć na uwadze, że sam język ma mało wspólnego z wydajnością aplikacji. Największa rolę odgrywa to, w jaki sposób aplikacja została zbudowana oraz jej optymalizacja.

Jak się uczyć

Co to znaczy "znać język programowania"?

Mniej więcej to samo co znaczy znać język obcy. Można to stwierdzić kiedy wiesz jak go używać efektywnie, nawet jeśli nie wiesz o nim wszystkiego. Jednak trzeba zaznaczyć, że nauczenie się samego języka programowania nie czyni nas programistą w danym języku.

Co to znaczy "umieć programować"?

Znaczy to, że rozumiemy aspekty programowania, potrafimy rozkładać problemy na czynniki pierwsze i tworzyć efektywne rozwiązanie w postaci programu napisanego w danym języku. Nauczyć się programować to jak nauczyć się mówić. Język jest tylko narzędziem, które pozwala Ci się wypowiedzieć tak, aby dana osoba/urządzenie Cię zrozumiało.

Uczę się języka X, powinienem zacząć uczyć się kolejnego?

Kiedy zaczynasz się uczyć, dobrze jest pozostać dłużej z jednym językiem, aby zrozumieć wszystkie aspekty programowania. Najważniejsze to nauczyć się programować, a później możesz próbować innych języków ile tylko chcesz. Jeśli opanujesz jeden język to przejście do kolejnego jest już dużo prostsze.

Jak mogę polepszyć moje umiejętności programowania?

Poprzez pisanie dużej ilości programów oraz rozwiązywanie różnych łamigłówek programistycznych ze stron jak Project Euler, czy /r/dailyprogrammer co pozwala polepszyć znajomość algorytmiki.



Będzie więcej!