Hogyan képezd magad
Konstantinusz Kft. © 2011
Hogyan képezd magad
1 Tartalomjegyzék 1 2 3
Tartalomjegyzék .......................................................................................................................2 Bevezetés ................................................................................................................................3 Tervezés ..................................................................................................................................4 3.1 Mit is csináljunk? ...............................................................................................................4 3.2 Nyelv kiválasztása .............................................................................................................5 3.3 Program tervezés ..............................................................................................................6 4 Kivitelezés ................................................................................................................................7 5 Tovább fejlesztés .....................................................................................................................8 6 Összefoglalás...........................................................................................................................9
2/9
Hogyan képezd magad
2 Bevezetés Napjainkban az álláshirdetések mindegyike tartalmaz valamennyi gyakorlati időt. Ez több okra vezethető vissza. Nagyon nehéz elhelyezkedni nulla gyakorlati tapasztalattal. Gondoljuk végig ezt az álláshirdetést feladó szemszögéből. Ha valakinek nulla gyakorlati tapasztalata van, akkor neki kell megtanítani, hogy hogyan végezze a munkáját, és addig csak költ rá. Állásinterjún meg szoktuk kérdezni, hogy ha még nincs gyakorlatod, akkor mit programozott otthon a felvételizni vágyó. Meglepő módon a válasz elég gyakran, hogy az egyetemen adott házi feladatot, és mást nem. Ha nem is követelmény, de meggyőző lehet állásinterjún bemutatni egy már meglévő programunkat. Nem annyira annak bizonyítására, hogy tudunk programozni, hanem, hogy képesek vagyunk egy projektet végigvinni. Ehhez szeretnék segítséget adni, hogy meg tudjuk becsülni, hogy mit tudunk végig vinni és mit nem. Ha olyan feladatba kezdünk, amihez jóval nagyobb tudás szükséges, mint amivel rendelkezünk valószínűleg el fog menni tőle a kedvünk. Ezen kívül el kell dönteni, hogy melyik irányba fejlesszük magunkat melyik programozási nyelvet válasszuk. Erre nincs természetesen egyértelmű válasz, de egyedes nyelvek jobban támogatnak bizonyos szoftver típusokat. Jó kérdés, hogy specializálódjunk-e vagy inkább mindenből egy kicsit. Az állás ajánlatokat megnézve hamar láthatjuk, hogy kevés olyan álláshirdetés van, ahol C++, Delphi, Java, JSP, PHP -t már látott, ám egyikben sem elmélyült jelentkezőket várnak. Ezért inkább azt javaslom, hogy válasszunk egyet és azt ismerjük meg jobban.
3/9
Hogyan képezd magad
3 Tervezés Ahhoz, hogy fejlesszük magunkat úgy kell felfogni mintha egy tényleges szoftverfejlesztést vinnénk végig. Először ki kell találni valamilyen feladatot, ami érdekel minket, ez fontos, mert ha mégis olyat választunk, amit nincs kedvünk megcsinálni akkor nem fogjuk tudni végig vinni.
3.1 Mit is csináljunk? Első programját általában az ember fejben elképzeli és nekilát megírni, ami ilyenkor több embert eltántorít az az,hogy nem tudja meghatározni mi az 1.0 . Vagyis hogy első nekifutásra mit tudjon a program. A leghasznosabb az, hogy fogjunk egy lapot, vagy dokumentumot, és írjuk össze néhány mondatban, hogy mit is tudjon. Célszerű egy egyszerűbb dologgal kezdeni, ilyen lehet egy CD katalógus, vagy egy jegyzet nyílván tartó. Találkoztam olyan ötlettel is, hogy egy diák rendszeresen elnézte, hogy melyik tárgyból mennyi hiányzási lehetősége van még ezért,írt egy nyilvántartót, arra, hogy nyilvántartsa melyik tárgyból mennyi hiányzási lehetősége van. Amennyiben játszunk valamilyen számítógépes játékkal, jó ötlet lehet ahhoz írni egy segédletet, ilyen lehet a mentett állás átalakító (Savegame Editor), vagy valamiféle statisztikai program. A mai játékok többségéhez már lehet addonokat vagy plugineket írni, ezek sem rossz ötletek, mert ez esetben megismerkedhetünk, egy nagyobb rendszer kiépítésével. Ezekben gyakran Lua, és XML használatát sajátíthatjuk el, vagy egy teljesen egyedi nyelvet. Ez kezdetnek jó, de később mindenképpen próbáljunk meg valami önálló saját dolgot alkotni. Első programnak mindenképpen valami egyszerű nyilván tartót javaslok, és nem egy 3D-s MMORPG-t, mert valószínűleg azt sosem fejezzük be. Ha kitaláltunk a programnak egy nevet keressünk rá, hogy megnézzük van-e ilyen névvel program. Ez igazán nem fontos, de a későbbiekben hasznos, ha megszokjuk, nehogy úgy járjunk, hogy olyan nevet választottunk, ami már foglalt, mert akkor biztosan meg kell változtatni a nevét, ha publikálni akarjuk.
4/9
Hogyan képezd magad
3.2 Nyelv kiválasztása Ez egy nagyon összetett kérdés minden programozási nyelv másra alkalmas. Általában a nagy problémát a felület jelenti, hallottam többektől, hogy akkor adta fel amikor felületet kellet volna készíteni, és több napba telt mire egy ablakban meg tudott jeleníteni egy vagy két gombot. Ha nem szeretnénk a felületekkel bajlódni akkor választhatunk olyan megoldást amikor az viszonylag könnyű. A windowos felületek készítése Borland Delphiben a legegyszerűbb, teljesen szabadon, “drag and drop” módszerrel egy eszköztárról ki lehet húzni a gombokat, grideket (táblázat), az ablakra, és utána csak a programmal magával kell foglalkozni. A Delphi nagy hátránya, hogyha grafikát (mint pl.: DirectX) szeretnénk használni akkor meg gyűlhet vele a bajunk, ehhez külön csomagokat kell beszereznünk az internetről. Szintén egyszerű a felület PHP esetén (ehhez természetesen a HTML-el kell megismerkedni), hiszen itt a böngésző jeleníti meg a felületet nekünk nem kell annyit bajlódni vele. Van többféle HTML szerkesztő amelyek képesek arra, hogy csak le kelljen húzni a gombot a felületre, és ne kelljen kódot írni. Java esetében is viszonylag egyszerű gombok, ablakok készítése, azonban itt a fejlesztő környezetek általában nem támogatják azt, hogy két kattintással létrehozzunk egy gombot, vagy ablakot. A C nyelv (ez alatt az összes változatát értem C++,) nagy szabadságot ad, viszont ebből fakadóan elég sok mindenre mondják azt, hogy ez C nyelv. Itt a széles választék miatt ütközhetünk problémákba. Nagyon frusztráló, lehet amikor tanuljuk a nyelvet és hiába töltünk le egy egyszerű példa programot és próbáljuk meg lefutatni, nem megy mert azt GCC, vagy MinGW vagy Lcc vagy Microsoft Visual Studio 6-9 alatt készítették. Vagyis igazából C nyelvek esetében sok program a fordító bizonyos csomagjaira támaszkodik ami a többi fordító alatt beszerezhetetlen. Összegségében azt tudom tanácsolni, hogy járjunk utána, hogy az általunk választott problémát milyen programozási nyelvben szokták megoldani. Nem biztos, hogy holnapkészítéshez C# -ot vagy Java-t célszerű választani. Valószínűleg nem véletlenül választja a többség azokat a nyelveket amelyeket választ.
5/9
Hogyan képezd magad
3.3 Program tervezés Tervezés folyamán próbáljuk meg követni az ajánlásokat. Ezeket vagy tanulmányainkból tudhatjuk meg, vagy olvassunk utána az interneten. Találkoztam olyan programozókkal akik úgy voltak vele, hogy minek az adatbázist normalizálni kigondolom fejben és úgy is jó lesz, nos tapasztalataim szerint ez nem működik, pláne bonyolultabb problémáknál. Itt fontos, hogy ismerkedjünk meg olyan tervezésben használatos eszközökkel mint az UML (Unified Modeling Language). Tapasztalataim szerint az egyetemet végzett hallhatók hallottak már arról, hogy mi az UML, de gyakorlatban még sosem használták. A diagram tervezésének nem kell feltétlenül papíron történni, jó és ingyenes diagram tervezők léteznek (pl.: Dia Diagram Editor). Ezek nagy előnye a papírhoz képest, hogy könnyen módosíthatóak. Tervezésből azt se hagyjuk ki, hogy mikor foglalkozunk a problémával. Általában motivációs, és hogyan oszd be az idődet témájú könyvekben találunk arra, ötletet, hogy hogyan vegyük rá magunkat arra, hogy tudásunkat fejlesszük. Célszerű kinézni egy időpontot (lehet az a hétvége) amikor azzal foglalkozunk, hogy fejlesztjük az általunk elképzelt programot, és ezáltal magunkat. Sokat segíthet motivációban és tervezésben, ha megosztjuk barátainkkal, és ismerőseinkkel azt, hogy milyen programot tervezünk írni. Ilyenkor vagy jó ötleteket szerezhetünk hozzá, vagy akár segítséget is. Valamint, ha nagyon tetszik nekik a program ötlete akkor még lehet, hogy rendszeresen megkérdezik, hogy hogy állunk vele, és ez is nagy segítség lehet.
6/9
Hogyan képezd magad
4 Kivitelezés Ha a tervezéssel végeztünk neki állhatunk a kivitelezéshez. Úgy célszerű hozzáfogni, hogy kinézünk egy kisebb mérföld követ. Ilyen lehet CD katalógusnál, hogy lehessen CD-t felvinni. Vagy ha játék addonról beszélünk akkor megjelenítse azokat az adatokat amivel dolgozni fog. Ha többféle fejlesztő környezet közül választhatunk nézzünk meg többet egy kicsit tapasztaljuk ki őket mielőtt egy mellet leragadunk. Java esetén NetBeans, Eclipse vizsgáljuk meg, C nyelvek esetén én a Microsoft Visual Studio-t találtam a legelterjedtebbnek. PHP esetén a PSPad nevű ingyenes szoftvert javaslom. Természetesen ez csak javaslat bármelyiket választhatjuk. Próbáljuk betartani az alapvető koncepciókat, beszédes változó nevek. Ha valamilyen változóban egy név van akkor annak a neve is “nev” legyen és ne ”sdf”. Próbáljunk meg megjegyzéseket írni oda ahová szükségesnek érezzük. Gondoljunk arra, hogy később esetleg ki akarjuk egészíteni programunkat. Valamint olyan koncepciókat is célszerű követni, hogy Model–View–Controller (MVC). Ennek a lényege az, hogy elkülönítjük a megjelenítést, a vezérlést, és a modelt. Ez a gyakorlatban annyiból áll, hogy legyenek model osztályok amik segítségével az adatokat kezeljük, és ettől elkülönítetten legyen az a rész ami arról, dönt hogy milyen view elemeket (gombok listák) kell megjeleníteni. Ne féljünk több fájlba dolgozni, sok egyetemet végzett programozótól láttam, hogy egy projekt egy fájl. Nyílván könnyebb volt így nekikezdeni, de a munkája közel használhatatlan lett ettől. Minden osztályt külön file-ba rakjunk. Néhány megoldásra rákereshetünk az interneten, de ami nem illik be az általunk elképzelt koncepcióba (MVC, Objektum orientáltság) azt ne emeljük be a programunkba. Különösen PHP esetében találkoztam az interneten hajmeresztő megoldásokkal, amiket nem szabad alkalmazni, mert súlyos koncepcionális gondok vannak vele. A fejlesztés során figyeljünk a forrás fileokra, időnként mentsük pendrive-ra, vagy CD/DVD-re mert nem kellemes, ha egy véletlen törlés vagy merevlemez probléma miatt kezdhetjük az elejéről.
7/9
Hogyan képezd magad
5 Tovább fejlesztés Ha elkészültünk egy verzióval kezdjük el használni, közben rá fogunk jönni problémákra, illetve olyan dolgokra amit nem tud. Vagy ha másoknak megmutatjuk, nekik is támadhat új ötlete észrevehet olyan dolgokat, amit mi nem. Időnként vizsgáljuk felül a kódjainkat, tegyük fel magunknak a kérdést:
•
Ma is így csinálnánk-e?
•
Biztos, hogy nincs benne sebezhetőség?
•
Nem lassul le a működése, ahogy az adatok száma nő?
Amennyiben az elkészült programot szeretnénk bemutatni, valamilyen módon érjük el, hogy minél több gépen fusson. C valamint Borland Delphi tipikus problémája, hogy kellenek hozzá külső könyvtárak (DLL-ek) amik nélkül nem fut. Ezekben a programokban van lehetőség, hogy ezeket a DLL-eket is tartalmazó installációs file-t Készítsünk. Ha késznek érzünk egy projektet akkor kezdhetünk újba. Amennyiben nincs ötletünk új projektre, akkor segíthetünk másoknak is saját dolgaikkal. Ha azonban ilyen sincs akkor böngészhetünk az interneten opensource projekteket. Ezekbe általában mindig van “felvétel”. Vagy akár saját projektünket is közzétehetjük opensource ként (pl.: sourceforge.net -en), így találhatunk lelkes segítőket, akikkel együtt dolgozva megvalósíthatjuk ötletünket.
8/9
Hogyan képezd magad
6 Összefoglalás Az eset tanulmányban a környezetemből szerzett tapasztalatok alapján próbáltam ötletet adni arra, hogy hogyan fejlesszük magunkat otthon. Sajnos az egyetemek többségén nincs elegendő erőforrás, vagy akarat a gyakorlat megfelelő oktatására. Az elmélet és a gyakorlat pedig nagyban különbözik. Az egyetemen kapott házi feladat pedig nem egyezik azzal, amit mi magunk találunk ki és akarunk megoldani. Egy saját projekt kitalálása és végig vitele nagyban segíthet bennünket a későbbieken. Nem csak a munkahelyre való bekerülés esetén, hanem az ott végzett munkában is. Úgy gondolom, hogy aki programozónak tanul az nem véletlenül teszi, hanem azért mert szereti csinálni, és nem telefonos ügyfélszolgálatos szeretne lenni egy multinacionális cégnél. Otthon önmagunk fejlesztése, inkább abban segít, hogy kis és közép vállalatoknál elhelyezkedhessünk, sok multinacionális céget csak a diploma érdekli, és hogy hol dolgoztunk eddig. Az esetek többségében nem megfelelő állást adnak, hanem olyan állást, ahol leginkább elfelejtjük az egyetemen nehezen megtanult ismereteinket. Esetlegesen több évfolyamtársunkkal összeállva saját céget is indíthatunk, az egyetem végeztével. Meglepően sok kis vállalkozást indítanak ilyen módon, ezek egy része marad kis vállalt, vagy csődbe megy, de egy része feljebb jut, és “siker történet” lesz belőle. Mindegy milyen programozási nyelvet választunk, ha követjük a világban elfogadott koncepciókat, akkor sok tapasztalatra tehetünk szert, ami a későbbiekben többszörösen megtérül.
9/9