Onko ohjelmointi vaikeaa?
Tämä on kysymys, jota monet muut kuin ohjelmoijat kysyvät minulta. Sen vuoksi se sijoittuu samalle sijalle sellaisten kysymysten kanssa kuin ”työskentelevätkö ohjelmoijat kotoa käsin” ja ”millaisen koulutuksen tarvitset ollaksesi ohjelmoija?”. Kyselevät mielet haluavat tietää.
Mutta toisin kuin jotkut noista kysymyksistä, tämä on itse asiassa aika vaikea. Se on yksinkertainen kysymys, mutta vastaus on hyvin vivahteikas.
Sukelletaan siis siihen yksityiskohtaisesti ja autetaan sinua ymmärtämään, onko ohjelmointi vaikeaa vai ei.
Onko ohjelmointi vaikeaa? Lyhyt vastaus
Käsitellään siis aluksi kysymystä lyhyellä ja suoralla vastauksella. Tämä luo pohjan viestin loppuosalle.
Onko ohjelmointi vaikeaa?
Noh, kuten konsultit tykkäävät sanoa, ”se riippuu”. Se, onko ohjelmointi vaikeaa vai ei, riippuu monista tekijöistä, kuten tietynlaisesta ohjelmoinnista ja siitä, miten sinä yksilönä ajattelet. Lyhyt vastaus on siis se, että ohjelmointi todella vaihtelee yllättävän helposta mielettömän vaikeaan.
Ajattele näin. Kokeile vastata joihinkin näistä kysymyksistä kokemuksesi perusteella:
- Onko koripallon pelaaminen vaikeaa?
- Onko portugalin kielen puhuminen vaikeaa?
- Entä auton ajaminen? Onko se vaikeaa?
Voit ymmärtää, miksi suojaudun ja sanon: ”ehhh… se riippuu.”
Ihmiset pyrkivät pelkäämään liikaa ohjelmointia
Tarjoan kuitenkin hieman varauksellisen mielipiteen. Erityisesti uskon, että ei-ohjelmoijilla on taipumus dramaattisesti yliarvioida, kuinka vaikeaa ohjelmointi on.
Oletko koskaan kuullut jonkun sanovan jotakin tällaista:
Oh, en vain todellakaan ole matematiikkaihminen!
Noh, kuulen tuota usein. Mutta samaa kuulen ohjelmoinnista enemmänkin. Ja pidän tätä ironisena, koska vaikka jotkut ohjelmoinnin osa-alueet todella vaativat matematiikkaa, monet eivät. Ohjelmointi on mielestäni paljon monipuolisempi joukko huolenaiheita kuin ”matematiikka.”
Olen todella sitä mieltä, että monet ihmiset olettavat, etteivät he koskaan pärjäisi ohjelmoijana, mutta he ovat täysin väärässä. Se on paljon helpommin lähestyttävä aihe kuin mitä suuri maailma näyttää uskovan.”
Häivytetään muutamia ohjelmointimyyttejä matematiikan ohella
Kaikkea muuta kuin myytti siitä, että ohjelmoijien on oltava todella hyviä matematiikassa, jotta asia todella menisi perille, tarkastellaan vielä joitakin muita ohjelmointiin liittyviä harhakäsityksiä.
Väärinkäsitys 1: Ohjelmoijat ovat eliittihakkareita, kuten Mr. Robotin kaveri
Iästäsi riippumatta on olemassa jokin elokuva kukoistuskaudelta, jossa ohjelmoijat heitetään Bondin kaltaisiksi (tai Bond-villinoitsijan kaltaisiksi) hakkereiksi. Itselläni aikuisiällä se oli elokuva Sneakers. Jos olet kasvanut hieman minua myöhemmin, olet ehkä ollut niin onneton, että olet törmännyt elokuviin Hackers tai Swordfish. Nykyään genre on parantunut, ja saatat nauttia Mr. Robotista.
Mutta olipa elokuva sitten mahtava, kuten Sneakers, tai kauhea, kuten Hackers, sinulla on silti hakkeri-päähenkilöitä ja hakkeri-antagonisteja, jotka näyttävät olevan sekä kvasisosiopaattisia että uskomattoman nerokkaita ohjelmoijia.
Tämä ei ole tosielämää. Se ei ole edes oikeaa hakkerointia, saati sitten arkipäiväistä ohjelmointia. Älkää siis olettako, että ohjelmointi vaatii kuutioiden liikuttelua ruudulla, tai mitä ikinä Hugh Jackman tekeekään Swordfishissä. Yleensä se vaatii vain paljon googlailua.
Väärinkäsitys 2: Tarvitset tietojenkäsittelytieteen tutkinnon
Olemme käsitelleet tätä jo paljon, joten en puutu asiaan tässä. Mutta ei, et tarvitse tietotekniikan tutkintoa ohjelmointiin. Et tarvitse ammattitutkintoa, eikä sinun välttämättä tarvitse edes osallistua bootcampiin.
Nämä kaikki helpottavat ensimmäisen työpaikan saamista, mutta niitä ei tarvita. Kun siis mietit, ”onko ohjelmointi vaikeaa”, sekoitat luultavasti renkaat, joiden läpi on hypättävä, ja toiminnan. Ohjelmoinnilla ei ole muita edellytyksiä kuin Notepad ja yhden tulkin tai kääntäjän lataaminen.
Väärinkäsitys 3: Ohjelmoijilla on kauheat sosiaaliset taidot
Tämä saattaa saada sinut raapimaan päätäsi hieman. Ajattelet luultavasti: ”Miten ajatus siitä, että ohjelmoijilla on kauheat sosiaaliset taidot, liittyy minuun tai siihen, miksi ohjelmointi on vaikeaa?”
No, se on hienovarainen, mutta todellinen. Maailma katsoo tv-sarjoja ja elokuvia, joissa taitavat ohjelmoijat tunnistaa siitä, että heillä on taipumusta ”nörttimäisyyteen”
Siten käänteinen logiikka hiipii sisään ja ajattelet: ”Jos en ole mielettömän sosiaalisesti kömpelö, voisiko minusta koskaan tulla ’oikea’ ohjelmoija?”
Kyllä, voit. Ohjelmoijat käyvät monissa konferensseissa ja tapaamisissa, pitävät puheita, muodostavat yhteisöjä ja heillä on mahtava, normaali sosiaalinen elämä.”
Väärinkäsitys 4: Ohjelmoijat ovat heti hyviä kaikessa, mikä liittyy tietokoneisiin
Itse sain tietojenkäsittelytieteen tutkinnon ja sen jälkeen ohjelmointityön. Ja kun tein sen, kaikki olettivat heti, että olen asiantuntija kaikissa tietokoneasioissa.
- Erik, tietokoneestani kuuluu outo ääni – mikä luulet, että on vialla?
- Hei, saan virheilmoituksen #90314, kun yritän sulkea MS Wordia. Mitä se tarkoittaa?
- Mikä näistä näytönohjaimista on paras?
Kaikki näitä kysymyksiä kuulin. Ja periaatteessa vain googlaisin vastauksen (jos en sanoisi, että ”vau, en todellakaan tiedä.”). Ansaitsin elantoni kirjoittamalla ohjelmistoja, mutta se ei tarkoittanut, että tiesin kaikkea ja kaikkea tietokoneista.
mainitsen tämän siksi, että sinun ei pitäisi ajatella, että sinun pitäisi tietää kaikkea ja kaikkea tietokoneista ollaksesi ohjelmoija.
Ohjelmoinnissa on paljon vaihtelua
Kunhan olemme murtaneet joitain myyttejä, tarkastellaanpa ohjelmoinnin todellisuutta. Ja todellisuus on se, että se on itse asiassa varsin monipuolista. Tässä vain pieni otos asioista, joita ihmiset tekevät yleisen ”ohjelmoinnin” sateenvarjon alla:
- Websivun ulkoasun ja visuaalisten ominaisuuksien suunnittelu.
- Tekoälyalgoritmien luominen.
- Manuaalisten tehtävien skriptaaminen niiden automatisoimiseksi.
- Kompleksinen tilastollinen mallintaminen.
- Yksinkertaisten, toistettavien mobiilisovellusten rakentaminen.
Ja tämä on vain pieni otos ohjelmoinnin eri muodoista. Se ei edes käsittele kaikkia niitä erilaisia rooleja, joissa voit olla mukana näissä ponnisteluissa.
”Ohjelmoijana olemisessa” on yhtä paljon vaihtelua kuin ”liikemiehenä olemisessa”.”
Jotkut ohjelmointiroolit ovat helpommin lähestyttäviä
Tämän moninaisuuden vuoksi haluaisin tutkia hieman, mitkä roolit saattavat tuntua helpommin lähestyttäviltä.
Poikkean hiukan ”helposta vaikeaan” -spektristä vain siksi, että se riippuu niin paljon siitä, mitä sinä yksilönä pidät vaikeana. Olen esimerkiksi aina pärjännyt hyvin matematiikassa ja algoritmeissa, mutta olen suoraan sanottuna surkea suunnittelussa ja ulkoasussa. Sinulla saattaa olla päinvastaisia taipumuksia, ja saatat pitää naurettavana sitä, että sanon ”lajittelualgoritmin ohjelmointi on helppoa”, ja vastaat siihen jotain, mitä pitäisin yhtä naurettavana: ”kauniin verkkosivun laatiminen on helppoa.”
Ymmärtäkää siis, etten nimitä asioita kategorisesti helpoiksi tai vaikeiksi. Sen sijaan osoitan asioita, joita et ehkä ole ottanut huomioon, jos olet aina ajatellut ohjelmointia vain hyvin matemaattisena.
- Jotkut ohjelmointitehtävissä toimivat ihmiset keskittyvät pitkälti ulkoasuun ja käyttäjäkokemukseen. Tämä tarkoittaa sitä, että he huolehtivat paljon sovelluksen estetiikasta sekä siitä, miten käyttäjät ovat vuorovaikutuksessa sen kanssa.
- Toiset ohjelmoijat keskittyvät pitkälti dataan ja tietokantoihin. Sen sijaan, että he rakentaisivat suuria ohjelmistoja käyttäen monimutkaisia ohjeita, he keskittyvät paljon enemmän varsinaiseen dataan ja sitä koskevaan päättelyyn.
- Jälleen yksi tieteenala on lähempänä toimintaa ja tukea. Jotkut työskentelevät paljon tietokoneiden parissa ”tehokäyttäjinä” ja oppivat ohjelmoimaan oppimalla siellä täällä, miten automatisoida ja tehostaa sitä, mitä he tekevät manuaalisesti.
Ja nämä ovat vain muutamia esimerkkejä. Ymmärrä siis, että vaikka ohjelmointi tuntuisi sinusta vaikealta, sen sisällä voi olla rooleja, jotka itse asiassa tuntuvat helpommin lähestyttäviltä.
Ohjelmointi on kuitenkin vierasta, mikä voi tarkoittaa sitä, että ohjelmointi on vaikeaa
Tässä vaiheessa haluaisin vaihtaa hieman vaihdetta. Minusta tuntuu, että olen käyttänyt aika paljon aikaa teemaan ”hei, ohjelmointi ei ole niin vaikeaa kuin luulet”. Ja se on totta. Luulen, että monet ihmiset vastaisivat kysymykseen ”onko ohjelmointi vaikeaa” myöntävästi yksinkertaisesti siksi, että he eivät tiedä, mitä ohjelmointi pitää sisällään.
Mutta lievennän tätä hieman. Ohjelmointi on vaikeaa siinä mielessä, että se vaatii sinua ajattelemaan tavalla, johon et ole tottunut.
Ymmärtääksesi, mitä tarkoitan, ajattele asiointia Alexan kanssa.
Alexa osaa vastata moniin taktisiin kysymyksiin, ja hän ilahduttaa ja yllättää sinut toisinaan. Mutta hän on myös todella turhauttava. Hänen tietokonekeskeisyytensä näkyy ajoittain, kun hän ymmärtää koomisesti väärin perustavanlaatuisen inhimillisen vuorovaikutuksen.
Nyt ota huomioon, että tietokoneohjelmien osalta Alexa on täysin optimoitu tekemään parhaansa ymmärtääkseen sinua. Sinun täytyy olla äärimmäisen tarkka, kirjaimellinen ja tympeä puhuessasi hänelle, ja hän on olemassa ymmärtääkseen sinua.
Kääntäjä (asia, joka kääntää koodisi toiminnaksi) on kuin Alexa, mutta sitä ei ole suunniteltu tekemään elämästäsi helppoa. Se on suunniteltu maksimoimaan hyöty. Joten jos sinun täytyy olla tarkka Alexan kanssa asioidessasi, tarkka ei edes alkuunkaan kuvaa sitä, mitä kääntäjä haluaa. Jos sekoitat puolipisteen kaksoispisteeseen, voit kaataa tietokoneen.
Onko ohjelmointi siis vaikeaa? Kyllä, siinä mielessä, että se vaatii ajattelua tavalla, jolla useimmat ihmiset eivät normaalisti ajattele.
Tason ohjelmointi on laillisesti vaikeaa
Jatkaaksemme teemaa ”kyllä, ohjelmointi on vaikeaa”, ajatellaanpa, että ohjelmointimaailmassa on alueita, joihin pääseminen vaatii paljon taitoa ja harjoitusta. Älä ajattele asiaa liikaa. Joskus ohjelmointi on todella vaikeaa.
Edistyneiden asioiden tekeminen robotiikan, lohkoketjujen, tekoälyn, kaupankäyntialgoritmien jne. parissa vaatii paljon taitoa, harjoittelua, lahjakkuutta ja kilpailuhenkisyyttä. Jotkut suurista Piilaakson yrityksistä maksavat valtavia palkkoja ohjelmistokehittäjille, eivätkä ne tee sitä kenelle tahansa, joka vain sattuu kulkemaan ohi.
Ohjelmointimaailmassa on erikoisaloja, jotka vaativat salamannopeutta siinä mielessä, että tarvitaan harjoittelua, lahjakkuutta, fiksuutta ja onnea. Ja sen lisäksi on olemassa rooleja, asemia, haasteita ja tilanteita, joita ei kovin moni ihminen pysty riittävästi täyttämään. Ohjelmointi voi olla aika rankkaa.
Kuten mikä tahansa muukin, se kulkee skaalaa
Mutta loppujen lopuksi se todella vaihtelee. Ajattele mitä sanoin alussa.
Onko koripallo vaikeaa? Ei, jos tarkoitat ”pystyykö kuka tahansa nostamaan pallon ja heittämään sen kohti koria”. Kyllä, jos tarkoitat ”mitkä ovat todennäköisyydet sille, että Golden State hankkii minut pelaamaan Steph Curryn rinnalle?”
Onko vaikea puhua portugalia? No, luultavasti ei, jos olet syntynyt Brasiliassa tai Portugalissa. Mutta luultavasti kyllä, jos olet 70-vuotias etkä ole koskaan puhunut muuta kuin japania.
Onko ohjelmointi siis vaikeaa? Kyllä ja ei. Kyllä, sitä on vaikea tehdä eliittitasolla tai erittäin erikoistuneella ja kilpaillulla alalla. Mutta ei, ei ole vaikeaa päästä alkuun. Eikä se todellakaan ole ylivoimaista.
Tämän viestin on kirjoittanut Erik Dietrich. Erik on ohjelmistomaailman veteraani, ja hän on toiminut lähes kaikissa sen tehtävissä: kehittäjänä, arkkitehtinä, johtajana, tietohallintojohtajana ja lopulta itsenäisenä johtamis- ja strategiakonsulttina. Tämä laaja kokemus on antanut hänelle mahdollisuuden puhua kaikille alan henkilöille ja kirjoittaa useita kirjoja ja lukemattomia blogikirjoituksia kymmenille eri sivustoille.