O que precisa mudar para que a Engenharia de Software se torne uma profissão formal?

11

Diferentemente de outras profissões (como Contabilidade, Direito, Medicina, etc.), não há certificação em toda a profissão para Engenharia de Software.

Conheço bem as inúmeras certificações específicas de tecnologia e metodologia que visam servir como prova de especialização e experiência, mas não há sociedade / órgão de administração pública de Engenharia de Software que defina (e tenha o poder de avaliar legalmente) os padrões profissionais geralmente aceitos .

Entendo que o software é uma fera dinâmica - que é parte da arte, parte da ciência -, mas estou me perguntando se a Engenharia de Software tem potencial para se tornar uma profissão formal.

O que precisa mudar para que isso aconteça e isso seria uma coisa boa?

(Se alguém souber de pesquisa formal sobre esse tópico, eu apreciaria muito as referências)



Atualizar

Eu concordo com muitos dos pontos positivos levantados abaixo em relação ao nível atual de certificação em Engenharia de Software. Também acho muito interessante que alguns países tratem a Engenharia de Software como uma profissão, enquanto outros não.

No entanto, parece haver um pouco de disfarce em torno do termo "profissão formal" e como ele se aplicaria à Engenharia de Software. Eu acho que o principal problema da Engenharia de Software - e a principal razão pela qual não é uma profissão completa - é que, se você é um Engenheiro de Software certificado e, por exemplo, algum software que você escreveu para um elevador não funciona corretamente e mata pessoas, sua certificação e / ou associação a um organismo profissional formal não serão revogadas.

Certamente, sua empresa pode ser processada por milhões e você, pessoalmente, pode perder seu emprego e obter uma má referência, mas, de um modo geral, você é protegido pelo escudo de responsabilidade limitada como resultado de ser empregado por essa empresa. Em outras palavras, e até onde eu sei, não há nenhuma avaliação / aplicação legal em vigor (ao contrário de outras profissões formais e suas sociedades governamentais) que têm o mandato de impedi-lo oficialmente de negociar uma vez que você tenha feito um material colossal .

Gostei bastante da resposta que tocou no fato de que a Engenharia de Software - como está - é uma meritocracia, que não precisa ser uma profissão formal, e que isso é uma coisa boa que não deve mudar. Ao mesmo tempo, acho que precisamos fazer uma distinção clara entre engenheiros de software de software de missão crítica e desenvolvedores de softwares diversos / não críticos.

Para aqueles que trabalham / já trabalharam em software de missão crítica - existe alguma responsabilidade pessoal? Certamente, há necessidade de repercussões formais no caso do Engenheiro de Software cometer um erro caro?

Kosta Kontos
fonte
3
Quais são as vantagens de se tornar uma profissão formal?
Pieter B
1
Muito localizado. Aqui no Quebec, você precisa fazer parte do pedido do engenheiro para poder ser chamado de engenheiro. As mesmas regras se aplicam ao engenheiro de software. Vem com o código de ética, regras, seguro de responsabilidade, etc ..
Jean-François Côté
5
Jalecos, obviamente. Com laços.
Ben Brocka
2
@ Pieter B: Como você se sentiria em procurar um médico se não houvesse uma profissão formal que garantisse algum padrão que todo médico deve cumprir?
Giorgio
1
Votei para reabrir esta pergunta. Não é uma duplicata de "Os engenheiros de software podem se tornar engenheiros profissionais certificados?": Essa pergunta pergunta sobre escolhas de carreira, dado o status atual da profissão. Esta pergunta pergunta sobre a lacuna entre esse status e um estado desejado percebido e como agir para fechar essa lacuna. Estes são tópicos diferentes.

Respostas:

15

Com base nas informações disponíveis, acredito que a Engenharia de Software já é uma profissão formal. Pode não ser amplamente aceito como tal, mas atende aos critérios geralmente aceitos para as características de uma profissão.

Do artigo da Wikipedia sobre profissão :

Há um consenso considerável sobre a definição das características de uma profissão. Eles têm uma "associação profissional, base cognitiva, treinamento institucionalizado, licenciamento, autonomia no trabalho, controle de colegas ... (e) código de ética" [18], ao qual Larson também acrescenta "altos padrões de excelência profissional e intelectual, "(Larson, p. 221) que" as profissões são ocupações com poder e prestígio especiais "(Larson, px) e que compreendem" um grupo de elite exclusivo "(Larson, p. 20) em todas as sociedades.

