Jak i skąd uczyć się programowania?

W poprzednich postach przedstawiłem listę umiejętności praktycznych, które powinieneś rozwinąć. Zachęcam do przeczytania artykułów Umiejętności praktyczne, których potrzebujesz do rozpoczęcia pracy jako programista cz.1 oraz Umiejętności praktyczne, których potrzebujesz do rozpoczęcia pracy jako programista cz.2. Nie oznacza to jednak, że jeśli nie będziesz umieć wszystkiego, to nie znajdziesz pracy jako Programista .NET. Wiele z tych umiejętności rozwiniesz podczas pracy komercyjnej. Nie mniej jednak niektóre z zagadnień trzeba opanować w stopniu bardzo dobrym już na początku, inne wystarczy znać pobieżnie. Jak to zrobić i jak długo Ci to zajmie? Na to pytanie postaram się odpowiedzieć w tym artykule.

W sieci istnieje duża ilość darmowych materiałów, które obszernie opisują język programowania C# oraz powiązane z platformą .NET technologie, frameworki i narzędzia. Jednak problem pojawia się wtedy, gdy chcemy znaleźć coś, co uczy w sposób przystępny. Obszerną dokumentację języka i biblioteki klas bazowych można znaleźć na MSDN (Microsoft Developer Network). Jest to portal i społeczność programistów oraz deweloperów, skupionych wokół technologii firmy Microsoft. Pod adresem www.msdn.pl znajdziesz informacje, dokumentacje i dyskusje na temat programowania. Z MSDN będziesz korzystał bardzo często, ale dopiero w późniejszym etapie nauki. Strony z dokumentacją są bardzo pomocne, ale nie dla osób początkujących. Osoba stawiająca pierwsze kroki w programowaniu może się tylko zniechęcić.

Język C# oraz platforma .NET

Gdybym dzisiaj miał rozpoczynać naukę języka C# od zera to na pewno pierwszym krokiem byłoby przerobienie książki C#. Rusz głową! autorstwa Jennifer Greene i Andrew Stellman. Książka napisana głównie z myślą o osobach rozpoczynających przygodę z językiem C# oraz platformą .NET. Książka przestawia bardzo praktycznie podejście do tematu programowania. Znajduje się w niej wiele przykładów zastosowania i praktycznych ćwiczeń. Przeprowadza czytelnika przez praktyczny proces rozwiązywania problemów,  począwszy od kompletnych podstaw, przez praktyczne zastosowania aplikacji, po zaawansowane zagadnienia.

Zajrzyj do książki

Jeżeli zdecydujesz się na tę pozycję, to rekomenduję pominięcie rozdziału 1 oraz rozdziału 10. Rozdziały te opisują proces tworzenia aplikacji na system operacyjny Windows Phone (platforma mobilna), który od roku 2017 nie jest wspierany technicznie przez firmę Microsoft. Na samym początku warto skupić się na rozdziałach, które dostarczają informacji na temat składni języka oraz obiektowego paradygmatu programowania (rozdziały od 2 do 9). Podczas przerabiania materiału z książki możesz śmiało korzystać z nowszej wersji .NET Framework oraz  nowszej  wersji środowiska programistycznego Visual Studio. Aktualną wersję VS możesz znaleźć pod adresem www.visualstudio.microsoft.com/pl/vs/ (wybierz wersję Community). Razem ze środowiskiem zostanie automatycznie zainstalowany najnowszy .NET Framework oraz wszystkie potrzebne narzędzia. Mimo że ostatnie wydanie książki pochodzi z roku 2009, to i tak uważam, że książka jest nadal warta polecenia, ze względu na przystępny sposób omawiania poszczególnych zagadnień. Nawet trudniejsze kwestie przedstawione są w prosty i przejrzysty sposób.

