Pasztuhov Dániel

Programozásoktatás

Programozásoktatás

Újévi fogadalmam: megtanulok programozni

Hogyan lesz a vállalásod sikeres, és min bukhatsz el?

2018. január 09. - Pasztuhov Dániel

Sok embernek az új év egyben az újévi fogadalmak korszaka: most majd lefogynak, leszoknak a dohányzásról, több időt töltenek a családdal - vagy éppen megtanulnak programozni.

Ha ilyenkor mész be egy edzőterembe, akkor nagy zsúfoltságot találsz, ha februárban-márciusban, akkor már jóval kevesebb az ember.

Ebben a bejegyzésben összeszedtem néhány szempontot, amivel az újévi fogadalmad - pl. megtanulsz programozni - sikeresebb lehet. És ha esetleg nem januárban olvasod ezt a cikket, tudd, hogy bármikor dönthetsz úgy, hogy megváltoztatod az életed és új dologba kezdesz, nem kell vele megvárni a következő év elejét.

Nézzük előbb, hogy mit lehet az újévi fogadalomszerű vállalások kapcsán elrontani.

Mit lehet elrontani?

  1. A fogadalmad túl általános, azaz pl. "Megtanulok programozni.", akkor azt célszerű pontosítani. A programozás ugyanis olyan, mint egy művészeti ág vagy egy harcművészet: nincs olyan, hogy befejeztem, kész van, megtanultam. Folyamatos finomítás, folyamatos fejlődés, folyamatos gyakorlás. Egy sok danos fekete öves karatemester is folyamatosan gyakorolja a mozdulatokat, a világhírű zongoristák is naponta több órát játszanak a hangszerükön... pedig rájuk aztán tényleg azt lehet mondani, hogy megtanultak valamit. A programozás is ilyen: egy életet eltölthetsz azzal, hogy folyamatosan fejlődsz benne.
    Javaslom, hogy inkább kézzel foghatóbb célt tűzz ki magad elé, mondjuk, hogy elvégzem ezt vagy azt a tanfolyamot.
  2. Egy másik veszélyes fogadalom az, ami aktivitásra, időmennyiségre vonatkozik, pl. a "Mostantól napi 5 órát programozással töltök."
    Több veszélyt is rejt:
    1. egyrészt, ha a tavalyi állapotodat nézzük, akkor is elment valahogy a nap 24 órája, ráadásul a legnagyobb része valamilyen szokásos cselekvéssel: elmenni a gyerekekért az oviba, suliba, Facebookozni, dolgozni... kinek mivel. Ha ebbe bele akarsz szorítani 5 óra programozást, akkor 5 órányi tevékenységet ki kell venni. Vajon mit tudsz elhagyni és az mekkora erőfeszítés?
    2. Másrészt kezdő futók szoktak ehhez hasonló fogadalmakat tenni: "Minden nap futok 10 kilométert." Futásban a pihenés is része a felkészülésnek, különben könnyen túlfárasztod magad (túledzettség állapota), így ha teljesen nulláról kezded el, akkor jobb, ha inkább heti 3 alkalommal indulsz, aztán ha úgy érzed, hogy megy, akkor lehet többet foglalkozni vele. Célszerű magaddal szemben reális elvárásokat támasztani.
      Ha már itt tartunk, a programozás esetében inkább úgy szervezd a tanulást, hogy egyszerre több időt szánj rá, minthogy sokszor keveset.
    3. Harmadrészt egy olyan vállalásba, ami arról szól, hogy minden nap csinálsz valamit, könnyű "belehibázni", azaz ha kimarad egy nap, akkor azt kudarcként élheted meg, míg a sikerhez csakis a 100%-os teljesítmény vezet. Egy nehéz cél esetén ez megrendítő tud lenni, és sok ember az első kihagyott nap (szabadság napjai, Karácsony, a gyerek beteg lett,...) után abbahagyja az egészet, hogy "ááá, ez nekem nem megy." - pedig csak az önmagukkal szemben támasztott elvárások voltak irreálisak.
    4. Negyedrészt az, hogy "5 órát programozok naponta" az egy részcél ahhoz, hogy elérj valamit, ami nagyobb, lényegesebb és fontos: mondjuk az, hogy programozó akarsz lenni és egy cégnél akarsz dolgozni. Ha a részcélhoz ragaszkodsz, azaz a napi 5 óra programozáshoz, akkor nem engeded meg magadnak, hogy olyan dolgokat is megtegyél, ami a részcélba nem fér bele, de a valós, mögöttes cél szempontjából fontos: pl. hogy egy napot azzal tölts, hogy utánanézz a lehetőségeknek, vagy hogy egy-két napot arra fordíts, hogy a CV-det rendbetedd, vagy egyáltalán utánajárj, milyen a jó CV. Fontos kérdés, hogy a vállalásod oda vezet-e el, ahova el akarsz jutni?
    5. Ötödrészt nincs benne határidő: meddig programozol napi 5 órát? Nyárig? Karácsonyig? Egész életedben? - ez utóbbi meglehetősen hosszú idő. :-)
    Én azt javaslom, hogy tűzz ki valamilyen kézzel fogható, mérhető célt, és kérdezd meg minden nap, hogy vajon ma mi lenne a legjobb, amit tehetnék, hogy elérjem a célomat. A konkrét és mérhető célokról később.
  3. Lehet, hogy az ember szétaprózza a figyelmét: egyszerre akar lefogyni, leszokni a dohányzásról, produktívabb munkaerő lenni, programozóvá válni, és még több időt is tölteni a családdal. Megértem a szándékot - az ember vágyja mindezen dolgokat, és szeretné, hogy mindezek megvalósuljanak minél hamarabb, az újév pedig jó alkalom arra, hogy elképzeljünk egy szebb jövőt. A megvalósítás már sokkal kevésbé fennkölt, és általában kudarcba fullad: egy-két hétig még tartható, majd ezt követően a legtöbb, magát túlvállaló ember visszatér a régi kerékvágásba. Jobb lett volna fókuszálni. Ha az ember fókuszál, azaz mondjuk minden szokásának átalakítására egy-egy külön hónapot szentel, amikor csak erre koncentrál (ahogyan Leo Babauta: A kevesebb ereje c. könyvében is írja), akkor egy év alatt 12 szokást is meg lehet változtatni, míg ha mindet egyszerre akarja, akkor leggyakrabban egyet sem fog.
  4. Nem vállal érte felelősséget. Nagyon sok ember úgy működik, hogy a külső kényszerítő erő jobban működik, mint a belső elhatározás. Használd ki ezt a tulajdonságot! Ha elhatároztál valamit, mondd el olyanoknak, akik előtt "égő" lenne meggondolnod magad... vagy oszd meg a Facebook-on. Fizesd be a teljes tanfolyamot, hiszen akkor talán kevésbé hagyod elúszni majd a pénzed.
  5. Más emberektől függő célokat találsz ki. A sportpélda sokszor érthetőbb: Az, hogy megnyered-e a Boston Maratont, az két dologtól függ: te milyen időt futsz és attól, hogy a többi futó milyen időt fut. Ezek közül csak arra van hatásod, hogy a te időd milyen lesz (és még ez sem 100%): mennyire sikeresen készültél és milyen formában vagy a verseny napján. Ha viszont az a célkitűzés, hogy 3 órán belül futod le a távot, az csak és kizárólag rajtad fog múlni.

