Por que um diploma em ciência da computação é importante para um programador profissional? [fechadas]


63

Sou formado em ciência da computação. Foi ótimo para abrir portas, conseguir um emprego. Tanto quanto me ajudar no campo profissional da programação C # .NET (a plataforma e a linguagem mais populares na área em que trabalho, se não todos os Estados Unidos, sem dúvida, o sistema operacional mais popular do mundo), isso é pouco útil. Por que você acha que isso ajuda você como programador em sua carreira profissional (além de usar o algoritmo prims para impressionar alguns entrevistadores)?

Na adaptação mundial de hoje, mente rápida, comunicação forte, OO e habilidades fundamentais de design permitem que um desenvolvedor escreva o software que o cliente aceitará. Essas habilidades são analisadas apenas no programa cs. Na minha opinião, a leitura de um livro C # de 500 páginas da Wrox oferece um conjunto de habilidades muito mais útil do que 4 anos nos cursos blaster de matemática sci comp. Muitos discordam. Então, por que um diploma em ciência da computação é importante?


59
"A ciência da computação não é mais sobre computadores do que a astronomia é sobre telescópios". - Edsger Dijkstra
Eric Lippert

4
Memorização não é suficiente. É preciso que a educação saiba como usar o Reg Ex e a experiência para saber quando usá-lo. Eu incluiria a leitura de livros como parte da educação. A experiência relacionada ao trabalho raramente o encoraja a fazer as coisas da maneira certa.
Zachary Scott

10
Importa quando você não tem um
Aditya P

2
Eu também tive uma média de 2,8. Mas nós fomos ensinados principalmente sobre C / Java e algumas coisas da Web, sem coisas em C #. De qualquer forma, acho que o CS é a "próxima melhor coisa", porque os programas de 4 anos do CS não são exatamente fáceis e mostram que você pode trabalhar duro para obter o diploma. Por que isso importa de qualquer maneira? você recebe o trabalho!

11
@ luis.espinal Eu questiono essas estatísticas. Duvido que 70% de todo o código esteja em C (pense em todos os silenciosos Fortran, COBOL, PL1 e Rexx passando felizes). Uma pluralidade, certamente, mas uma grande maioria, sou cético. Existem muitos dispositivos incorporados, mas o número de dispositivos incorporados não diz nada sobre a fonte original. Depois de escrito para o primeiro dispositivo específico, geralmente é bom para todos os dispositivos subsequentes do mesmo; e presumivelmente, muito é reutilizado para derivativos próximos, seja na mesma linha de uma revisão posterior ou em uma linha diferente da mesma família de produtos.
JustinC

Respostas:


133

Por que um diploma em ciência da computação ?:

  • Trabalhei com um desenvolvedor que armazenava milhares de itens em uma HashTable e, em seguida, iterava os valores. Ele nunca acessou através de um hash. Obviamente, ele não sabia como uma HashTable funcionava ou por que você usaria uma - um diploma de CS pode ajudar nisso.
  • Ao trabalhar com expressões regulares, parece mais fácil para as pessoas expostas à teoria básica de autômatos e linguagens formais raciocinar sobre o que está acontecendo e solucionar problemas de suas expressões - um diploma de CS pode ajudar nisso.
  • Um desenvolvedor recém-chegado da escola pode ser capaz de decompor problemas em várias mentalidades de paradigma (OO, funcional, lógica) imediatamente, enquanto um novo desenvolvedor não graduado precisa de experiência antes de fazer o mesmo.
  • As escolas ensinam complexidade computacional. Os desenvolvedores não graduados podem sentir o que é melhor, mas um entendimento formal às vezes é bom, especialmente ao explicar os resultados a um colega.
  • Um diploma oferece uma introdução a muitos modelos da máquina - hardware, SO, estruturas de dados comuns, rede, VMs. Com esses modelos no fundo da sua mente, é mais fácil desenvolver um palpite em que um problema vive quando algo dá errado. Novamente, desenvolvedores não graduados criam os mesmos modelos, mas isso leva tempo.
  • A orientação de especialistas em qualquer disciplina pode ajudar o aluno a evitar becos sem saída e tópicos perdidos. A leitura é ótima, mas não substitui um ótimo professor.

Isso não quer dizer que seja necessário um diploma de CS para ser um ótimo desenvolvedor. Dificilmente. Alguns dos melhores desenvolvedores com quem trabalhei não têm diploma. Um diploma lhe dá um começo de corrida. Quando você se forma, você (esperançosamente) já escreveu uma boa quantidade de código em vários idiomas e ambientes para resolver muitos tipos de problemas. Isso coloca você no caminho das 10.000 horas necessárias para ser um especialista.

Um segundo benefício é que ele mostra aos empregadores que você pode se comprometer com uma meta de longo prazo e ter sucesso. Em muitas empresas, acredito que isso é mais importante do que você aprendeu.


4
+1 - isso faz sentido. A orientação de especialistas provavelmente me ajudou de maneiras que não reconheço. Ainda me pergunto se 4 anos de educação geral superam 4 anos de experiência no setor, supondo que os dois desenvolvedores estejam igualmente motivados para aprender. Há um certo nível de disciplina que sinto que não tinha antes do curso, que certamente conta alguma coisa.
usar o seguinte

4
Aprender terminologia adequada e passar muito tempo com outras pessoas aprendendo o mesmo material também são benefícios que acompanham esse pedaço de papel caro.
sal

65
Por outro lado, tenho visto pessoas com grau que ainda falham em maior parte desta lista :)
Joel Gauvreau

