Jakie są kluczowe różnice między inżynierami oprogramowania i programistami? [Zamknięte]

103

Jakie są kluczowe różnice między inżynierami oprogramowania i programistami?

grokus
źródło
1
Joel zadał już to pytanie. Nie jest to łatwe pytanie i nie jestem pewien, czy odpowiedź jest jednoznaczna. Ale wiem, że Joel już zadał to pytanie.
Denaem,

Odpowiedzi:

80

Przy zatrudnianiu szukamy rozróżnienia między kimś, kto będzie mógł nam pomóc w zaprojektowaniu naszego systemu, zdefiniowaniu procesów, tworzeniu specyfikacji technicznych, wdrożeniu zaawansowanego refaktoryzacji itp., A kimś, kto pomoże nam ukończyć zadania programistyczne poza listą kontrolną . Wierzę, że możesz nazwać tego pierwszego inżynierem oprogramowania, a drugim programistą .

Nicole
źródło
10
Czy możesz wyjaśnić, czy zatrudniasz zarówno (dla różnych prac), czy tylko inżynierów oprogramowania?
Jaap
2
Państwo mogłoby wywołać byłego inżynier oprogramowania, ale ja nie. Jak Brendan się wymyka, jest to zazwyczaj praca architekta oprogramowania.
JᴀʏMᴇᴇ
131

To naprawdę zależy od firmy, ponieważ nie sądzę, aby istniały ramy prawne do egzekwowania denominacji lub innej, a przynajmniej nie jestem tego świadomy i może to różnić się w zależności od kraju (na przykład użycie terminu „inżynier” jest właściwie dość regulowany we Francji, ale istnieją warianty, które są dozwolone w przypadkach „nadużycia”).

Biorąc to pod uwagę, ogólny trend wygląda następująco:

  • Stanowisko programisty to zwykle stanowisko profesjonalisty zatrudnionego do opracowania kodu programu komputerowego . Będzie to oznaczało, że umiesz pisać kod , rozumiesz algorytm i postępujesz zgodnie ze specyfikacjami . Zazwyczaj jednak kończy się to pod względem odpowiedzialności.

  • Stanowisko programisty jest zwykle uważane za nadtyp pozycji programisty . Obejmuje on te same obowiązki, a także możliwość zaprojektowania i zaprojektowania komponentu oprogramowania oraz napisania dokumentacji technicznej (w tym specyfikacji). Jesteś w stanie - przynajmniej technicznie - poprowadzić innych (więc programistów), ale niekoniecznie zespół (pojawia się problem ...)

  • Stanowisko inżyniera zwykle sugeruje, że jesteś programistą, który ma określony stopień naukowy , trochę wiedzy inżynierskiej i jest w stanie zaprojektować system (jak w: kombinacja komponentów / modułów oprogramowania, które razem tworzą całość bytu programowego) . Zasadniczo widzisz szerszy obraz i jesteś w stanie zaprojektować i wyjaśnić go oraz podzielić na mniejsze moduły .