Hogyan csináljam?

Ha egy kicsit elkezdesz olvasgatni az interneten célkitűzés témában, biztosan hamar találkozol a S.M.A.R.T. célokkal.

Mit jelent ez a rövidítés?

S és M - specifikus (specific) és mérhető (measurable), azaz konkrét vagy a célkitűzésben, ellentéte annak, hogy "megtanulok programozni" és mérhető célt tűzöl ki magad elé. Számomra a kettő kicsit összefolyik, nekem az elég specifikus, amit tudok mérni is, eldönteni egy adott időpillanatban, hogy teljesült-e vagy sem.

A - elérhető (achievable) - bár mérhető az, hogy 100 méter magasra ugrani, de nem igazán elérhető segédeszközök nélkül

R - releváns (relevant) - röviden úgy fogalmaznám, hogy magadénak érzed. Ha nem te találtad is ki, olyan mértékig egyet értesz vele, mintha te lettél volna az értelmi szerző

T - időben korlátozott (time-boxed) - van olyan határideje, ami motivál arra, hogy most energiát tegyél bele, azaz ami segít a halogatás leküzdésében... amitől egy kicsit felmegy a pulzusod.

Ilyen például: "2018. július 10-ig befejezem a ... online tanfolyamot."

  • Specifikus és mérhető: egyértelműen eldönthető, hogy hol jársz a képzésben (mérhető) és egyértelműen eldönthető, hogy teljesítetted-e vagy sem (elfogadták-e a záró feladatodat vagy sem).
  • Elérhető, hiszen ilyen tanfolyamokat már sokan végigcsináltak.
  • Releváns, hiszen ha nem érdekelne a programozástanulás, ezt a cikket sem olvastad volna el.
  • Időben korlátozott: van határideje, bár ez esetben megfogalmaznék részcélokat is, mondjuk kéthetieket, hogy mikorra melyik fejezetig szeretnél eljutni.

Segédeszközök

Hadd említsek néhány dolgot, ami még segítségül szolgál a folyamatban.

1. Írd le!

Két iskola van ezzel kapcsolatosan:

Az egyik azt tanácsolja, hogy írd le a céljaidat minden nap, és ragaszd ki magad elé a falra, hogy lásd, és így tudj afelé haladni.

