Nehéz a programozás?
Ezt a kérdést sok nem programozó kérdezi tőlem. Ezzel olyan kérdések közé sorolják, mint a “dolgoznak-e a programozók otthonról” és a “milyen végzettség kell ahhoz, hogy programozó legyél?”. A kíváncsi elmék tudni akarják.
De ellentétben néhány ilyen kérdéssel, ez a kérdés valójában elég nehéz. Ez egy egyszerű kérdés, de a válasz nagyon árnyalt.
Merüljünk hát bele, részletesen, és segítsünk megérteni, hogy nehéz-e a programozás vagy sem.
Nehéz a programozás? A rövid válasz
Először is foglalkozzunk tehát a kérdéssel egy rövid és közvetlen válasszal. Ez megalapozza a poszt további részét.
Nehéz a programozás?
Hát, ahogy a tanácsadók szokták mondani, “attól függ”. Az, hogy a programozás nehéz-e vagy sem, sok tényezőtől függ, például a programozás konkrét típusától és attól, hogy Ön, mint egyén hogyan gondolkodik. A rövid válasz tehát az, hogy a programozás tényleg a meglepően könnyűtől az őrülten nehézig terjed.
Gondolj erre. Próbálj meg válaszolni néhány ilyen kérdésre a tapasztalataid alapján:
- Nehéz kosárlabdázni?
- Nehéz portugálul beszélni?
- Mi a helyzet az autóvezetéssel? Az nehéz?
Megértheted, hogy miért fogalmazok úgy, hogy “ehhh… attól függ.”
Az embereket hajlamos túlságosan megfélemlíteni a programozás
Mégis felajánlok egy kis minősítő véleményt. Konkrétan, szerintem a nem programozók hajlamosak drámaian túlbecsülni, hogy mennyire nehéz a programozás.
Hallottál már valakitől ilyesmit:
Oh, én egyszerűen nem vagyok egy matekos ember!
Nos, én ezt sokszor hallom. De ugyanezt inkább a programozással kapcsolatban hallom. És ezt azért tartom ironikusnak, mert míg a programozás egyes területei valóban igénylik a matematikát, addig sokan nem. A programozás, véleményem szerint, sokkal sokrétűbb területeket érint, mint a “matek.”
Meggyőződésem, hogy sokan tényleg azt feltételezik, hogy programozóként soha nem tudnának érvényesülni, de teljesen tévednek. Ez egy sokkal könnyebben megközelíthető tantárgy, mint ahogy azt a nagyvilág hinni látszik.”
Hadd oszlassunk el néhány programozói mítoszt, a matematikán túl
Azért, hogy a lényegre igazán rávilágítsunk, nézzünk meg néhány további tévhitet a programozásról, azon a mítoszon túl, hogy a programozóknak nagyon jónak kell lenniük a matematikában.
1. tévhit: A programozók elit hackerek, mint a srác a Mr. Robotban
Kortól függetlenül van néhány film a fénykorodból, ami a programozókat Bond-szerű (vagy Bond-villalakó-szerű) hackereknek állítja be. Nekem felnőttként a Sneakers című film volt. Ha egy kicsit később nőttél fel, mint én, akkor lehet, hogy elég szerencsétlen voltál ahhoz, hogy találkozz a Hackers vagy a Swordfish című filmmel. Manapság a műfaj javult, és talán a Mr. Robotot is élvezheted.
De akár fantasztikus a film, mint a Sneakers, akár szörnyű, mint a Hackers, még mindig vannak hacker főszereplők és hacker antagonisták, akik egyszerre tűnnek kvázi szociopatának és hihetetlenül zseniális programozóknak.
Ez nem a való élet. Ez még csak nem is igazi hackerkedés, nemhogy hétköznapi programozás. Szóval ne feltételezd, hogy a programozáshoz kockákat kell mozgatni egy képernyőn, vagy bármit is csinál Hugh Jackman a Swordfishben. Általában csak sokat kell guglizni hozzá.
Tévhit 2: Informatikai végzettségre van szükséged
Ezzel már nagyon részletesen foglalkoztunk, úgyhogy itt nem akarom tovább ragozni a témát. De nem, a programozáshoz nem kell informatikai diploma. Nincs szükséged kereskedelmi diplomára, és talán még bootcampre sem kell járnod.
Ezek a dolgok mind megkönnyítik az első állás megszerzését, de nem kötelezőek. Amikor tehát azon tűnődsz, hogy “nehéz-e a programozás”, valószínűleg összekevered a karikákat, amelyeket át kell ugranod a tevékenységgel. A programozásnak nincsenek előfeltételei a Jegyzettömbön és egyetlen értelmező vagy fordítóprogram letöltésén túl.
3. tévhit: A programozóknak szörnyű szociális készségeik vannak
Ez talán kicsit megvakarja a fejed. Valószínűleg azt gondolod: “Mi köze van annak, hogy a programozóknak szörnyű szociális készségeik vannak, hozzám, vagy ahhoz, hogy miért nehéz a programozás?”
Nos, ez finom, de valós. A világ olyan tévéműsorokat és filmeket néz, amelyekben a képzett programozókat a “stréberkedésre” való hajlamukról lehet felismerni.”
Akkor bekúszik a fordított logika, és azt gondolod: “Ha nem vagyok őrülten szociálisan esetlen, lehetek-e valaha is “igazi” programozó?”
Igen. Igen, lehetsz. A programozók rengeteg konferencián és találkozón vesznek részt, előadásokat tartanak, közösségeket alkotnak, és remek, normális társadalmi életet élnek.”
4. tévhit: A programozók azonnal jók minden számítógépes dologban
Én személy szerint informatikai diplomát szereztem, majd programozói állást. És amikor ezt megtettem, mindenki azonnal azt feltételezte, hogy minden számítógépes dologban szakértő vagyok.
- Erik, a számítógépem furcsa hangot ad ki – szerinted mi a baj?
- Hé, a 90314-es hibaüzenetet kapom, amikor megpróbálom bezárni az MS Word programot. Mit jelent ez?
- Melyik videokártya a legjobb?
Minden ilyen kérdést hallottam. És alapvetően csak rágugliztam a választ (ha nem is mondtam, hogy “hű, tényleg nem tudom.”). Szoftverek írásából éltem, de ez nem jelentette azt, hogy mindent és mindenkit tudtam a számítógépekről.
Ezt azért említem, mert nem szabad azt gondolnod, hogy mindent és mindenkit tudnod kell a számítógépekről ahhoz, hogy programozó legyél.
A programozásban sok a változatosság
Miután leromboltunk néhány mítoszt, nézzük a programozás valóságát. A valóság pedig az, hogy valójában elég változatos. Íme csak egy kis ízelítő abból, amit az emberek a “programozás” általános fogalma alatt csinálnak:
- Egy weboldal elrendezésének és vizuális tulajdonságainak megtervezése.
- Mesterséges intelligencia algoritmusok létrehozása.
- Kézi feladatok scriptelése azok automatizálása érdekében.
- Bonyolult statisztikai modellezés.
- Egyszerű, megismételhető mobilalkalmazások készítése.
És ez csak egy aprócska ízelítő a programozás különböző fajtáiból. Ez még csak nem is foglalkozik az összes olyan különböző szerepkörrel, amelyet betölthet, és amely hozzájárul ezekhez az erőfeszítésekhez.
A “programozónak lenni” éppoly sokféle lehet, mint “üzletembernek lenni”.”
Egyes programozói szerepek megközelíthetőbbek
A sokféleségből adódóan szeretnék egy kicsit belemerülni abba, hogy mely szerepek tűnhetnek megközelíthetőbbnek.
Egy kicsit visszalépek a “könnyűtől a nehézig” spektrumtól, csak azért, mert ez nagyon függ attól, hogy te, mint egyén mit találsz nehéznek. Nekem például mindig is nagyon jól ment a matek és az algoritmusok, de őszintén szólva borzalmas vagyok a tervezésben és az elrendezésben. Lehet, hogy ellentétes hajlamaid vannak, és nevetségesnek tartasz, ha azt mondom, hogy “egy rendező algoritmus programozása könnyű”, és valami olyasmivel ellenkezel, amit én ugyanilyen nevetségesnek találnék: “egy szép weboldal elrendezése könnyű.”
Szóval értsd meg, hogy nem kategorikusan könnyűnek vagy nehéznek nevezek dolgokat. Ehelyett olyan dolgokra mutatok rá, amikre talán nem is gondoltál, ha a programozásra mindig is csak mint erősen matematikai dologra gondoltál.
- Néhány programozói munkakörben dolgozó ember nagyrészt az elrendezésre és a felhasználói élményre koncentrál. Ez azt jelenti, hogy erősen foglalkoznak az alkalmazás esztétikájával, valamint azzal, hogy a felhasználók hogyan lépnek vele kapcsolatba.
- Más programozók nagyrészt az adatokra és az adatbázisokra koncentrálnak. Ahelyett, hogy bonyolult utasítások segítségével nagy szoftvereket építenének, sokkal inkább a tényleges adatokra és az azokkal kapcsolatos érvelésre összpontosítanak.
- Még egy másik szakterület közelebb áll az üzemeltetéshez és a támogatáshoz. Vannak, akik “power user”-ként jócskán dolgoznak a számítógépekkel, és úgy tanulnak meg programozni, hogy itt-ott megtanulják, hogyan lehet automatizálni és hatékonyabbá tenni azt, amit kézzel végeznek.
És ez csak néhány példa. Értsd meg tehát, hogy még ha a programozás nehéznek is tűnik számodra, lehetnek benne olyan szerepek, amelyek valójában megközelíthetőbbnek tűnnek.
A programozás azonban idegen, ami azt jelentheti, hogy a programozás nehéz
Ezzel a ponttal szeretnék egy kicsit sebességet váltani. Úgy érzem, hogy elég sok időt töltöttem a “hé, a programozás nem is olyan nehéz, mint gondolnád” témával. És ez igaz is. Azt hiszem, sok ember a “nehéz-e a programozás” kérdésre “igen”-nel válaszolna, egyszerűen azért, mert nem tudja, hogy mit jelent a programozás.
De ezt most egy kicsit mérsékelném. A programozás abban az értelemben nehéz, hogy olyan gondolkodást igényel, amihez nem vagy hozzászokva.
Hogy megértsd, mire gondolok, gondolj az Alexával való foglalkozásra.
Alexa sok taktikai kérdésre tud válaszolni, és időnként megörvendeztet és meglep. De emellett nagyon frusztráló is. Számítógépes mivolta időnként megmutatkozik, amikor komikusan félreérti az alapvető emberi interakciókat.
Most, gondolj arra, hogy ami a számítógépes programokat illeti, Alexa teljesen arra van optimalizálva, hogy mindent megtegyen, hogy megértsen téged. Rendkívül pontosnak, szó szerintinek és tompának kell lenned, miközben beszélsz vele, és ő azért van, hogy megértsen téged.
A fordítóprogram (az a dolog, ami lefordítja a kódodat cselekvésre) olyan, mint Alexa, de nem arra tervezték, hogy megkönnyítse az életedet. Arra tervezték, hogy maximalizálja a hasznosságot. Tehát ha Alexával kapcsolatban precíznek kell lenned, a precíz még csak meg sem közelíti azt, amit a fordító akar. Ha összetévesztesz egy pontosvesszőt kettősponttal, összeomolhat a számítógéped.
Szóval nehéz a programozás? Igen, abban az értelemben, hogy olyan módon kell gondolkodni, ahogy a legtöbb ember általában nem gondolkodik.
A programozás a technika jelenlegi állása törvényszerűen nehéz
A “igen, a programozás nehéz” témát folytatva, vegyük figyelembe, hogy a programozás világának vannak olyan zónái, amelyekbe való belépéshez nagy szakértelem és gyakorlat szükséges. Ne gondoljuk túl a dolgot. Néha a programozás tényleg nehéz.
A robotikával, blokklánccal, mesterséges intelligenciával, kereskedelmi algoritmusokkal stb. kapcsolatos fejlett dolgok elvégzése sok készséget, gyakorlatot, tehetséget és versenyszellemet igényel. Néhány nagy Szilícium-völgyi cég hatalmas fizetéseket fizet a szoftverfejlesztőknek, és ezt nem teszik meg bárkinek, aki csak úgy véletlenül arra jár.
A programozás világában vannak olyan specialitások, amelyekhez villámcsapás kell, abban az értelemben, hogy gyakorlat, tehetség, okosság és szerencse kell. Ezen túl pedig vannak olyan szerepek, pozíciók, kihívások és helyzetek, amelyeket nem sokan tudnak megfelelően betölteni. A programozás elég nehéz tud lenni.
Mint minden más, ez is végigfut a skálán
De végül is tényleg változó. Gondolj vissza arra, amit az elején mondtam.
A kosárlabda nehéz? Nem, ha arra gondolsz, hogy “bárki fel tud-e venni egy labdát és kosár felé dobni”? Igen, ha arra gondolsz, hogy “mennyi az esélye, hogy a Golden State szerződtet engem, hogy Steph Curry mellett játszhassak?”
Nehéz portugálul beszélni? Nos, valószínűleg nem, ha Brazíliában vagy Portugáliában születtél. De valószínűleg igen, ha 70 éves vagy, és soha nem beszéltél mást, csak japánul.
Szóval, nehéz a programozás? Igen és nem. Igen, nehéz elit szinten vagy egy nagyon speciális és versenyképes területen csinálni. De nem, nem nehéz elkezdeni. És semmiképpen sem meghaladhatatlan.
Ezt a bejegyzést Erik Dietrich írta. Erik a szoftvervilág veteránja, és szinte minden pozíciót betöltött már benne: fejlesztő, építész, menedzser, CIO, és végül független vezetői és stratégiai tanácsadó. Ez a széleskörű tapasztalat lehetővé tette számára, hogy minden iparági személyiséghez szóljon, és hogy több könyvet és számtalan blogbejegyzést írjon tucatnyi webhelyen.