A középiskolában borzalmas tanuló voltam, ezért aztán a főiskola vagy egyetem nekem anno szóba se jött. Programozni pedig ritka későn, huszonévesen kezdtem csak el. Ilyen kezdés után kevesen hinnétek, hogy pár évvel később én voltam a második magyar, akit Facebooknál felvettek a HQ-ba, Menlo Parkban, a napos Kaliforniában. Hogy a világ leglátogatottabb site-jának az adatbázis infrastruktúráját kicsit tovább pofozzam.
Hogyan jutottam gyakorlatilag a nulláról a szakma egyik fellegvárába? Kezdjük az elején, amikor 15 évesen beszippantott az egész infós világ.
Haverok, buli, warez
A középsuliban a bulizáson és a haverokon kívül nem sok minden érdekelt. Egy informatika szakos suliba jártam és papíron volt két informatika óránk... de semmi programozással kapcsolatos dolgot ott nem tanultunk. Nem mintha hibáztatnám az akkori tanáraimat - ők is akkor próbálták kitalálni, hogy mit is kéne ott tanítani. Nem sok sikerrel.
Ugyan a suli nem sokat tett, hogy megszeressem a számítógépeket, de a baráti köröm annál inkább. 15 éves voltam, amikor pár haverommal kitaláltuk, hogy rakjunk össze egy warez szervert. Az egyiküknek volt egy szervere, mi meg összedobtunk pénzt, és vettünk vele winyókat. Innentől kezdve pedig nem volt visszaút. Imádtam, hogy emberek használják a szolgáltatást, amit én csináltam. Volt vagy 600 userünk, ami nekem akkor elképzelhetetlenül soknak tűnt, ráadásul egy csomó ismerőst megismertem ezen keresztül.
Mivel borzalmas jegyeim voltak, a középsuli végén meg voltam győződve róla, hogy esélyem se lenne főiskolára vagy egyetemre mennem. És őszintén szólva ez nem is érdekelt, akkoriban ez még nem tűnt akkora dolognak. Ráadásul a középsuli végére már állásajánlatom is volt, ami teljesen eldöntötte, hogy mit fogok csinálni.
A sikeres karrier kulcsa, amit középsuliban tanultam meg
A középsuli végén egy kis, 10 fős cég cég megkeresett, hogy egy webshopot akarnak építeni. Ne programozásra gondoljatok, hanem volt egy ilyen kattintgatós szoftverük, ami statikus HTML-t generált és valaki kellett, aki tudta kezelni. Engem nem is igazán érdekelt a cég, vagy hogy mit csinálnak, csak az, hogy végre egész nap számítógépekkel tudok dolgozni. Úgyhogy elvállaltam a webshop fejlesztést - ami pofon egyszerű volt - és felvettek a céghez.
Pár hónappal később a cég IT direktora felmondott. A csávó feladata az volt, hogy összerakja a cég vadonatúj ERP szoftvertét, amivel a beszállítóikkal meg minden egyébbel jobban tudnak dolgozni. Hirtelen senki nem volt, aki tovább vitte ezt volna, ami gáz volt. Úgyhogy a tulaj odajött hozzám - én akkor 18 éves voltam - és kérdezte, hogy "Istvánka, ez számítógép, te pedig számítógépekkel dolgozol. Meg tudod csinálni?"
Tudod, van egy fontos közös pont azok között, akik sikeres karriert építenek. Ha valaki odajön hozzád, és megkérdezi, hogy "meg tudod csinálni?", akkor azt mondod, hogy "igen". Aztán meg baromi gyorsan nekiállsz, vért izzadva is, de megtanulod és megoldod. Úgyhogy - bár halovány fogalmam sem volt arról, mi az E, az R vagy a P, azt mondtam, hogy , persze, hogy megcsinálom. A következő 1-2 év meg azzal telt, hogy megtanultam, hogy hogy működik egy ERP rendszer és összeraktam a cégnek.
Kis cégtől a világ egyik legnagyobb látogatottságú oldalához
A kis cégről a LiveJasmin-hoz mentem át. Oda úgy kerültem, hogy ők egy SMS-es rendszert akartak fejleszteni. Az egyik haverom, aki meg a Jasmine-nál dolgozott, beajánlott. Ugyanis a warez szerverekhez én raktam össze anno az SMS szervert, úgyhogy feltételezte, hogy nekik is meg tudom oldani. Akkoriban Fehérvárról nagyon fel akartam költözni Pestre és ez pont jó lehetőségnek tűnt. Azelőtt igent mondtam, mielőtt tudtam, pontosan mit is kell csinálni. Ahogy korábban is, most is úgy voltam vele, hogy közben úgyis megtanulom.
A LiveJasmin ekkoriban még nem volt olyan nagy, mint ma, de azért már top 100-as weboldal volt. Konkrétan többen látogattak minket, mint a CNN-t. És persze ez azt is jelentette, hogy a szervereink sokszor alig bírták a nyomást és csomó gondunk volt.
Amikor történt egy probléma, például a MySQL lockolt, akkor azt nem volt mese, meg kellett oldani. Magyarországon nem volt divat consulting céget fogadni, aki megoldja - egyszerűen meg kellett oldanunk. Én pedig addig olvastam, tanultam, próbálgattam, amíg végül megoldottam - valahogy. Ha engem kérdezel, az egész titka, hogy ne azon parázz, hogy úristen, leállt a rendszer, hanem állj neki és oldd meg. Lehet, ez nem olyan idealisztikus, mint ahogy azt sokan elképzelik, de ez a valóság, ez az, ami működik.
22 évesen programozni tanulni
Programozni sokáig nem tanultam meg. Persze, scriptelgettem itt-ott, de nem tudtam a nulláról valami működőt írni. A lökést a cégnél a főnököm adta meg, aki 2 év után mondta, hogy most már meg kellene tanulnom programozni: vagy Perlt, vagy PHP-t, vagy Pythont. Akkoriban éppen mindenki PHP-t kódolt a cégben, úgyhogy én is nekiálltam PHP
-t tanulni.
A PHP 24 óra alatt című könyvvel kezdtem. Elkezdtem begépelni a könyv példaprogramjait és egyre jobban belejöttem. És az első "programok" után jött a nagy felismerés. Ha tudsz írni programot, akkor onnantól kezdve olyan erőt kapsz a rendszereidben, amit mással nem igazán. Körülöttem meg mindenki PHP-t kódolt, az emberek segítettek, úgyhogy nagyon könnyen belevágódtam az egészbe.
Innentől meg folyamatosan haladtam előre. Amikor egy problémához nem találtam egy elég jó megoldást vagy könyvtárat, akkor sajátot írtam. Például írtam saját SMS alerting rendszert a meglévő nagios helyett. És minden saját fejlesztés után javult a kód, amit írtam. Napról napra, projektről projektre csak tanultam, és felszívtam mindent, amit tudtam.
De ezzel együtt magamtól megtanulnom úgy programozni, hogy az vállalható legyen, az nagyon nehéz volt. Egy dolog segített - az, hogy mindig is meggyőződésem volt, hogy akkor is megoldom.
Hekkerből az egyik legjobb MySQL szakértő
A LiveJasmin-nál multi master replikációt kellett konfigolnom. Akkoriban ezt nem támogatta alapból a MySQL, hanem custom megoldásokat kellett használni. A Percona nevű cég kiadott egy szoftvert pont ennek a megoldására. A szoftvert forráskóddal együtt adták ki - csak éppen minden dokumentáció nélkül.
Én ezen a projekten tanultam meg olvasni kódot. A Jasmine-nál ugyanis mondták, hogy ha használni akarom, akkor értenem kell, hogy hogy működik. Úgyhogy a projekt levelező listáján nagyon aktív voltam - először csak csomót kérdeztem, utána meg nagyon sokat segítettem másoknak.
Hamarosan jelentkeztem is Perconához egy senior consultant pozícióra, de elsőre nem sikerült bekerülnöm. Akkor ugyanis még nagyon-nagyon nem értettem a MySQL-hez, csak azt hittem, hogy értek hozzá. De ennek hatására csak még jobban beleástam magam a MySQL-be. Körülbelül egy évvel később viszont Persona meghirdetett egy junior consulting pozíciót, én meg valahogy benne maradtam a rendszerben. Úgyhogy felhívtak, hogy érdekelne-e még mindig és volt egy interjú. Addigra meg már elértem azt a szintet, hogy ez sikerült, és elkezdtem dolgozni nekik.
Persze itt már nem magyar, hanem külföldi cégekkel dolgoztunk, és itt képezett ki a cég - és én magamat - nagyon-nagyon profi MySQL szakértővé. Hogy egy példát mondjak: az InnoDB engine-t egy kis, finom trükközéssel úgy be tudom állítani, hogy másodpercenként félmillió requestet elbírjon egy átlagos szerveren, lockolás nélkül.
A Percona amerikai cég volt, én pedig távolról dolgoztam nekik, de amerikai fizetésért. Ez azt jelentette, hogy nagyon jó volt az élet otthon, de én már erősen gondolkoztam a külföldre költözésen. Nézegettem a lehetőségeket, de a legjobbat nem én találtam meg, hanem ők találtak engem. A cégem Londonban szervezett egy konferenciát, ahol a Facebooktól egy recruiter leállt velem beszélgetni, és meggyőzött, hogy jelentkezzek. Ugyanis nagyon kerestek MySQL-hez nagyon jól értő embereket, mint engem.
A fő ok, ami miatt felvettek a Facebookhoz
A Facebook interjúból nekem az maradt meg, hogy iszonyatosan élveztem. Marha jó szakemberekkel dumáltunk érdekes problémákról. És hogy végül miért vettek fel?
Akkoriban sem volt túl sok mérnök, aki annyira értett volna a MySQL-hez, mint én. Nagyon kevés más ember dolgozott akkora látogatottságú oldalakon, mint a LiveJasmin. Ráadásul én adatbázis szakértőként mellette tudtam programozni is. Nem egy fantasztikus szinten, de tudtam írni programokat, amik megoldották a problémáimat. Amit egyébként, nem sokan csináltak a systems engineerek között. És még mindig nem sokan csinálják.
Végső soron viszont meggyőződésem, hogy a mentalitásom miatt vettek fel a Facebookhoz. Én máshogy állok hozzá a dolgokhoz, mint sokan. Engem mindig csak az érdekel, hogy megoldjam a problémát. Lehet, hogy nem írok olyan gyors, okos vagy szép programokat, mint mások, viszont ezek minden esetben megoldják a problémát. És ez a fajta akarat - hogy végig vinni a dolgokat, nem feladni, és egy megoldást összehozni -, ez az akarat volt szerintem, ami miatt bekerültem.
És hogy miért volt fontos ez hozzáállás a Facebooknak? Ott olyan problémákba futsz bele, amibe más még jó eséllyel nem futott bele. Persze, náluk számtalan okos ember van, aki tud segíteni. Viszont amikor hajnali kettőkor beüt egy probléma, és te vagy devopson, akkor csak magad vagy, neked kell ezt megoldani, más nem fog segíteni.
Nyilván a hozzáállás mellett még egy kis józan paraszti ész is kell: de nem kell zseninek lenned, hogy bekerülj ide. Ami viszont alap, az, hogy a hozzállásod ez legyen: Mindig megoldani a problémát. Mindig.