Artigo original escrito por: YK Sugi Show
Olá a todos! Meu nome é YK e, atualmente, sou o responsável pelo CS Dojo, um canal de educação em programação no YouTube com mais de 200 mil inscritos. Também já fui desenvolvedor de software na Google (texto em inglês). Duas das perguntas mais comuns que meu público me faz são: "Qual a diferença entre os cursos de Ciência da Computação e Engenharia de Software?" E… "Devo escolher Ciência da Computação ou Engenharia de Software se eu quiser ser um engenheiro de software" Nesse artigo, eu vou responder a isto e dar minha própria análise rápida sobre esses cursos. Uma rápida visão geral dos dois cursos
Para entender a diferença entre as áreas da Ciência da Computação e da Engenharia de Software, vamos dar uma olhada nos respectivos currículos na Universidade de Waterloo, no Canadá. Escolhi a Universidade de Waterloo para isso porque é um dos melhores programas de Ciência da Computação da América do Norte. ADVERTISEMENT Perspectivas de trabalhoVamos primeiro comparar os tipos de trabalhos e estágios que você pode ter através cada programa. Felizmente, o site da Universidade de Waterloo dispõe de vários exemplos. Para cada área, aqui estão alguns dos títulos que os ex-alunos detêm, e onde eles trabalham: Ciência da Computação
Engenheiro de Software
Como pode perceber, não há uma grande diferença entre os tipos de trabalhos que você pode ter. O emprego mais comum que os graduados obtêm após receberem seu diploma de Ciência da Computação ou de Engenharia de Software é o de desenvolvedor ou engenheiro de software. Existem também outras opções relacionadas, tais como gerente de produtos, analista de garantia de qualidade e consultor em tecnologia. Suas opções dependerão de seu conjunto de habilidades específicas. ADVERTISEMENT Primeiro ano:Agora, vamos dar uma olhada nos cursos obrigatórios de cada programa. Vamos primeiro comparar alguns dos cursos que você precisaria fazer em seu primeiro ano. Ciência da Computação
Engenharia de Software
Como você pode ver, os cursos do primeiro ano também são bastante semelhantes. Ambos cobrem alguns assuntos fundamentais de ciência da informação, e alguns assuntos da matemática em álgebra linear e cálculo. A única grande diferença é que a Engenharia de Software tem componentes adicionais de física e engenharia elétrica, enquanto a Ciência da Computação tem mais algumas eletivas. ADVERTISEMENT Curso após o primeiro ano:E quanto aos cursos obrigatórios e opcionais após o primeiro ano? Vamos dar uma olhada em diversos exemplos aqui: Ciência da Computação
Engenharia de Software:
ADVERTISEMENT São MUITAS informações para assimilar, mas aqui está o resumoQuando se trata dos requisitos em matemática e estatística, a Ciência da Computação e a Engenharia de Software são quase idênticas. Ambas abrangem combinatória, probabilidade e estatística. Os principais requisitos da ciência da computação também são similares, abrangendo algoritmos, estruturas de dados e sistemas operacionais. As diferenças principais são:
Então, qual você deveria escolher?Acho que isso depende principalmente da suas preferências. Em resumo:
Mas espere — qual dos cursos, então? Qual é melhor se você quer ser um engenheiro de software? Bem, aqui vai minha opinião. Nessa universidade específica (Universidade de Waterloo), com esse conjunto específico de requisitos do programa, a Ciência da Computação é um curso melhor se você deseja ser um engenheiro de software. Apenas por simplicidade, vamos supor que você esteja esperando conseguir um dos empregos mais bem-pagos (cerca de U$ 100.000/ano) como engenheiro de software na América do Norte. Estes empregos são normalmente em grandes empresas de software (pense na Microsoft, Google, Amazon etc.) ou em empresas de médio porte, de alto crescimento (pense na Dropbox, Lyft, Snapchat, Pinterest etc.). Tipicamente, o que eles procuram em candidatos a engenheiro de software é a habilidade de escrever códigos sólido e de construir projetos interessantes, bem como os fundamentos da Ciência da Computação, incluindo estruturas de dados e algoritmos. Acho que a melhor maneira de ter este conjunto de habilidades é aprender rapidamente os fundamentos da ciência da computação e passar seu próprio tempo praticando a resolução de problemas e a escrita de códigos. Com base no currículo de Engenharia de Software e no quanto os estudantes de engenharia tendem a estar ocupados em geral, acho que seria mais difícil fazer isso com Engenharia de Software do que com Ciência da Computação. Outro benefício deste programa particular de Ciência da Computação é que ele permite mais eletivas em Ciência da Computação. Isto também é ótimo porque, dependendo do que estiver em demanda no mercado de trabalho, você será capaz de ajustar seus cursos. Por exemplo, se o desenvolvimento de aplicativos para dispositivos móveis estiver em demanda, você poderá aprender a fazer isso. E se a computação paralela estiver em demanda, você pode se concentrar nisso no lugar dos aplicativos móveis. Tenho certeza de que há alguns benefícios na aprendizagem de fundamentos de engenharia de software (gerenciamento de projetos, design, testes etc.). Mas eu, pessoalmente, preferiria ter flexibilidade com relação a um conjunto pré-definido de habilidades. É por isso que eu acho que a Ciência da Computação é uma área melhor para se tornar um engenheiro de software com este currículo em específico. Claro, esta é apenas minha opinião, e essa é apenas uma universidade em particular. Eu adoraria saber a sua opinião e como foi sua experiência se você se formou em Ciência da Computação ou em Engenharia de Software. Algumas observaçõesObservação 1: Universidades diferentes têm exigências diferentes para estas duas áreas de habilitação principal. Este artigo deve ser um bom ponto de partida, mas você ainda deve dar uma olhada nos requisitos do programa na universidade que você está interessado em frequentar. Observação 2: Algumas universidades não possuem sequer uma especialização em Engenharia de Software. Por exemplo, a Universidade de British Columbia, em Vancouver, tem graduação em Ciência da Computação e Engenharia de Computação, mas não em Engenharia de Software. No entanto, os dois cursos têm uma área focal em engenharia de software dentro de seu programa de Ciência da Computação, bem como no de Engenharia da Computação. Se a universidade na qual você está interessado não tiver uma especialização em Engenharia de Software, eu escolheria a Ciência da Computação, se você quiser se tornar um desenvolvedor de software. A Engenharia da Computação é mais focada em hardware do que em Ciência da Computação ou em Engenharia de Software, portanto está menos diretamente relacionada com o trabalho típico de um desenvolvedor de software. ADVERTISEMENT Essas são as principais fontes que usei:
Obrigado pela leitura e boa sorte escolhendo sua universidade e sua especialização! Aprenda a programar gratuitamente. O plano de estudos em código aberto do freeCodeCamp já ajudou mais de 40.000 pessoas a obter empregos como desenvolvedores. Comece agora O que é melhor Engenharia de Software ou Ciência da Computação?A Engenharia de Software tem mais requisitos em engenharia elétrica e fundamentos de engenharia de software, tais como testes de software, projetos e especificação de requisitos de software. A Ciência da Computação permite mais eletivas em disciplinas de Ciência da Computação de nível superior.
Qual a diferença entre engenheiro de software e engenheiro da Computação?Agora, vamos às diferenças! A Engenharia da Computação é uma área mais abrangente, integrando conhecimentos de software e hardware. No curso, é possível ver bastante programação, modelos matemáticos, algoritmos e projeções de soluções de TI.
Qual é a diferença entre Engenharia de Software e Engenharia de sistemas?Na Engenharia de Software você aprende a utilizar os princípios da engenharia para criar softwares. Já a Análise de Sistemas é um objeto de estudo da Engenharia de Software.
Qual a diferença entre Engenharia de Software e programação?A engenharia de software inclui ser capaz de fazer tudo o que um programador de software faz, mas com uma filosofia de design diferente. Um desenvolvedor de software normalmente inicia o processo de desenvolvimento da aplicação falando com os clientes e descobrindo quais são as suas necessidades de software.
|