A másik azt, hogy írd le, tedd be a fiókba és felejtsd el. Hogy neked melyik működik, próbáld ki!

2. Jutalom

Jutalmazd meg magad, ha részcélokat érsz el. Álljon arányba a jutalom a teljesítménnyel, azaz az, hogy beléptél az oktatási rendszerbe, ne legyen azzal jutalmazva, hogy elmész egy háromhetes thaiföldi utazásra, mert nem áll arányban, és ezt te is jól tudod. De mondjuk 2 program megírása után 10 perc séta pl. jó lehet.

3. Visszacsatolás önmagadnak

Kitűzted a célt és elindultál a megvalósítás felé. Az a fontos, hogy időről időre megnézd, hogy mit tettél az ügy érdekében, és feltedd magadnak a kérdést, hogy ez így mennyire jó és hogyan lehetne ennél is jobban csinálni, mi az, ami működik neked és mi az, ami nem? Az ilyesfajta önreflexiónak a hatékonyabb folyamaton kívül számos hozadéka lehet: rájöhetsz, hogy melyek azok az időszakok, amikor szellemileg frissebb vagy, mint máskor (az én legaktívabb óráim reggel és este vannak), rájöhetsz, hogy mi az, ami nálad ezt befolyásolja (kávé, mozgás, étkezés ideje és tartalma). Neked a sokszor rövid idő működik tanuláskor vagy a ritkább, de hosszabb?

Sok sikert a célod eléréséhez!

Pasztuhov Dániel
StudiCore Kft.

Meg lehet-e tanulni könyvből programozni?

A kedvenc viszontkérdésem erre az, hogy "Meg lehet-e tanulni könyvből karatézni?" vagy "Hány könyvet kell elolvasnod ahhoz, hogy fekete öves karate mester legyél?"

Hadd fejtsem ki egy kicsit jobban.

Az elméletet el lehet olvasni. Meglátásom szerint, amíg az ember birtokolja az olvasás "szuperképességét", addig ez a leghatékonyabb információszerzési forma. Más üzemmódba állítja az agyat, mint a videónézés. Ráadásul míg egy írott szöveg gyorsan átfutható, ha az ember keres valamit, a videó esetében ez jelenleg nem megoldott még. (Velem pl. sokszor fordult elő, hogy míg egy videóban az indiai bemutatkozott, annyi idő alatt egy írott forrásban már meg is találtam, amire kíváncsi voltam). Ezért a mi oktatási rendszerünk is az olvasásra épül. (És tegyük hozzá, hogy egy cégnél sem fognak a feladatból videót forgatni, az bizony - jobb esetben - írva lesz. Szóval nem árt, ha az ember hozzászokik ahhoz, hogy írott szöveggel dolgozzon).

Amiben a könyvek szintén jók, hogy egy adott területet átfogóan képesek bemutatni. Bennünk van, hogy egy könyvet végig kell olvasni. Ha már végigolvassuk, akkor minden fontos dologról tudomást szerzünk.

Az elmélet nem elég. Ahogy a karate esetében is, úgy a programozásnál is fontos a gyakorlás. A gyakorlást nem helyettesíti semmilyen könyv és semmilyen videó. Százezerszer találkoztam eddigi pályafutásom során azzal a helyzettel, amikor a tanuló annyit mondott, hogy "aha, értem.", viszont látszott rajta, hogy még csak neki sem tud állni egy program megírásának az új eszközzel (amikor alkalmam volt rá, hogy megbizonyosodjak erről, igazam is volt). Az "aha, értem" és a "meg tudom csinálni" között egy Mariana-árok helyezkedik el. Gyakorlásra azért van szükség, hogy az elméleti ismeretek gyakorlatban használható készségekké formálódjanak.

Persze nem mindegy, hogy mit és mennyit gyakorlunk. Ha valaki programozástudás hiányában első projektnek azt tűzi ki célul, hogy márpedig ő mesterséges intelligenciát fog fejleszteni, akkor abba lehet, hogy beletörik a bicskája. (A túl magasra tett léc veszélye az, hogy abból a pontból túl nehéz átugrani, ekkor jön az önleértékelés, az "én hülye vagyok a programozáshoz"... Pedig csak a falat volt túl nagy és megakadt a torkán). A megfelelő méretű feladatok választása esszenciális abban, hogy az ember megtanuljon rendesen programozni. Persze honnan is tudná, aki nem programozott még életében, hogy a mesterséges intelligencia fejlesztése nem éppen gyerekjáték, ha még nincs semmilyen ismerete a területen?

Ha a tanuló megcsinálja a könyv fejezetei végén a feladatokat, akkor már eggyel közelebb jár a programozási tudás megszerzéséhez.

