teoria A. Maslow ankiety


W obronie krzyża

Uwaga: kto nie zgadza się z twierdzeniami, które podam poniżej, może otwarcie zaprotestować.

Jak uczyć się dobrze programować?

To pytanie może zadać zarówno początkujący i doświadczony.

Oprócz chęci uczenia się mamy także aspiracje twórcze - po prostu pisać programy, tworzyć strony...

Tu zaczyna się problem. Początkujący postawi kilka pytań:
1. Od czego zacząć?
2. Co mi się w życiu przyda?
3. Czy tworzyć coś, czy tylko się uczyć i uczestniczyć na forach i blogach?
4. Czy zająć się pisaniem programów, budową stron, grafiką 2D, 3D czy czymś innym?
5. Czy publikować swoje prace?
6. Czy zająć się tworzeniem na zlecenie lub czy jestem na to przygotowany?
7. Po które źródła (strony, kursy, książki) sięgnąć?

Własne projekty

Potrzeba samorealizacji stoi najwyżej w piramidzie Maslowa. Na pewno chcesz dobrze wykorzystać swój potencjał. Być może zamierzasz zaistnieć w sieci (potrzeba uznania). Możesz się wykazać i przydać na różne sposoby, ale omówię tylko inwencję twórczą.

Podzielę projekty na kilka grup i podam przykłady:
1. Proste programy użytkowe - narzędzia, kalkulatory, konwertery, kulki, kółko i krzyżyk
2. Zaawansowane programy - edytory HTML, biurowe, specjalistyczne, słowniki, matematyczne
3. Proste skrypty do pobrania - liczniki, ankiety, skrypty
4. Zaawansowane skrypty do pobrania - fora, CMS-y, specjalistyczne systemy, frameworki
5. Zaawansowane biblioteki do pobrania - systemy szablonów, mail, grafika, komponenty
6. Strony domowe lub tematyczne - tworzone w różnych celach
7. Skrypty użytkowe - zazwyczaj działają tylko na stronie autorów
8. Gry - działają jako programy lub skrypty, zaprogramowane lub stworzone w kreatorach

Im bardziej skrypt jest zaawansowany i popularny, im więcej autorzy mają ambicji, tym więcej wyzwań. Na pewno do realizacji najłatwiejsze są punkty 1, 5 i 6. Nie jesteśmy pod presją terminu ostatecznego (deadline). 3 i 7 stawiają więcej wymagań, choćby udzielanie pomocy poszkodowanym (czyt. użytkownikom naszych dzieł), regularna aktualizacja projektów, wdrażanie nowych funkcji. Najtrudniejsze to: 4 i 7. Na to potrzeba dużego nakładu pracy, aby program lub skrypt liczył się i konkurował. Dochodzi rozwiązywanie często skomplikowanych problemów, poprawianie błędów, ciągłe ulepszanie i dostosowywanie produktu (bo konkurencja nie śpi, a Internet ewoluuje).

Czy to najlepszy sposób na naukę?

Zostawmy na chwilę potrzebę samorealizacji, a wróćmy do nauki. Rozwijając jakiś projekt (samodzielnie lub grupowo), testując go na różnych konfiguracjach, czytając fora, blogi, podręczniki, aby potem zastosować wiedzę w praktyce, łatwo zyskujemy doświadczenie i umiemy radzić sobie z wręcz nierozwiązalnymi problemami.

Jednak teorię poznajemy przez cały czas. Gdy spojrzę na kod, który pisałem kilka lat temu, muszę przyznać, że wiele się nauczyłem - właśnie przez praktykę. Zdaję sobie sprawę, że wciąż nie tworzę w sposób profesjonalny, wciąż popełniam wiele błędów, ale teraz przynajmniej dbam o wydajność i bezpieczeństwo. Wiedzę zdobywałem miesiącami w Internecie. :)

Wciąż zadaję sobie pytanie, czy wypuszczanie skryptów (mniej lub bardziej zaawansowanych) było dobrym posunięciem. W rezultacie staram się za wszelką cenę ulepszać stworzone dzieła (przecież wyznaczyłem sobie cele - wydać wersję X, dodać funkcje Y, Z, naprawić M, N, O) zaniedbuję naukę w szkole, ostatnio praktycznie spędzam czas przed komputerem :lol2:

Argumenty za tworzeniem zaawansowanych projektów lub uczestniczeniem w nich:
1. Szybko uczymy się dobrze programować w praktyce
2. Mamy satysfakcję, podnosimy samoocenę, realizujemy się w dziedzinie
3. Kształcimy swoją inwencję
4. W niektórych przypadkach wykorzystujemy wiedzę z nauk ścisłych

Argumenty przeciwko:
1. Potrzeba dużego nakładu czasowego - zaniedbujemy szkołę / studia / pracę
2. Siedzimy w kółko w 1 lub kilku projektach (dożywotnio?), który może się znudzić
3. Wciąż się uczymy, popełniamy błędy - jesteśmy odpowiedzialni za ewentualne szkody
4. Być może istnieją lepsze polskie projekty, a my tylko niepotrzebne tworzymy konkurencję
5. Zaniedbujemy inne dziedziny informatyki, nauki ścisłe - matematykę, fizykę...

Jeśli nie projekty, to co? Może punkty 1, 6, 7, 8? Kto nie ma umiaru, i tak będzie spędzał większość czasu w oknie przeglądarki internetowej, grał w gry, a za zadania domowe, lektury, teorię, nauki ścisłe zabierze się w nocy (jeśli wcześniej nie pójdzie spać).

Podzielimy się swoimi doświadczeniami :)