A programozásra "születni kell"?
Muszáj, hogy érdekelje dolog. Érdekelje annyira, hogy próbáljon meg egyedi problémákra is írni megoldást és ezért mozgasson meg minden követ, bújja a netet információ után (logikát, algoritmust keressen), vagy tudja lebontani az adott probléma megoldásának folyamatát olyan apró lépésekre, amilyenekre csak tudja (algoritmizálás). Akarja meglátni az összefüggést a dolgok között és ne adja fel. Ha ehhez nincsen türelem, kitartás és a játszás jobban érdekel, vagy minden más jobban leköti a figyelmedet és nem akarsz erre időt szánni, akkor inkább bele se kezdjen az ember. A programozó nem attól lesz jó programozó, hogy csak megtanulta az adott programozási nyelv elemeit vagy egy adott framework-öt vagy library-t, mert azok hiányában megtorpan és rájön, hogy csak mások munkáját tudja felhasználni, de nem érti, hogy azok mitől működnek, milyen logika működteti. Akarja megismerni rendesen, amivel foglalkozik. Engem pl. mindig érdekelt a 3D motorok működése és a 3D-s tér 2D-s leképezése a monitorra. Mostanában kezdtem el ezzel igazán foglalkozni és hát rá kellett jönnöm, hogy az a matek, amit középsuliban nem voltam hajlandó megtanulni, az most nagyon hiányzik ehhez. Ha mondták volna, hogy a trigonometria és a koordinátaműveletek, mátrixok, szögfüggvények ismerete az informatikában erre lesz jó, akkor érdekelt volna és lett volna kedvem megtanulni. Most autodidakta módom bújom a netet magyar és angol nyelvű matekelőadások után, vettem matekfüzetet és számológépet és papíron próbálgatom meg kiszámolni a tanultakat. Legutóbb el is kezdtem a tanultak alapján egy kezdetleges megoldást leprogramozni. A DOS-t választottam, mert önerőből akarom megvalósítani, nem valami frameworkkel, library-val és hardveres gyorsítással. Egy perspektívikusan már megtudok jeleníteni egy dróthálós kockát, lehet mozgatni és forhatni is billentyűparancsokkal, de még vannak bugjai. Ez már sikerélmény volt és ösztönöz arra, hogy tovább folytassam a tanulmányaimat ezügyben. Tanár nélkül, munka mellett ritkábban van rá időm, de innen szép elérni valamit :D Az, hogy ne csak dróthálós objektumokat tudjak megjeleníteni az még külön kihívás, esetleg renderelni is, úgyhogy hosszú még az út. De már ezzel is nagyon sok dologban meglátom az összefüggéseket, ami segít a további problémák megoldásában. Szóval, ha valamit igazán meg akarsz valósítani és “vérbeli” programozóvá szeretnél válni, akkor semmi sem tántoríthat el a céljaid elérésétől. Ha meg mégis, akkor nem neked találták ezt ki.
Persze, tanulja meg mindenki a framework-öt és library-t használni és kihasználni :) vannak a jó programozók és vannak a vérbeli programozók. Én egyszer azzá szeretnék válni :)
Egyrészt nem kell születni rá, de valami kis affinitás (rendszerszemlélet, analitikus gondolkodás, ..) azért nem árt. Ez gyerekkorban vagy kamaszkorban kialakul, de később is fejleszthető. A lényeg, hogy nem kell zseninek lenni, ez tanulható tudás, esetleg valakinek könnyebben megy, és van, aki megizzad vele.
A másik, hogy itt is vannak szintek. Például valaki igen jól halad az elején, aztán egy szint (bonyolultság, összetettség, stb.) felett érezhetően szenvedni kezd vele, nevezhetjük ezt az ő határának. De itt is előjön a kitartás és a szorgalom kérdése, szóval azért nem csak a hozott képességeken múlik.
Ha valaki bonyolultabb, rosszabb hatásfokú megoldást talál egy problémára, mint más, az önmagában nem baj, amíg képes tanulni belőle. Ha mindenáron egyedül akar mindent megoldani, az nem jó. Tanulni kell a hibákból, és akkor ez a határ kitolható.
Igen, születni kell rá.
Az a fajta gondolkodásmód, szemlélet amit ez a munka igényel, nincs meg mindenkiben.
Fejleszthetőek a szükséges készségek? Igen.
Ahogy írni is meg lehet tanítani bárkit, de jól írni mégis csak kevesen képesek.
Ez a munka elkiván két féle készségcsoportot, az egyikben ott a tárgyi tudás, az elméleti háttéranyag. Ezeket bárki megszerezheti 100-as IQ felett, kellő kitartás birtokában.
De a tehetséget, egyedi látásmódot, azt már nem.
A motorikus készségek jól fejleszthetők, de a logikai készség nem ilyen. Utóbbit is lehet fejleszteni, de csak nagyon kis mértékben.
Így igaz, ahogy az előttem szólók is mondják.
Annyit még hozzátennék, kiegészítésként, hogy ugye írtam, hogy kell, hogy érdekeljen az a dolog, az a probléma, amire megoldást szeretnél írni. Pl. volt egyszer anno a progtanárom mesélte, hogy volt egy olyan programozó ismerőse, aki üzleti lehetőséget látott abban, hogy könyvelő-programot készítsen, de ugy ahhoz, hogy meg tudja tervezni, azért értenie is kellene a könyvelés menetéhez. Ezért kiképeztette magát mérlegképes könyvelőnek, így már akár könyvelési munkát is tud vállalni a programozás mellett :) Tehát, hogy valamire megoldást készíts, muszáj, hogy részben vagy egészben szakértőjévé is válj annak, amire megoldást nyújtasz.
És igen, minden szakma képviselője rendelkezik egy, a szakmhához kapcsolódó látásmóddal és problémamegoldó logikával, ami részben tanulható, de nagyrészben veleszületettt tehetség. Én pl. ezért nem lennék jó gitáros, hiába szeretek gitározni. Énekes meg főleg nem :D Viszont az ismerőseimnek meg kb. atomfizika a programozás, hiába mesélem el nekik, tök érthetően és laikus megfogalmazással, életből vett példákkal, hogy mit csinálok éppen, egyszerűen nem tudnak elvonatkoztatni az élettől, hiába mondom azt, hogy a számítógép a legbutább lény a földön, mert nem tud gondolkodni és csak nagyon-nagyon apró lépésekben tudod neki megmondani, hogy mi történjen. Nem atomfizika a programozás, tanítható, vannak már nagyon egyszerű és közérthető programozási nyelvek, de ha valaki erre nem érez kedvet, tehetséget, érdeklődést magában, akkor ha kalapáccsal vered a fejébe sem érti meg :D Valaki meg egyszerre tud énekelni és gitározni és emellett zenét komponál és még 26 hangszeren játszik és ámult rajtam, hogy mit csinálok, hiába mondom neki, hogy ez még egyszerűbb sokkal, mint amit ő csinál és irigylem is érte, mert szeretnék olyan tehetséges lenni a zenélésben, mint ő, de ahogy ő fogalmazott saját magáról: "Nekem ezt adta a Teremtő."
Az, hogy a programozásre születni kell szerintem igencsak túlzás. A különböző készségeink kialakulásában több szerepet játszik a gyerekkor, mint a génlottó, ami azt mutatja, hogy ezek a készségek nagyonis fejleszthetők, sőt, fejlődnek maguktól is anélkül hogy közvetlenül arra fókuszálnánk. Még egy "kész" programozónak is folyamatosan fejlődik a logikai, rendszerszemléleti, analitikai képessége, és ez sokszor fel sem tűnik, amíg össze nem hasonlítják magukat a néhány évvel korábbi énükkel. Nekem pl fogalmam sincs mikor állt össze a fejemben a rekurzió esszenciája, azt tudom, hogy ez általános-, és középiskolában még gondot okozott, aztán meg nem.
A kor szintén egy érdekes kérdés, van-e esélye annak, aki idősebben vág bele. Tény, hogy ahogy idősödik az ember, úgy válik egyre kevésbé befogadóvá az agya az újfajta ismeretek felé, de ezt sem érdemes túlfújni. Egy 30, de akár 40 éves ember még simán meg tud tanulni programozni, maximum picit lassabb léptékben fog haladni (de újfent, eza emglévő képességeitől is függ). Ami inkább a probléma okozója, hogy ha ezzel munkába is akar állni. A programozói piac telítve van lelkes, tanulékony huszonévesekkel, ők a preferált "junior réteg". Ebben a rendszerben egy idősebb, de képességeit tekintve egy szinten álló személy nagyon nehezen tud elhelyezkedni. De pusztán a programozás tanulása, a kapcsolódó készségek fejlesztése teljes mértékben lehetséges egy idősebb ember számára is.
"Mennyi idő az amire körülbelül azt mondjátok, hogy már "ezt és azt" (itt most nyílván nem egy helloWorld szintű programra gondolok, de nem is egy multinacionális cégnek tervzett programra) már illene megírnia valakinek "ennyi" idő után"
Soha. Én legalábbis soha. Emberek más ütemben fejlődnek, más érdekeltségekkel rendelkeznek, másmilyen irányokba fejlődnek tovább. Van akinek nem célja a szakma csúcsát elérni, hanem egy középszintű ismerettel elhajózgat inkább. Erre a tudásra, erre a szintű munkavégzésre is szükség van, és teljesen érthető, ha valaki nem akarja magát a csúcsig hajszolni (talán mert nem látja magában, hogy képes rá, vagy csak nem akarja magát a folytonos stressznek kitenni, akármi). Én inkább azt mondom, hogy egy bizoynos szerepkörben, bizonyos pozícióban levő embernek "illene" ezzel meg azzal tisztában lennie. Kellemetlen pl amikor egy több évtizedes tapasztalattal rendelkező vezető fejlesztő rondább kódot ír, mint az 1 éve dolgozó Junior. Vagy amikor a Senior fejlesztő, x+1 évvel az öve alatt nem tud egy rekurzív függvényt megírni. Az én olvasatomban a szakmai tudással kapcsolatos elvárás nem az évek, hanem a betöltött szerepkör függvényében határozható meg. Ha valaki 15 éve Junior, akkor nem fogom tőle elvárni azt a tudást, amit egy hasonló évjáratú architect-től fogok.
Egyszer hasonló irányba terelődött a beszélgetés egy profi (régóta vezető beosztású) fejlesztővel, aki arról akart meggyőzni, hogy ehhez egy kicsit zseninek kell lenni, gyerekkortól ezzel foglalkozni, stb. Én meg magamban somolyogva arra gondoltam, hogy már hányszor adtam neki pofonegyszerű megoldási tippeket olyan problémákra, amikre ő helyből rávágta, hogy azt nem lehet hatékonyan megcsinálni. Mellesleg konkrétan tudom, hogy ő felnőtt korban kezdte és valami gyorstalpaló tanfolyam van mögötte. Egyszer ki volt akadva, hogy egy feladatot bizony csak sok munkával lehet megcsinálni, ez értelmetlen, a kérés is hibás, stb., pedig csak két konstans függvény paramétert kellett hozzá felcserélni. (A válasza: "Na igen, esetleg így..." :))
Ezt csak azért írom, hogy a kérdezőnek ne szegje kedvét, ha valaki arról akarja meggyőzni, hogy ez valami X-Men közösség, és genetikailag bele kell születni, más ne is próbálkozzon. Persze nem árt egy fajta logikai, problémamegoldási látásmód, de túlmisztifikálni sem kell.
#1: Te nagyon értelmes "srác" lehetsz, le a kalappal. A többiek tudják, hogy ez mekkora szó, mert sajnos nem sűrűn teszek ilyen vagy hasonló kijelentéseket.
Az emlegetett dróthálós kockádban látszanak a nem látható élek is?
Ha textúrázni is akarod minden library nélkül, akkor első körben próbálj meg elforgatni egy képet (BMP), első nekirugaszkodásra csak a Z tengely körül, majd próbáld meg ZOOM-oltatni.
A 6502 assembly-ben milyen segédszoftvereket használsz vagy csak puritán egy emulátorban?
Ügyes, bárcsak több ilyen ember lenne!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!