Jednak wszystko to jest dyskusyjne i, jak powiedziałem, nie ma żadnych wymagań prawnych, o których jestem świadomy w krajach USA / Wielkiej Brytanii . Biorąc to pod uwagę, we Francji możesz nazywać się „inżynierem” tylko, jeśli pochodzisz ze szkoły inżynierskiej (uznanej przez Commission des Titres d'Ingenieurs lub coś w tym rodzaju). Nie możesz powiedzieć, że masz „stopień inżyniera”, ale możesz powiedzieć, że masz „stopień inżyniera”, jeśli studiowałeś dyscyplinę, która wchodzi w zakres inżynierii i technologii.

Być może niektóre kraje mają podobne rozróżnienie, po prostu tak naprawdę nie wiem.

Powrót do tytułu inżyniera oprogramowania ... Kiedyś jeden z moich nauczycieli powiedział naszej klasie - i słusznie - że na dzień dzisiejszy nie ma czegoś takiego jak tak zwana „inżynieria oprogramowania” . Ponieważ inżynieria czegoś (czy to budynku, pojazdu, sprzętu ...) oznacza, że ​​jesteś w stanie przewidzieć jego projekt i wszystkie fazy jego produkcji, a także dokładnie przewidzieć, jakich zasobów będziesz potrzebować, a tym samym koszt produkcji.

Dotyczy to większości „prawdziwych” dyscyplin inżynieryjnych. Istnieją oczywiście wahania (na przykład ceny materiałów będą się zmieniać w czasie), ale istnieją bardzo skończone modele teoretyczne (do projektowania i planowania) i modele empiryczne (w celu zachowania któregokolwiek z tych pierwszych w ramach dostępnych ograniczeń) które pozwalają przewidzieć datę zakończenia projektu i wykorzystanie jego zasobów.

Głównym problemem związanym z oprogramowaniem jest to, że jeszcze go tam nie ma. Chcemy dążyć do inżynierii oprogramowania, ale tak naprawdę nas jeszcze nie ma. Ponieważ mamy bardzo płynne i dynamiczne środowisko, bardzo zmienne ograniczenia dla projektów i wciąż brak dojrzałości z perspektywy naszych procesów. Pewnie moglibyśmy powiedzieć, że jesteśmy w tym lepsi (choć jest to wysoce sprzeczne z twardymi danymi), ale byliśmy w tym dopiero od lat 60. (wcześniejsze projekty były faktycznie bliżej komputerów tylko sprzętowych, a zatem jak na ironię, jak na ironię) ). Podczas gdy budujemy pojazdy silnikowe od ponad wieku, pojazdy w ogóle przez kilka tysiącleci, i budujemy jeszcze więcej tysiącleci (i byliśmy w tym naprawdę cholernie dobrzy w niektórych częściach świata, dzięki czemu czujesz się jak my „

Nie potrafimy systematycznie dokładnie przewidzieć terminów , nie potrafimy systematycznie dokładnie przewidzieć kosztów , nie potrafimy systematycznie identyfikować i ograniczać nieodłącznego i zewnętrznego ryzyka w sposób skuteczny i deterministyczny . Najlepsze, co możemy zrobić, to stworzyć wystarczająco dobre prognozy i pomieścić bufor, jednocześnie starając się zoptymalizować procesy w celu zmniejszenia liczby cykli i kosztów ogólnych.

Ale zobacz, może taka właśnie jest inżynieria. I właśnie wtedy, gdy ktoś mówi o „inżynierze oprogramowania”, powinien pomyśleć i dążyć do niego.

Wydaje się więc, że nie jest to łatwe do zastąpienia prostym procesem programowania lub bardziej zaawansowanym opracowywaniem aplikacji.

Mimo wszystko wszystko jest kwestią trendów. Ostatnio dość powszechne jest posiadanie horyzontalnego zespołu programistów, w którym wszyscy w zespole są starszymi programistami (tak, stolice, ponieważ to sprawia, że ​​czujemy się wyjątkowi, prawda?), Bez rzeczywistego rozróżnienia wieku (dość uczciwie, moim zdaniem opinia) i nie tyle rozróżnienia umiejętności (uh-oh ...) i obowiązków (teraz to nie może być dobre, poza czysto szumem PR).

Jest to także czasami tylko siła przyzwyczajenia i specyficzne dla danej kultury i żargonu branży. Więcej stanowisk dla produkcji oprogramowania wbudowanego korzysta z tytułów dla inżynierów oprogramowania. Głównie dlatego, że prawdopodobnie oznaczałoby to, że zawsze będziesz musiał do pewnego stopnia radzić sobie ze sprzętem również w tej dziedzinie, więc oczywiście masz do czynienia z innymi aspektami produkcji i całego produkowanego przez ciebie „systemu”. Nie tylko kawałki wariują w nim. Z drugiej strony spektrum, tak naprawdę nie widzisz terminu inżyniera używanego na stanowiskach produkcyjnych oprogramowania finansowego. Jest to spowodowane tym, że jest mimetyczną ewolucją tej branży od jednego z jej poprzedników (powiedzmy, inżynieria osadzona ma swoje korzenie w inżynierii samochodowej, na przykład), lub dlatego, że chcą po prostu przypisać większą lub mniejszą wagę pozycji.

Aby upewnić się, że wszyscy zgubią się we mgle, znajdziesz inne tytuły mieszające oba (np. „Inżynier rozwoju oprogramowania” lub „Inżynier oprogramowania w teście”!), A także inne, podkreślające jeszcze bardziej zwariowane mosty z innymi domenami ( pomyśl o „Architekcie oprogramowania” i o tym, jak „architektura oprogramowania” może być bezwstydną kradzieżą słownictwa). I niech nadchodzą: Inżynier ds. Wydania, Menedżer ds. Zmian zmian, Inżynier budowania (tam też jest ffaaarrrrrr). A czasami po prostu „inżynier”.

Mam nadzieję, że pomogło, choć tak naprawdę nie jest to odpowiedź.

Aha, a to oznacza, że ​​twoja nowa firma albo próbuje cię zwabić nowym tytułem, albo że tak naprawdę nie dbają o tytuły, albo że naprawdę będziesz zajmować wyższe stanowisko. Jedynym sposobem na poznanie jest zapoznanie się ze specyfikacją pracy, porozmawianie z nimi, a następnie spróbowanie i samodzielne osądzenie. Mam nadzieję, że jest to druga opcja i że jesteś z niej zadowolony (i potencjalnie zarobisz na niej więcej). ;)

