Rólunk

Az informatikában a programfejlesztés egy kristály növekedéséhez, vagy egy fa fejlődéséhez hasonló. Ez a tevékenység jelenik meg ennek a webportálnak nevében, mint fő motiváció. Informatikai kristályokat szeretnénk alkotni, minden kikristályosodott tudásunkat beleformálni egy-egy fejlesztésbe.

Milyen lehetőségeim vannak ezen az oldalon, mint regisztrált felhasználó?

Lehetőséged van informatikával kapcsolatosan a megfelelő tartalom típus kiválasztása után:

Blogbejegyzés beküldésére
A blogok rendszeresen frissített naplók az egyes beküldött bejegyzések fordított időrendi sorrendjében megjelenítve. A webhely minden felhasználója saját bloggal rendelkezhet.
Fórum téma beküldése
 
Új fórum téma létrehozása a fórumban.
Hír beküldésére
A hírek egyszerű tartalmak: van címük, bevezetésük és törzsük, de más modulokkal is kiegészíthetők. A bevezető szintén a szövegtörzs része. Jól alkalmazható rendezvények meghírdetésére, vagy az ott készült interjúk, történtek közzétételére.
Könyvlap beküldésére
A könyvek létrehozása közösségi folyamat: a felhasználók együtt írhatják a könyveket, rendszerezhetik azokat, áttekinthetik, illetve módosíthatják a már előzőleg elkészítetteket. Megosztani való tudás birtokában lévő felhasználók bővíthetnek egy-egy könyvet, illetve javíthatnak a meglévő könyvlapokon is.
Lap beküldésére
Ha statikus lapot szeretnél hozzáadni, mint mondjuk egy kapcsolatok lap vagy egy általános leírás, készíts egy lapot.

Milyen írásokat fogadunk be?

Erre a kérdésre a választ a következő néhány kérdésre adott válasszal tudom leírni. Kérlek olvass tovább!

Hogy végezzük a fejlesztői munkát?

Egy projekt kezdetén először az átfogó üzleti feladatot elemezzük, diagramokat rajzolunk, végig gondoljuk a lehetőségeket, megrajzoljuk a működési mechanizmust, és így jutunk el egy általános megoldásig, a feladat magasabb absztrakciójáig. Ezt a munkát végzik a rendszerszervezők a megrendelővel közösen. A következő lépésben a kiszemelt technológiára koncentrálunk. Próba programokat, úgynevezett pilot programokat készítünk, majd ezek eredményeit gyúrjuk egybe. Megrendelőnkkel a folyamatos egyeztetés  megalapozza munkánk eredményességét. Az üzleti logika és a technológia megismerése és sikeres alkalmazása együtt jelenti számunkra a motivációt.

Mitől lesz egy projekt sikeres vagy sikertelen? Hogyan dönthet egy projektvezető a folytatásról vagy felfüggesztésről?

A sikeres projekt abból táplálkozik, hogy a megrendelő látja és tapasztalja a program fejlődését. Egyértelmű, hogy ami sikeresen elindult, azt támogatja a vezetés, támogatja a megrendelő. Mi szükséges a sikeres induláshoz? Ha véghez akar vinni egy cég egy fejlesztést, minden eszközhöz a legmegfelelőbb szakembert, a szakemberekhez a legtöbb tudást gyűjti össze. Ez az információ felhalmozás jelenti a projekt megalapozását. A cég vagy úgy kezd neki a feladat megoldásnak, hogy úgymond drága fejlesztőket vesz fel induláskor, és kidolgoztat velük egy koncepciót, vagy a felvett fejlesztőket látja el a tudás megszerzéséhez szükséges információ forrásokkal. Ilyenek az Interneten található e-dokumentumok, a könyvesboltokban található szakirodalom. Az első megoldás gyors és hatékonyabb, a második lassabb indulást eredményez, ám kevesebb indulótőkét is igényel. A második sikeréhez szükséges legalább egy jó szervező is, aki az információkat a fejlesztők asztalára teszi, és koordinálja a tudás felhalmozást.

Mivel növelhető a sikeres projekt életciklusa?