11
Puxa, eles devem ter ouvido falar da teoria dos grafos também. Isso pode tornar o particionamento de aplicativos em clientes e servidores, redes, DAGs e árvores um pouco mais simples.
Tim Timisisoftoft 1:18

3
@JustinC - Sua afirmação "os titulares de diploma tendem a defendê-los por qualquer motivo, porque eles os possuem" é uma das razões fundamentais pelas quais fiz a pergunta. Eu já vi essa defesa irracional cega em primeira mão. O oposto também se aplica.
precisa

87

Em 40 anos, espero que o .NET e o C # não passem de uma pilha enorme de código legado em sistemas operacionais obsoletos.

Mas os conceitos fundamentais da ciência da computação serão tão animados quanto eram quando Shannon, von Neumann, Knuth, Dijkstra, Hoare e os outros os tiraram dos fundamentos da lógica formal e da matemática ... mais de 40 anos atrás.


28
+1 - muito verdade, mas em 40 anos não darei a mínima.
usar o seguinte

3
@ P.Brian.Mackey: Eu acho que em 10 anos o C # estará na estrada e em 20 será mais uma memória, e daqui a 30 anos será necessário arqueólogos de código de cabelos grisalhos . As pessoas que se vinculam a um determinado conjunto de ferramentas se obselizam. Tive a sorte de ler artigos antigos sobre software de sistema do final da década de 1970 e início da década de 1980. Desses sistemas de software, muito poucos estão no radar de hoje. Talvez 1 ou 2 (Unix e Lisp). Embora a base de instalação de hoje seja maior, espero que algo semelhante aconteça.
Paul Nathan

4
@ P.Brian.Mackey Diga o que quiser, mas pretendo continuar chutando daqui a 40 anos e daqui a 80 anos também, se eu tiver uma palavra a dizer.
Matthew Scharley

2
@ Paul Nathan: Para aprofundar o seu argumento, alguns dos fundamentos fundamentais da programação são da década de 1930 (por exemplo, en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis ). Pergunto-me se / como nós vamos estar escrevendo código de 80 anos a partir de agora :)
phooji

3
@phooji (carregar "legacy-c-sharp-routines" ...): P
Mark C

37

Eu uso quase todo o CS que estudei na escola (*) todos os dias no meu trabalho. Se você deseja trabalhar no design da linguagem de programação, na otimização de mecanismos de pesquisa, na análise quantitativa ou em qualquer campo semelhante, suponho que você possa fazê-lo sem um diploma relevante, mas parece que muita coisa precisa ser aprendida no trabalho. Não sou particularmente educado, dada a minha linha de trabalho; muitos de meus colegas têm doutorado em ciência da computação e vários deles têm sido professores de ciências da computação.

Obter meu diploma valia tremendamente para mim; pagou-se muitas e muitas vezes em dólares e em satisfação.

Dito isto, eu entendo perfeitamente o seu ponto. A maioria das pessoas que programa computadores possui trabalhos que não exigem um diploma em CS; eles exigem, digamos, uma sólida formação em nível de faculdade comunitária em programação prática, além de acompanhar as tendências atuais do setor. E tudo bem. Você não precisa de um diploma em biologia marinha para administrar uma loja de aquários de sucesso, e acho que as lojas de aquários são incríveis. Mas é muito difícil conseguir um emprego em Woods Hole, se tudo o que você sabe como fazer é criar peixes dourados.


(*) Sou bacharel em Matemática Aplicada e Ciência da Computação pela Waterloo.


4
Lembro-me de um dos meus professores de CS dizendo algo no sentido de que apenas 2% de vocês realmente conseguem um emprego onde lidam regularmente com os princípios da ciência da computação .
vermelho-terra

15
fusor @el: De fato; Agora, uma pergunta interessante que talvez seja pertinente a esta discussão é : o objetivo do ensino superior é apenas treinar para um trabalho específico? Eu não acredito que seja. As universidades não são escolas profissionais; sua função é criar conhecimento por meio de pesquisa e expor os alunos a esse universo de conhecimento. Que isso possa dar aos alunos habilidades profissionais parece-me mais um efeito colateral do que um objetivo. Em Waterloo, fomos informados explicitamente de que aprenderíamos teoria, não prática.
precisa

11
A criação de pesquisa original em um ambiente escolar, porém, em geral e independentemente do programa, raramente acontece antes de ultrapassar o período de treinamento chamado de programa de bacharelado. As pesquisas acontecem antes disso, mas geralmente o estudo de material genuinamente novo é reservado para aqueles em um programa de mestrado ou doutorado. Em outras palavras, você geralmente se afasta da descoberta, mas em direção a algum reforço do que já é conhecido. A pesquisa de graduação é mais sobre o processo de pesquisa do que o crescimento de qualquer corpo de conhecimento específico. A pesquisa privada tem um objetivo diferente.
23811 JustinC

11
O dia em que os melhores empregos não precisam mais de um diploma é o dia em que as universidades não têm mais estudantes para apoiar seus programas.
precisa

quantas vezes é que Anders usar seu;)
Matthew Whited

22

Importa porque a tecnologia não permanece estática. A ciência da computação é a base de toda a tecnologia digital. A maioria dos programadores autodidatas dura exatamente um ciclo de tecnologia porque não possui os fundamentos para sobreviver a uma grande mudança de paradigma. Claro, existem exceções à regra, mas uma base sólida em ciência da computação aumenta muito as chances de sobreviver a uma grande mudança de paradigma.


4
Eu não sabia o que era uma brincadeira até ler Coders At Work . Acho que você sobreviveu a uma ou duas mudanças de paradigma e está falando por experiência própria. :)
Dave Neeley