Isso cita extensivamente A ascensão do profissionalismo: uma análise sociológica de Magali Sarfatti Larson . A busca por "características de uma profissão" tende a gerar resultados semelhantes.

Como a Engenharia de software se compara a essas características?

  • Associação profissional Existem inúmeras associações profissionais para engenheiros de software. O IEEE e, mais especificamente, a IEEE Computer Society atendem a profissionais que trabalham em engenharia em todo o mundo, com a IEEE Computer Society concentrando-se especificamente em engenheiros de computação e software. O ACM é outra organização profissional para profissionais que trabalham em computação, geralmente nas Américas. Há também a British Computer Society , que atende a vários aspectos das profissões em tecnologia da informação e comunicação, geralmente no Reino Unido.

  • Base cognitiva O Conhecimento em Engenharia de Software é patrocinado pelo IEEE, Boeing, Conselho Nacional de Pesquisa do Canadá, Raytheon, Construx Software, Conselho Canadense de Engenheiros Profissionais, MITRE Corporation, NIST, Rational, SAP (para a versão 2004). Foi iniciado especificamente como um passo em direção a "tornar a engenharia de software uma disciplina legítima de engenharia e uma profissão reconhecida" .

  • Treinamento Institucionalizado Nos Estados Unidos, os programas de Tecnologia da Informação, Ciência da Computação e Engenharia de Software podem ser credenciados pela ABET . No Canadá, os programas de Ciência da Computação e Engenharia de Software são credenciados pelo CIPS . Essas organizações definem padrões mínimos e resultados esperados para os alunos que se formam em um programa credenciado para permitir que funcionem em um ambiente profissional. O IEEE também oferece dois exames baseados no Conhecimento em Engenharia de Software - o exame Certified Software Development Associate para estudantes de graduação (ou recém-graduados recentemente) e o exame Certified Software Development Professional para profissionais em meio de carreira.

  • Licenciamento Em abril de 2013, a NCEES oferece um exame de Engenharia Profissional em Engenharia de Software . É oferecido estado a estado nos Estados Unidos. No entanto, o exame PE de engenharia de software não é oferecido atualmente por todos os estados e menos ainda exigem a licença. Este artigo, publicado na edição de novembro / dezembro de 1999 da IEEE Software, discute os requisitos de licenciamento no estado do Texas e uma breve discussão sobre licenciamento em Ontario e British Columbia, Canadá e Reino Unido. No Texas, é necessária uma licença apenas para trabalhar no projeto, teste ou implementação de sistemas embarcados ou em tempo real que "exijam um entendimento detalhado dos componentes elétricos ou mecânicos projetados" e para sistemas de software para "dispositivos mecânicos, dispositivos elétricos e sistemas de energia "- uma quantidade relativamente pequena de trabalho de desenvolvimento de software. Nos estados que oferecem licenciamento, o pior cenário é ação disciplinar, sanções ou perda de sua licença, caso um cliente ou empregador faça uma reclamação. No entanto, o único dano real ocorre em estados que exigem uma licença - a menos que seja necessária para fazer o trabalho, perdê-lo não significa nada.

  • Código de ética A ACM e a IEEE Computer Society criaram um Código de ética e prática profissional de engenharia de software . Nos Estados Unidos, os graduados em programas de engenharia credenciados pela ABET, incluindo programas de Engenharia de Software, também podem ingressar na Order of the Engineer , que mantém um código de ética que geralmente se aplica a engenheiros profissionais.

  • Autonomia no trabalho, controle de colegas, altos padrões de excelência profissional e intelectual Estes são frequentemente visíveis em um ambiente em que a engenharia de software é tratada como uma disciplina de engenharia. Ou seja, nem todos os empregadores (ou freelancers) tratam o desenvolvimento de software como engenharia.

