Czy każdy może nauczyć się programować? A może programowanie jest tylko dla wybranych elit?

Czy, żeby nauczyć się programować, musisz być bardzo inteligentny? A może musisz mieć umysł ścisły i być bystrzakiem z matematyki? A może programowanie nie jest dla Ciebie, bo jesteś kobietą? A może uważasz, że to trudne?

Na pewno nie rozwieję każdego mitu narosłego nad trudną sztuką programowania, ale postaram się kilka z nich wyprostować.
Sam posiadam kilkanaście lat doświadczenia w zakresie wytwarzania oprogramowania. Pracowałem w różnych branżach, na różnych stanowiskach i w różnych rolach. Programowałem w większości popularnych języków. Tworzyłem oprogramowanie małe i duże. Tworzone przeze mnie systemy, jeśli nie są przez Ciebie używane bezpośrednio, to napewno w jakiś sposób są obecne w Twoim życiu. Chociażby system bilingowy operatora komunikacyjnego obsługujący 10 mln abonentów. I ja mogę powiedzieć, że nie wiem wszystkiego, cały czas się uczę. I pomimo, że cały czas się uczę to mam tak wiele do nauki, że muszę bardzo filtrować tematy, którymi mogę się zajmować.

To, co mogę Ci powiedzieć to to, że teraz jest najlepsza pora i czas, żebyś i Ty zaczął się uczyć programowania, jeśli masz tylko ochotę. Tak, dokładnie, tylko tyle wystarczy do nauki programowania. A właściwie to wystarczy komputer, internet i chęć do nauki.

Programowanie tylko dla bystrzaków?

Czy programowanie jest trudne? Skoro ja się uczę i uczę, to musi być szalenie skomplikowana sprawa. Oczywiście tak nie jest, programowanie jest bardzo łatwe, programować może każdy, programowania uczą się dzieci, które jeszcze nie umieją pisać. Czy można je nazwać bystrzakami, skoro one nawet nie chodzą jeszcze do szkoły? Oczywiście dzieci mają łatwiej, bo są wszystkiego ciekawe, a to pomocna cecha do nauki programowania.

To czego Ty się cały czas uczysz, skoro twierdzisz, że programowanie jest proste, zapytasz? Otóż ja cały czas poznaję nowe sposoby wytwarzania oprogramowania, nowe architektury wykorzystywane do tworzenia systemów, wzorce. Nie jest to stricte programowanie tylko inżynieria oprogramowania.

Wracając, do łatwości programowania, to obecnie jest bardzo dużo materiałów do nauki programowania. Opracowane są w tak przystępny sposób, że służą do nauki dzieciom. Także każdy może wybrać coś dla siebie, niezależnie od wieku i stopnia zaawansowania.

Masz do wyboru naukę samemu i na kursach programowania, kursach tylko dla kobiet i dla dzieci. Możesz się uczyć z książki, z YouTube, z kursów wirtualnych. Każdy znajdzie coś dla siebie.

Wprowadzenie do Algorytmów

Wprowadzenie do Algorytmów License

Ale ja nie mam studiów.

Czy potrzebne są studia do bycia programistą? Oczywiście nie, nie każdy musi skończyć studia. Programować mogą dzieci w podstawówce, także argument jest jak najbardziej chybiony. Studia na pewno pomogą Ci w poszerzeniu zakresu Twojej wiedzy w dziedzinie tworzenia oprogramowania, ale nie są wymagane.

Studia nie są na pewno stratą czasu i warto je skończyć, jeśli wiesz, że programowanie jest interesujące i chcesz pracować jako programista. Poszerzą zakres twojej wiedzy o tematy, które mogą wydawać Ci się teraz mało interesujące, ale nawet nie wiesz, kiedy ich znajomość Ci się może przydać.

Rodzai wytwarzanego oprogramowania jest tak wiele, że każdy znajdzie coś interesującego dla siebie. Uwielbiasz matematykę, zainteresuj się programowaniem silników i fizyki w grach komputerowych. Jesteś estetą, zaprogramuj interfejs użytkownika itd.

Nauka

Nauka