3
Discordo. É fácil acessar recursos que ensinam os conceitos fundamentais on-line (e é gratificante obter a capacidade de encontrá-los por conta própria). Por exemplo, academicearth.org/subjects/computer-science é um bom lugar para começar. Informações detalhadas sobre padrões arquiteturais mais recentes estão disponíveis gratuitamente para estudo, consulte chromium.org/developers/design-documents/… . Frequentemente, os materiais disponíveis gratuitamente on-line são muito melhores e mais atualizados do que o que você esperaria de uma faculdade local.
Evan Plaice

13
Eu acho que você entendeu exatamente ao contrário. Um programador nunca termina de aprender. Programadores autodidatas demonstraram sua capacidade de adquirir conhecimento sem a necessidade de ajustes formais, prazos impostos externamente, etc., que é exatamente o que é necessário para sobreviver às mudanças no mercado.
Mud

2
(cont.) Se você está falando sobre mudança de paradigma de software ... Que mudança de paradigma? OOP não é exatamente novo, nem programação funcional. Os bancos de dados existem há muito tempo. Os números de ponto flutuante são padronizados desde 1985 (IEEE 754). A única grande mudança que vejo é a mudança para sistemas de processamento distributivo (sistemas em rede altamente escalonáveis ​​e programas que tiram vantagem de muitas plataformas principais de hardware) e a transição para um conjunto de caracteres internacionais padronizados (UTF-8); os quais não são realmente cobertos pelo compsci.
Evan Solha

2
@Ud e Evan: Eu acho que você perdeu a parte "Claro, existem exceções para governar" da minha postagem. Estou assumindo que vocês dois são jovens e sem ônus. Essa dinâmica mudará com a idade. Estou no campo há mais de trinta anos. Eu assisti muitos programadores autodidatas pegando fogo depois que o estresse de criar uma família entra em cena, e a quantidade de tempo que se tem para aprender os fundamentos de suas próprias abordagens é zero. Eu adoraria ter essa mesma conversa quando ambos atingem a idade de 40.
bit-twiddler

14

Depende do que você quer fazer. Se seu objetivo é principalmente programar softwares comerciais em geral, onde o problema comercial e os problemas práticos de gerenciamento de complexidade são a parte mais difícil, então sim, um diploma de CS não ajudará muito. Se, no entanto, seu objetivo é programar coisas nas quais a principal dificuldade está no lado técnico, um diploma de CS é mais útil. (Embora eu não possua um diploma em ciências da computação, sinto-me um grande hipócrita por dizer isso; sinta-se à vontade para acrescentar "ou autodidata nas disciplinas de ciências da computação".)

Tenho certeza que existem muitos programadores por aí que são ótimos em gerenciar a complexidade, programar em grandes e resolver problemas comuns de negócios, mas ficariam absolutamente perdidos se você pedisse que escrevessem um alocador de memória, uma biblioteca de paralelismo ou um biblioteca de coleções, sistema operacional ou compilador, etc. Tenho certeza de que o contrário também existe em uma extensão decente. Ambos têm seu lugar e merecem respeito, mas um diploma de CS ajuda muito mais no lado técnico.


Por quê? O CS consiste em resolver problemas complexos, independentemente da natureza de um problema. O CS deve ser útil mesmo que você não esteja programando nada - é um descendente de uma cibernética esquecida, mas ainda essencial.
SK-logic

12

Eu não acho que um diploma de CS seja um indicador absoluto de que uma pessoa é um bom desenvolvedor de software. De fato, comecei minha carreira como programador com um diploma de matemática, mas com um forte viés de CS (matemática e CS foram integradas no meu programa de estudos). Eu acho que existem duas razões pelas quais isso importa, em geral.

1 - Porque os engenheiros não são o front end para o recrutamento

Pessoas de Recursos Humanos são. E enquanto imagino muitas pessoas revirando os olhos, digo "graças a Deus!" O que é mais importante - que você permita que os engenheiros façam coisas (ou quebre), ou que eles os classifiquem através de milhares de currículos e milhares de entrevistas?

Portanto, temos pessoas de RH e pessoas de RH examinam os candidatos até chegarmos a um grupo-chave que pode ser examinado por engenheiros. O pessoal de RH aprendeu ao longo do tempo que ter um diploma de CS é um indicador bastante forte de que o candidato sabe algo sobre o desenvolvimento de software. Espero que eles também saibam que escrever software por 20 anos é um bom indicador de que o candidato pode escrever software.

2 - Porque ter algum tipo de sistema para aprender sobre CS é melhor do que nenhum

O CS é um campo enorme, com muito o que saber. E está mudando o tempo todo. Hoje em dia, posso dizer com segurança que os 75% dos cursos da minha graduação se tornaram irrelevantes para minha carreira. E que o curso de meu mestrado de 5 anos atrás está se depreciando rapidamente. Mas, quando comecei, fiquei feliz por ter pago uma grande instituição para me ensinar algo sobre organização de computadores, redes, bom processo de engenharia de software, design orientado a objetos, compiladores e a sintaxe / semântica de uma importante linguagem de programação atualmente comercializável.

Fiquei feliz por estar em um ambiente em que alguém foi pago para me explicar as coisas quando o projeto do livro / site / volta não era naturalmente óbvio.

Fiquei feliz por ter acesso a um laboratório em que a saúde do computador e a SDE não eram problema meu - eu poderia mais ou menos travar e me concentrar em uma pequena parte do problema, em vez de também ter que consertar todas as ferramentas necessárias para resolver o problema.

