Jak się uczyć?List NR.4 Witam, pisałem do Ciebie jakiś czas temu jak żyć i się nie poddawać, widziałem że byłem inspiracją do napisania postu, bardzo mi miło i pomogłeś mi wyjść trochę z tego dołka, ale teraz mam problem z nauką C#.

Przerabiam książkę Rusz Głową C# i zatrzymałem się na pierwszym rozdziale, co chwila mam jakiś błąd i mi nie działa program (gra w przypadku rozdziału, piszę w Visual Studio 2015, jakoś ciężko mi się uczy, ponieważ przepisuje ten kod z książki i zbytnio nie wiem o co kaman.

Masz może jakąś radę jak zacząć naukę, możesz polecić książkę jakąś, bardzo mi zależy żeby ogarnąć ten język programowania. Mógłbym prosić o radę jak się nauczyć programować i kiedy można stwierdzić że już jestem gotów szukać pracy jako programista, mam 100 km do Wrocławia i tam będę szukał, bo w moim mieście nie ma takich firm.

Rada dotycząca nauki

Książka “Rusz Głową C#” jest specyficzną książką. Sam ją kiedyś przeczytałem i moim zdaniem jest ona fajnym dodatkiem, ale nie jest idealną książką dla początkującego. Czasem przykłady są ciekawe i pobudzają wyobraźnię. Czasami przykłady są za bardzo zakręcone i tracą realny sens programistyczny.

Łatwo mi to zrozumieć ponieważ sam próbowałem stworzyć podobny cykl. Alan Wake uczy programowania w C#.

http://cezarywalenciuk.pl/blog/programing/post/klasa-abstrakcyjna-interfejs-dziedziczenie-enum-c-z-alan-wake

Moim zdaniem przepisywanie kodu nie jest dobrą formą nauki zwłaszcza, że go nie rozumiesz. Gratuluję jednak wytrwałości w przepisywaniu kodu.

Jeśli chcesz się czegoś nauczyć to co powinieneś zrobić? Ostatecznie nauka działa poprzez akcję, która pogłębia zrozumienie. Myślę, że system zadań, który napisałem wcześniej powinien się tobie sprawdzić. Postaw sobie cel przykładowo – jak utworzyć plik PDF w C#. Potem zacznij szukać źródeł danych w Internecie, które pomogą ci wykonać to zadanie. Na podstawie tych informacji rozwiąż potem postawiony sobie problem.

Czy ma to sens? Oczywiście. Jeśli uzbierasz odpowiednią ilość wiedzy i wczujesz się w rolę nauczyciela samego siebie, szybko zdobędziesz odpowiednią wiedzę.

Co więcej, jeśli zaczniesz rozumieć dane zagadnienie, będziesz mógł się nim pobawić. Wyjdzie z ciebie kreatywność. Wyjdzie z ciebie ciekawość. Wyjdzie z ciebie zdolność do rozwijania tego tematu jeszcze bardziej poprzez jego badanie i analizę.

Zacznij zadawać sobie pytania? Co by się stało, gdyby ten kod wyglądał tak? Co muszę napisać, aby kod zrobił to?

Informacje są przez nas absorbowane najlepiej przez nasz mózg właśnie w taki sposób – poprzez zabawę.

W królestwie zwierząt tak małe zwierzęta uczą się przetrwania i tak ty jako programista nauczysz się programowania w tej dżungli . Mały kot w wyobraźni łapie powietrze po to, by później łapać prawdziwą mysz.

Uczymy się poprzez zabawę, nie do końca wiedząc, co my właściwie do cholery robimy.

Najlepszym tego przykładem są gry. Jako dziecko godzinami grałem w pierwszego RTS Dune 2. Jako dzieciak do końca nie wiedziałem jak grać. Metodą prób i błędów nauczyłem się jednak schematów działania sztucznej inteligencji wroga. Zapamiętałem działanie każdej jednostki i jej wady. W ostatniej misji wiedziałem też jakie bugi w grze wykorzystać, by mieć szanse na zwycięstwo w tej niemożliwej misji. Podobnie było z grą ekonomiczną Settlers. Nie wiedziałem co robi każdy budynek w tej grze. Nie wiedziałem jaki zasób jest do czego potrzebny. Nie wiedziałem do końca jak zarządzać żywnością, żelazem, by robić jak najwięcej żołnierzy. Mimo to po paru dniach nauczyłem się grać i potem grałem nawet jak równy z równy z moim starszym bratem.