Jestem kobietą.

Czy programowanie jest tylko dla mężczyzn, czy jest to męska dziedzina? Skoro większość programistów to mężczyźni, to pewnie tylko oni mogą się nauczyć programować? Nic bardziej mylnego, programować może uczyć się każdy, niezależnie od wieku i płci. Odpowiedz, dlaczego jest tak mało kobiet, zajmujących się programowaniem zostawiam socjologom, bo jest to w jakiś sposób związane z postrzeganiem kobiet we współczesnym świecie i nie jest w żaden sposób związane z programowaniem.

Kobiety mają wiele zalet, brakujących mężczyznom, które są bardzo pomocne w programowaniu. Największe to dokładność i cierpliwość. Wykonywane badania jakości oprogramowania wytwarzanego przez systemy typu SonarQube, wykazują, że kobiety wytwarzają kod zawierający mniejszą ilość błędów i wymagający mniejszej ilości poprawek.

PyCode Carrots Warsaw

PyCode Carrots Warsaw

Ja ze swoich obserwacji zauważyłem, że obecność kobiety w zespole podnosi znacząco kulturę panującą w zespole. Jakość wypowiedzi słownych znacząco wzrasta i spada ilość wulgaryzmów i szowinistycznych żartów. Wzrasta również higiena członków zespołu. W zespołach złożonych z samych mężczyzn sprawa zapachów stanowi czasami problem.

Nauka programowania jest trudna.

Czy programowanie jest tak skomplikowane, jak to większość osób postrzega? Oczywiście, że nie, programowanie jest łatwe, bardzo satysfakcjonujące, łatwo jest się go nauczyć i czy Ty się go nauczysz, zależy tylko od Ciebie. Jest to zależne tylko od tego, czy chcesz się nauczyć lub ktoś wystarczająco mocno Cię do tego zmusza. Nie będę opisywał sytuacji, gdy jesteś zmuszony uczyć się programować, np. w szkole czy na uczelni. Ja tylko twierdzę, że jeśli chcesz się nauczyć, to jest to prosta sprawa. Pierwsze programy możesz zacząć tworzyć po kilku godzinach nauki. Do napisania w pełni działającej aplikacji mobilnej wystarczy np. przeczytanie jednej książki. Oczywiście, że nie poznasz w tym czasie wielu aspektów programowania, nie będziesz biegły w programowaniu, ale do utworzenia aplikacji czy strony internetowej to wystarczy.

Nauka programowania jest tak prosta, że nawet dzieci, jeszcze nieumiejące czytać ani nawet pisać mogą się uczyć. Oczywiście dla nich jest opracowany specjalny sposób zapisu tzw. blokowy (np. Scratch), ale za pomocą takiego zapisu można tworzyć naprawdę ciekawe rzeczy. I w przypadku nauki dzieci, ciekawość jest kluczowa przy nauce.

Nic z tych rzeczy, czyli jak zacząć?

Skoro już wiesz, że programowania każdy może się uczyć, to jak zacząć naukę? Na to pytanie nie ma jednoznacznej odpowiedzi. Jest to zależne od wielu czynników. Czy masz dużo czasu, czy tylko 30 minut dziennie, czy wolisz uczyć się samemu z książek, czy jednak wolisz z mentorem na kursie, w grupie.

Jak przy każdej nauce najważniejsza będzie wytrwałość i dyscyplina. Nie nauczysz się programować w kilka dni ani tygodni. Ale już po kilku dniach będzie można samemu wykonać coś, co działa, można tego używać.

Jeśli nie wiesz, czy programowanie będzie Cię interesować i podobać Ci się, zacznij od prostych tutoriali, które krok po kroku poprowadzą Cię do działającego programu. Warto też naukę swoją oprzeć na elementach wizualnych interfejsu użytkownika, w których widać od razu efekt.