Amit viszont nem várhatunk el egy könyvtől:

  • Nem fogja felhívni a figyelmet arra, hogy már elavult, és van újabb kiadása
  • Nem fogja felhívni a figyelmet arra, hogy azt a feladatot oldotta-e meg az ember, ami szövegszerűen benne volt
  • Nem fogja felhívni a figyelmet arra, hogy a program valójában hibás, de arra az egy tesztesetre, amire valaki kipróbálja, pont működik
  • Nem fogja felhívni a figyelmet arra, hogy a megoldást elegánsabban is el lehet készíteni
  • Nem fogja az ember lelkét ápolni és támogatni, motiválni, ha egy hibába beleakad, továbbsegítve a megoldás felé
  • És főleg nem lehet tőle kérdezni (de legalább nem is szégyeníti meg az embert, ha nem helyénvalót kérdez, mint ami kis hazánkban fórumokban és a Facebookon nagyon bevett viselkedés)
  • És nem nézi át a programot, hogy megkeresse benne az esetleges hibákat

Összességében azt gondolom, hogy meg lehet tanulni könyvből is jól programozni, ha valaki nagyon fegyelmezett, rengeteg ideje van, óriási szerencsével vagy intelligenciával folyamatosan a jó megoldásokat választja és/vagy mindeközben jól bírja a kritikát és a kudarcokat.

Ha kényelmesebb, biztonságosabb útra vágysz, válassz inkább egy tanfolyamot vagy magántanárt.

Miért lehet szeretni a programozást?

A minap egyik ismerősömmel beszélgettünk, főként a vállalkozás volt a téma, és - mivel mi ezzel foglalkozunk - szóba került a programozás is.

Az eszmecsere egy pontján az a megállapítás hagyta el a száját, hogy a programozás számára mindig is egy "száraz" téma volt, semmi érdekeset nem lát benne, ő biztos nem tudná jól csinálni, "hülye lenne hozzá".

A reakcióiból ítélve valószínűleg nagyon bután nézhettem rá.

Az egyik az, hogy szerintem egy értelmes ember meg tud tanulni programozni (ezért is állítottunk össze egy olyan tesztet, amiben erről meg lehet bizonyosodni), de erről már többször írtam különféle fórumokon.

A másik pedig, hogy attól, hogy valakinek van hozzá érzéke, még nem biztos, hogy fogja érdekelni. Ez viszont egy róka fogta csuka esete, mert amíg nem kezdi el, nem ássa bele magát az ember, addig nem igazán érzi meg az ízét. A bután nézésem oka az volt, hogy számomra a programozás szórakozás. Nem egyszer fordult már elő velem, hogy hétvégén vagy este magamra csuktam a dolgozószoba ajtaját, és programoztam. Nem azért, mert határidő volt, hanem mert alkotni akartam, elmélyülni valamiben.

Nézzünk néhány analóg tevékenységet, amikkel kapcsolatban jobban benne van a köztudatban, hogy mi bennük a szórakozás: a barkácsolást (kutyaházépítés), a sütés-főzést és a labdajátékokat. Amíg nem kóstoltunk bele a tevékenységekbe, addig a barkácsolás monoton és fárasztó fűrészelés és szögelés, a sütés-főzés sok óra állva, keveréssel eltöltött idő, a labdajáték pedig egy pattogó golyó kergetése marad egy négyszögletes pályán.
Mi ezekben az élvezet? - hangozhat a költői kérdés.

1. az alkotás öröme. Ha az elkészült kutyaházat nézzük, vagy a kisült finom süteményt, egyértelmű az eredmény.

A programozás esetében kevésbé, hiszen a tevékenység is és az eredmény is egy zárt, virtuális világ terméke: egy program, ami valamely informatikai eszközön fut. Hogy közelebb hozzam ezt a virtuális világot, nemrég készítettem egy videót egyik tanfolyamunk eredményeként készíthető programról.

Az alkotás örömét a kihívás adja meg. Ahogy a többi tevékenység esetén is, a programozás esetén sem "magától" készül el a program, ahogy a kutyaházat sem készíti el gombnyomásra egy szerkezet (vagy ha igen, oda az alkotás öröme). Úgy fogalmazom meg a dolgot, hogy a barkácsolás, a süteménysütés és a labdajátékok is mind-mind különféle szabályrendszerek keretei között való eredményes tevékenykedés: a barkácsolás esetén kell, hogy statikailag megálljon a szerkezet, a sütés-főzés az ízek és a kémiai folyamatok rendszerében működik, a labdajátékok esetén meg maga a szabálykönyv mutatja az utat.

2. a tanulás, felfedezés öröme. A programozás jelenleg ott tart, hogy lehetetlen minden ágát megtanulnia egy-egy embernek. És ha sikerülne is, mire végez, az elsőnek megtanult dolgokban biztosan lemaradt, annyi újdonság jelent meg azóta.

