Is programming hard?
To pytanie zadaje mi wielu nie-programistów. To sprawia, że plasuje się ono tam, gdzie pytania takie jak „czy programiści pracują w domu” i „jakiego rodzaju wykształcenia potrzebujesz, aby zostać programistą?”. Inquiring minds want to know.
But unlike some of those questions, this one is actually pretty tough. To proste pytanie, ale odpowiedź jest bardzo złożona.
Zanurzmy się więc w nim, w szczegółach, i pomóżmy ci zrozumieć, czy programowanie jest trudne czy nie.
Is Programming Hard? The Short Answer
Więc po pierwsze, zajmijmy się tym pytaniem z krótką i bezpośrednią odpowiedzią. To ustawi scenę dla pozostałej części tego postu.
Czy programowanie jest trudne?
Cóż, jak to konsultanci lubią mówić, „to zależy”. To, czy programowanie jest trudne, czy nie, zależy od wielu czynników, takich jak konkretny rodzaj programowania i to, jak ty, jako jednostka, myślisz. Więc krótka odpowiedź jest taka, że programowanie naprawdę biegnie gamę od zaskakująco łatwe do szalenie trudne.
Pomyśl o tym w ten sposób. Spróbuj odpowiedzieć na niektóre z tych pytań w oparciu o swoje doświadczenie:
- Czy gra w koszykówkę jest trudna?
- Czy mówienie po portugalsku jest trudne?
- A co z prowadzeniem samochodu? Czy to trudne?
Widzicie dlaczego się waham i mówię, „ehh… to zależy.”
People Tend to Be Overly Intimidated by Programming
Zaoferuję jednak trochę opinii kwalifikującej. Konkretnie, myślę, że nie-programiści mają tendencję do dramatycznego przeceniania tego, jak trudne jest programowanie.
Kiedyś słyszałem, jak ktoś mówi coś takiego:
Oh, I’m just really not a math person!
Cóż, często to słyszę. Ale słyszę to samo o programowaniu bardziej. I uważam to za ironię, ponieważ, podczas gdy niektóre obszary programowania naprawdę wymagają matematyki, wiele z nich jej nie wymaga. Programowanie, moim zdaniem, jest znacznie bardziej zróżnicowanym zbiorem zagadnień niż „matematyka”.”
Naprawdę wierzę, że wielu ludzi zakłada, że nigdy nie uda im się zostać programistami, ale całkowicie się mylą. Jest to o wiele bardziej przystępny temat, niż wydaje się sądzić cały świat.
Let’s Dispel Some Programming Myths, Beyond the Math One
Aby naprawdę zwrócić na to uwagę, spójrzmy na kilka dodatkowych błędnych przekonań na temat programowania, poza mitem, że programiści muszą być naprawdę dobrzy w matematyce.
Misconception 1: Programmers Are Elite Hackers, Like the Guy in Mr. Robot
Niezależnie od waszego wieku, jest tam jakiś film z waszego okresu świetności, w którym programiści są hakerami podobnymi do Bonda (lub Bond-villain-like). Dorastając dla mnie, był to film Sneakers. Jeśli dorastałeś trochę później niż ja, mogłeś mieć pecha i natknąć się na Hackers lub Swordfish. Te dni, gatunek poprawił się, i może cieszyć się Mr Robot.
Ale czy film jest niesamowite, jak Trampki, lub straszne, jak Hakerzy, nadal masz hakerów protagonistów i hakerów antagonistów, które wydaje się być zarówno quasi-sociopathic i niesamowicie genialny programistów.
To nie jest prawdziwe życie. To nie jest nawet prawdziwe hakerstwo, nie mówiąc już o zwykłym programowaniu. Więc nie zakładaj, że programowanie wymaga od ciebie przesuwania kostek po ekranie, lub cokolwiek Hugh Jackman robi w Swordfish. Zazwyczaj wymaga po prostu dużo Googlingu.
Misconception 2: You Need a Computer Science Degree
Pokryliśmy to w wielu szczegółach, więc nie będę się tutaj rozwodził nad tym punktem. Ale nie, nie potrzebujesz stopnia naukowego z informatyki, aby programować. Nie potrzebujesz stopnia handlowego, a może nawet nie musisz uczęszczać na bootcamp.
Te rzeczy ułatwią ci zdobycie pierwszej pracy, ale nie są wymagane. Więc kiedy zastanawiasz się, „czy programowanie jest trudne”, prawdopodobnie mylisz przeszkody, przez które musisz przeskoczyć z aktywnością. Nie ma żadnych warunków wstępnych do programowania poza Notatnikiem i pobraniem jednego interpretera lub kompilatora.
Misconception 3: Programmers Have Terrible Social Skills
Ten może sprawić, że podrapiesz się trochę po głowie. Prawdopodobnie myślisz: „Co pomysł, że programiści mają straszne umiejętności społeczne ma wspólnego ze mną, albo z tym, dlaczego programowanie jest trudne?”
Cóż, jest to subtelne, ale prawdziwe. Świat ogląda programy telewizyjne i filmy, w których można zidentyfikować wykwalifikowanych programistów poprzez ich tendencję do „wydziwiania”.”
Więc wkrada się odwrotna logika i myślisz: „Jeśli nie jestem szalenie niezręczny społecznie, czy mógłbym kiedykolwiek być 'prawdziwym’ programistą?”
Tak. Tak, możesz. Programiści uczestniczą w wielu konferencjach i meetupach, dają wykłady, tworzą społeczności i mają wspaniałe, normalne życie towarzyskie.
Misconception 4: Programmers Are Immediately Good at All Things Computers
Ja osobiście zdobyłem stopień naukowy z informatyki, a potem pracę przy programowaniu. A kiedy to zrobiłem, wszyscy natychmiast założyli, że jestem ekspertem we wszystkich sprawach związanych z komputerami.
- Erik, mój komputer wydaje ten dziwny dźwięk – jak myślisz, co jest nie tak?
- Hej, dostaję Error #90314 kiedy próbuję zamknąć MS Word. Co to oznacza?
- Która z tych kart graficznych jest najlepsza?
Wszystkie te pytania były rodzajami pytań, które słyszałem. I w zasadzie, po prostu wygooglowałbym odpowiedź (jeśli nie mówiąc „wow, naprawdę nie wiem”). Zarabiałem na życie pisząc oprogramowanie, ale to nie znaczyło, że wiedziałem wszystko o komputerach.
Wspominam o tym, ponieważ nie powinieneś myśleć, że musisz wiedzieć wszystko o komputerach, aby być programistą.
There’s a Lot of Variety in Programming
Obaliwszy kilka mitów, spójrzmy na rzeczywistość programowania. A rzeczywistość jest taka, że jest ono faktycznie dość zróżnicowane. Oto tylko mały wycinek rzeczy, które ludzie robią pod ogólną nazwą „programowanie”:
- Projektowanie układu i właściwości wizualnych strony internetowej.
- Tworzenie algorytmów sztucznej inteligencji.
- Skryptowanie ręcznych zadań w celu ich automatyzacji.
- Komplikowane modelowanie statystyczne.
- Budowanie prostych, powtarzalnych aplikacji mobilnych.
A to tylko niewielka próbka różnych rodzajów programowania. To nawet nie odnosi się do wszystkich różnych ról, które możesz zajmować, a które przyczyniają się do tych wysiłków.
W „byciu programistą” jest tyle samo różnorodności, co w „byciu biznesmenem”.”
Niektóre role programistyczne są bardziej przystępne
Zważywszy na tę różnorodność, chciałbym się trochę zagłębić w to, które role mogą wydawać się bardziej przystępne.
Zamierzam się trochę wycofać z spektrum „łatwe do trudne”, tylko dlatego, że to zależy od tego, co ty, jako jednostka, uważasz za trudne. Na przykład, zawsze radziłem sobie bardzo dobrze z matematyką i algorytmami, ale jestem szczerze mówiąc okropny w projektowaniu i układzie. Możesz mieć przeciwne skłonności i myśleć, że jestem śmieszny mówiąc „programowanie algorytmu sortowania jest łatwe” i przeciwstawić się czemuś, co ja uznałbym za równie śmieszne: „układanie pięknej strony internetowej jest łatwe.”
Zrozum więc, że nie nazywam rzeczy kategorycznie łatwymi lub trudnymi. Zamiast tego, wskazuję na rzeczy, których mogłeś nie brać pod uwagę, jeśli kiedykolwiek myślałeś o programowaniu jako wysoce matematycznym.
- Niektórzy ludzie na stanowiskach programistycznych skupiają się głównie na układzie i doświadczeniu użytkownika. Oznacza to, że zajmują się estetyką aplikacji oraz tym, jak użytkownicy wchodzą z nią w interakcje.
- Inni programiści skupiają się głównie na danych i bazach danych. Zamiast budować duże kawałki oprogramowania przy użyciu złożonych instrukcji, skupiają się o wiele bardziej na rzeczywistych danych i rozumowania o tych danych.
- Jeszcze inna dyscyplina jest bliżej operacji i wsparcia. Niektórzy ludzie pracują trochę z komputerami jako „power userzy” i uczą się programowania ucząc się tu i tam jak zautomatyzować i uczynić to co robią ręcznie bardziej wydajnym.
A to tylko kilka przykładów. Zrozum więc, że nawet jeśli programowanie wydaje ci się trudne, mogą być w nim role, które wydają się bardziej przystępne.
Programming Is, However, Alien, Which Can Mean That Programming Is Hard
W tym momencie chciałbym trochę zmienić biegi. Mam wrażenie, że spędziłem sporo czasu na temacie „hej, programowanie nie jest tak trudne jak myślisz”. I to jest prawda. Myślę, że wiele osób na pytanie „czy programowanie jest trudne” odpowiedziałoby „tak”, po prostu dlatego, że nie wiedzą, na czym polega programowanie.
Ale zamierzam to trochę złagodzić. Programowanie jest trudne w tym sensie, że wymaga od ciebie myślenia w sposób, do którego nie jesteś przyzwyczajony.
Aby zrozumieć, co mam na myśli, pomyśl o radzeniu sobie z Alexą.
Alexa może odpowiedzieć na wiele taktycznych pytań, a ona zachwyci i zaskoczy cię czasami. Ale jest też naprawdę frustrująca. Jej komputerowość objawia się czasami, gdy komicznie nie rozumie podstawowych interakcji międzyludzkich.
Teraz weź pod uwagę, że jeśli chodzi o programy komputerowe, Alexa jest całkowicie zoptymalizowana, aby zrobić wszystko, co w jej mocy, aby cię zrozumieć. Musisz być niezwykle precyzyjny, dosłowny i obcesowy podczas rozmowy z nią, a ona jest tam, aby cię zrozumieć.
Kompilator (rzecz, która tłumaczy twój kod na działanie) jest jak Alexa, ale nie jest zaprojektowany, aby ułatwić ci życie. Został zaprojektowany, aby zmaksymalizować użyteczność. Więc jeśli musisz być precyzyjny w kontaktach z Alexą, precyzyjny nawet nie zaczyna opisywać tego, czego chce kompilator. Pomyl średnik z dwukropkiem, a możesz rozbić komputer.
Czy więc programowanie jest trudne? Tak, w tym sensie, że wymaga od ciebie myślenia w sposób, w jaki większość ludzi normalnie nie myśli.
Programming the State of the Art Is Legitimately Hard
Kontynuując temat „tak, programowanie jest trudne”, rozważmy, że są takie części świata programowania, które wymagają dużo umiejętności i praktyki, aby do nich wejść. Nie myślcie o tym przesadnie. Czasami programowanie jest naprawdę trudne.
Robienie zaawansowanych rzeczy z robotyką, łańcuchem bloków, sztuczną inteligencją, algorytmami handlowymi itp. wymaga wielu umiejętności, praktyki, talentu i konkurencyjnego napędu. Niektóre z dużych firm z Doliny Krzemowej płacą ogromne pensje programistom oprogramowania, a nie zamierzają tego robić dla każdego, kto po prostu przypadkiem wędruje.
Istnieją specjalności w świecie programowania, które wymagają błyskawicy w butelce, w tym sensie, że potrzebujesz praktyki, talentu, sprytu i szczęścia. A poza tym, są role, pozycje, wyzwania i sytuacje, które nie wszyscy ludzie mogą odpowiednio spełnić. Programowanie może być całkiem trudne.
Like Anything Else, It Runs the Gamut
Ale, w końcu, to naprawdę się różni. Wróć do tego, co powiedziałem na początku.
Czy koszykówka jest trudna? Nie, jeśli masz na myśli „czy każdy może podnieść piłkę i rzucić ją w kierunku kosza?”. Tak, jeśli masz na myśli, „jakie są szanse, że Golden State podpisuje mnie, aby grać obok Steph Curry?”
Czy trudno jest mówić po portugalsku? Cóż, prawdopodobnie nie, jeśli urodziłeś się w Brazylii lub Portugalii. Ale prawdopodobnie tak, jeśli masz 70 lat i nigdy nie mówiłeś nic poza japońskim.
Więc, czy programowanie jest trudne? Tak i nie. Tak, trudno jest to robić na elitarnym poziomie lub w wysoce wyspecjalizowanym i konkurencyjnym obszarze. Ale nie, nie jest trudno zacząć. I na pewno nie jest poza tobą.
Ten post został napisany przez Erika Dietricha. Erik jest weteranem świata oprogramowania i zajmował w nim niemal każde stanowisko: programisty, architekta, menedżera, CIO, a w końcu niezależnego konsultanta ds. zarządzania i strategii. Ten szeroki zakres doświadczeń pozwolił mu przemówić do wszystkich osób w branży, napisać kilka książek i niezliczoną ilość wpisów na dziesiątkach stron internetowych.