E enquanto os cursos não ensinaram explicitamente boa comunicação, acho que a única maneira de realmente aprender isso é trabalhando em equipe - o que é uma parte importante de muitas instituições líderes que oferecem cursos de ciências da computação.

E um cronograma com feedback frequente (ou seja, notas e exames) que me permite saber se realmente entendi o que me haviam ensinado.

Na minha opinião, essas coisas combinam para valer mais do que qualquer livro sobre o assunto, mas certamente não é tudo, tudo acaba. Certamente há coisas que eu não me importaria de ver instituições de ensino superior melhorarem e acho que, cerca de 10 anos depois de se formar, o diploma que você recebeu originalmente é menos importante do que o trabalho que você fez desde então.


12

Para mim, o motivo é que sei que eles passaram por alguns cursos difíceis e não desistiram. Alguns dos cursos, como Compiladores, Estrutura de Dados, Matemática Discreta (e outros), costumavam tirar muitas pessoas dos programas de CS. Ter um diploma em CS significa que você trabalhou duro e pagou um preço (longas noites fazendo os programas funcionarem), em vez de sair por diversão.


+1 - lol, não posso discutir muito com isso. No entanto, eu adorava matemática discreta. Teve um ótimo professor que fez muitas impressões de Yoda.
precisa

10

Para mim, é uma questão de mentalidade .

Sua mentalidade define como você abordará um determinado problema e permite que você considere uma gama mais ampla de oportunidades do que aquelas que não foram instruídas nos conceitos.

Um exemplo típico é o problema do "Vendedor ambulante", onde você sabe que 1) é NP-completo para a versão geral; portanto, é necessário tentar todas as possibilidades, exceto 2) que, se você souber mais sobre o problema, poderá aproximar-se dentro de um certo limite ou diga que você sabe que a CA é sempre maior que AB + BC (o que é verdade para distâncias, mas não para preços), permitindo que você a resolva em menos tempo.

Outro exemplo é a Análise Numérica, na qual você precisa saber que, para minimizar a imprecisão numérica, você deve abordar seus cálculos de maneira diferente da matematicamente direta. Isso requer conhecimento teórico e é improvável que seja escolhido no caminho, a menos que você tenha sido explicitamente mordido por ele.


9

Realmente? Uau.

Então você está me dizendo que as habilidades de C # e OOP são suficientes e pode criar seu próprio algoritmo para classificação aleatória e decifrar as nuances mais refinadas de como lidar com problemas completos de NP na vida real?

C # e OOP são bons, mas se você estiver tentando fazer algo que não seja um design lógico não trivial, precisará dos fundamentos da ciência da computação.

Cara, você nem saberá qual container C # usar se suas habilidades em estruturas de dados ou algoritmos não estiverem à altura.

Vamos crescer agora.


23
Calma aí, tigre.
Whatsisname

23
"crie seu próprio algoritmo para classificação aleatória e decifre as nuances mais finas de como lidar com problemas completos de NP na vida real", não posso enfatizar o suficiente quanto do meu trabalho da vida real consiste nessas atividades .... / sarcasmo
estrela-quentin

4
O que estou dizendo é que 95% das pessoas com quem trabalho e com quem trabalhei no passado gastam quase 0 tempo criando algoritmos. Passo a maior parte do tempo tornando o código mais conciso e fácil de ler. Muito pouco tempo é gasto em "nuances mais refinadas". Na verdade, eu acharia interessante gastar um pouco de tempo, pelo menos, classificando um fluxo de trabalho em um quadro branco ... algo que eu só fiz sozinho. Você discute regularmente NP completo com seus colegas de trabalho? Em que linha de trabalho você está onde precisa escrever tipos personalizados em vez de implementar linguagens de programação funcionais?
usar o seguinte

3
@ P.Brian.Mackey: O desenvolvimento de software é uma profissão para cima ou para fora. Quantos desenvolvedores de software trabalham para sua organização com mais de 50 anos? À medida que um desenvolvedor de software envelhece, um diploma em CS pode significar a diferença entre ter um emprego e ficar desempregado. Embora atualmente possua graduação e pós-graduação em ciência da computação, recebi meu treinamento inicial neste campo pelas escolas técnicas Naval e DoD no final dos anos setenta. Todos os caras com quem eu servi que não se preocuparam em concluir o curso de CS após deixar as forças armadas não estão mais em campo.
bit-twiddler

7
Por que todo mundo parece cegamente aceitar a suposição de que um currículo formal de CS da faculdade é necessário para ter algum conhecimento dos conceitos de CS? Talvez seja um fracasso em seu raciocínio dedutivo. Eu acho que eles precisam de mais cursos de CS.
Quentin-starin

6

Suponho que, na verdade, você não se envolveu muito com o curso, apenas pegou o que precisava e saiu, ou frequentou uma escola que considerava os profissionais de CS como "programadores" e não "programadores". Além disso, algumas das minhas melhores / favoritas aulas de "CS" são aquelas que - pelo menos na minha universidade - estão no departamento de engenharia elétrica. Minha exposição a várias arquiteturas e estilos sempre foi tão importante e meu diploma facilitou isso em um ambiente "controlado".

Classes que não são apenas algoritmos e fofos fofos:

  • Compiladores
  • Sistemas operacionais
  • Sistemas embarcados / VHDL
  • Montagem e microcontroladores
  • Engenharia de software

E, finalmente, uma classe que me chamou a atenção, que eram apenas algoritmos e estruturas de dados - Inteligência Artificial. Há coisas que atravessam o sistema universitário agilizarão bastante o processo de aprendizado, e eu consideraria o que foi aprendido inestimável ao procurar emprego mais tarde.


