Itt most arra a szituációra gondolok, hogy elkezdtél tanulni egy programozási nyelvet, környezetet, és valamit nem sikerül megoldani: a te logikád szerint helyes, de a gép mégsem azt csinálja, amit szeretnél tőle. Vagy kiír valami hibaüzenetet, amit esetleg nem is értesz.

Jobb esetben megkérdezed a mentorodat, de mentor sem mindig áll rendelkezésre (a való életben sem), szóval nem árt, ha van valami a tarsolyodban önállóan megoldandó helyzetekre is.

  1. Google. Írd be a keresőbe, hogy éppen mit szeretnél megtenni vagy mi a hibaüzenet, felsorolva a környezeteket is, pl. “java array arrayindexoutofboundsexception” vagy “reactjs touch drag and drop” esetleg “spring data jpa dao” vagy ilyesmi. Saját tapasztalat, hogy mostanában 2-3 szó is elmegy a környezet megadására, viszont fontos, hiszen nélküle esetleg egy másik környezet megoldását találod meg.
    (Ide tartozik, hogy ha egyszerű kérdést teszel fel, akkor LMGTFY választ kapsz, ami a “Let me Google that for you” rövidítése. Van rá weboldal is: LMGTFY.

  2. Ha már működik a program, és a hiba forrásának helyét keresed:

    1. Tesztkiírásokat tenni a programba, amikor kiírsz valamilyen információt a programról (pl. egy változó értékét) a konzolra (képernyő vagy böngésző console-ja). Az előnye, hogy minden környezetben használható, és gyorsan előállnak az információk, viszont azok köre szűkebb.
    2. Lépésenkénti futtatás. A legtöbb programozási környezet támogatja azt, hogy a programodat lépésről lépésre, soronként hajtsd végre, és minden sor után megállj, megnézni a változók, kifejezések értékét. Az információk köre széles, de a lépésenkénti haladás miatt nem túl gyors.
    3. Oszd meg és uralkodj!. Ez már egy haladó technika, a mérnöki problémamegoldás (egyik) kvintesszenciája. A lényegét hadd mutassam be mondjuk egy házimozi-rendszeren: Tegyük fel, hogy van egy lejátszónk, erősítőnk, hangfalunk, valamint kábelek a lejátszó és erősítő, illetve az erősítő és a hangfal között, és azt tapasztaljuk, hogy bár kép van, hang nincs. Hol lehet a hiba? Valójában bárhol: lehet, hogy a film, amit lejátszanánk, nem tartalmaz hangsávot, a kábelek valamelyike megsérült, az erősítőben romlott el valami, esetleg a hangfal ment tönkre… vagy valamelyik eszköz nincs bekapcsolva.

      Elsőként nézzük meg, hogy az erősítőnél (vagy inkább az erősítő előtti kábel végénél) van-e hang, ami kb. a rendszer felénél van. Ha van hang, akkor tudjuk, hogy a vizsgált pontig minden rendben, a hiba utána, azaz az erősítő, erősítő utáni kábel vagy a hangszóróban keresendő. Ha nincs hang ott sem, akkor az első felében valami gond biztos van (ezzel nem zártuk ki, hogy az erősítő utáni részben gond van-e).
      Menjünk tovább azzal az esettel, hogy az erősítőnél nincs hang. A következő lépés, hogy ezt a részt is megfelezzük: nézzük meg, hogy a lejátszó ad-e ki hangot (mondjuk egy fejhallgatóval). Ha itt sincs, akkor tovább kell haladni visszafelé, ha van, akkor a lejátszó utáni kábelben (vagy az erősítőben – attól függ, hol néztük) keresendő a gond.
      A kérdéses komponenseket mindig megpróbáljuk elfelezni és megnézni, hogy középen mi a helyzet.
  3. Ha nem működik a program, nem tudod összerakni, mi a helyzet:

    1. Elmész tusolni, alszol rá egyet. Ilyenkor a tudatos elme kikapcsol, és hagyja, hogy a tudatalatti elme megoldja a dolgokat. Ilyenkor jönnek álmunkban a felismerések (Friedrich August Kekulé is így járt a benzol molekula szerkezete kapcsán) vagy esetlen fürdés közben tör ránk a felismerés (az Arkhimédésznek tulajdonított – ám vélhetően hamis – sztori szerint a fürdőben jött rá, hogy II. Hierón által rendelt koszorúban hogy lehet megmérni az arany mennyiségét). Egyszóval kapcsoljunk ki!
    2. Rubber duck debugging.

      Fogj egy gumikacsát. Tedd fel a gépedre, és mintha élő ember lenne, mondd el neki a problémádat. Mire végzel, lehet, hogy megvan a megoldás is. Hogy miért? Az ember hajlamos ugyanazokat a gondolati köröket befutni újra és újra. Ha viszont valaki másnak kell elmondani, akkor az elejéről kezdjük és lépésről lépésre építjük fel, ami közben a gondolkodásunk is új utakra téved. Működik házastárssal, baráttal is!

Tanulj nálunk Java programozást!
Ha nem tudsz még programozni…
Ha tudsz programozni, de más nyelven…
Ha elavult már a tudásod…
akkor nézd meg gyors és rugalmas módszerünket: StudiCore Online Java.

Ha most kezdesz programozást tanulni, akkor nagy fejtörést okozhat az a kérdés, hogy melyik programozási nyelvet is válaszd a tanuláshoz. Van ugyanis sokféle: Java, C++, Python, Javascript, C#, PHP – hogy csak néhányat említsek a rendelkezésre 100-nál is több nyelvből. Ha már tanulsz valamit, akkor olyat szeretnél tanulni, ami megéri.
Előfordulhat, hogy igyekszel egy programozótól segítséget kérni, és válaszol is, legjobb tudása szerint, amiből lehet, hogy csak annyit értesz, hogy melyik nyelvet ajánlja, de azt, hogy miért, az nem biztos, hogy 100%-ig átjön.
Mondok egy analógiát, ami elég jól hasonlít ehhez a helyzethez:
Read more

Boldog új évet kívánok!

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 – ha tettél ilyet – 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.
Read more

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.
Read more

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.

A másik pedig,
Read more