Haylem
źródło
12
Książka „Pragmatyczny programista” mówi również, że oprogramowanie nie przypomina inżynierii. Chociaż można zaplanować dom lub wieżowiec, z trudem można zastosować analogię do inżynierii oprogramowania. Mówią: Oprogramowanie bardziej przypomina ogrodnictwo. Zaplanuj ogród, posadź rośliny. Następnie zobacz, co rośnie, usuń chwasty i posadź nowe rośliny.
Falcon,
6
„Kiedyś mój nauczyciel powiedział naszej klasie, że na dzień dzisiejszy nie ma czegoś takiego jak tak zwana„ inżynieria oprogramowania ”. Ponieważ inżynieria coś oznacza, że ​​jesteś w stanie przewidzieć jego projekt i wszystkie fazy jego produkcji oraz przewidzieć z dokładnością zasoby, których będziesz potrzebować ". To było prawdopodobnie nieprawdziwe w chwili, gdy zostało napisane. Podobnie jak architektura, nie możemy przewidzieć kosztów bez znajomości wymagań (ile kosztuje drapacz chmur? Nie powiem ci, jak wysoka musi być wysokość, zanim zaczniesz budować ...). Ale później możemy przewidzieć koszty, biorąc pod uwagę dojrzałą grupę programistów.
MSalters
1
@MSalters: Jasne, możesz to zmienić: podobnie jak architektura, nie możemy przewidzieć kosztów bez wymagań. Ale w przeciwieństwie do architektury , nawet przy ściśle określonych wymaganiach (chociaż nasze są często bardziej płynne, ponieważ trudniej je przewidzieć lub mamy tendencję, aby pozwolić im się zmieniać), nie możemy przewidzieć kosztów. Możesz to zrobić w normalnej inżynierii z bardzo dokładnym poziomem precyzji, a my jesteśmy obecnie w stanie zidentyfikować koszty w nadzwyczajnych okolicznościach niż w SE. Robimy tylko (dość zgrubne) prognozy. Robimy je coraz lepiej, ale wciąż są to domysły.
haylem,
3
@haylem: To norma w tworzeniu oprogramowania. Ale jeśli pracowałeś w firmie CMM na poziomie 4/5, zauważysz, że mogą przewidzieć koszty i często dołączają do nich 95% poziomy ufności. Rozumieją swoją bazę oprogramowania wystarczająco dobrze i mają wystarczająco dobre wymagania, że ​​blokady są rzadkie. A koszt blokad drogowych jest niższy, jeśli masz doświadczenie w radzeniu sobie z nimi.
MSalters
1
@pcurry: uwaga: nie twierdzę, że jest to „moja taksonomia”. Jest to dość powszechnie postrzegane w ten sposób przez rekruterów i płace firmowe, a także tak często jest postrzegane na kursach CS ot IT. Zwykle strzelają do siebie. Wydaje mi się, że wymieniłem pogląd, który przyjęli (tak zwani) inżynierowie oprogramowania bardziej niż (opisani) programiści, oczywiście. Tak naprawdę nie ma znaczenia, jak się nazywasz, liczy się to, co ludzie będą uważać za ważne. I to ma znaczenie tylko, jeśli zależy ci na tego rodzaju rzeczach. Szczerze mówiąc, osobiście nie dbam o to, aby być jednym lub drugim, nie zmienia mnie.
haylem
81

Inżynierowie oprogramowania to ludzie pracujący w firmach, które nazywają ludzi piszących dla nich oprogramowanie „inżynierami oprogramowania”.