Qual é a sua definição de "codificador" e "programador"? Para mim, estes podem ser os mesmos e contrastam com o "cientista da computação".
Mark C

Coder apenas escreve o código, não necessariamente pensa em diferentes paradigmas de design ou processos de pensamento aplicáveis ​​à criação de um código melhor. Os programadores realmente pensam no código que escrevem e o abordam de uma perspectiva de cima para baixo, em vez de uma perspectiva de código de baixo para cima.
Jeff Langemeier

Qual é a sua definição de "macaco de código" e "programador"? O programador pode pensar em maneiras de resolver o problema que o dinheiro código não pode ...
Coyote21

A paixão não é concedida por um diploma. É apenas parte de quem você é.
usar o seguinte

@ P.Brian Às vezes acontece que sua paixão concede um diploma e é ainda mais estimulada pela obtenção desse diploma.
Jeff Langemeier

4

Minha opinião é que, a menos que você esteja se candidatando a cargos de "Ciência da Computação", qualquer grau que implique um foco nas habilidades do computador é praticamente equivalente.

De fato, muitos dos programadores que conheço se formaram em uma disciplina completamente diferente. Os melhores programadores que conheço têm diplomas em Engenharia Civil, Linguística, Economia e Finanças.

No final, depois de ter alguma experiência, seu diploma se torna um teste de reprovação para um recrutador. Ou seja, a menos que você o obtenha em uma escola impressionante ou em um curso de pós-graduação, não importa muito qual seja a sua graduação.


Um dos melhores programadores é um economista que trabalha exclusivamente em Excel / VBA e R. Ele fez algumas coisas incríveis no Excel.
Sal

@sal Escrever coisas no Excel e no R não exige um diploma em CS. Escrever Excel ou R provavelmente faria.
Alnitak

@ alnitak - Escrever Excel ou R também não exige um diploma em CS. Isso é uma espécie de ponto da minha resposta e sal de
JohnFx

@ JohnFX: Eu me formei com honras em latim em um dos vinte programas de CS nos EUA, e essa credencial sozinha me faz passar pela porta (eu também tenho um MSCS de outra escola respeitável). Comecei no campo como operador de computador e programador alistado direto do ensino médio. Recebi meu treinamento inicial em sistemas de computadores e desenvolvimento de software da Marinha dos EUA e da Agência de Segurança Nacional; portanto, trabalhei no campo sem um BSCS por vários anos. Tudo o que posso dizer é que foi literalmente como o céu se separou quando completei meu BSCS.
bit-twiddler

@ bit-twiddler - isso serve para apoiar ou refutar minha resposta? Parece que isso apóia minha afirmação final de que importa se você possui um diploma de pós-graduação ou de grande nome.
JohnFx

4

para mim e para muitos de meus colegas, isso não aconteceu (nenhum de nós possuía diploma de CS)



3

Sou formado em ciência da computação. Foi ótimo para abrir portas, conseguir um emprego. Tanto quanto me ajudar no campo profissional da programação C # .NET (a plataforma e a linguagem mais populares na área em que trabalho, se não todos os Estados Unidos, sem dúvida, o sistema operacional mais popular do mundo ), isso é pouco útil.

Mais de 70% do código é escrito em C (pois há mais dispositivos incorporados do que aplicativos de alto nível). De acordo com pesquisas de emprego populares, como dados ou o índice TIOBE, Java é a linguagem de programação mais popular para a empresa (já que existem mais servidores back-end Unix / Linux do que servidores Windows). Existem mais smartphones e tablets (a plataforma de computação da o futuro) executando alguma variante do Linux ou Mac OS que o Windows, programada em qualquer coisa, exceto em C # ou .NET.

Olhe para o seu roteador em casa, olhe para o seu telefone celular, olhe para o computador dentro de seu carro, olhe para o micro-ondas em casa, para os controladores dentro do sistema de A / C de sua casa, para dentro do telefone e para o fax e impressora / scanner. Veja o número de dispositivos computadorizados (que superam os sistemas Windows).

Você acha que eles estão programados em c #?

Se você realmente acredita que o .NET ou C # são as plataformas mais populares do mundo, convém voltar à sua escola de CS e solicitar um reembolso.

Por que você acha que isso ajuda você como programador em sua carreira profissional (além de usar o algoritmo prims para impressionar alguns entrevistadores)?

Talvez porque exista muito mais sobre programação do que criar páginas da web dinâmicas de desenvolvimento básico e aplicativos corporativos? Para isso, você nem precisa de um diploma de bacharel, basta um AA - eu sei porque comecei minha carreira em programação com um diploma de AA e, lenta mas seguramente, trabalhei em direção a um CS e depois trabalhei na pós-graduação enquanto trabalhava em tempo integral como desenvolvedor. .

Há desenvolvimento incorporado, desenvolvimento de driver de dispositivo, desenvolvimento de sistemas operacionais, desenvolvimento de algoritmos, sinais, comunicações, protocolos de rede, desenvolvimento de mecanismos de banco de dados, desenvolvimento de sistemas de arquivos, desenvolvimento de sistemas de arquivos, computação distribuída, compiladores. Não é pesquisa, mas trabalho real em organizações com fins lucrativos. Exceto os naturalmente dotados, normalmente não se pode hackear em nenhum desses campos industriais sem um diploma em CS (às vezes nem mesmo com um diploma em BS).

Uma pessoa que recebe um diploma de CS e presta atenção a isso sabe disso. Como é que você não faz?

Na adaptação mundial de hoje, mente rápida, comunicação forte, OO e habilidades fundamentais de design permitem que um desenvolvedor escreva o software que o cliente aceitará.