A barkácsolók hasonló élményt élhetnek át a szerszámkatalógust lapozgatva, a főzni szeretők a receptoldalakat, receptújságokat lapozgatva: "Nini, egy újdonság! Vajon ha ezt használom, az mennyiben vezet más (gyorsabb, elegánsabb) eredményre?" - a programozás esetében gyakorlatilag végtelen a felfedezésre váró lehetőségek száma.

3. szellemi kihívás. Egy kutyaháznál is ki kell találni, hogy hogy nem esik le a teteje, hogy lesznek az oldalai összeállítva és így tovább. Bár azt gondolom, hogy egy kezdő barkácsoló még átél némi szellemi kihívást, mire megtervezi, hogy hogy nézzen ki és hogy álljon össze a házikó, de a második-harmadik már nem fog túl nagy fejtörést okozni - megy rutinból.

A programozásban folyamatosak a megoldásra váró agytornák. Egyébként sokszor a léptékek is mások: ha építészeti szemléltetéssel szeretnék élni, van hogy a programozó egy város építésén dolgozik, bár igaz, nem egyedül.

Mindenesetre a programozásban folyamatosan lehet találni megoldandó logikai feladványokat. Ha elkezdesz velünk programozást tanulni, akkor bizonyosan többször lesz olyan eset, amikor gondolkodsz egy problémán, és elsőre nem világos a megoldása. Aztán valamikor (fürdés közben, félálomban...) hirtelen megjön az isteni szikra. Utólag teljesen logikus, és minden kristálytiszta. Az ehhez kapcsolódó örömérzés leírhatatlan.

4. egzakt terület. A számítógépnek nincs "rossz napja", nem sértődik meg, és ha csúnyán beszélsz vele, akkor is ugyanúgy végzi a dolgát (vagy ugyanúgy nem), mint addig. Ha valami nem működik, annak van egy jól körülhatárolható oka, amire kellő tudás és megfelelően logikus gondolkodás esetén rá lehet jönni.

+1. És akkor ide a végére még egy gondolat.
Manapság sok helyen lehet hallani, hogy programozóként sokat lehet keresni.
Ez így van.
Ha viszont nem élvezed, akkor a sok pénz csak részben kárpótol azért, hogy olyasmivel töltöd az életedet, amit nem igazán szeretsz. (És akkor arról még nem is beszéltünk, hogy mennyire akarsz majd fejlődni egy utált területen).
Lehet, hogy a mostani munkádban is azt érzed, hogy már teljesítettél minden kihívást, már rutinból jársz be minden reggel, és valahol mélyen érzed, hogy nem vagy elégedett az egésszel. Hogy megérett a helyzet a váltásra.

Kóstolj bele a programozásba, ízleld meg, és ha próbálkozás közben tetszik, akkor biztos vagyok benne, hogy a további ízek is kedvedre valóak lesznek.

Programozókkal kapcsolatos sztereotípiák

Programozók. A szó hallatán a legtöbben egy szemüveges, szakállas pasira gondolnak, aki kockás ingben ül a gép előtt egész nap és éjjel, és kávét vedel. Nem lenne igazságos azt mondani, hogy nincs ennek némi alapja, de ettől azért jóval árnyaltabb a kép.

Ilyen lenne egy tipikus programozó?
Ilyen lenne egy tipikus programozó?


A sztereotípiák nagyon be tudják szűkíteni az ember látásmódját, így jobb egy kicsit mögéjük nézni, ítélkezés nélkül.

(Szendrei Veronika és Pasztuhov Dániel, a StudiCore Kft. tulajdonosainak tollából).

Sztereotípia 1.
A programozók egész nap a gép előtt ülnek.
Nos ezt nem tagadjuk. Mivel a munkavégzés alapvető eszköze a számítógép, így nagyrészt a gép előtt ülve telik az idő. De gondoljunk csak bele, hogy például egy újságíró, építész vagy pénzügyi szakember mit is csinál. A gép előtt ül. Vagy meetingen ül. Ez nincs másképp a programozóknál sem, szóval a fenti állítás a 21. század nagyon sok szakmájára igaz lehet. (SzV)