Książkami, które zdecydowanie mogę polecić osobom mającym za sobą pierwsze kroki w programowaniu, są Język C# 6.0 i platforma .NET 4.6 (Autorzy: Troelsen Andrew, Japikse Phiplip) oraz ASP.NET MVC 5. Zaawansowane programowanie (Autor: Adam Freeman). Książki napisane są zupełnie innym stylu, językiem bardziej technicznym.  Pierwsza pozycja omawia podstawy języka programowania C# oraz kluczowe aspekty platformy .NET. Ponadto możemy w niej znaleźć przegląd technologii opartych na C# i .NET (ADO.NET i Entity Framework, WCF [Windows Communication Foundation], WPF [Windows Presentation Foundation] i ASP.NET [WebForms, MVC, WebAPI]). Druga pozycja zawiera obszerne wprowadzenie do platforma ASP.NET MVC oraz architektury Model View Controller. W ramach przerabianego materiału czytelnik realizuje od podstaw kompletny projekt sklepu internetowego. Uważam, że taki sposób uczenia się (poprzez praktyczną realizację projektu) jest zdecydowanie najefektywniejszy.

SQL

Doskonałą pozycją wprowadzającą w temat baz danych i języka SQL jest książką Język SQL. Przyjazny podręcznik, której autorem jest Larry Rockoff. Jest to opracowanie przeznaczone dla osób początkujących, które wcześniej nie zetknęły się z językiem zapytań do baz danych. Jako podręcznik dla nowicjuszy sprawdza się znakomicie i dlatego moim zdaniem jest to pozycja obowiązkowa. Autor operuje prostym i zrozumiałym językiem, powoli acz systematycznie wprowadzając Czytelnika w podstawy SQL-a. Przykłady zrealizowane są w taki sposób, że efekt poszczególnych zapytań można zobaczyć od razu w książce. Mimo wszystko polecam zainstalowanie SQL Server oraz środowiska SQL Server Management Studio i poeksperymentowania z zapytaniami. Aktualną wersję MS SQL możesz znaleźć pod adresem www.microsoft.com/pl-pl/sql-server/sql-server-downloads. Razem ze serwerem bazodanowym zostanie automatycznie zainstalowany SSMS.

Zajrzyj do książki

Z kolei książkami, które mogę polecić osobom znającym podstawy baza danych oraz języka SQL są SQL Server. Wstęp dla programistów (Autor: Robin Dewson) oraz T-SQL dla zaawansowanych. Przewodnik programisty (Autorzy: Miguel Cebollero, Michael Coles, Jay Natarajan). Książki omawiają niemalże wszystkie aspekty SQL Server, języka SQL oraz zaawansowane mechanizmy dostępne w T-SQL, włączając w to mechanizmy pamięciowe. Istotne kwestie są przystępnie wyjaśnione za pomocą praktycznych przykładów i obszernych fragmentów kodu źródłowego.

Na początek najważniejsze jest opanowanie języka C# oraz SQL’a. Stanowi to dobry punkt wyjścia do dalszej nauki i zgłębiania wiedzy. Oczywiście najlepiej jest to zrobić w jak najszybszy i najprzystępniejszy sposób. Pamiętaj jednak, że umiejętności te będziesz rozwijał, dopóki będziesz programistą. Książki C#. Rusz głową! oraz Język SQL. Przyjazny podręcznik stanowią tylko i wyłącznie dobre wprowadzanie w temat. Moim zdaniem wprowadzanie wystarczające do tego, żeby zacząć pisać swoje pierwsze programy. Pozostałe książki to opasłe tomiska i przeczytanie ich od deski do deski nie ma sensu. Przeczytanie takich książek od deski do deski to nie jest najefektywniejszy sposób na opanowanie umiejętności praktycznych. Są dobrym źródłem informacji, jeśli chcemy nauczyć się konkretnej technologi, dowiedzieć się czegoś nowego, bądź poszerzyć wiedzę na znany już nam temat.

Oczywiście książki nie są jedynym źródłem wiedzy. Blogi, filmy na YouTube, posty na forach programistycznych, kursy na internetowych platformach szkoleniowych, magazyny programistyczne, meetupy, konferencje. Trzeba tylko dobrze poszukać i sprawdzić co trafia do Ciebie najlepiej. Osobiście mogę polecić Ci jeszcze kilka kanałów na YouTube, które mi pomogły podczas nauki C# i technologi powiązanych z .NET (wszystkie prowadzone w języku angielskim):

 

kudvenkat

 

 

Derek Banas

 

 

IAmTimCorey

 

Zapraszam także do subskrypcji mojego kanału na YouTube, gdzie pojawią się praktyczne kursy dotyczące programowania aplikacji na platformę .NET.

Nasuwa się więc pytanie, jaki w takim razie jest najlepszy sposób na naukę?