OO surgiu por causa do CS. E a maioria das pessoas que pensa que faz OO nem consegue fazer um bom trabalho. Basta olhar para fora e observar o estado de baixa qualidade do software (em particular em Java e .NET, para não mencionar o PHP.) Um sólido histórico em CS (ou uma graduação em algum tipo de engenharia) não garante 100% de bom entendimento do OO e habilidades analíticas, mas geralmente ajuda. OTH, não ter um histórico básico de CS é tipicamente uma bandeira vermelha quando se trata de OO e habilidades analíticas. Temos evidências empíricas suficientes no setor para apoiar essa afirmação.

Essas habilidades são analisadas apenas no programa cs.

Dependendo do programa de CS e dependendo do aluno. Pelo menos para mim, vi muitos bons cursos de design, análise de OO, ferramentas e práticas comerciais, tivemos cursos conjuntos com empresas e estágios locais, projetos e pesquisas com financiamento corporativo, redação técnica, etc. Desculpe, não posso relacionar ou entender esta declaração.

Na minha opinião, a leitura de um livro C # de 500 páginas da Wrox oferece um conjunto de habilidades muito mais útil do que 4 anos nos cursos blaster de matemática sci comp.

Novamente, dependendo do trabalho que você faz. Mesmo na empresa, usei meu CS para realmente consertar as coisas ou melhorar. Tudo isso envolvendo modelagem, arquitetura, computação distribuída, segurança e alto desempenho, alta disponibilidade e tolerância a falhas. Eu aprendi tudo isso no CS.

Não há nada de errado em usar um livro Wrox para obter um contexto específico , específicos de tecnologia conjunto de habilidades. Eu mesmo faço isso. Mas minha formação em CS me fornece o contexto para trabalhar. Sem minha formação em CS, tudo o que eu poderia fazer seria programar, codificar (que é tudo o que eu poderia fazer quando só tinha um diploma de AA no início da minha carreira.)

Muitos discordam.

Surpreendente, não é.

Então, por que um diploma em ciência da computação é importante?

Quem você acha que criou os mecanismos de banco de dados do google, hadoop, cassandra ou alto desempenho? Quem você acha que escreve o kernel do sistema operacional Windows? Quem você acha que programa as ferramentas amadas que você usa para fazer seu desenvolvimento em C #.

Uma coisa eu tenho certeza é que, nas ferramentas que você usa para desenvolver C #, existe um cara de CS por trás disso.

Se você precisa ou não de um diploma de CS, depende do tipo de trabalho que você realiza, do tipo que deseja, do tipo de trabalho que é capaz de realizar.

Há muito trabalho na empresa e no desenvolvimento da web que não requer um diploma em CS. Eu concordo isso. Sei também que o mundo da programação é muito mais amplo do que apenas esses dois campos, com muitos campos (a maioria deles na verdade) exigindo um diploma em CS ou mais.

Você tem um diploma de CS, como você não sabe que é um mistério.


O TIOBE é uma porcaria para determinar quanto uma linguagem de programação é usada. É uma medida da popularidade de um determinado idioma na Internet (em termos de número de referências), não em termos de linhas de código escritas.
Billy ONeal

Devido às suas variabilidades específicas de idioma, o LOC é irrelevante entre as linguagens de programação e, portanto, não pode ser usado para medir o uso da linguagem de programação em todos os setores. E a popularidade das pesquisas de idiomas na Internet atua como um proxy parcial para a profundidade e o interesse do uso (ou a falta dele) ... se você está ciente do viés inevitável. Por si só, ** o índice TIOBE não significa nada - apenas um tolo pensaria o contrário; e apenas um tolo pensaria que é isso que estou afirmando.
Luis.espinal 21/03

Quando usado em conjunto com outros indicadores (como pesquisas de emprego e desenvolvimento de tipo de produto), ajuda a estimar tendências no uso da tecnologia. Em outras palavras, é útil ou inútil, dependendo de para que você o usa, como o usa e com quais outros indicadores ele é combinado.
Luis.espinal 21/03