Sztereotípia 2.
A programozók megjavítják a Windowst, ha elromlik.
Az egyik szarkasztikus, programozói fórumokban, csoportokban időről időre megjelenő vicc témája ez. Nos, ahogyan az építész sem feltétlenül ért a fűtésszereléshez, a genetikus sem végez agyműtétet, és a cukrász sem feltétlenül szakács, úgy a programozó sem (feltétlenül) tudja, mi a baja a Windowsodnak (pláne, ha a hibát úgy írja le valaki, hogy “valamit kiír”… mintha az orvosnak azt mondaná, hogy “Doktor úr! Valami fáj.”)
A Windows-javítás egy másik szakma.
Valójában egész szakmacsoport foglalkozik azzal, hogy az informatikai rendszerek üzemeljenek: van, aki a hálózatokkal foglalkozik, van, aki a szervereket tartja karban, van, aki az asztali számítógépeket és laptopokat, van, aki az adatbázisok megfelelő működéséért felelős. Egy emberen belül persze keveredhet több szakma tudása, de ritka az, hogy ő egyben szoftverfejlesztő/programozó is.
A szoftvermérnök/szoftverfejlesztő/programozó az az ember, ami munkájának gyümölcseként elkészül az új vagy továbbfejlesztett program. Vannak, akik megkülönböztetik az egyes kifejezéseket, de ennyire belemenni semmiképpen nem kell nekünk.
Ha már itt tartunk: ami a szoftverfejlesztés kapcsán elhatárolódik az előbbi fogalmaktól, az a tesztelő, aki ellenőrzi a programokat, hibákat keres benne. A trend az, hogy a program használatával való (manuális) tesztelés egyre ritkább, és az olyan programok fejlesztése, ami teszteli a készülőt, viszont egyre gyakoribb, szóval a tesztelő lassan-lassan besorolható lesz a fejlesztői szakmák alá. Szóval manapság a tesztelő is jó, ha megtanul rendesen programozni. (PD)

Sztereotípia 3.
A programozók antiszociálisak, sosem beszélnek emberekkel.
Ha megfordítjuk a dolgok, akkor az is lehet, hogy olyan emberek mennek programozónak, akiknek nem túl nagy a szociális igényük. Programozók is dolgoznak csapatban, kell kommunikálniuk ügyfelekkel, egymással, és nem árt, ha ezt a megfelelő módon teszik. Mindezek mellett azonban vitathatatlan, hogy a programozóknak például sajátos a humoruk, amit nem mindenki ért némi háttértudás nélkül.
A 127.0.0.1 annak a gépnek a (virtuális) IP-címe, aminél az ember ül
De a fentiek nem jelentik feltétlenül azt, hogy antiszociálisak lennének, mint ahogyan pl. a könyvelők sem csak cingár, szemüveges 50-es nők lehetnek…
https://www.youtube.com/watch?v=q-7l8cnpI4k (SzV)

Sztereotípia 4.
A programozók ápolatlan külsejű, zseniális, fiatal férfiak.
Kezdjük visszafelé: nem, nem csak fiatal férfiak – ha beírod a google-be hogy "computer programmers" elég sok hölgy képe fog megjelenni, pl. Ada Lovelace, Grace Hopper, Jean Bartik, Betty Holberton, stb.
Ha nem is zsenialitás, de gondolkodás kell hozzá. Az alapvető logikai készségek sokkal több emberben ott vannak, mint gondolnánk. Érdemes kipróbálni!
Az ápolatlan viszont csak annyira törvényszerű, mint például a közgazdászoknál, azaz egyáltalán nem.
Sara Haider, a Google-nél dolgozott sokáig, részt vett a Vine app fejlesztésében, ma a Twitternél dolgozik.
Sara Haider, a Google-nél dolgozott sokáig, részt vett a Vine app fejlesztésében, ma a Twitternél dolgozik.

További példák:
http://clickmesoft.blogspot.hu/2015/02/10-most-good-looking-and-famous.html
https://www.thecrazyprogrammer.com/2014/02/the-top-5-sexiest-female-programmers-in-the-world.html
http://www.businessinsider.com/top-15-sexiest-programmers-2012-2012-5?op=1/#w-check-out-last-years-sexpots-16

(SzV)

Sztereotípia 5.
Csak akkor kell programozni tudni, ha programozó akarsz lenni.
A 21. században alapvető készséggé vált a számítógép-használat, a gyerekek már digitális bennszülöttek, akik tablettel a kezükben nőnek fel. Ömlik az információ és a digitális tartalom, ami mögé – természetes kíváncsiságtól vezérelve – egyre többen szeretnének belesni. A programozás a konkrét használhatóságán túl egy olyan gondolkodásmódot ad, ami segít navigálni a világban. Svédország, Nagy-Britannia, Finnország már általános iskolában oktat programozást, nem véletlenül.
(A programozás számos olyan agyi területet is fejleszt és aktívan tart, ami akár az Alzheimer vagy a demencia megelőzésében is segíthet.)

Kicsit konkrétabban nézve a dolgokat, nagyon nagy szükség van olyan emberekre, akik például az ügyfelekkel tartják a kapcsolatot és tolmácsolják azt a fejlesztők felé, vagy épp fordítva. Egy ilyen egyeztetés borzalmasan nyakatekert tud lenni, ha az, aki az ügyféllel tárgyal nem ért a programozáshoz, és olyan dolgokat vállal el, amit (adott keretek között) nem lehet kivitelezni. Ez olyan, mintha a felszolgáló nem tudná, hogy mi van étlapon és osztriga rendelést adna a konyhára egy magyaros étteremben…