image

Settlers / Dune 2

Myślisz, że nauczyłem się tego wszystkiego czytając instrukcję do gry i zapamiętując słowo w słowo, co każda rzecz w grze robi. Oczywiście, że nie. Nawet gdybym przeczytał instrukcję i zapamiętał ją to i tak nie zrozumiałbym co mam robić, dopóki nie zweryfikowałbym tego w praktyce grając.

Tak właśnie do dzisiaj pamiętam najmniejsze niuanse z tych starych gier.

Musisz więc się nauczyć bawić kodem. Przykładowo pobawić się w wycinanie jakiś śmiesznych napisów string.

string word = "Pora na programowanie.Jak kot w programistycznej dżungli";
word = word.Replace("kot", "lew");
wor d= word.Remove(0, word.IndexOf(".") + 1);
Console.WriteLine(word);

Być może w ten sam sposób możesz nauczyć się wyrażeń regularnych Regex i znajdować odpowiednie dopasowania fragmentów słów w zdaniach tekstowych.

Oto przykład użycia wyrażeń regularnych Regex. W tym przykładzie chcę sprawdzić czy cały napis jest liczbą i tylko liczbą.

string aa = "Czy tutaj jest liczba";
string bb = "111";
string cc = "Tutaj jest cyfra i liczba 111";
 
Regex regex = new Regex(@"^\d+$");
Console.WriteLine(regex.IsMatch(aa) + " : " + aa);
Console.WriteLine(regex.IsMatch(bb) + " : " + bb);
Console.WriteLine(regex.IsMatch(cc) + " : " + cc);


Tu jest liczba

To zwiększy twoją prędkość nauki wielokrotnie. Twoja motywacja też się zwiększy. Zanim więc zaczniesz czytać jakąś książkę, to przeskocz parę stron dalej i z losowym fragmentem kodu spróbuj zrobić coś swojego. Nieważne jest to, że nie masz pojęcia co robisz. Ważne jest to, byś sam odkrył co możesz z tym kodem zrobić, na swoich zasadach.

Niech pytania pojawią się w twojej głowie. Niech ciekawość ciebie pochłonie. Potem możesz wrócić do książki i zacząć ją czytać normalnie.

Potwórz ten cykl kilkakrotnie. Otwórz przed sobą nowe pytania i wyzwania. Postaw sobie jakiś problem i go rozwiąż. To jest informacja, którą twoja głowa przyswoi, a nie jakieś słowa z książki.

Pod koniec dobrze jest utrwalić proces nauki w formie notatki, wpisu bloga lub rozmowy z kolegą. Ostatni krok ma uzyskaną informację zorganizować w takim sposób, abyś mógł do niej szybko wrócić.

Jakie książki?

Normalnie to bym polecił tę książkę, ale wiem, że równie dobrze możesz przeczytać moje wpisy w kategorii C# i wiedzieć dokładnie to samo. Ta książka więc tobie się nie przyda.

Leksykon kieszonkowy C# 5.0

Zapomnij też o tych grubych książka o ASP.NET. Sam je posiadam i próbowałem przeczytać, gdy zaczynałem karierę. Pomogły mi szczerze mówiąc dosyć średnio. Książkę, którą bym polecał - to Linq

LINQ to Objects w C# 4.0

W pozycji .NET naprawdę nie ma cudownej książki, która mogłaby ciebie nauczyć wszystkiego.

Książka godna polecenia to “Zrozumieć programowanie”. Mój znajomy od C++ mówi, że to najlepsza książka o programowaniu jaką kiedykolwiek czytał. Ja sam przeczytałem parę fragmentów i rzeczywiście książka naciska bardzo na słowo “zrozumienie”. Poza tym warto zapoznać się z autorem Gynvael Coldwind i jego kanał YT.

Zrozumieć programowanie

Jak masz jakieś pytania napisz kolejny email.

Wrocław to dobre miasto na szukanie pracy. Byłem tam już 4 krotnie w tym roku i to miasto ma swój urok.