Thomas Owens
fonte
6
90%, ou eu diria que 99% dos programadores provavelmente nem sabem que o IEEE CS existe. Se 99% dos médicos não pertencessem à AMA, eu teria muito menos fé na profissão.
Jonathan Rich
3
@ JonathanRich - Todos que eu conhecia na faculdade ingressaram no mínimo no IEEE. Onde você inventou seus números? Você se conectou ao IEEE para ter alguns números de assinatura reais?
Ramhound
2
@ Ramhound: Quando eu estava na universidade, as pessoas estavam cientes do IEEE, mas poucos pareciam participar. Por outro lado, minha escola tinha um programa de Ciência da Computação , não um programa de Engenharia de Software , outras escolas tinham cursos de Programação de Computador . Muito poucos tinham Engenharia de Software , embora isso esteja começando a mudar à medida que as escolas obtêm credenciamento para seus cursos. Além disso, não estávamos nos EUA, não temos certeza se isso tem algum impacto na participação do IEEE.
FrustratedWithFormsDesigner
11
@ JonathanRich, 90% dos programadores não são engenheiros de software.
Philip
6
@ Philip E aí está o problema. Você é um programador? Um desenvolvedor? Um desenvolvedor de software? Um engenheiro de software? Um analista de sistemas? Quais são profissionais e quais não são? Você precisa de um engenheiro de software para configurar seu site WordPress? Você deve deixar um desenvolvedor chegar perto da sua plataforma interna de data warehousing? Desejo muito que a engenharia de software seja abordada com mais profissionalismo do que 90% das pessoas com quem trabalhei, mas quando você tem pessoas que querem pagar um DBA menos do que o cara que corta a grama, você não está vai conseguir as melhores pessoas.
Jonathan Rich
4

Um corpo profissional amplamente estabelecido e aceito para desenvolvedores / engenheiros / arquitetos de software / etc não seria uma coisa boa.

Atualmente, este é um dos poucos campos que podem atuar como uma meritocracia. Por exemplo, não me importo com o grau que você tem (ou se você tem um), quanta antiguidade você tem, quais idiomas você conhece etc. É relativamente fácil descobrir se você é um bom desenvolvedor ou não , e no final do dia essa é a única coisa que importa. Você pode fazer as coisas?

Atualmente, você é avaliado por sua capacidade, não por algum credenciamento que alguém lhe concedeu. E isso é justo, coisa boa (tm).

MrFox
fonte
2
A semelhança com a prostituição é ligeiramente desconcertante ....
mattnz
@mattnz Chama-se prostituição intelectual, e minha taxa horária é provavelmente menor do que a tradicional.
MrFox 3/13
Obrigado pela resposta perspicaz @MrFox. Eu gostaria de escolher seu cérebro um pouco mais, se eu puder. Se médicos / contadores / advogados cometerem um erro crítico / caro, eles correm o risco de perder a certificação e serem impedidos de negociar mais. Os engenheiros de software, por outro lado, não enfrentam esse risco, uma vez que raramente perdem dinheiro (devido à responsabilidade limitada que lhes é conferida pelas empresas por onde são empregados). Tudo o que eles perdem é o emprego e a reputação atuais. À luz disso, você acha que faria sentido ter uma sociedade formal para governar as melhores práticas de Engenharia de Software?
Kosta Kontos
2
@KostaKontos Considere o que isso significaria no mundo real - você receberia violações se não escrevesse testes de unidade ou não tivesse documentação suficiente? Ou você perderia a licença se enviasse o código para um ambiente de produção com uma falha de segurança? Isso seria uma coisa boa para o campo? Meu argumento é que isso acrescentaria muita burocracia, política, culpa e apenas aumentaria os lucros das companhias de seguros, pois todos os desenvolvedores teriam que comprar um seguro por negligência. É um pensamento interessante. Aposto que ainda não aconteceu porque processar seus próprios engenheiros é uma má ideia.
MrFox
0

Nada precisa mudar.

Como apontado por Thomas , a engenharia de software já é uma profissão. Pode ser chamado de engenharia, programação, hacking e / ou artesanato, mas é uma profissão e muitas pessoas estão ganhando dinheiro com isso.

Acho que sua pergunta é sobre licenciamento.

No momento, não há licenciamento formal para engenharia de software. Qualquer pessoa com inteligência e capacidade de programação suficientes pode ser contratada e paga pela criação de código do que é executado em uma máquina ou dispositivo.

Isso é diferente de outras indústrias (direito e medicina são exemplos, conforme citado na pergunta). É necessária uma licença para essas profissões. Qualquer um pode dirigir um carro, mas para dirigir um legalmente, é necessário ter uma licença de dirvers é outro exemplo. Qualquer pessoa pode programar, sem licença ou certificação (s) necessária (s).

Agora, acredito que o licenciamento é bom, pois prova que alguém tem a capacidade de fazer algo (como dirigir um carro) e conhece os meandros das regras (da estrada).

Uma licença semelhante pode ser necessária para a engenharia de software, mas não acho que seria muito bom. De fato, existem muitos drivers licenciados que são horríveis; portanto, apenas porque você possui uma licença não significa que você seja um bom motorista ou programador.