Meu argumento é que você parece estar usando esse índice para fazer uma declaração sobre o uso de uma linguagem de programação, que não é o que esse índice mede. Eu errei quando disse LoC escrito - mas não há uma boa maneira de dizer "quantidade de código escrito", que é o que eu quis dizer. O TIOBE é um concurso de popularidade e, nessa corrida, o Java vai surpreender todo mundo enquanto for a linqua franca dos cursos introdutórios de programação. (Não porque isso significa que esses estudantes não sabem que qualquer outra coisa, mas porque os alunos são geralmente mais alto do que os profissionais (ou seja, o seu verdadeiro).
Billy ONeal

1

Lembro-me de alguns aspectos básicos dos meus cursos de CS que foram bastante úteis às vezes. O processo Waterfall e suas etapas foram algo que eu usei repetidamente em minha carreira, com algumas variações para o Agile, onde não é tão rígido em etapas, mas as mesmas etapas estão lá.

As habilidades de resolução de problemas e várias heurísticas algorítmicas também podem ser úteis às vezes. Há algo a ser dito para os benefícios indiretos de um diploma de CS. Por exemplo, aprender a justificar uma resposta para mostrar por que algo está correto é apenas uma das poucas habilidades que refinei na universidade, mas não tenho certeza de quão óbvio seria que esse é um benefício no final do programa.


1

Concordo com o ponto de Thorbjørn Ravn Andersen em relação à mentalidade. Essa é a principal coisa que você desenvolve com um bom currículo de CS.

Basicamente, resume-se a entender coisas como estruturas de dados e algoritmos. Não que você não possa aprender isso por conta própria, mas um bom currículo de CS fornecerá melhor exposição.


Existem outros assuntos que apenas os especialistas em engenharia da computação e computação tendem a aprender, como organização e arquitetura de computadores. Aprender a construir computadores a partir da lógica seqüencial e combinacional torna um desenvolvedor de software melhor, pois fornece uma visão do que realmente está acontecendo dentro de um computador. Além disso, os primeiros programadores a trabalhar com um novo processador precisam entender conceitos como memória hierárquica e E / S, pipelines, caches associativos de conjunto de blocos, unidades de controle (microcodificadas e cabeadas) e a diferença entre o processamento escalar e vetorial.
bit-twiddler

Como o estudo colegiado de CS fornecerá uma melhor exposição do que em um laboratório onde realmente importa com um mentor qualificado que saiba não apenas como ele deve funcionar e como ele realmente funciona?
23611 JustinC

@bit Concordou. Sim, minha resposta é bastante simplória. Era para ser assim por uma razão.
Marian George

@justin Não sei bem o que você está tentando dizer. Quantos programadores trabalham em um laboratório, sem falar com mentores qualificados?
Marian George

@ JustinC: Aprende-se como as coisas funcionam em um laboratório (nível técnico). Aprende-se por que as coisas funcionam nos cursos superiores de organização e arquitetura de computadores (nível de engenheiro). Se você comprar alguns livros didáticos de nível superior sobre arquitetura e organização de computadores, verá o que quero dizer.
bit-twiddler

1

Escrita

No desenvolvimento de software corporativo, é vital poder escrever código e escrever . Quero dizer com isso: escrever e-mail, relatórios de bugs, documentos técnicos, etc. Tanto a escrita quanto a codificação requerem clareza de pensamento e economia de expressão apropriada.

Entre dois desenvolvedores de software, minha aposta é que aquele com um diploma de CS de uma universidade sólida (forte programa de CS e disciplinas eletivas necessárias em ciências humanas) possui as duas habilidades. (É verdade, isso não é uma garantia: as pessoas das humanidades podem ser ótimas programadoras e redatoras de livros; muitos graduados em CS são máquinas de codificação que não sabem escrever e assim por diante.)

Lendo

Um mentor meu afirmou que ele poderia julgar os desenvolvedores pelo que eles liam. O post original menciona os livros WROX. Na minha opinião, é mais provável que alguém com um diploma em CS procure livros profissionais de TI e possa usá-los com eficiência. Se alguém pode lidar com CLR , então pode lidar com "Professional C #".

Matemática

A matemática desenvolve lógica, prova, rigor, etc., e o efeito colateral é que ela auxilia na escrita. Embora a maior parte da TI de negócios não exija habilidades matemáticas intensas, a pessoa com um diploma em CS a terá quando necessário. Esta é uma maneira muito melhor de passar a vida do que viver sem ela, e imaginando o que você perdeu na escola.


1

Eu acho que depende realmente da qualidade do programa de CS que você passou. Eu sei o que você quer dizer, a maioria do código que escrevo diariamente é apenas VB.Net padrão, obtém os dados do SQL Server, coloca-os no formulário, salva-os no banco de dados, faz alguns relatórios. Lave, enxágue, repita. (Muito chato às vezes) O programa de CS que eu passei, além de cobrir a teoria e o conhecimento fundamental, ensinou muitas coisas práticas. Cobrimos áreas como design de software, design de banco de dados e gerenciamento de projetos. Aprender linguagens de programação foi a parte mais fácil, o design e a metodologia de criação de sistemas de software foi o que tirei da minha experiência na faculdade. Recebemos projetos baseados em problemas do mundo real, às vezes até projetando sistemas de software para outros departamentos do campus.

Como programadores, obviamente, temos a capacidade de aprender por conta própria, é uma necessidade em nosso campo. Devo dizer que estou muito feliz por ter passado pelo programa de CS. Meus professores foram incríveis e me ensinaram um pouco. Meus colegas de classe eram pessoas muito divertidas e passamos muitas noites divertidas no laboratório de informática. Para dizer a verdade, eu meio que sinto falta daqueles dias ......


1

É tudo na capacidade de viver indiretamente.

Se você pular o curso, provavelmente terá que aprender as lições de uma maneira muito pessoal (também conhecida como a maneira mais difícil). A falta de um diploma não significa que você seguirá o caminho mais difícil de aprender por tentativa e erro; no entanto, o grau garante a exposição a uma arca do tesouro de conhecimentos adquiridos anteriormente que outras pessoas tinham que ganhar até tarde da noite, sessões de programação frustradas e geralmente "fazendo da maneira mais difícil".

A pessoa verdadeiramente excelente não descartará o que os outros consideram verdadeiro, mas a desafiará até conhecerem as limitações do conhecimento e depois brincará com o "sistema" das idéias recém-adquiridas até que elas se tornem suas. Está sobre os ombros daqueles que vieram antes, e vivendo as soluções dos anos passados ​​sem ter que redescobri-las.

Obviamente, uma pessoa com um diploma em ciência da computação nem sempre é o melhor candidato. Existem pessoas únicas que foram levadas ao riacho, mas (por algum motivo estranho) se recusam a beber dele.


0

Tenho 21 anos e acabei de terminar um curso de CS. Eu sinto que, por melhor que você seja em programação, se você é formado em ciências da computação, já estará exposto a vários campos. Portanto, se você quiser aprender coisas novas, não tenha medo de explorar, mesmo que isso seja irrelevante . Se você é especialista em tecnologia ou linguagem de programação, ótimo. Mas não acho que você seja aventureiro e esteja disposto a procurar outras tecnologias. É assim que você se suja (e rápido também). Você não vai pensar que o que você explora será irrelevante, pois não vai ajudá-lo a ganhar dinheiro. (Você já estudou muitas coisas irrelevantes no seu CS UG;)).
É a paixão em CS que você tem após se formar que o torna um profissional de software.
Alguém concorda?