Nauka przez działanie

Najskuteczniejszym sposobem na przyswajanie wiedzy jest nauka poprzez działanie. Nic odkrywczego. Po pierwsze, dopóki nie wykorzystamy jakiejś technologi, bądź narzędzia w praktyce, nie będziemy potrafili z niego w pełni korzystać.  Po drugie, znacznie łatwiej uczy się czegoś, co od razu znajdzie zastosowanie w naszym życiu. Po trzecie, trzeba wiedzieć, do czego chcemy wykorzystać daną umiejętność, tz. określić cel.

Załóżmy, że chcemy nauczyć się czegoś o ADO.NET (zestaw klas na platformie .NET ułatwiających dostęp do danych). Przeczytanie rozdziału w książce, czy artykułu w internecie na ten temat nic nie da. Musimy wykorzystać tą technologię w praktyce. Zdefiniować, do czego to rozwiązanie nam posłuży. Załóżmy, że chcemy połączyć się z bazą danych, przekazać żądanie do bazy danych, tj. wykonać polecenie Select, Insert, Update, czy Delete, pobrać rezultat takiej operacji, tj. wiersze lub/i liczbę wierszy dodanych/zmienionych, przechować dane i wyświetlić je użytkownikowi.
Teraz masz coś do zrobienia.

Tworzymy prostą bazę danych zawierająca jedną tabele przechowująca informację np. o użytkownikach (kolumny: kod, imię, nazwisko, adres email) i wstawiamy kilka rekordów. Z poziomu programu (nie ma znaczenia jakiego typu to aplikacja: konsolowa, desktopowa, czy webowa) chcemy połączyć się do naszej bazy danych i wyświetlić liczbę użytkowników oraz ich wszystkich dane. Następnie udostępniamy możliwość dodania, modyfikacji i usunięcia użytkownika (np. jako zdarzenie wywoływane po naciśnięciu przycisku). Po wykonaniu operacji użytkownik powinien widzieć odświeżoną listę użytkowników z aktualnymi danymi.
To jest konkretny cel.

Jak zabieramy się za tego typu zadanie? W jaki sposób podchodzimy do uczenia się o ADO.NET?

Otwierasz książkę, oglądasz tutorial wideo, przeglądasz Stack Overflow, szukasz w Google konkretnych informacji, których potrzebujesz do rozwiązania rzeczywistych problemów. Potem bierzesz się do pracy i wykonujesz zadanie. Tworzysz aplikację, która realizuje wszystkie wyżej wymienione założenia. Masz prawdziwy, konkretny cel. Warto się zastanowić, ile można się nauczyć, pracując i ucząc się właśnie w ten sposób.

Podsumowanie

O nauce programowania należy myśleć bardziej jak o drodze, niż o samym celu. Umiejętności techniczne oraz miękkie, będziesz rozwijał, dopóki będziesz programistą. Zawsze będziesz mógł stać się jeszcze lepszym w tym, co robisz. Mam nadzieję, że udało mi się przekazać Ci kilka dobrych porad dotyczących nabywania i rozwijania umiejętności praktycznych. Uczenie poprzez działanie jest kluczowe. Musisz mieć konkretny plan nauki i cel określający, czego tak naprawdę chcesz się nauczyć.


Bądź na bieżąco!

Dziękuję za przeczytanie tego artykułu i mam nadzieję, że spotkamy się jeszcze na moim blogu. Jednocześnie mam do Ciebie wielką prośbę: jeśli cokolwiek co przeczytasz na tym blogu uznasz za wartościowe, to KONIECZNIE mi o tym napisz (w komentarzu, bądź mailowo). Każdy potrzebuje nieco motywacji i znacznie łatwiej będzie mi usiąść do tworzenia kolejnego materiału wiedząc, że Tobie też się to przydaje. Zachęcam Cię do polubienia strony na Facebooku oraz subskrybowania kanału na YouTube.

Polub stronę na Facebooku

Chcesz otrzymywać powiadomienia o nowych artykułach? W takim razie zapraszam Cię do polubienia strony na Facebooku. Miej pewność, że nie przegapisz kolejnych postów!

Subskrybuj kanał na YouTube

Wkrótce na YouTube pojawią się praktyczne kursy dotyczące programowania aplikacji na platformę .NET.