Uma licença cria uma barreira para a entrada, o que neste setor não seria uma coisa boa, então não vejo nenhum benefício percebido desse licenciamento.

As empresas que contratam engenheiros de software devem testar definitivamente a capacidade desse programador em potencial com um "teste de programação" (e não estou falando do tipo de efervescência) com base nas habilidades necessárias. Programadores com "certificações" ficam bem no papel, mas devem realmente ser postos à prova com um teste do mundo real para avaliar a experiência e a aptidão.

Jon Raynor
fonte
2
"Programadores com 'certificações' ficam bem no papel", não, não.
Philip
0

Eu acho que deveria ser possível se tornar um desenvolvedor de software certificado passando em um exame da mesma maneira que um advogado passa em um exame de barra. Eu também acho que programadores não certificados ainda devem poder operar como programadores. A diferença é que os empregadores poderiam anunciar especificamente para programadores certificados, se é isso que eles querem, e um programador certificado viria com certas garantias de responsabilidade, além de um preço mais alto.

Concordo com o pôster que diz que o desenvolvimento de software é uma bagunça sem responsabilidade. Eu não acho que tem que ser assim. Existem desenvolvedores que desejam criar um bom software e estão dispostos a prestar contas por isso. Só precisamos de uma maneira de nos distinguir.

Desenvolvo software há mais de 20 anos. Não afirmo que isso me torne um ótimo desenvolvedor por si só, mas acho que sou um ótimo desenvolvedor. O problema é que tenho que demonstrar constantemente por que sou um desenvolvedor melhor do que qualquer criança que aprendeu programação em seu tempo livre e quer o mesmo trabalho que eu. Sem mencionar as legiões de desenvolvedores "offshore" que prometem fazer o mesmo trabalho por uma fração do dinheiro. Neste momento, é preciso muito esforço. Eu tenho que fornecer amostras de trabalho, referências, fazer testes, fazer entrevistas. Eu poderia facilmente ter um dia ruim, cometer um erro em um teste e ser desqualificado. Prefiro apenas dizer: "Sim, sou um desenvolvedor certificado e aqui está o meu certificado". Eu ainda teria que fazer entrevistas, mas pelo menos estaria competindo apenas com outros desenvolvedores certificados.

user92238
fonte
Obrigado pela resposta perspicaz. Você acha que deve haver uma quantidade mínima de experiência de trabalho necessária antes que os desenvolvedores possam fazer o "exame de barra"? Semelhante à maneira como advogados / contadores precisam concluir dois a três anos de artigos. E se houvesse esse requisito mínimo, você acha que o trabalho em si deveria ser padronizado até certo ponto, de modo a garantir consistência na experiência adquirida em toda a profissão?
Kosta Kontos # 28/13
-2

Nunca será, pelo menos não inteiramente. O software é um meio, como tinta. Existem pessoas que fazem trabalhos de pintura em escala industrial de grandes estruturas, pessoas que projetam novas tintas para executar com altos padrões, mas também há pessoas que compram tinta para fazer trabalhos em pequena escala, como pintar seu galpão, e ainda outras que podem misturar sua própria pintura, mas apenas use-a para pintar quadros de gatos.

Da mesma forma, embora eu pudesse ver um futuro em que o software crítico e / ou financeiro de segurança precisa de engenheiros credenciados trabalhando nele, nunca haverá necessidade de pessoas produzindo software de arte ou entretenimento. O que precisa ser alterado para obter o software financeiro ou de segurança necessário para a criação de engenheiros credenciados? Bem como as outras profissões, exigiria uma lei para determiná-la.