11
Você não pode supor que alguém não se interessará em "procurar outras tecnologias" apenas porque não possui um diploma em CS. Isso é uma falácia.
Steven Striga

0

Bem, quando entrei no CS, pensei que uau, sou muito bom e não vou aprender nada aqui ... Depois de cinco anos, aprendi a trabalhar em equipe e algumas coisas da engenharia que me separa de alguém que pode escrever apenas código e alguém que possa pensar no que ele faz antes de codificar, enfim, me ensinou a pensar antes mesmo de digitar uma única letra no meu editor de texto ou ide.


0

Para conseguir um emprego usando um idioma de código aberto, isso não significa agachamento. A maioria das empresas recruta com base na capacidade, e não nas qualificações e idiomas como o PHP, com uma reputação amadora de dizer que as pessoas podem ter talento sem nunca terem estudado CS. A única vez que ajuda se você está conseguindo um emprego usando as linguagens .Net, pois a maioria dos entusiastas não deseja desembolsar milhares de licenças apenas para mexer nos fins de semana, portanto, alguém procurando um primeiro emprego em C # provavelmente só terá 2-3 anos de experiência.

É claro que a experiência comercial é realmente valiosa, pois demonstra sua capacidade de fornecer código de qualidade aos prazos.

Em conclusão, você recebe entrevistas para trabalhar com idiomas não de código aberto.


0

Um diploma do Collegue ou da Universidade significa que você estudou e tem algum conhecimento de CS, algumas coisas básicas necessárias para um trabalho no mundo real, mesmo que você precise aprender outras coisas sozinho.

Além disso, quando um recrutador de TI precisa encontrar um Soft. Dev. E 500 candidatos enviam seu currículo e precisam entrevistar 50 deles, formados em seu currículo, ajudam o recrutador e suas chances de ser contratado.

(de um desenvolvedor de software que estudou algum HHRR)


0

Provavelmente isso não ajuda muito, mas agora que aprendi montagem e todo o conhecimento envolvido, sinto-me um programador mais completo e tenho certeza de que isso acontecerá novamente quando for para a universidade. Quero dizer, eu uso principalmente C ou VB, não preciso saber o que é um estado de espera para executar meus programas, mas simplesmente sei o que está acontecendo por trás do meu código é ótimo! E o conhecimento ajuda você a escrever um código melhor, mais rápido e mais sustentável. Um diploma em ciência da computação fornece exatamente o conhecimento necessário para escrever um ótimo código na minha opinião.


0

hoje a engenharia de software é uma ciência experimental, não matemática aplicada.

Os diplomas de ciência da computação enfatizam algoritmos. Quanto de seu trabalho diário envolve a implementação ou o uso de novos algoritmos e estruturas de dados?

Quanto envolve lidar com camadas de estruturas e abstrações com vazamentos? Quanto está tentando determinar o que uma API realmente faz - e não o que os documentos implicam? Quanto está testando e decidindo como testar?

Por tudo que um diploma de física ou química é um treinamento muito melhor do que memorizar Knuth


0

É importante porque os recrutadores têm um indicador de que você não é completamente ignorante sobre o que deveria fazer, mas isso não implica necessariamente que você realmente sabe o que está fazendo ou que está fazendo de uma maneira tecnicamente conveniente.

Existem pessoas brilhantes com diplomas que amam o que estão fazendo e são realmente bons programadores e também há idiotas com diplomas que são realmente maus programadores e nem conhecem alguns fundamentos. Existem pessoas brilhantes, sem diplomas, que podem desenvolver qualquer coisa (software de negócios / compiladores / sistema operacional) e há idiotas sem diplomas, que não sabem como usar uma hashtable corretamente.


0

Absolutamente correto, o diploma em ciência da computação não importa muito; é por isso que sua única opção deve ser obter um diploma de engenharia.

Ao entrevistar candidatos com diversas formações, a única característica que se destaca dos candidatos que não possuem diploma é a seguinte: falta de habilidades técnicas de comunicação e falta de disciplina. Essas são características fundamentais aprendidas ao obter qualquer diploma em ciências (eu diria ainda mais com um diploma em engenharia).

Com a maioria das coisas sendo iguais (e uma única rodada de entrevistas costuma aparecer com candidatos "quase iguais"), eu contrataria a pessoa com diploma de engenharia primeiro, o segundo de ciência da computação e o terceiro sem diploma. No entanto, existem maneiras de tornar as coisas muito desiguais na comparação, para que qualquer pessoa possa vencer até mesmo aqueles com um diploma de linhagem - mas essa é uma pergunta separada, não é?


-1

Para um programador ... não faz muito (exceto abrir portas para entrevistas, como você disse).

Para um trabalho de CS (pesquisa, análise de algoritmo, linguagem formal e design). É improvável que você aprenda essas coisas em qualquer outro programa que não seja baseado em matemática.

// Isenção de responsabilidade: minha graduação é em TI, então tive que voltar para todos os outros cursos para realizar em minha linha de trabalho.


-1

Eu tenho um diploma relacionado a computadores. O que me ajudou a obter minha primeira função no computador foi o fato de o terceiro ano ser um estágio como administrador de TI. Eu recomendo esquemas de colocação profissional na educação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.