Digitális bevándorlókról bővebben: https://www.marcprensky.com/writing/Prensky%20-%20Digital%20Natives,%20Digital%20Immigrants%20-%20Part1.pdf

Gyerekek és a programozás, bővebben:
https://www.ted.com/talks/thomas_suarez_a_12_year_old_app_developer
https://www.ted.com/talks/mitch_resnick_let_s_teach_kids_to_code
https://www.ted.com/talks/linda_liukas_a_delightful_way_to_teach_kids_about_computers
https://www.youtube.com/watch?v=FpMNs7H24X0

(SzV)

Sztereotípia 6.
Nagyon sok matek kell.
A programozás nem matematika. Az tény, hogy itt is számok vannak, (meg betűk is – mégsem irodalom) és, hogy szükséges a logikus gondolkodás ahhoz, hogy valaki jó programozó lehessen, de nem magas szintű matematikáról beszélünk, inkább csak alapokról, mint pl. a számrendszerek vagy egyszerű algebra.
A már korábban is említett kutatás alapján a programnyelvek ismerete sokkal inkább hasonlít arra, mint amikor egy idegen nyelvet beszél az ember. Ugyanolyan mesterséges nyelv, mint az eszperantó, csak épp gépekkel lehet vele kommunikálni.

(SzV)

Programozás kérdések és válaszok

Az elmúlt hetekben részese lettem egy külföldi Facebook-csoport életének. A csoport nem volt moderált, így az új tagok organikusan tették fel kérdéseiket: gyakorlatilag előbb írtak, és utána olvastak. Nem tértek vissza a csoport történetéhez, inkább mindenki feltette a kérdéseit. Pár hét olvasgatás után elég jól ki lehetett tapasztalni, mik azok a kérdések, amelyeket a kezdők leggyakrabban feltettek.

Meg is válaszoltam néhányat ezek közül, íme:

1. Mi a programozás?
Talán kétszer találkoztam életemben olyannal, hogy valaki ne tudta volna, mi az a programozás, és mit oktat a programozásoktató, de előfordult. Szóval tisztázzuk: a programozás a programok készítését és nem a használatát jelenti.

2. Melyik a legjobb programozási nyelv? Melyik a jobb, x vagy y?
Nem létezik "legjobb" programozási nyelv. A programozási nyelvek valamilyen cél elérése érdekében jöttek létre. Anélkül, hogy tudnánk, mire szeretnéd használni, erre a kérdésre nem lehetséges válaszolni.

3. Mi a legjobb programozási nyelv egy kezdőnek?
A csoportban valószínűleg C és C++ fanok gyűltek össze nagy számban, ezért sokszor javasolták ezeket, mint kezdő nyelvet. Bármilyen nyelven meg lehet tanulni a programozás lényegét, de mindenkinek megvan a saját véleménye erre a kérdésre, álljon tehát itt a sajátom (v.ö. 6 legnagyobb hiba, amit programozástanulás közben elkövethetsz, 2-es pont, minden programozó és iskola tolja a saját igazát):
Az analógia nem 100%-os, de jobb nem jutott eszembe: Ha C-vel kezded a programozást, az kicsit olyan, mintha autóvezetés tanulása előtt megtanulnád, hogy kell autót szerelni. Kétségtelen, hogy jobban megérted az autó működését, és izgalmas dolgokat tanulhatsz, de – főleg, mivel a nyugati világban gyakorlatilag kézzel nem szervizelhetők az autók – nem sokat érsz vele, nem visz sokkal közelebb az autóvezetéshez. A C programozási nyelv használatához sok olyan részlettel tisztában kell lenni, ami nem szükséges a feladat megoldásához (és sok nyelvben nincs is rá szükség), de itt szükséges, hogy helyes programot tudj írni.
Ha C++-szal kezdesz, az olyan, mint ha az autóvezetés tanulását egy Forma-1-es versenyautóval kezdenéd. Szupergyors, szuperjó, de ha nem értesz hozzá, két másodperc alatt összetöröd, és ahhoz, hogy kihozd belőle a lehetőségeket, nagyon kell érteni hozzá. Ehhez kb. 2-3-szorannyi tanulási idő kell, mint pl. a Javához. (A "nagyon kell érteni hozzá" alatt nem azt értem, hogy ki tudod íratni, hogy mennyi 2+2 eredménye, hanem ha érted a többszörös öröklést, a virtuális metódus táblákat, a template-eket, az operátorfelüldefiniálás mindkét módját, a memóriakezelést (pointerek, destruktorok…) – bármit is jelentsenek ezek. :-))
Helyette amit javasolok: Java, C# vagy Python.
Én a Javát szeretem a legjobban. Több, mint 10 éve ismerem, és nagyon jónak tartom abból a szempontból, hogy a fontos koncepciókat nagyon tisztán tálalja. (Ha analógiát szeretnék keresni rá, olyan, mint ha egy beszélt nyelvben nem lennének kivételek). És a TIOBE Index szerint pillanatnyilag (2017. október) Java területen van a legtöbb képzett mérnök, kurzus és ezzel foglalkozó cég (vendor) – kb. háromszorannyi, mint a másik kettő esetében. Megtanulod, és egy háromszorakkora közösség része lehetsz, mint a C# vagy Python megtanulásával.