jk.
fonte
4
Como isso é diferente de outras disciplinas de engenharia? Vamos fazer engenharia civil. Qualquer um pode construir uma ponte no gramado dos fundos sobre um riacho. Mas nem todo mundo pode construir uma ponte rodoviária sobre um lago. Acho que isso também pode ser aplicado a muitas outras disciplinas de engenharia, e é comumente aceito que a engenharia é uma profissão.
Thomas Owens
@ThomasOwens que é verdade, no entanto, com o software, não temos uma parte formal de 'nem todo mundo pode comprar uma ponte de rodovia', mas isso acontecerá
jk.
2
Isso não é verdade. Nem todo mundo pode construir o software aviônico para um avião comercial. Ou o software de controle para uma máquina de radioterapia. Há muitos softwares controlados, regulamentados e é necessário que haja certos padrões. No entanto, até mais recentemente, não havia as mesmas licenças que acompanham outras disciplinas de engenharia.
Thomas Owens
1
@ThomasOwens Como engenheiro de software que trabalha em software de aviônica para um avião comercial (OBIGGS), sim, na verdade qualquer pessoa provavelmente poderia construir isso. O software não é tão complicado assim. Mas os clientes são REALMENTE exigentes quanto à robustez e à confiança de que não explodirá. Assim como qualquer um poderia construir uma ponte, alguém provavelmente poderia codificar mal uma unidade OBIGGS. O aspecto profissional vem com o teste, o processo, o combate ao DO-178b e a capacidade de mostrar com confiança que ele não cairá do céu quando cruzar a linha de data internacional.
Philip
3
"não existe análogo da física no software": existe, é chamado de matemática ou outro método formal. De fato, para o software de missão crítica, a maior parte do trabalho é especificada, verificada e testada e apenas 10% do trabalho é codificado. Somente softwares não críticos para a missão podem ser desenvolvidos de maneira ágil, por tentativa e erro (da mesma maneira que alguém construiria uma ponte no gramado), mas tente usar o mesmo método para criar software aviônico!
Giorgio
-2

Software não é uma profissão, nem jamais será uma.

"Uma profissão surge quando qualquer comércio ou ocupação se transforma através do desenvolvimento de qualificações formais baseadas em educação, aprendizado e exames, o surgimento de órgãos reguladores com poderes para admitir e disciplinar membros e algum grau de direitos de monopólio".

Essa descrição não corresponde ao software.

Primeiro, qualquer pessoa interessada em software pode sair e tentar encontrar um emprego no desenvolvimento de software. Muitas dessas pessoas têm diplomas universitários totalmente não relacionados à programação de computadores e muitas não têm diplomas. Não há nada que impeça esses grupos de se tornarem programadores de software.

O software não pode se tornar uma profissão porque os membros "licenciados" se tornam responsáveis ​​pelos danos que causam e por suas práticas incorretas. 80-90% dos desenvolvedores perderão o emprego dentro de alguns anos apenas por esse.

Em geral, a qualidade do software é atroz, propensa a erros e simplesmente não muito bem-feita. Isso é digno de ser uma profissão? Você prevê essa interrupção porque as pessoas são licenciadas? Se uma organização profissional não se destaca por altos padrões e qualidade profissional, não faz sentido. Isso vai diretamente contra a prática da indústria. Qualidade de escrita, software robusto e funcional é contrária aos princípios da maioria das empresas, porque o tempo de colocação no mercado, o custo, é bom o suficiente, não deseja interromper nada que esteja tentando consertar software quebrado. importante que o software de nível profissional.

Além disso, em relação à negligência. Como você vai provar que um desenvolvedor versus outro é o culpado? No software, é fácil apontar os dedos e os dois desenvolvedores "estão certos". Quem é o culpado quando esse desenvolvedor usa a API não documentada oculta nas entranhas do sistema operacional e, em seguida, o fornecedor do sistema operacional altera sua função ou a remove?

Boa sorte com essa coisa do órgão regulador. Vamos ver o congresso dizer não à Microsoft quando a Microsoft pedir que eles cumpram essa lei, porque isso permitirá que eles contratem desenvolvedores "licenciados". Sem esse órgão regulador, quem fará parte de uma organização que tem o direito de discipliná-lo e cobrar taxas, especialmente se não houver valor agregado, como obter direitos de monopólio sem o órgão regulador.

Quanto a isso, seria bom exigir licenciamento? Absolutamente, para aqueles que podem ser credenciados. Seu salário aumentaria dramaticamente com seu novo monopólio encontrado.

No entanto, para todos os outros ... o uso da tecnologia de computadores nas empresas provavelmente diminuiria junto com o ritmo acelerado do avanço que vemos hoje em dia. Certamente haverá barreiras para novos avanços de software, como linguagens e metodologias de design. Afinal, quem vai querer insistir em novas maneiras de fazer coisas que exigirão anos de reciclagem para manter sua licença. A maioria dos desenvolvedores licenciados prefere manter as coisas do jeito que estão nesse aspecto.

Dunk
fonte
adicionar algumas referências para apoiar as suas afirmações (que fazem certo sentido para mim, mas isso não importa), e eu vou remover o downvote
mosquito