W przeciwieństwie do innych zawodów (takich jak rachunkowość, prawo, medycyna itp.), Nie ma certyfikatu dla całego zawodu inżynierii oprogramowania.
Jestem w pełni świadomy wielu certyfikatów specyficznych dla technologii i metodologii, które mają służyć jako dowód specjalizacji i doświadczenia, ale nie ma publicznego społeczeństwa / organu zarządzającego inżynierią oprogramowania, które ustanawia (i ma uprawnienia do legalnej oceny) ogólnie przyjętych standardów zawodowych .
Rozumiem, że oprogramowanie jest dynamiczną bestią - to po części sztuka, po części nauka - ale zastanawiam się, czy inżynieria oprogramowania może stać się formalnym zawodem.
Co musi się zmienić, aby tak się stało i czy byłoby to w ogóle dobre?
(Jeśli ktoś zna formalne badania tego tematu, bardzo doceniłbym referencje)
Aktualizacja
Zgadzam się z wieloma pozytywnymi uwagami przedstawionymi poniżej dotyczącymi aktualnego poziomu certyfikacji w inżynierii oprogramowania. Uważam również za bardzo interesujące, że niektóre kraje traktują inżynierię oprogramowania jako zawód, podczas gdy inne nie.
Wydaje się jednak, że wokół terminu „zawód formalny” i jego zastosowania do inżynierii oprogramowania jest trochę całun. Myślę, że kluczowym problemem związanym z inżynierią oprogramowania - i głównym powodem, dla którego nie jest to pełnoprawny zawód - jest to, że jeśli jesteś certyfikowanym inżynierem oprogramowania i - na przykład - jakimś oprogramowaniem napisanym dla awarii windy i zabija ludzi, twoja certyfikacja i / lub członkostwo w formalnej organizacji zawodowej nie zostaną cofnięte.
Jasne, twoja firma może zostać pozwana za miliony, a ty osobiście możesz stracić pracę i zdobyć złe referencje, ale ogólnie mówiąc, osobiście jesteś chroniony przez tarczę ograniczonej odpowiedzialności w wyniku zatrudnienia przez tę firmę. Innymi słowy, i o ile mi wiadomo, nie ma prawnej oceny / egzekwowania prawa (w przeciwieństwie do innych formalnych zawodów i ich stowarzyszeń rządzących), które mają mandat do oficjalnego zakazania ci handlu po tym, jak zrobisz kolosalne rzeczy. .
Bardzo podobała mi się odpowiedź, która dotyczyła faktu, że inżynieria oprogramowania - w obecnej formie - jest merytokracją, która nie musi być formalnym zawodem, i że jest to dobra rzecz, która nie powinna się zmienić. Jednocześnie uważam, że musimy wprowadzić wyraźne rozróżnienie między programistami oprogramowania o znaczeniu krytycznym a twórcami oprogramowania różnego / niekrytycznego.
Dla tych z was, którzy pracują / pracowali nad oprogramowaniem o znaczeniu krytycznym - czy istnieje jakaś osobista odpowiedzialność? Czy na pewno istnieje potrzeba formalnych konsekwencji w przypadku popełnienia kosztownego błędu przez inżyniera oprogramowania?
źródło
Odpowiedzi:
Na podstawie dostępnych informacji uważam, że inżynieria oprogramowania to już formalny zawód. Może nie być powszechnie akceptowany jako taki, ale spełnia ogólnie przyjęte kryteria dla cech zawodu.
Z artykułu Wikipedii na temat zawodu :
Cytuje obszernie The Rise of Professionalism: A Sociological Analysis Magali Sarfatti Larson . Poszukiwanie „cech zawodu” zwykle prowadzi do podobnych wyników.
Jak inżynieria oprogramowania ma się do tych cech?
Stowarzyszenie zawodowe Istnieje wiele stowarzyszeń zawodowych dla inżynierów oprogramowania. IEEE a dokładniej IEEE Computer Society służyć profesjonalistów pracujących w budownictwie na całym świecie, z IEEE Computer Society koncentrując się szczególnie na inżynierów komputerowych i oprogramowania. ACM to kolejna organizacja zawodowa dla profesjonalistów pracujących w informatyce, zazwyczaj w obu Amerykach. Istnieje także British Computer Society , które zajmuje się różnymi aspektami zawodów związanych z technologiami informacyjnymi i komunikacyjnymi, ogólnie w Wielkiej Brytanii.
Baza poznawcza Ciało wiedzy inżynierii oprogramowania jest sponsorowane przez IEEE, Boeing, National Research Council Canada, Raytheon, Construx Software, Canadian Council of Professional Engineers, MITER Corporation, NIST, Rational, SAP (dla wersji z 2004 roku). Rozpoczęto go specjalnie jako krok w kierunku „uczynienia inżynierii oprogramowania legalną dyscypliną inżynieryjną i uznanym zawodem” .
Zinstytucjonalizowane szkolenia W Stanach Zjednoczonych programy informatyczne, informatyczne i inżynierii oprogramowania mogą być akredytowane przez ABET . W Kanadzie programy informatyczne i inżynierii oprogramowania są akredytowane przez CIPS . Organizacje te określają minimalne standardy i oczekiwane wyniki dla studentów kończących akredytowany program, aby umożliwić im funkcjonowanie w środowisku zawodowym. IEEE oferuje również dwa egzaminy oparte na wiedzy z zakresu inżynierii oprogramowania - egzamin Certified Software Development Associate dla studentów (lub studentów, którzy niedawno ukończyli studia) oraz egzamin Certified Software Development Professional dla specjalistów w połowie kariery.
Licencje Od kwietnia 2013 r. NCEES oferuje egzamin z inżynierii zawodowej z inżynierii oprogramowania . Jest oferowany w poszczególnych stanach w Stanach Zjednoczonych. Jednak egzamin inżynierii oprogramowania nie jest obecnie oferowany przez wszystkie państwa, a jeszcze mniej wymaga licencji. Artykuł opublikowany w numerze IEEE Software z listopada / grudnia 1999 r, omawia wymagania licencyjne w stanie Teksas oraz krótką dyskusję na temat licencjonowania w Ontario i Kolumbii Brytyjskiej, Kanadzie i Wielkiej Brytanii. W Teksasie licencja jest wymagana tylko do pracy nad projektowaniem, testowaniem lub wdrażaniem systemów wbudowanych lub w czasie rzeczywistym, które „wymagają szczegółowego zrozumienia zaprojektowanych elementów elektrycznych lub mechanicznych” oraz systemów oprogramowania dla „urządzeń mechanicznych, urządzeń elektrycznych i systemy zasilania ”- stosunkowo niewielka ilość prac programistycznych. W stanach oferujących licencję najgorszym scenariuszem jest postępowanie dyscyplinarne, sankcje lub utrata licencji w przypadku zgłoszenia przez klienta lub pracodawcę. Jednak jedyna prawdziwa szkoda występuje w stanach, które wymagają licencji - chyba że licencja jest wymagana do wykonania pracy, utrata jej nic nie znaczy.
Kodeks etyki ACM i IEEE Computer Society stworzyły Kodeks etyki i praktyki zawodowej inżynierii oprogramowania . W Stanach Zjednoczonych absolwenci akredytowanych programów ABET, w tym programów inżynierii oprogramowania, mogą również dołączyć do Order of the Engineer , który utrzymuje kodeks etyczny, który ogólnie dotyczy profesjonalnych inżynierów.
Autonomia pracy, kontrola kolegi, wysokie standardy doskonałości zawodowej i intelektualnej Są one często widoczne w środowisku, w którym inżynieria oprogramowania jest traktowana jako dyscyplina inżynierska. To znaczy, że nie wszyscy pracodawcy (lub freelancerzy) traktują rozwój oprogramowania jako inżynierię.
źródło
Powszechnie przyjęty i uznany profesjonalny organ dla programistów / inżynierów / architektów / itp. Nie byłby dobry.
Obecnie jest to jedna z niewielu dziedzin, które mogą działać jako merytokracja. W tym momencie nie dbam o to, jaki masz stopień (lub jeśli masz go w ogóle), ile masz stażu pracy, jakie znasz języki itp. Stosunkowo łatwo jest ustalić, czy jesteś dobrym programistą, czy nie i na koniec dnia to jedyna rzecz, która ma znaczenie. tj. Czy potrafisz załatwić sprawę?
Obecnie oceniasz swoje umiejętności, a nie jakąś akredytację, którą ktoś ci przyznał. I to jest sprawiedliwe, Dobra Rzecz (tm).
źródło
Nic nie musi się zmienić.
Jak zauważył Thomas , inżynieria oprogramowania to już zawód. Można to nazwać inżynierią, programowaniem, hackowaniem i / lub rzemieślnictwem, ale jest to zawód i wiele osób zarabia na tym.
Myślę, że twoje pytanie dotyczy licencji.
W tej chwili nie ma formalnej licencji na inżynierię oprogramowania. Każdy, kto ma dość inteligencji i umiejętności programowania, może zostać zatrudniony i opłacony za tworzenie kodu niż działa na maszynie lub urządzeniu.
W przeciwieństwie do innych branż (prawo i medycyna są przykładami cytowanymi w pytaniu). Wymagana jest licencja na te zawody. Każdy może prowadzić samochód, ale aby legalnie prowadzić samochód, musisz mieć prawo jazdy na kierowcę to kolejny przykład. Każdy może programować, nie wymaga licencji ani certyfikatów.
Teraz wierzę, że licencjonowanie jest dobre, ponieważ dowodzi, że ktoś ma zdolność do zrobienia czegoś (np. Prowadzenia samochodu) i zna tajniki zasad (drogowych).
Podobna licencja może być wymagana do inżynierii oprogramowania, ale nie sądzę, aby przyniosła wiele dobrego. W rzeczywistości jest wielu licencjonowanych kierowców, którzy są okropnymi kierowcami, więc fakt, że masz licencję, nie oznacza, że jesteś dobrym kierowcą lub programistą.
Licencja tworzy barierę wejścia, co w tej branży nie byłoby dobrą rzeczą, więc nie widzę żadnej widocznej korzyści z takiego licencjonowania.
Firmy, które zatrudniają inżynierów oprogramowania, powinny zdecydowanie przetestować możliwości tego potencjalnego programisty za pomocą „testu programistycznego” (i nie mówię o fizycznym szumie) na podstawie wymaganego zestawu umiejętności. Programiści posiadający „certyfikaty” dobrze wyglądają na papierze, ale naprawdę powinni zostać poddani testowi w realnym świecie w celu oceny doświadczenia i umiejętności.
źródło
Myślę, że powinno być możliwe zostać certyfikowanym programistą, zdając egzamin tak, jak prawnik zdaje egzamin adwokacki. Uważam również, że programiści niecertyfikowani powinni nadal być w stanie działać jako programiści. Różnica polega na tym, że pracodawcy mogliby reklamować się specjalnie dla certyfikowanych programistów, jeśli tego właśnie chcą, a certyfikowany programista miałby pewne gwarancje odpowiedzialności, a także wyższą cenę.
Zgadzam się z plakatem, który mówi, że tworzenie oprogramowania jest błędnym bałaganem bez odpowiedzialności. Nie sądzę, że tak musi być. Są programiści, którzy chcą tworzyć dobre oprogramowanie i chcą ponosić za nie odpowiedzialność. Potrzebujemy tylko sposobu na wyróżnienie się.
Tworzę oprogramowanie od ponad 20 lat. Nie twierdzę, że dzięki temu sam jestem świetnym programistą, ale uważam, że jestem całkiem dobrym programistą. Problem polega na tym, że muszę ciągle pokazywać, dlaczego jestem lepszym programistą niż każde dziecko, które uczyło się programowania w wolnym czasie i chce takiej samej pracy jak ja. Nie wspominając już o legionach deweloperów „offshore”, którzy obiecują wykonać tę samą pracę za ułamek pieniędzy. W tej chwili wymaga to dużego wysiłku. Muszę dostarczyć próbki pracy, referencje, przystąpić do testów, przeprowadzić wywiady. Mogłem łatwo mieć zły dzień, popełnić błąd podczas testu i zostać zdyskwalifikowanym. Wolę tylko powiedzieć „tak, jestem certyfikowanym programistą i oto mój certyfikat”. Nadal będę musiał przeprowadzać wywiady, ale przynajmniej konkurowałbym tylko z innymi certyfikowanymi programistami.
źródło
Nigdy, przynajmniej nie do końca. Oprogramowanie jest medium, podobnie jak farba. Są ludzie, którzy wykonują malowanie dużych konstrukcji na skalę przemysłową, są ludzie, którzy projektują nowe farby, aby wykonywać je według wysokich standardów, ale są też ludzie, którzy kupują farby do drobnych prac, takich jak malowanie szopy, i jeszcze inni, którzy mogą mieszać własną farbę, ale używaj jej tylko do malowania zdjęć kotów.
Podobnie, chociaż widziałem przyszłość, w której krytyczne dla bezpieczeństwa i / lub finansowe oprogramowanie potrzebuje akredytowanych inżynierów pracujących nad nim, nigdy nie będzie potrzeby ludzi produkujących oprogramowanie artystyczne lub rozrywkowe. Co należy zmienić, aby uzyskać oprogramowanie zabezpieczające lub finansowe wymagane od akredytowanych inżynierów? Podobnie jak w przypadku innych zawodów wymagałoby to prawo, aby je upoważnić.
źródło
Oprogramowanie nie jest zawodem i nigdy nim nie będzie.
„Zawód powstaje, gdy jakikolwiek handel lub zawód przekształca się poprzez rozwój formalnych kwalifikacji opartych na edukacji, przyuczaniu do zawodu i egzaminach, powstanie organów regulacyjnych uprawnionych do przyjmowania i dyscyplinowania członków oraz pewien stopień praw monopolistycznych”.
Ten opis w ogóle nie pasuje do oprogramowania.
Po pierwsze, każdy zainteresowany oprogramowaniem może wyjść i spróbować znaleźć oprogramowanie do rozwijania pracy. Wiele osób ma wykształcenie wyższe całkowicie niezwiązane z programowaniem komputerowym, a wielu nie ma żadnego dyplomu. Nic nie powstrzyma żadnej z tych grup od zostania programistami.
Oprogramowanie nie może stać się zawodem, ponieważ „licencjonowani” członkowie stają się odpowiedzialni za wyrządzone przez nich szkody i ich nadużycie. Tylko 80–90% programistów straci pracę w ciągu kilku lat.
Ogólnie jakość oprogramowania jest okropna, podatna na błędy i po prostu niezbyt dobrze zrobiona. Czy to jest warte zawodu? Czy przewidujesz, że przestaniesz, bo ludzie dostaną licencję? Jeśli profesjonalna organizacja nie zamierza reprezentować wysokich standardów i profesjonalnej jakości, nie ma sensu. Jest to sprzeczne z praktyką branżową. Pisanie wysokiej jakości, solidnego i działającego oprogramowania jest niezgodne z zasadami większości firm, ponieważ czas potrzebny na wprowadzenie na rynek, koszt, jest wystarczająco dobry, nie chcę nic zepsuć, próbując naprawić zepsute oprogramowanie jest postrzegane jako więcej ważne niż oprogramowanie klasy profesjonalnej.
Również w odniesieniu do nadużyć. W jaki sposób udowodnisz, że winowajca rozwija się przeciwko drugiemu. W oprogramowaniu można łatwo wskazać palcami, a obaj programiści „mają rację”. Kto ponosi winę, gdy programista korzysta z nieudokumentowanego interfejsu API ukrytego w trzewiach systemu operacyjnego, a następnie sprzedawca systemu operacyjnego zmienia jego funkcję lub ją usuwa?
Powodzenia z tą sprawą organu regulacyjnego. Zobaczmy, jak kongres odmówi Microsoft, gdy Microsoft poprosi ich o zabicie tego rachunku, ponieważ pozwoli im to tylko na zatrudnienie „licencjonowanych” programistów. Bez tego organu regulacyjnego, kto przystąpi do organizacji, która ma prawo dyscyplinować cię i pobierać opłaty, zwłaszcza jeśli nie ma wartości dodanej, takiej jak uzyskanie uprawnień monopolistycznych bez organu regulacyjnego.
Jeśli chodzi o to, czy dobrze byłoby wymagać licencji? Oczywiście dla tych, którzy mogą uzyskać akredytację. Twoja pensja dramatycznie wzrośnie dzięki nowemu znalezionemu monopolowi.
Jednak dla wszystkich innych ... wykorzystanie technologii komputerowej w firmach prawdopodobnie spadłoby wraz z szybkim tempem rozwoju, jaki obserwujemy obecnie. Z pewnością pojawią się bariery w rozwoju nowych programów, takich jak języki i metody projektowania. W końcu kto będzie chciał naciskać na nowe sposoby robienia rzeczy, które będą wymagały lat przekwalifikowania w celu utrzymania licencji. Większość licencjonowanych programistów woli zachować rzeczy takie, jakie są pod tym względem.
źródło