Nie polecam nikomu rozpoczęcia nauki od podstawowych pojęć, pętli, typów itp. Faktycznie są to podstawy, ale wiele osób zniechęcają do dalszej nauki. Niema w tym nic efektywnego, dużo teorii i logiki. Ale jeśli wykonasz jakiś tutorial, nawet bez zrozumienia jak ten program naprawdę działa, to zobaczysz efekt końcowy, efekt działania programu. Szybciej Cię to zaciekawi i zachęci do dalszej nauki. Niestety większość książek zaczyna od podstaw, od wyjaśniania teorii i nie pozwala poczuć początkującym adeptom satysfakcji, że mogą stworzyć bardzo ciekawe rzeczy z niczego.

Ja sam zaczynałem naukę w od Ansi C++ Kernighan & Ritchie i nie wspominam tego jako czegoś ciekawego. Kilka miesięcy nauki wskaźników, operatorów i typów tablicowych. To właśnie z powodu takich książek ludzie myślą, że programowanie jest trudne i tylko dla technologicznych geeków. Bo faktycznie tę książkę mogli przeczytać tylko najwytrwalsi i najbardziej zainteresowani komputerami.

Kiedy zacząć się uczyć?

Jak najwcześniej. Dzieci mogą zacząć naukę w wieku 4–5 lat od schematów blokowych. Aplikacje typu Scratch Jr mogą zainteresować najmłodszych. Z rosnącym wiekiem wybór materiałów jest oczywiście większy i dla każdego można dobrać odpowiedni sposób nauki. Najważniejsze to właściwie dopasować dla siebie (lub swojego dziecka) materiały do nauki. Muszą być ciekawe, muszą powodować zainteresowanie, mogą bawić i przy okazji uczyć.

Jeśli motywacją do nauki dla Ciebie jest chęć zmiany pracy, lub podjęcia pracy jako programista, to nie zwlekaj z rozpoczęciem nauki, zacznij już dzisiaj. Niestety podjęcie pracy przez osoby które, niedawno rozpoczęły naukę nie jest rzeczą prostą. Nawet jak skończysz kurs, to i tak będziesz musiał wykazać przed pracodawcą znajomość programowania, pokazać co do tej pory stworzyłeś. Pracodawca niechętnie zatrudnia osoby, które niedawno rozpoczęły naukę i mają małe doświadczenie.

Ale jako początkujący adept sztuki programistycznej, możesz pomyśleć od stworzenia jakiejś aplikacji mobilnej na smartphony. Naprawdę proste aplikacje można wykonać w krótkim czasie, jest to bardzo ciekawe i od razu widać efekty swojej pracy. Dostępność materiałów i tutoriali jest przeogromna i każdy znajdzie coś interesującego dla siebie.

Swift playground
Swift playground

Od czego zacząć?

Naukę warto zacząć od działania dającego satysfakcję. Dla najmłodszych będą to wszelkiego rodzaju gry, dla starszych aplikacje wizualne z interfejsem użytkownika. Dla osób naprawdę upartych i zdyscyplinowanych mogą to być książki tłumaczące programowanie od podstaw, czyli typy, operacje czy struktury danych.

Jeśli chodzi o język, od jakiego można zacząć, to właściwie dowolny, może to być Python, C#, Swift, Java, Ruby, dla młodszych Scratch. Jest to trochę uzależnione od tego, jaki rodzaj aplikacji będziesz chciała wykonać na początku.

Nie polecam języka JavaScript, który jest bardzo popularny we współczesnym programowaniu. Jest to język bardzo swobodny, bez silnego typowania, można popełnić wiele błędów i trudno będzie dociec, dlaczego program nie działa.

Z książek dla dzieci polecam Scratch. Komiksowa przygoda z programowaniem. Książka bardzo ciekawa, prowadząca krok po kroku przez tworzenie gier i scen z przygodami.

Dla dzieci (ale nieco starszych lub z pomocą rodzica) PWN ma całą serię programowania na wesoło, z której ja z synem przerabiamy Python dla dzieci. Książka wymaga już trochę zainteresowania, nie jest tak łatwa w odbiorze, ponieważ pierwsze rozdziały to właściwie struktury danych i wyświetlanie wyrazów.

