
Szia! Takács Gábor vagyok, programozó és szoftverfejlesztési szakértő, több mint két évtizedes munkatapasztalattal. Pályafutásom során számos iparágban és projektben vettem részt. Most eljött az idő, hogy tudásomat és tapasztalataimat megosszam mindazokkal, akik szeretnének elmélyedni a programozás világában, legyenek akár kezdők, akár tapasztalt fejlesztők, akik új ismeretekre vágynak.
Hogyan lettem programozó
A programozóvá válásom első lépcsőjeként, általános iskolában találkoztam a programozással egy szakkör keretén belül; Commodore 64 számítógépeken írtunk BASIC nyelvű programokat.
A szakközépiskolában a Pascal programozási nyelvet tanultuk az ügyvitel technika órákon. Szabadidőmben könyvekből tanultam a programozási nyelv ismeretlen elemeit. Ebben az időszakban ismerkedtem meg egy profi programozóval, aki vállalta, hogy megtanít a Clarion nevű programozási nyelvre. Gyakorlásképpen írtam egy egyszerű könyvtári kölcsönzés kezelő programot az iskola könyvtárának.
Felvételiztem a József Attila Tudományegyetem (JATE, mai nevén Szegedi Tudományegyetem) programozó matematikus szakára és sikeresen megszereztem a főiskolai oklevelet.
Már a főiskolai éveim alatt gyakornokként dolgoztam egy magyar cégnél és ott tanultam meg a Java 1.1 programozási nyelvet, illetve a DB2 adatbázisok kezelését. Olyan izgalmas témákon dolgoztam, mint a pénztári címletezés problémája, az IBM Kiosk számítógépekbe épített bankkártya olvasó és jelenlétérzékelő programozása.
Ezt követően a Siemens leányvállalatánál dolgoztam telekommunikációs területen, nemzetközi környezetben, német és horvát munkatársakkal együttműködve. A programokat a vízesésmodellt követve Java 1.3/1.4 nyelven írtuk, ezek UNIX szervereken futottak, illetve a böngészőben Appletként, vagy HTML oldalként (JavaServer Pages). Az adatokat Oracle adatbázisban tároltuk. A forráskód különböző verzióit Clearcase-ben kezeltük. A programjainkat dedikált, külföldi csapat tesztelte, vagyis ekkor még nem írtunk automatizált teszteket. Életemben először itt voltam ügyeletben, így megtapasztaltam, hogy milyen egy, az ügyfél szerverén keletkező hibát javítani. Parancssorból távoli bejelentkezéssel, kizárólag az előre telepített (korlátozott képességű) UNIX programokat használva, rögtönzött shell script írásával.
Az EPAM-nál amerikai ügyfélnek dolgoztam (outsourcing), Java 1.6/1.7 nyelven írtunk, Spring Framework alapú webszolgáltatást, amely Ms SQL tárolt eljárásokat hívott. Itt már az agilis módszertanok (Scrum) szerint végeztük a munkát. Kezdetben Perforce-t használtunk a forráskód verzióinak kezelésére, később áttértünk a ma is népszerű GIT-re. Itt írtam először automatizált teszteket (unit testing), illetve itt ismerkedtem meg azokkal a módszerekkel, amelyekkel automatizáltan lehet telepíteni az alkalmazást több szerverre; ehhez az Opscode Chef-et használtuk (mai neve Progress Chef). Mélyebben megismertem a webfejlesztés alapjait, a HTML-t, CSS-t, JavaScript-et, JQuery-t és az Apache FreeMarker-t. Itt találkoztam először a “memória szivárgás” problémával, amelynek kijavításához megtanultam a JProfiler használatát. Rendszeresen vállaltam ügyeletet és amikor éjszaka csörgött a telefon, a Splunk segítségével kerestem meg a hiba okát.
Az OCÉ-nál megismerkedtem az ipari nyomtatók világával. A programjainkat Java 1.8 nyelven írtuk, Spring Boot segítségével, a felhasználói felületet Vaadin-ban hoztuk létre. Az alkalmazások MySQL és PostgreSQL adatbázisokhoz kapcsolódtak a Hibernate segítségével. Itt tanultam meg az aspektus-orientált programozást (AOP). Az egyik projekten architektként is dolgoztam; én voltam felelős a rendszer tervezéséért. Illetve itt ismerkedtem meg az AngularJS-sel, a most is népszerű Angular elődjével.
A General Electric-nél (GE) már felhőalapú szoftvereket fejlesztettünk Java 1.8 nyelven, Spring Boot felhasználásával. Az alkalmazások MySQL és PostgreSQL adatbázisokhoz kapcsolódtak Hibernate által. Az alkalmazás AWS-be volt telepítve és teljesítményteszteket is írtam Apache JMeter és JBehave segítségével.
A Siemens egy másik leányvállalatánál, az Evosoftnál jobban elmélyedhettem a web alkalmazások programozásában. Ekkor kezdtem komolyabban alkalmazni a clean code alapelveit, amellyel olvashatóbb és karbantarthatóbb programokat lehet írni. Itt több évig dolgoztam egy WebRTC és Angular alapú videocsetelő program fejlesztésén. Ezután az alkalmazást mobiltelefonokra (Android és iOS) is kiadtuk. De dolgoztam a telepítőcsomagok automatikus létrehozásán (Gitlab CI/CD pipeline) is. Pár hónapig ismerkedtem az úgynevezett low-code rendszerekkel a Mendix-en keresztül, és rövid idő alatt implementáltam egy tartalomkezelő rendszer prototípusát. Ezt követően egy AWS alapú tartalomkezelő rendszeren dolgoztam, beletanultam a C# programozási nyelvbe és a .Net Core használatába, és itt is automatizáltam az alkalmazás tesztelését és újratelepítését (CI/CD pipeline). A fejhasználói felületet ebben az esetben is Angular-ban valósítottuk meg. Végül egy Node.js alkalmazáson dolgoztam, amelynek React-ban valósítottuk meg a felhasználói felületét.
Ezt követően egy magyar cégnél vezető fejlesztőként helyezkedtem el. Itt újra Java 17 nyelven, Spring Boot-tal, PostgreSQL-lel, Angular-ral, Docker-rel és Kubernetes-szel dolgoztam. Számos érdekes szakmai kihívással találkoztam.
Végül egy olyan amerikai céghez csatlakoztam, ahol AI alapokon nyújtottunk szolgáltatásokat az ügyfeleinknek. Itt megismerkedtem a Python alapú felhőalkalmazások fejlesztésével, használtam Elasticsearch-öt, írtam ChatGPT alapú alkalmazást. Dolgoztam olyan alkalmazáson is, amely Apache Kafka üzeneteket dolgozott fel és hozott létre.
Tehát a különböző munkahelyeken megtanultam:
- a leggyakrabban használt backend (Java – Spring Boot, .Net Core, Node.js) és frontend (Angular, React) technológiákat
- számtalan programozási nyelvet (Java, C#, JavaScript, Python, Shell script)
- különböző verziókövető rendszereket (Clearcase, Perforce, Git)
- a felhő alapú alkalmazásfejlesztést AWS-ben
- a különböző fejlesztési módszertanokat (vízesés, scrum, kanban)
- az automatikus tesztelés különböző módszereit (unit testing, integration testing, UI testing, performance testing)
- a tesztelés, telepítőcsomag létrehozás és telepítés (CI/CD) automatizálását
Azóta egyéni vállalkozóként dolgozom. Célom a sok-sok év alatt megszerzett programozói tudásom átadása, illetve saját termékötleteim megvalósítása.
Csatlakozz hozzám, és kezdj bele a programozás felfedezésébe még ma!