SheCanCode
Odpověď? Záleží na tom, koho se zeptáte!
Oficiální rozlišení mezi těmito rolemi neexistuje, společnosti používají vlastní zkušenosti a znalosti, aby definovaly popisy, které vyhovují jejich potřebám. Aby to bylo ještě zamotanější, mohou existovat i regionální rozdíly, přičemž výrazný rozdíl je i ve vzdělání. Různé zdroje dat však lze vyhodnotit a analyzovat a vyvodit z nich závěry.
Podle Computer Science Degree Hub mají vývojáři softwaru a softwaroví inženýři odlišné role:
„Softwarové inženýrství se týká aplikace inženýrských principů při tvorbě softwaru. Softwaroví inženýři se podílejí na životním cyklu vývoje softwaru tím, že propojují potřeby klienta s použitelnými technologickými řešeními. Systematicky tedy vyvíjejí procesy pro zajištění konkrétních funkcí. Softwarové inženýrství nakonec znamená použití inženýrských konceptů k vývoji softwaru.
Na druhé straně jsou vývojáři softwaru hybnou tvůrčí silou programů. Vývojáři softwaru jsou zodpovědní za celý proces vývoje. Jsou to oni, kdo spolupracují se zákazníkem na vytvoření teoretického návrhu. Poté nechají počítačové programátory vytvořit kód potřebný pro správný běh softwaru. Počítačoví programátoři společně s vývojáři softwaru testují a odstraňují problémy. Vývojáři softwaru poskytují vedení projektu a technické vedení v každé fázi životního cyklu vývoje softwaru.“
Udacity souhlasí s tím, že existuje výrazné oddělení:
„Pojmy vývojář softwaru a softwarový inženýr nejsou v rozporu s obecným přesvědčením zaměnitelné. Vývojář umí kódovat a může mít technické dovednosti potřebné k vytvoření smysluplných produktů. Softwarový inženýr se řídí systematickým procesem porozumění požadavkům, spolupráce se zainteresovanými stranami a vývoje řešení, které naplní jejich potřeby. Vývojář má tendenci pracovat sám. Softwarový inženýr je součástí většího týmu.“
Co to tedy znamená v praxi? Pojďme tento rozdíl prozkoumat podrobněji.
Softwarový inženýr – dovednosti a náplň práce
Softwarový inženýr je vysoce odborný vývojář, který je schopen řídit složitý systém. Člověk, který je nejen schopen vytvořit plně funkční aplikaci, ale je dostatečně zkušený na to, aby věděl, jak ji vytvořit tak, aby se dala snadno refaktorovat, sama dokumentovat a v důsledku toho i snadněji ladit.
Bude hrát aktivní roli vedoucího, konzultanta i samostatného přispěvatele na různých projektech. Musí poskytovat analytické poradenství při identifikaci a implementaci nových způsobů využití IT s cílem pomoci klientům a společnosti dosáhnout strategických cílů. Musí být schopni řídit zdroje, koordinovat vývojové úkoly a dohlížet na technické plány projektů. Často spolupracují s IT, provozními a vývojovými pracovníky v průběhu celého životního cyklu vývoje softwaru
Vědí, že rozvaha a předvídavost na začátku může ušetřit dny práce a bolesti hlavy v budoucnu. Nevěnují se tvorbě nejchytřejšího kódu, ale tomu, aby byl jejich kód zřejmý. Vědí, že nejlepší kus kódu je ten, který nikdy nemusíte psát.
Očekává se, že softwaroví inženýři:
-
Mají technické znalosti se zkušenostmi s prací na široké škále projektů
-
Zvládají návrh vzorů pro vytváření odolných a chybám odolných systémů
-
Používají automatizaci testování pomocí nástrojů, jako je Gherkin, Cucumber nebo Ansible
-
Vědí, jak vytvářet a udržovat IT architekturu, rozsáhlá datová úložiště a cloudové systémy.
-
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.
-
Konzultace se zákazníky ohledně specifikace a návrhu.
-
Koordinace systémového softwaru pro nasazení a instalaci
-
Dohled je práce technologů a inženýrů
Kvalifikace a náplň práce vývojáře softwaru
Vývojář softwaru není zodpovědný pouze za psaní kódu, musí také revidovat stávající systém, předkládat nápady na zlepšení, včetně úsilí, které je k tomu potřeba. Vývojář softwaru bude úzce spolupracovat s analytiky, koncovými uživateli/marketingem a designéry.
Vývojáři softwaru musí také zajistit, aby jejich kód fungoval, a to jeho testováním pomocí řízených i reálných situací předtím, než jej budete moci uvést do ostrého provozu. Musí mít smysl pro dokonalost, aby správně řešil chyby a revize programů pro zvýšení efektivity provozu.
Nejlepší vývojář softwaru je kreativní a má technické znalosti, aby přišel s inovativním nápadem na řešení problému zákazníka, a je dostatečně zkušený, aby viděl mnoho problémů dříve, než nastanou.
Vývojář softwaru obvykle postupuje podle metodiky životního cyklu vývoje nebo rámce dodávek, jako je Scrum, XP nebo Kanban.
Vývojáři softwaru musí mít:
-
Vynikající analytické schopnosti, protože budou muset neustále porovnávat potřeby s možnostmi softwaru.
-
Musí znát počítačové jazyky, aby mohli efektivně pracovat s počítačovými programy, jako jsou Java, C#, C++, Python
-
Musí mít zkušenosti s používáním open source nástrojů, jako je GitHub
-
Skvělou zpětnou vazbu a komunikační dovednosti s velkým smyslem pro detail, protože drobné chyby mohou vést k velkým problémům
-
Zaměření na detail jim pomůže zvládat souběžné projekty v různých fázích vývoje.
-
Pochopit logiku kódu i v jazycích, které neznají.
Vývojáři softwaru musí neustále sledovat prováděné změny, včetně řešení chyb, aby byla zajištěna vysoká kvalita a konzistence. V důsledku toho musí neustále přecházet mezi přidělenou prací, řídit termíny a harmonogramy.
Shrnutí
Shrneme-li hlavní rozdíly mezi softwarovým vývojářem a inženýrem:
Vývojář provádí. Jejich talent se často zaměřuje na jednu oblast. Bez potřeby „širšího pohledu“. Softwarový vývojář se tedy zaměřuje především na vývoj kódu, který je součástí vývojového cyklu softwaru.
Inženýr navrhuje a plánuje s využitím principů inženýrství při vývoji softwaru. Vždy si uvědomuje „celkový obraz“ a má nadání pro mnoho oblastí. Inženýr může převzít roli vývojáře, ale hlavní zaměření inženýra spočívá v architektuře.
Nakonec hlavní rozdíl mezi softwarovým inženýrstvím a vývojem softwaru spočívá v tom, že inženýrství dohlíží na vývoj softwaru, zatímco inženýr se zaměřuje na vytváření funkčních programů.
Softwarovým vývojářem může být každý. Pokud znáte alespoň malou část konceptu programování, pak máte základ pro to, abyste se stali vývojářem softwaru. Ti píší kód bez jakékoliv analýzy výkonnosti a škálovatelnosti. Více těchto prvků doplňuje softwarový inženýr, čímž se tato role liší od role softwarového vývojáře.
Jste-li softwarovým vývojářem nebo inženýrem, vždy se můžete naučit něco nového, přičemž mnoho lidí přechází mezi oběma rolemi v závislosti na projektu a klientovi.
Podívejte se na SheCanCode new Beta Job Board, který inzeruje role od společností, které berou diverzitu vážně. Sami můžete posoudit rozdíl mezi současnými rolemi softwarového vývojáře a softwarového inženýra.