4. Mennyi ideig tart megtanulni programozni?
Mennyi ideig tart megtanulni gitározni? Mennyi ideig tart megtanulni egy idegen nyelvet? – ahogy az előbbi kérdéseknél is, a programozásnál is az a kérdés, hogy milyen szintre akarsz eljutni? Világhírű gitárművész lennél? – Egy élet is kevés. Tábortűz mellett el akarsz játszani egy-két számot? – Néhány hónap biztosan elég, még ha nem is vagy túlzottan tehetséges.
A programozás esetében az első néhány óra után már érdekes programokat tudsz majd összerakni, aztán ahogy haladsz előre, úgy tanulsz egyre izgalmasabb és izgalmasabb eszközöket. Egy idő után eljön az a pont, hogy egy cégnél hasznos munkát tudsz végezni. A fejlődés – jó esetben – itt nem áll le, egyre jobb és jobb leszel benne. A határ még ennél is messzebb van.

5. Tanuljak-e több programozási nyelvet egyszerre?
Ha egyik nyelven sem beszélsz, elkezdenéd-e egyszerre tanulni a spanyolt és a portugált?
Én egyet választanék.
Két programozási nyelvet ugyanúgy lehet kavarni, mint két beszélt nyelvet.

6. Milyen készségek hasznosak a programozás megtanulásához?

  • olvasni kell tudni (előbb-utóbb angolul is)
  • némi logika
  • kitartás: a problémák megoldásához és a jobb programozóvá váláshoz.
  • türelem, hogy megtaláld a problémák megoldását
  • analitikus képességek: válaszolni arra, hogy “mi az igazi probléma?”
  • internetes információforrások megfelelő használata (Google, Stackoverflow)
  • analógiák megtalálása: ahogy Mark Twain mondta: “A történelem nem ismétli magát, de rímel.” – ez a programozásra is igaz: segít, ha két eltérő helyzet közt meglátod a hasonlóságokat.

A cégünknél készítettünk egy programozási képességfelmérő tesztet, ha érdekel, itt megtalálod: programozási képességfelmérő teszt.
A harmadik és negyedik hozzáállás, tehát te döntöd el, hogy milyen vagy benne.
Az ötödiktől a végéig pedig programozástanulás közben is fejlődő tulajdonságokról van szó.

7. A HTML miért nem programozási nyelv?
A programozási nyelvek egy csomó utasítást tartalmaznak, amelyek "csinálnak valamit". A HTML pedig adatok szerkezetét írja le, nem végez matematikai számításokat, nincs benne elágazás, feltétel, ciklus, változó, függvény… Ha nem tudod, mik ezek, nem gond. Ha elkezdesz programozni tanulni, gyorsan megvilágosodik. (A mi rendszerünkben ezeket a fogalmakat a tanfolyam egynegyedéig tisztázzuk).

6 legnagyobb hiba, amit programozástanulás közben elkövethetsz

Manapság a csapból is az folyik, hogy kevés a programozó, hogy a programozók rengeteget keresnek, mégis alig találni embert. Valószínűleg a te fejedben is megfordult már, hogy programozást kéne tanulnod. Vagy azért, mert kecsegtető mindez, vagy mert unod a munkádat, keveset keresel, vagy éppen a kollégáidtól van tele a hócipőd. A terület, amelyre be kívánsz lépni egy teljesen új világ, és mint ilyen, megvannak a maga játékszabályai. Tizenévnyi programozásoktatási tapasztalatomból álljon itt egy csokorra való azokból a leggyakrabban elkövetett baklövésekből, amelyek jobb esetben idő- és pénzveszteséggel, rosszabb esetben a programozástanulási vállalkozás kudarcával járnak.

1. El sem kezded. Érthető módon programozásoktatóként ezzel az esettel áttételesen találkozom csak, olyan ismerősök formájában, akik gondolkoznak rajta, kacérkodnak vele, aztán elnapolják évekre, évtizedekre vagy életük végéig. Ez nem csak a programozástanulásban van így - az ember alapvető tulajdonsága a halogatás. Ami nem közvetlen életveszély, de hosszú távon hasznos lenne, azt hajlamosak vagyunk a végtelenségig hanyagolni: leszokni a dohányzásról, lefogyni, elkezdeni sportolni, egészségesen étkezni, elkezdeni a nyugdíjcélú megtakarítást,... és tanulni, új karriert megalapozni.

Tovább
süti beállítások módosítása