Minden informatikai projektnek van életciklusa. A szoftver életciklusát a vásárlók száma, a befektetők elhatározottsága és bizalma határozza meg piaci szempontból. A tervezés és kivitelezés közben a piackutatás, az értékesítési helyek keresése lényeges feladata a szervező csapatnak. Telefonon vagy személyesen keresik fel a potenciális vevőket. Céljuk a kompetens személyektől, döntéshozóktól megtudni az igényeiket, az éppen használt rendszerekről kialakult véleményüket, a használat közben összegyűjtött tapasztalatokat, végeredményül az elégedettség fokát. Érintve a készülő vagy már elkészült szoftver előnyeit egy bemutatóra invitálják a megtalált személyt. Mind-e közben a kész termékről tájékoztató dokumentációk készülnek, csökkentett tudású, úgynevezett demó programok, amiket a bemutatóra érkezők magukkal vihetnek.

A fejlesztők szemszögéből a szoftver stabilitásának, életciklusának növelése a funkciók bővítése mellett az egyéb rendszerekkel létesített kapcsolatok számának növelését is jelenti. Az egyéb rendszerek közül a hardver eszközök a stabilabb, a szoftver eszközök az instabilabb kapcsolatok. A szoftverkapcsolatok instabilitását jól illusztrálja a Microsoft termékek életciklusának követése, a frissítésekkor megjelenő váratlan problémák, a következő verzióval időnként megjelenő inkompatibilitások. A kommunikációs szabványok módosulását a befektetők fizetőképességüknek megfelelő ütemben követik, ezért a fejlesztett szoftveren is szükséges átvezetni a módosításokat. Célszerűen különböző modulokba helyezik ki ezeket az összetevőket a fejlesztők, hiszen a megbízóknak eltérő ütemben kell biztosítani az együttműködést. A szoftver életciklusa a kapcsolódó rendszerek nyitottságától, az abban követett tervezési eljárásoktól, a hibák feltárhatóságától is függ. Eddigi tapasztalataink alapján olcsóbb nyílt forrású szoftverekkel dolgozni, mert az ilyen módon készülő nagyobb projektek kidolgozott szabványokat követnek, a kód nagy fejlesztőközösségek által átlátható, és így a több szem többet lát alapelvnek köszönhetően könnyebb megtalálni, körüljárni, megoldani a hibákat. Ez a fejlesztési módszer felvállalja, hogy nem tud egyedül megoldani minden feladatot, az elhárító szinergia csoportok létjogosultságát megszünteti, a költségeket csökkenti, és nagy távolságokban dolgozó embereket köt össze az interneten keresztül.

Hogyan hangolhatók össze a helyi és távoli munkaerők?

A rendszeres meeting lehetősége, az "asztalhoz ülünk és beszélünk a feladatról és az elért eredményekről" jellegű találkozók a távol élő, esetleg otthonról dolgozó munkatársakkal igen korlátozott. Ezért az internet adta lehetőségekre támaszkodik az a cég, amelyik távmunkásokat alkalmaz. Konferencia beszélgetésekre kommersz termékként a Skype és az MSN Messenger ingyenesen alkalmazható eszközök. Vannak azonban olyan hardver megoldások is, amikkel minőségi audiovizuális konferencia beszélgetések, távoli bemutatók is megoldhatók.

A szoftver karbantartására több verziókezelő rendszer közül választhatnak a fejlesztők. Ezek a szoftverek a készülő program különböző változatait, módosulásait követik. Csoportmunkában gyakran előfordul, hogy azonos forráskódon több fejlesztő is dolgozik, és a módosulásokat össze kell vezetni, a sorokat össze kell fésülni. Ez a művelet hasonlít a könyvíráshoz. Ha egy könyvet többen írnak, a fejezeteket egymás után kell betenni a könyvbe, hogy összeálljon a történet. Esetenként a könyv egyes fejezeteibe más fejezet szerzői is találnak hibát, amit kijavítanak. Mikor összekötik a könyvet, a fejezet szerzőjének tudnia kell a javításról, és a javított oldalt kell beilleszteni a helyére. Ezt az adminisztrációt végzi a háttérben a verziókövető rendszer egy szoftver fejlesztésekor. Ilyen a nyílt forráskódú, ingyenesen használható SVN és az IBM által fejlesztett zárt forráskódú ClearCase. Ez utóbbi előnye a fájlrendszerbe integrálható nézet, ami különböző módon konfigurálható.

A verziókövetés mellett az életciklus követésére és adminisztrálására is szükségük van a fejlesztőknek (bugtracker). Hibajavítások, fejlesztési feladatok követésére internetes rendszereket használnak, mint például az ingyenes Ruby alapú, magyar fordítással is használható Redmine.

Milyen emberek a programfejlesztők?

