SheCanCode
A válasz? Nos, attól függ, kit kérdezel!
Nincs hivatalos megkülönböztetés a szerepek között, a vállalatok saját tapasztalataik és tudásuk alapján határozzák meg az igényeiknek megfelelő leírásokat. Hogy még jobban összezavarja a dolgot, regionális eltérések is lehetnek, és az oktatásban is határozott különbség van. Az adatforrások sokféleségét azonban értékelni és elemezni lehet, hogy következtetéseket lehessen levonni belőlük.
A Computer Science Degree Hub szerint a szoftverfejlesztők és a szoftvermérnökök különálló szerepkörök:
“A szoftvermérnökség a mérnöki elvek alkalmazására utal a szoftverek létrehozására. A szoftvermérnökök a szoftverfejlesztés életciklusában vesznek részt azáltal, hogy összekapcsolják az ügyfél igényeit az alkalmazható technológiai megoldásokkal. Így szisztematikusan fejlesztik ki a folyamatokat, hogy meghatározott funkciókat biztosítsanak. Végeredményben a szoftvermérnökség azt jelenti, hogy mérnöki koncepciókat használnak a szoftverek fejlesztéséhez.”
Másrészt a szoftverfejlesztők a programok mögött álló kreatív hajtóerőt jelentik. A szoftverfejlesztők felelősek a teljes fejlesztési folyamatért. Ők azok, akik együttműködnek az ügyféllel az elméleti terv létrehozásában. Ezután a számítógépes programozókkal elkészíttetik a szoftver megfelelő futtatásához szükséges kódot. A számítógépes programozók a szoftverfejlesztőkkel együtt tesztelik és javítják a problémákat. A szoftverfejlesztők a szoftverfejlesztés életciklusának minden szakaszában projektvezetést és technikai útmutatást nyújtanak.”
Az Udacity egyetért azzal, hogy erős a szétválasztás:
“A szoftverfejlesztő és a szoftvermérnök kifejezések, a közhiedelemmel ellentétben, nem felcserélhetők egymással. Egy Fejlesztő tudja, hogyan kell kódolni, és rendelkezhet az értelmes termékek létrehozásához szükséges technikai készségekkel. Egy szoftvermérnök szisztematikus folyamatot követ a követelmények megértésében, az érdekelt felekkel való együttműködésben és az igényeiket kielégítő megoldás kidolgozásában. Egy fejlesztő általában egyedül dolgozik. A szoftvermérnök egy nagyobb csapat tagja.”
Mit jelent ez a gyakorlatban? Vizsgáljuk meg részletesebben a különbséget.
Szoftvermérnöki készségek és munkaköri leírások
A szoftvermérnök egy magasan képzett szoftverfejlesztő, aki képes egy komplex rendszer irányítására. Olyan személy, aki nem csak egy teljesen működő alkalmazást tud építeni, hanem elég tapasztalt ahhoz, hogy tudja, hogyan kell azt úgy felépíteni, hogy az könnyen refaktorálható, öndokumentáló és ennek eredményeként könnyebben hibakereshető legyen.
Vezetőként, tanácsadóként és egyéni közreműködőként aktív szerepet fog játszani különböző projektekben. Elemzői tanácsot kell adniuk az új informatikai felhasználási módok azonosításában és bevezetésében annak érdekében, hogy segítsék az ügyfeleket és a vállalatot a stratégiai célok elérésében. Képesnek kell lenniük az erőforrások kezelésére, a fejlesztési feladatok koordinálására és a technikai projekttervek felügyeletére. Gyakran együttműködnek az informatikai, üzemeltetési és fejlesztési munkatársakkal a szoftverfejlesztés életciklusán keresztül
Tudják, hogy az előre megfontolt és előrelátó tervezés napokig tartó munkát és fejfájást takaríthat meg a későbbiekben. Nem annak szentelik magukat, hogy a legokosabb kódot készítsék, hanem annak, hogy a kódjuk nyilvánvaló legyen. Tudják, hogy a legjobb kód az, amit soha nem kell megírni.
A szoftvermérnököktől elvárt:
-
Technikai szakértelemmel rendelkezik, sokféle projektben szerzett tapasztalattal
-
Jártas a mintatervezésben, hogy rugalmas és hibatűrő rendszereket hozzon létre
-
Tesztautomatizálást használjon olyan eszközökkel, mint a Gherkin, a Cucumber vagy az Ansible
-
Tudja, hogyan kell létrehozni és karbantartani az IT-architektúrát, nagyméretű adattárolókat és felhőalapú rendszereket.
-
Build scalable deployment pipelines, to support Continuous Integration and Continuous Delivery
-
They must be able to work effectively by themselves and with remote teams.
-
Senior software engineers must oversee complex systems analysis, design and development programs.
A Software Engineer role will typically involve:
-
Research, design, develop and test their software as well as compiling and distributing software over the network
-
Modify existing software is to resolve defects, to adopt a new hardware or improve its performance.
-
Analyze the user needs and assess software requirement including design feasibility and cost/time constraints.
-
Tanácsadás az ügyfelekkel a specifikáció és a tervezés tekintetében.
-
A rendszerszoftver telepítésének és telepítésének koordinálása
-
A technológusok és mérnökök munkájának felügyelete
Szoftverfejlesztői készségek és munkaköri leírás
A szoftverfejlesztő nem csak a kód megírásáért felelős, hanem a jelenlegi rendszert is felül kell vizsgálnia, fejlesztési ötleteket kell adnia, beleértve az ehhez szükséges erőfeszítéseket. A szoftverfejlesztő szorosan együttműködik az elemzőkkel, a végfelhasználókkal/marketinggel és a tervezőkkel.
A szoftverfejlesztőknek azt is biztosítaniuk kell, hogy a kódjuk működik, mégpedig teszteléssel, ellenőrzött és valós helyzetek segítségével, mielőtt éles üzembe helyeznék. Szemüknek a tökéletességre kell törekedniük, hogy megfelelően megoldják a hibákat és a programok felülvizsgálatát a működési hatékonyság növelése érdekében.
A legjobb szoftverfejlesztő kreatív, és rendelkezik azzal a technikai szakértelemmel, hogy innovatív ötlettel álljon elő egy ügyfélprobléma megoldására, és elég tapasztalt ahhoz, hogy sok problémát már azelőtt észrevegyen, mielőtt azok felmerülnének.
A szoftverfejlesztő jellemzően egy olyan fejlesztési életciklus-módszertant vagy szállítási keretrendszert követ, mint a Scrum, XP vagy Kanban.
A szoftverfejlesztőknek rendelkezniük kell:
-
Kiváló analitikai készségekkel, mert folyamatosan össze kell vetniük az igényeket a szoftver képességeivel.
-
A számítógépes programokkal való hatékony munka érdekében ismerniük kell a számítógépes nyelveket, például Java, C#, C++, Python
-
Jártasnak kell lenniük a nyílt forráskódú eszközök, például a GitHub használatában
-
Nagyszerű visszajelzési és kommunikációs készség, valamint nagyfokú figyelem a részletekre, mivel a kisebb hibák komoly problémákat eredményezhetnek
-
A részletorientáltság segít nekik a különböző fejlesztési szakaszokban lévő egyidejű projektek kezelésében.
-
A kód logikájának megértése még az általuk nem ismert nyelveken is.
A szoftverfejlesztőknek folyamatosan figyelemmel kell kísérniük az általuk végzett változtatásokat, beleértve a hibák megoldását is, a magas minőség és a következetesség biztosítása érdekében. Következésképpen folyamatosan váltogatniuk kell a rájuk bízott munkák között, kezelve a határidőket és az ütemterveket.
Összefoglaló
A szoftverfejlesztő és a mérnök közötti fő különbségeket összefoglalva:
A fejlesztő végrehajt. Tehetsége gyakran egyetlen területre összpontosul. A “nagy egész” iránti igény nélkül. Tehát a szoftverfejlesztő elsősorban a szoftverfejlesztési ciklus részét képező kód fejlesztésére összpontosít.
Egy mérnök tervez és tervez, a mérnöki elveket alkalmazva a szoftverfejlesztésre. Mindig tudatában van a “nagy képnek”, több területen is tehetséges. Egy mérnök átveheti a fejlesztői szerepet, de a mérnök fő fókusza az architektúra.
A szoftvermérnökség és a szoftverfejlesztés közötti fő különbség végül is az, hogy az utóbbi a mérnöki munkát felügyeli, míg az előbbi a funkcionális programok létrehozására összpontosít.
Szoftverfejlesztő bárki lehet. Ha egy kis programozási koncepciót ismer, akkor megvan az alapja annak, hogy szoftverfejlesztő legyen. Teljesítmény- és skálázhatósági elemzés nélkül írnak kódot. Ebből az elemből többet a szoftvermérnök végez, így ez a szerepkör különbözik a szoftverfejlesztőtől.
Mindig van valami új, amit megtanulhatsz, ha szoftverfejlesztő vagy mérnök vagy, sokan váltanak a két szerepkör között a projekt és az ügyfél függvényében.
Nézz be a SheCanCode új béta állásbörzéjére, amely a sokszínűséget komolyan vevő vállalatok szerepeit hirdeti meg. A jelenlegi szoftverfejlesztői és szoftvermérnöki szerepek közötti különbséget saját maga is felmérheti.