Programiści to ludzie pracujący w firmach, które nazywają ludzi piszących dla nich oprogramowanie „programistami”.

Są też programiści lub programiści . Są to osoby pracujące w firmach, które nazywają ludzi, którzy piszą dla nich, odpowiednio „programistami” lub „programistami”.

Jer
źródło
26
Powinienem zauważyć, że ta odpowiedź nie była naprawdę zabawna.
Jer
15

Jest więc „Inżynier oprogramowania”, „Programista”, a także „Developer”, „Coder” i nigdy nie można zapomnieć o „ekspercie SOA”

Są to wszystkie warunki marketingowe dla osób, które nie mogą powiedzieć czegoś znaczącego w swoim CV, na przykład faktycznej roli (nie tylko stanowiska) na poprzednich stanowiskach.

W przypadku ogłoszeń o pracę różnica leży po stronie HR.

Podsumowując: każda osoba ma swoje własne zdanie na temat „tego, co czyni dobrego pracownika działającym z kodem”, a niektórzy lubią kojarzyć takie i takie umiejętności z takimi i takimi tytułami.

Co musisz zrobić Ogłoszenia o pracy powinny zawierać opis wymaganych umiejętności, a CV powinny wyjaśniać szczegóły doświadczenia kandydata.

Ken Egozi
źródło
10

Żadnych różnic. To są te same rzeczy. Firmy mogą jednak mieć formalne opisy stanowisk, używając terminów, a następnie może mieć znaczenie dla danego terminu.

Grandmaster B.
źródło
8

Programowanie dotyczy kodu. Inżynieria oprogramowania dotyczy produktu końcowego.

darreljnz
źródło
3

To naprawdę zależy od tego, jak firma określa stanowiska. Może być tak, że jako inżynier oprogramowania będziesz mieć więcej możliwości decyzji projektowych, podczas gdy jako programista dostarczy Ci diagramy UML i napiszesz program.

Ale nie ma rzeczywistej definicji zestawu, więc na podstawie tytułu ludzie będą wiedzieli, co robisz lub jakie masz doświadczenie.

Gdy byłem architektem / programistą, miałem tytuł informatyka, ale chciałbym tylko powiedzieć ludziom, że jestem programistą, ponieważ pierwszych dwóch nie można łatwo zdefiniować, ale większość ludzi wie, co robi programista.

Jeśli tytuł jest dla Ciebie ważny, zaakceptuj nowy, ponieważ inżynier brzmi wyżej niż programista.

James Black
źródło
3

Wydaje mi się, że nie ma żadnych „oficjalnych różnic”, które mogą oznaczać:

  • Niektóre firmy używają inżynierów oprogramowania i programistów, by odnosić się do tego samego. Po prostu używają swojego ulubionego terminu.
  • Inne wykorzystują oba warunki dla różnych pozycji wewnętrznych, ale role różnią się w zależności od firmy! W niektórych przypadkach może to być tylko różnica w funkcji (soft. Inżynier będzie pracował nad utrzymaniem i ulepszaniem systemów, podczas gdy programista będzie pracował nad produktem firmy), lub może być hierarchiczny (inżynier jest ponad deweloperem), a nawet inżynier jest naprawdę zależny od pytań i odpowiedzi!

Zmieniają się też terminy związane z modą ... Najpierw terminem był „programista”, potem „inżynier oprogramowania”, a teraz wydaje się być „programistą” ...

Lepiej jest przeczytać opis stanowiska lub komuś z konkretnej firmy

Khelben
źródło
3

W niektórych jurysdykcjach „Inżynier” niesie ze sobą wymóg bycia profesjonalnym inżynierem, tj. Posiadania inż. zaprzeczanie poświadczeniom. Jednak w innych obszarach może nie być takiej różnicy, jak kilka lat temu byłem „inżynierem projektowania oprogramowania” pracującym w stanie Waszyngton.

JB King
źródło
2

Inżynierowie oprogramowania zwykle pracują na bardzo dużych systemach, których opracowanie zajmuje wiele lat, np. Od 5 do 16 lat. Programiści zwykle mają ten stereotyp kodowania i nic więcej. Ale tak naprawdę zależy to od organizacji, w której pracujesz i od tego, jak dział HR promuje tę rolę, jak wyjaśniono powyżej. Są zasadniczo takie same. Tylko nie przywiązuj się zbytnio do tytułu, ponieważ jest on synonimem.


źródło