Sok könyvet írnának tele, ha a kódolás könyvírásról szólna. De mivel sokszor a feladatuk több részből tevődik össze, a Kaland-Játék-Kockázat könyvekhez hasonló könyv születne. Tudnia kell a programozóknak egy szöveges térképet alkotni, hogy el tudjanak igazodni a sok függvény, osztály és más egyéb szöveg között. Az előzőleg papírra vetett programterv, vagy modernebb változataik - az UML diagramok - sokat segítenek a program egészétnek összeállításában.

Tehát térképész, olvasó és egyben író is a programfejlesztő. Olvasási képességét a másik programozó által írt programrész megértésekor használja, amivel a térképészeti tudását bővíti. Térképészként ismernie kell a funkciók helyét (melyik fájlban van és azon belül hol helyezkedik el), paraméterezését, működését. Íróként pedig tudnia kell az elérendő célokat, kezelnie kell tudnia a toll elektronikus változatait, a szerkesztő eszközöket, és ismernie kell a használható módszereket. Nem utolsó sorban mérnöki fantáziáját kell használnia, amit gyakorlat közben tanul az ember. Összefoglalva, nagy figyelmet, összpontosítást igényel a fejlesztés. És ez még csak a programozási tudás. Csapatmunkáról, kommunikációról nem esett szó. Ez külön képesség, amit folyamatosan fejlesztenek a programozók, és egy egész könyvet igényel (Robert C. Martin: Túlélő kézikönyv programozóknak).

Alapvetően ezek szükségesek a programozók munkájához. Ezen túl kreatív játékokkal segítheti a vezetés a fáradt munkaerő regenerálódását. Ehhez ajánlom képgalériánk témának megfelelő részét.

Mi jellemző még a programozókra?

Minden fejlesztőnek van saját elképzelése személyes karrierjéről. Ezeket tiszteletben tartva, az attitűdöket figyelembe véve segíthető az egyén kibontakozása. Ez a lojalitás alapköve. De a programozók első sorban emberek. És mint emberek hibákat követnek el munkájuk során. A hibalehetőségek csökkentése minden fejlesztőnek feladata kellene legyen. A drága, úgymond architect vagy senior fejlesztők folyamatosan felülvizsgálják a munkájukat, optimalizálja a kódot és beépítik új tapasztalataikat a felülvizsgált kódba. Egy módosítás azonban nem állíthatja fejre a már működő programot. Az olcsó fejlesztők a feladat gyors és kevésbé esztétikus megoldására, a program működőképességére törekednek, a kód tisztítását mások vagy saját maguk végzik - ha végzik - később. Feladattól függően mindkettőnek megvan a maga előnye és hátránya. Ezért a teszt vezérelt fejlesztésnek (TDD lásd később) kell garantálnia a már meglévő és az új kód hibátlanságát.

Milyen módszer segíthet a munkájukban?

A program hibák aránya teszteléssel csökkenthető. Többnyire hiba ágak lekezeletlensége, változók alapértékének határozatlansága, előtesztelés hiánya okozza a felhasználóig eljutó hibákat. Nagyobb cégek kifejezetten erre a célra tesztelőket alkalmaznak. Alapvető tervezési és programfelügyeleti módszer azonban a TDD (Test Driven Development), ami külön művészeti ága az évtizedek során kialakult fejlesztési módszereknek. Ha összevetjük, hogy az űrlapok manuális kitöltése mennyi időt vesz igénybe, és hányszor tölti ki egy tesztelő ugyanazt az űrlapot minden egyes teszteléskor, akkor könnyen belátható mennyivel gyorsabb kitölteni programmal a tesztadatokat. Akármilyen gyorsan kezeli a felhasználó a billentyűzetet, a teszt vezérelt fejlesztés idő és pénz megtakarítás a tesztelésnél és karbantartásánál. Nemcsak hogy gyorsabb a manuális bevitelnél, de automatizálható is. A fejlesztéskor a tesztesetek meghatározása után lehet nekikezdeni a programozásnak. Ha egy teszteset teljesül, a programozó rátérhet a következő teszteset teljesítésének programozására. Egészen addig kódol a programozó, amig minden tesztesetet teljesített. De ne feledjük, a teszteseteket is emberek állítják össze.

Milyen eszközöket használnak programozásra?