Również dla dzieci (są też lekcje bardziej zaawansowane) polecam lekcje z cyklu “Hour of Code” gdzie w sposób bardzo ciekawy poznaje aspekty logiki wykorzystywanej do programowania. Na 100% żaden 7-letni chłopiec nie oprze się zaprogramowaniu robota BB–8 z Gwiezdnych Wojen. A żadna dziewczynka nie odpuści sobie uratowania Elsy z okowy mrozu

Kolejną pozycją dla dzieci, którą ja również wypróbowałem na swoich dzieciach, jest genialny polski produkt, ScottieGo. Połączenie gry planszowej z grą na tablecie. Układasz algorytm i logikę działania wykonywania czynności przez robota, który musi wykonać różne zadania na tablecie. Gra bardzo ciekawa, uczy logicznego myślenia i przy okazji bawi.
Dla dzieci lub osób znających język angielski polecam naukę języka Swift na iPad. Wykonanie lekcji i sposób przekazu jest na najwyższym poziomie.

Dla każdego można znaleźć temat, który będzie go interesował. Kogoś interesuje hackowanie komputera, kogoś innego elektronika.

A więc do dzieła.

Cytując klasyka “Śpiewać każdy może, jeden lepiej, drugi trochę gorzej”. Nie spodziewaj się, że za miesiąc czy rok nauki będziesz mógł powiedzieć, umiem programować. W programowaniu nauka to proces ciągły i nieskończony, ciągłe zmiany w świecie informatyki powodują, że powstają nowsze języki, frameworki i cały czas można się uczyć czegoś nowego.

Nie spodziewaj się również, że ktokolwiek będzie chciał Cię, świeżo upieczonego adepta programowania zatrudnić lub kupić Twoją aplikację. W całym tekście cały czas piszę, że rozpoczęcie nauki programowania jest proste. Nie oznacza to wcale, że proste jest również wytwarzanie oprogramowania i aplikacji profesjonalnych. Jest to bardzo trudna praca, polegająca raczej na rozwiązywaniu ciągłych problemów, niż na swobodnym programowaniu robocika BB–8 w grze.

Prawdziwe aplikacje i systemy składają się z setek tysięcy linii kodu (często milionów) i ich złożoność jest bardzo duża. Czas tworzenia aplikacji to nie jest również 10 minut, tylko częściej lata pracy kilkunastoosobowych zespołów.

Bonus. Aplikacja iPhone.

Chciałbym Ci udowodnić, że programowanie nie jest ani trudne, ani czasochłonne. Załączam krótkie nagranie, 10 minut, w którym utworzę bardzo prostą aplikację. Tylko tyle czasu wystarczy, żeby utworzyć aplikację dla iPhona, której zadaniem będzie podanie Ci sześciu szczęśliwych liczb potrzebnych do wygrania głównej wygranej w lotto 😉
Zachęcam Ciebie do powtórzenia na swoim Macu tych czynności. Wystarczy w tym celu pobranie Xcode z App Store.

Kod użyty w aplikacji:

 

Książki wymienione w artykule

 

 

 

 

 

Michał Szafrański
Programista - Architekt - Projektant Oprogramowania. Zainteresowania: Cloud Computing - Architectural Design Patterns - Google Cloud Platform. Miłośnik sprzętu i oprogramowania firmy Apple.
  • Aleksandra

    “Wzrasta również higiena członków zespołu. W zespołach złożonych z samych mężczyzn sprawa zapachów stanowi czasami problem.” You made my day! 😀 Przeczytałam trochę tego typu postów, ale ten argument trafił mi się po raz 1. 😀 A wracając do tematu, tuz przed 30stką zdecydowałam się zrealizować swoje marzenie o inż. i zmienić totalnie branżę, więc poszłam na kolejne studia na polibudę oraz zajęłam się programowaniem, i dopiero teraz czuję, że się spełniam. 😉

    • Niestety sprawa higieny osobistej jest problemem ogólnospołecznym. Informatycy jakoś szczególnie nie odbiegają od średniej krajowej i praca z takimi osobami stanowi problem.

      Gratuluję podjętej, na pewno niełatwej, decyzji. Bardzo się cieszę, kiedy ktoś mówi, że spełnia się, programując.