Dlaczego Janek nie programuje? [cz. 1 – 2022]

Ten artykuł był wcześniej opublikowany po polsku, ale postanowiłem wrzucić go ponownie, żeby dać ci potrzebne tło cztery lata później. Zapraszam też do lektury artykułu z 2026 roku, który wkrótce się ukaże.
Programowanie uchodzi za szczególnie trudne. Ogłoszenia o pracę pokazują, jak wysoko rynek ceni umiejętności programistów. W porównaniu z innymi branżami, takimi jak handel, produkcja czy nawet marketing, programista może zarabiać znacznie więcej dzięki swojej wiedzy, umiejętnościom i doświadczeniu. Dlaczego więc tak niewielu ludziom udaje się zostać programistami? Dlaczego mimo wysokiego popytu tak mały odsetek naszego społeczeństwa decyduje się rozpocząć przygodę z programowaniem, a potem szukać pierwszej pracy w IT?
Dane podstawą analizy
Aby przeanalizować problem, najpierw przyjrzymy się prawdziwym liczbom. Na podstawie artykułu Karola Bednarza „Ilu jest programistów na świecie, a ilu w Europie?” [2022], opublikowanego pół roku temu (stosunkowo świeże dane), sprawdzimy, ilu programistów jest w poszczególnych krajach Europy.
Polska:
Liczba programistów: 250 000
Liczba mieszkańców Polski (źródło: GUS): ok. 37,767 mln
Udział programistów w naszym społeczeństwie to zaledwie: 0,66%
Porównanie z innymi krajami Europy:
Niemcy: 901 000 programistów, kraj liczy 83,2 mln mieszkańców – 1,08%
Szwecja: 180 000 programistów, kraj liczy 10,42 mln mieszkańców – 1,73%
Ukraina: 212 500 programistów, kraj liczy 43,79 mln mieszkańców – 0,49%
Wielka Brytania: 408 000 programistów, kraj liczy 67,33 mln mieszkańców – 0,61%
Oraz USA:
4 000 000 programistów (4,3 mln w całej Ameryce Północnej) (https://www.bairesdev.com/blog/how-many-software-developers-in-the-world/), kraj liczy 331,9 mln mieszkańców – 1,21%
*dane dotyczące liczby mieszkańców pochodzą z Google.com według stanu na 13 lutego 2023 r.
Powyższe dane należy teraz zestawić z popytem na rynku pracy IT w Polsce:
Liczba poszukiwanych pracowników w pierwszym kwartale 2022 r. wyniosła: 26 121.
Artykuł na Prawo.pl świetnie opisuje te liczby z pierwszego kwartału 2022 r.
To tylko jeden kwartał. Jeśli pomnożymy to przez cztery, okaże się, że w 2022 r. rynek szukał rocznie około 100 000 programistów. Gdyby cały popyt został zaspokojony (a już wiemy, że nie został), mielibyśmy w Polsce około 350 000 programistów, co przybliża nas do pożądanego 1% populacji.
Aby potwierdzić tę liczbę, możemy zajrzeć też do Raportu Płacowego IT 2022 opublikowanego przez justjoin.it. Raport pokazuje, że liczba ofert pracy dla programistów przekroczyła 100 000. Źródło: https://raport.justjoin.it
W porównaniu z krajami rozwiniętymi (poza Wielką Brytanią) zostajemy w tyle pod względem odsetka programistów w całym społeczeństwie. Nie wynika to z małej liczby firm szukających programistów.
Problem leży głównie po stronie Kowalskiego, który nie zaczyna nauki programowania albo nie osiąga poziomu, który pozwoliłby mu z powodzeniem wejść na rynek IT.
Dodatkowo struktura zatrudnienia w IT charakteryzuje się tym, że 80–90% ofert pracy jest skierowanych do specjalistów, a nie do początkujących. Według danych, które co roku alarmują o niedoborze kadr w IT, firmy będą musiały zmienić taktykę rekrutacyjną i szkolić pracowników na poziomie wejściowym, a mówiąc dokładniej – zacząć zatrudniać więcej juniorów.
Dlaczego więc w tym kontekście nie jesteśmy w stanie dogonić innych krajów? Spróbujemy odpowiedzieć na to pytanie w dalszej części artykułu.
Programowanie od dawna uchodzi za trudne
Tekst Dana Bricklina z 2002 r. opisuje, jak programista konstruuje instrukcje dla komputera, jak potrafi poprawnie przewidzieć wyniki i jak może to wpływać na akceptację systemu.
Ten artykuł zainspirował mnie do napisania niniejszego, a jego przesłanie można streścić tak: niektórzy ludzie potrafią nauczyć się programowania szybciej. Są też tacy, dla których składnia języków jest zbyt trudna. Fragment artykułu:
„Języki programowania takie jak Assembler, FORTRAN, C i Java są najmniej powszechnie akceptowane. Ich składnia jest bardzo bezlitosna.”
Po kilku latach doświadczenia w branży jako programista twierdzę, że programowanie nie jest trudne. To rzemiosło, którego praktycznie każdy przy odpowiedniej motywacji może się nauczyć. Do bycia programistą przybliża nas też nie składnia, lecz sposób, w jaki myślimy i analizujemy konkretne problemy. Wnioski z powyższego artykułu są bezpodstawne.
Nie sądzę też, żeby problemem była tu motywacja. Wysokie zarobki, praca zdalna, liczne benefity, imprezy integracyjne, nowoczesny sprzęt i biura. Kto nie chciałby pracować w takich warunkach?
Czy niektórzy rodzą się, by programować?
Aby odpowiedzieć na to pytanie, posłużę się kolejną publikacją z 2006 r. autorstwa Jeffa Atwooda, współzałożyciela Stack Overflow: „Separating Programming Sheep from Non-Programming Goats”.
Ten artykuł odwołuje się do badania (link do badania), które w gruncie rzeczy miało odpowiedzieć na pytanie: czym różnią się ludzie, którzy programują, od tych, którzy tego nie robią? W dosłownym tłumaczeniu:
„sposób na oddzielenie programujących owiec od nieprogramujących kóz na zajęciach z informatyki”
Wyniki badania są bardzo ciekawe. Na podstawie podstawowych instrukcji programistycznych, takich jak przypisanie, iteracja, rekurencja i instrukcja warunkowa, zebrano odpowiedzi od osób, które nigdy wcześniej nie miały styczności z programowaniem. Byli to studenci informatyki – niewielka grupa w populacji, w dużej mierze skupiona na programowaniu.
Test użyty w badaniu można pobrać tutaj.
W zakresie podstawowych instrukcji, z którymi zetkniemy się podczas nauki, wyniki pokazały, że:
- 44% studentów stworzyło spójny model mentalny działania zadania (nawet jeśli był błędny!).
- 39% studentów nigdy nie stworzyło spójnego modelu mentalnego działania zadania.
- 8% studentów zignorowało zadanie i zostawiło puste odpowiedzi.
Wniosek przedstawiony w badaniu:
„Aby napisać program komputerowy, trzeba się z tym pogodzić, zaakceptować, że cokolwiek chcesz, by program zrobił, maszyna ślepo będzie podążać za własnymi bezsensownymi regułami i dojdzie do jakiegoś bezsensownego wniosku”
Badanie pokazało też, że mniej więcej połowa uczestniczących w nim studentów nie zdałaby testu wstępnego skonstruowanego według powyższych zasad. Czy ten wysoki próg wejścia jest odpowiedzią na tytułowe pytanie?
Postawię kolejną tezę: nauka programowania wydaje się obca i trudna przeciętnej osobie, która nie miała wcześniej styczności z kodowaniem. To główny powód, dla którego nie podejmuje się nawet najmniejszej próby. Jak to jednak możliwe, że nawet studenci z mniejszymi „predyspozycjami” kończą studia informatyczne i stają się specjalistami, którzy łatwo znajdują pracę i rozwijają karierę? Wszystko zależy od:
- ilości pracy, jaką trzeba włożyć w naukę programowania,
- braku obaw przed wysokim progiem wejścia – ten argument mógł być zasadny 50 lat temu, gdy programowało się na kartach perforowanych i dyskietkach. Dziś każdy, kto umie obsługiwać komputer, może w mniejszym lub większym stopniu nauczyć się programowania,
- innych czynników, które omówimy w kolejnych artykułach z serii „Dlaczego Janek nie programuje?”.
Jeden artykuł to za mało na pełne wnioski
W tym artykule poznaliśmy wyzwania, przed którymi stają początkujący programiści, oraz zastanowiliśmy się, czy do szybkiej nauki programowania – albo nauki w ogóle – potrzebne są szczególne zdolności. W dużej mierze wynika to z lęku przed nieznaną naturą programowania, który jest wspólny dla zdecydowanej większości społeczeństwa (ponad 95%).
Rynek IT powinien skupić się na szkoleniu i zatrudnianiu juniorów, wbrew obecnemu trendowi, w którym oferty dla juniorów stanowią zaledwie 10% (!!!) wszystkich ofert.
Problem jest bardzo szeroki, a jego analiza fascynująca. Jeden artykuł zdecydowanie nie wystarczy, by zgłębić temat, dlatego zapraszam do lektury kolejnej części serii, która ukaże się na it-leaders.pl w najbliższych tygodniach.
Żeby niczego nie przegapić, polecam zapisać się do newslettera – dostaniesz powiadomienie e-mailem o nowych publikacjach, które mogą cię zainteresować.