A program kódolása során előnyös, ha a szerkesztőprogram tud néhány trükköt. Például könyvjelzőket elhelyezni a kívánt helyen. Ha könyvjelzőket billentyűkombinációval könnyen el tudja érni a fejlesztő, támpontokat adhat meg ezekkel a térkép kialakításához. Jó, ha úgynevezett makro funkciókat is végre tud hajtani a szerkesztőprogram. Segítségével a billentyűzetről érkezett karakterműveletek rögzíthetők, majd akármikor újra futtathatók, mintha éppen akkor gépelnék be ezeket. Az Ecipse-ben Java programszerkesztővel működő névváltoztató is nagyon hatékony segítség. A szövegben érzékeli az összes, ugyan ahhoz a változtatáshoz köthető nevet - többnyire változó, paraméter, metódus vagy osztálynév -, és kérdés nélkül, vagy javaslattal mindet megváltoztatja, akármelyik fájlban is van a projectben. Ennek eredményeként kevesebb helyen kell kézzel szerkeszteni a szöveget, csökken az elgépelésből adódó hibalehetőség. Másik lehetőség - a könyvjelzőket kiegészítve-, hogy a névre  egérrel ball gombjával és a Ctrl segédgombbal kattintva a definícióra ugrik a szerkesztő. Így könnyebben navigálhat a programozó a szövegben. Például Delphi-ben - ahol definíció és deklaráció külön szerepel - ,  a kurzormozgató nyilak is segítenek a navigálásban. A Ctrl segédgombbal a deklaráció és a definíció között ugrálhat a szerkesztő, így a funkció paramétereit könnyen módosíthatja. Nagy segítség az is, ha egy metódus paramétereiről - nevekről és tipusokról - tájékoztat a szerkesztő, és az is, ha egy metódusról súgót jeleít meg. Ezzel a navigációt csökkentheti, mert nem szükséges a metódus deklarációjához ugrani, hogy megtudjuk a meghívásának feltételeit. Ha az osztályokról metódus és tulajdonság térképet is vezet a szerkesztő, egy billentyűkombináció előhívhatja ezt a térképet, és a megfelelő kiválasztásával, automatikus kódkiegészítéssel csökkenthető a félregépelés.

A rendszerszervezőkkel a kész kódból visszaalakított UML diagramokkal újra egyeztethetők a célok és az elért eredmények vagy részeredmények. Ezért jó, ha ezekre az átalakításokra képes a szerkesztő. Legjobb esetben UML diagramból felépíthető a program váza, és a módosítások is átvezethetők a forráskódba és az UML-be oda-vissza.

Miből derül ki egy projekt sikertelensége?

Nem egyszerű a válasz. Első tünet, hogy a megrendelőt nem győzte meg a kialakított rendszer, úgymond a fa törzse. Gyors sikerre számító befektetők esetleg már magát a fás ligetet szeretnék látni. Miből ered a sikertelenség? Egyik oka lehet, ha megalapozott a tudás, és mégis hibás az elgondolás. Ez a tervező munka alaposságát vonja kétségbe. Esetleg piacképtelen az ötlet. Ez a szervező munka elégtelenségéből adódik, a munkát nem előzte meg egy piackutatás. A megalapozatlan tudással induló projektek többsége pedig belebukik a vállalkozásba.

Mit tehetünk egy sikertelen projekttel?

Ha a fejlesztőknek dokumentálni kell a fejlesztés során összegyűjtött tudást, könnyebb az így megszerzett tapasztalatokat értékesíteni egy másik fejlesztő csapat számára. Ezt az alapelvet minden esetben célszerű követni. Az ISO minősítések megkövetelik a napi munka dokumentálását, hogy követhető legyen a cég és az egyén munkája. Ez a megbízók számára is egyfajta biztonságot jelent. Dokumentáljuk a sikert.

A szervezés helyes perspektívája tehát az, hogy az elkészült produktumot csak eszköznek tekinti a célok megvalósításának folyamatában. Minden program ami sikeres, képes hatékonyan segíteni az értékesítésben, a szervezésben, a tudás összegyűjtésében és átadásában, az eredmények kimutatásában, alkalmas a napi rutin munka hatékonyságának növelésére, növeli a kreativitást, stb. Nincs sikeres projekt célok nélkül.

Milyen céljai vannak a weboldalnak?

Határozott segítséget kívánunk nyújtani programozási információkkal, informatikai hírekkel, minden lehetőségét kihasználva ennek a nagyszerű portál rendszernek. A Drupal egy kiforrott megoldás, ami segíti az informatikus közösségek kialakulását. Ezt a hullámot szeretnénk meglovagolni, és kitűnni színvonalas hírekkel, programozási tanácsokkal. Ez egyben minden szerkesztőnk felé betartandó követelmény. Lehetőségünk van magyar mellett angol nyelvű híreket készíteni, és a meglevő híreket lefordítani angolra vagy magyarra. Ez a többnyelvűség bővíthető további szakértelem bevonásával.