Como ser um programador de sucesso sem um diploma em CS [fechado]

46

Isenções de responsabilidade (leia antes de saltar para responder):

Já vi várias perguntas semelhantes à que gostaria de fazer, então aqui estão algumas perguntas semelhantes .

IMHO Eles não são completamente o que estou perguntando, nem são tão completos quanto eu espero ser (não pretendo descartar as respostas às perguntas abaixo, nem estou desacreditando os que perguntam, eu só quero ser um um pouco mais completo):

Um diploma de CS pode beneficiar um programador mais velho?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

Importância do grau de CS ao se candidatar a empregos em desenvolvimento?

Deixe-me esclarecer, não estou perguntando o seguinte:

  • Como me ensinar a programar do zero (sem um diploma em CS)
  • Como me vender como um bom desenvolvedor de software (sem um diploma em CS)
  • Como conseguir um excelente emprego como desenvolvedor de software (sem um diploma em CS)

Um pouco de contexto:

Agora que tenho isenções de responsabilidade fora do caminho, deixe-me esclarecer minha pergunta, começando com um breve histórico da minha experiência como desenvolvedor de software.

Primeiro, tive muita sorte. Recebi várias oportunidades de trabalho (alguns projetos pesados ​​de PHP / MySQL de back-end e vários aplicativos WP7 em XAML / C #) através dos quais eu realmente aprendi tudo o que sei sobre desenvolvimento de software. Quase todos os trabalhos de desenvolvimento de software que tive foram aqueles que eu não estava devidamente qualificado para ter (e deixei isso claro para meus empregadores antes de me contratarem). Não quero me dar crédito onde não é devido, mas diria que a humildade perfeita dispensa modéstia .

Em quase todos os trabalhos de desenvolvimento que tive, superei as expectativas do meu empregador e provei ser um ativo valioso. Obviamente, há exceções 1 . Mas o que quero dizer é que sou bastante inteligente e fui capaz de me ensinar o que precisava saber para ter sucesso no meu trabalho. Com cada trabalho que eu tinha, eu era cada vez mais esticada.

Frequento o campus de Seattle da Universidade de Washington e atualmente estou no meu quarto ano com dois anos restantes, trabalhando em um diploma de matemática. Durante os vários trabalhos que tive (veja meu currículo, se você quiser essa lista), também frequentei a escola como estudante em período integral.

Como eu acho que a maioria dos desenvolvedores concorda, estudando os cursos de graduação gerais típicos, incluindo cursos introdutórios de programação ABSOLUTAMENTE PALES em comparação com a escrita de código real, a criação de 2 produtos reais , o trabalho com pessoas incríveis e o impacto positivo na vida dos usuários 3 .

Então ... como as coisas acontecem ... gastei muito mais tempo e energia trabalhando, em vez de me concentrar nos meus estudos. Às vezes eu me saí muito horrivelmente , mas na maioria das vezes eu conseguia me manter à tona com minhas notas.

No entanto, o programa de ciência da computação da UW é muito , muito , muito , muito competitivo.

Então, não foi nenhuma surpresa para mim quando fui rejeitado pelo programa. Duas vezes. Ironicamente, na mesma janela de meia hora em que recebi o aviso de rejeição sempre educado, embora desanimador por e-mail, recebi um telefonema da Amazon me oferecendo um estágio de verão 4 como SDE.

Ao olhar em volta para outros jovens da minha idade (21), que compartilham os mesmos objetivos que eu no desenvolvimento de software, sinto-me muito bem sobre onde estou, o que estou aprendendo, quem sou e o que Eu posso fazer. É claro que existem muito, muito, muito mais brilhantes jovens de 21 anos do que eu, não quero dizer que me destaco no meio da multidão, apenas que sinto que não estou abismalmente por trás do progresso de meus colegas comuns .

Sinto-me confiante em minha capacidade de obter sucesso no mundo do software. Mais importante, sinto-me confiante em minha capacidade e desejo de continuar a crescer, aprender e ficar embaraçosamente humilhado quando realmente preciso.

Grau de Matemática

Encontro-me buscando um diploma de matemática com o único objetivo de ter um diploma. Há quem diga que devo desistir e começar a trabalhar agora (como tive oportunidade de fazer), e há quem diga que devo realmente terminar meu curso. Decidi prosseguir com meu diploma por razões inteiramente diferentes das que os dois campos costumam mencionar; portanto, por favor, não me incentive de uma maneira ou de outra sobre esse assunto. Considere o problema "fechado" :)

* RESPIRAÇÃO PROFUNDA * ... desculpe, isso é mais do que eu previa.

Esta é, em essência, a minha pergunta:

  • Como eu determino objetivamente quais áreas de estudo, conhecimentos gerais e outras habilidades eu teria adquirido com um diploma de CS que eu posso ou não ter agora?
  • Como classifico essas habilidades na ordem de maior importância?

  • Qual é a melhor maneira (nos próximos dois anos) de suplementar minha educação para atingir esses atributos de forma a igualar ou até superar o nível de um estudante de graduação em ciências de uma universidade de ponta?

Aqui estão os passos que eu já estou tomando:

  1. Pergunte à comunidade de desenvolvimento (este post)
  2. Prosseguir tutoria com desenvolvedores experientes que compartilham uma carreira semelhante comigo
  3. Definir metas de "aprendizado" a curto e longo prazo e os programas subsequentes descrevendo os tópicos de estudo
  4. Continue escrevendo códigos e trabalhando em projetos pelos quais sou apaixonada

Se você chegou até aqui, merece um biscoito :) Agradeço por ter me acompanhado.

Então ... comunidade de desenvolvimento, desenvolvedores experientes, colegas estudantes que estão no mesmo barco que eu, que conselho você daria?

Além disso ... lembre-se de minhas isenções de responsabilidade no início deste post sobre o que NÃO estou pedindo.

Atualizar:

Percebo que não forneci parâmetros muito concretos para o que considero uma "resposta" bem-sucedida às minhas perguntas. Penso que a pergunta é muito vaga e poderia justificar uma série de respostas "corretas".

Depois de um tempo razoável, selecionarei a resposta que se encaixa nos seguintes atributos:

  • Explica o porquê da resposta deles
  • Pode falar de algum nível de experiência (seja contratando / interagindo ou sendo alguém que tem / está no meu lugar)
  • É conciso, mas completo, fornece princípios gerais, de preferência juntamente com exemplos específicos
  • Por fim, considerando o tamanho que parece corresponder ao que foi mencionado acima, faça uma boa resposta bem comunicada e agradável de ler. Outros que possam estar interessados ​​nisso no futuro, eu espero, seriam entretidos e também educados pela resposta.

Portanto, existem alguns parâmetros para "correto". Eles são muito altos, eu acho, mas eu os projetei como uma espécie de esboço para o que eu imagino que a "melhor" resposta seria. Obviamente, com tempo suficiente, selecionarei a resposta correspondente mais próxima como a "resposta".


(1) - Eu trabalhei em uma versão anterior deste site e, embora não tenhamos uma explicação explícita 
      conversando sobre isso, senti que não era capaz de me sair muito bem (isso pode ser 
      evidenciado pelo fato de que eles mudaram completamente seu site)
(2) - Em primeiro lugar, sim, é um produto real (mesmo que eu esteja escrevendo este post no Chrome ...) e
      chuta a bunda. Em segundo lugar, eu era um desenvolvedor interno de ensino médio em teste, escreveu uma prova de
      código conceitual para alguns dos novos recursos do IE8 ... isso foi há um tempo atrás.
(3) - No momento desta publicação, eu sou o desenvolvedor que escreveu este aplicativo, não sou mais
      responsável por sua base de código
(4) - Meu estágio começará em junho de 2012 e estarei trabalhando na Web Store 
      equipe.
Paul Hazen
fonte
17
O mundo precisa de mais programadores com um diploma de matemática. Nuff disse.
Pieter B
1
O mercado para psicólogos e outros serviços individuais de consultoria ou consultoria deve ser enorme. Estou pensando mudar de emprego ....
Ingo
16
Comece editando esta pergunta e corte-a ao meio.
Jeffo
8
@PaulHazen Depois de remover seu histórico extremamente detalhado e conteúdo de exoneração de responsabilidade e responder às suas perguntas reais, você está fazendo três coisas: como você determina o que está perdendo por não ter um diploma de CS, como obter o que está perdendo e como priorizar o que está faltando. Todas as três perguntas são completamente cobertas pela pergunta duplicada. Se você não gostar das respostas, ofereça uma recompensa : é para isso que elas servem .
7
@PaulHazen Como alternativa, se você não estiver interessado nas perguntas que você listou (que são duplicatas da pergunta anterior), revise sua pergunta para perguntar especificamente especificamente sobre algo novo. Sua pergunta sofre com informações demais - a maioria provavelmente desnecessária para o problema que você está tendo - e deve ser emparelhada para perguntar sobre um problema muito específico que você está tendo e que ainda não está coberto por outras perguntas.

Respostas:

17

OK, acho muito tentador não responder à sua pergunta, então aqui estou eu ...


Algumas coisas sobre mim primeiro


Tenho 26 anos e, graças ao meu pai (entre matemático e atualmente trabalhando como professor), tive a chance, desde muito cedo da minha vida, de estar em torno de computadores. (em 1986, quando nasci, embora não fosse a coisa mais comum naqueles dias, sempre tínhamos um ou dois computadores em casa). Dito isto, e - obviamente, devido à minha natureza curiosa e inclinada à matemática / voltada para a solução de problemas - não demorou muito para eu me apaixonar por programação. Primeiro com Pascal, com 7-8 anos de idade e depois praticamente tudo o resto.

Primeiro, deixe-me dizer que, enquanto estava na escola, sempre me destacava em qualquer coisa relacionada à matemática, simplesmente porque eu gostava e, honestamente, podia facilmente seguir o exemplo de meu pai e me tornar um matemático também. Mas isso não aconteceu.

O que aconteceu foi provavelmente o maior erro da minha vida (até agora): como você chamaria isso quando alguém apaixonado por código , que fala mais de 15 idiomas e escreveu milhares de linhas de código (de compiladores a micro-kernels e web) aos 18 anos de idade, de repente (as razões ainda são muito obscuras em minha mente, mas a influência geral, mesmo que sutil, do seu ambiente nunca é muito insignificante) decide seguir uma carreira em Medicina ? Eu acho que um "erro".

O resultado? 5 anos depois (aos 23 anos) e 1 ano antes de terminar o curso de Medicina (ainda trabalhando em projetos pessoais de programação de código aberto como hobby o tempo todo), decidi que já tinha o suficiente e desisti. E não era apenas porque eu odiava tanto esse novo campo (Medicina), mas também que havia algo inquietante em toda essa situação, uma coceira insaciável escondida no fundo ... ( o que teria sido se ...? ) Além disso, eu acabara de perceber que meu hobby , que considerava ótimo, mas que nem imaginava ser um trabalho de verdade, poderia não apenas trazer algum dinheiro, mas também me trazer muito + me manter feliz como indivíduo. Então, eu decidi sair. (= a melhor escolha, mesmo que um pouco tarde, eu já fiz).

Então, aqui estou eu agora, um psiquiatra que está prestes a ser médico (à beira de um colapso nervoso, para ser mais preciso; me idiota!), Cursando a faculdade (no meu terceiro ano, na verdade; e, sinceramente, persegui-lo para não acabar com essas temidas qualificações típicas ...) e um profissional mais do que feliz trabalhando em algo que eu adoro e, definitivamente, o assunto sobre o qual tenho mais a oferecer.


Algumas observações (da minha própria experiência)


  • A programação é um dos poucos campos em que os realmente bons sempre encontram seu caminho, não importa o quê. E isso definitivamente não é uma questão de qualificações típicas (honestamente, se eu tivesse uma empresa e quisesse recrutar programadores, posso facilmente saber quem é bom em questão de minutos - independentemente de ele ter algum diploma ou não)

  • O que é preciso para ser um bom programador é: inteligência orientada para a matemática (mas NÃO a própria matemática) e paixão (que tornarão as infinitas horas de estudo um prazer em vez de um fardo; e, mesmo que eu não tenha percebido isso, confie eu estudei toneladas de material sobre o assunto em minha vida, puramente por minha conta) . A educação formal é uma coisa boa, mas é um pouco superestimada. Os principais ingredientes do sucesso são os dois primeiros.

  • Definitivamente, a matemática nasceu onde CS nasceu. Mas CS não é mais apenas matemática. Eu sempre tive um cérebro forte voltado para a matemática, mas não sou um guru de matemática. E honestamente, na programação diária (a menos que você queira criar um mecanismo gráfico ou algo muito localizado), provavelmente nunca precisará de nada além de aritmética simples (adição, subtração, multiplicação, divisão, módulo) e algumas coisas sobre matrizes. (muitos vão discordar de mim, provavelmente matemáticos ou programadores muito acadêmicos, mas definitivamente dominar o cálculo NÃO é o que é preciso para ser um bom programador). Ter uma boa formação matemática talvez o ajude, mas NÃO por causa da própria matemática; isso o ajudará apenas com base em uma coisa comum que esses dois campos compartilham: habilidades de resolução de problemas.

  • A matemática é uma ciência (e uma ciência que eu respeito).

  • Programar é uma arte. (E uma ciência aplicada também, se você insistir) Mas lembre-se disso: uma arte - e é assim que eu sempre a tratei. E, como em todas as artes, não pode ser ensinado. Posso ensinar-lhe a maneira formal de desenhar um rosto e torná-lo melhor que a média, mas isso não fará de você nem um Da Vinci nem um Klimt. Mona Lisas é pintada por Da Vincis, e não por pintores cuidadosamente educados. Um ótimo código é escrito por grandes artistas de código. E habilidade e devoção podem facilmente ultrapassar a educação formal.


Então, o que é preciso para se tornar um * realmente * bom programador?


  • Ser inteligente, ótimas habilidades para resolver problemas e uma paixão pelo assunto (se você não o tem, basta deixá-lo; ser medíocre não é desculpa)
  • Muito tempo para dedicar ao assunto
  • Estudar o tempo todo (porque você simplesmente nunca saberá tudo; e observe: por que 'estudar' tem que estar relacionado a algum grau? Sempre achei muito mais prazer fazer as coisas no meu próprio ritmo ... )
  • Escrever código o tempo todo (não importa quantos livros você tenha lido; seu nível de codificação é diretamente equivalente à quantidade de código que você escreveu)
  • E, novamente, AMOR pelo assunto (se você não o ama o suficiente, e quero dizer realmente amá-lo, todos os itens acima se tornarão insuportáveis, mais cedo ou mais tarde; para mim, codificar como trabalho ainda é como ser pago .. assistir filmes: absolutamente absurdo, mas simplesmente ótimo)

Nas suas perguntas


  • Como eu determino objetivamente quais áreas de estudo, conhecimentos gerais e outras habilidades eu teria adquirido com um diploma de CS que eu posso ou não ter agora?

No entanto, eu precisaria realmente saber o que está incluído no diploma de matemática, deixe-me resumir o que você provavelmente estará perdendo em um diploma de CS (como cursos / disciplinas / etc - inspirado no programa de estudos da minha universidade ) em nenhuma ordem específica :

  • Design lógico de sistemas digitais (alguns circuitos de baixo nível e / ou / xors / etc - aparentemente não muito relacionados, mas ainda realmente educativos)
  • Arquitetura de computadores (junto com alguns códigos de montagem; você provavelmente nunca a usará, mas não sabe o quanto isso pode moldar sua atitude como programador)
  • Estruturas de dados (da lista vinculada a árvores complexas etc.); por mais simples que pareçam, mais cedo ou mais tarde você precisará de um bom conhecimento sobre isso; usar soluções prontas que você não entende não é um bom programador faria)
  • Compiladores (sim, compiladores! Você escreverá um compilador? Provavelmente não; mas, a menos que você possa escrever um, nunca saberá realmente como as coisas funcionam ...)
  • Sistemas operacionais (o mesmo que acima)
  • Redes de Computadores
  • Inteligência artificial e sistemas especialistas (você provavelmente nunca codificará no Prolog também; mas ainda é uma das coisas que pode moldar seu cérebro codificador e fazê-lo ver as coisas de uma perspectiva radicalmente diferente)
  • Como classifico essas habilidades na ordem de maior importância?

Saber o que priorizar em um campo em constante mudança como o CS sempre será uma aposta - um jogo de adivinhação .

Conheça o que você quer fazer e confie no seu instict. Obviamente, é essencial ter um conhecimento básico sólido . Mas o que você vai investigar depende inteiramente de você. Além disso, planeje sua carreira com cuidado: se você quer ser empregado, escolha seu alvo e seja ótimo nisso (por exemplo, querer ser empregado pelo Google e não saber ler um script Python simples é provavelmente uma daquelas situações proibidas ) . Se você está iniciando algo por conta própria (uma empresa), não tem "chefe" para satisfazer; basta escolher o que melhor lhe convier.

Por exemplo, se você quiser fazer algo relacionado à Web, eu definitivamente recomendo que você opte por: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Mas sou só eu. Alguém pode gostar (ou ver mais futuro em) Ruby / Rails do que em PHP.

Eu, por exemplo, agora estou codificando principalmente Objective-C / Cocoa . Aconselho você a prosseguir com isso? Definitivamente não. Ou seja: a menos que você goste de Macs ou queira uma carreira vendendo software relacionado ao Mac / iPhone. Se você estiver no desenvolvimento do Windows, optar pelo C # / .NET Framework provavelmente seria sua melhor escolha. (se você quiser ter uma idéia do que eu mais gosto, basta dar uma olhada no meu Perfil do StackOverflow )

  • Qual é a melhor maneira (nos próximos dois anos) de suplementar minha educação para atingir esses atributos de forma a igualar ou até superar o nível de um estudante de graduação em ciências de uma universidade de ponta?

Estude muito (livros, internet, código de outras pessoas, qualquer que seja) e escreva o máximo de código possível.

Ah, e tente conseguir um emprego em qualquer coisa relacionada ao código. ( Comecei a trabalhar como freelancer e tem sido uma experiência realmente valiosa, apenas para ver como as coisas realmente funcionam no mundo real).


Apenas meus 0,2 centavos amigáveis ​​... :-)

Sidenote: Eu sei que alguns dos meus pontos de vista podem parecer controversos, e tenho certeza que haverá muitos que discordarão de mim. Isso é aceitável. Mas isso não muda a maneira como vejo as coisas - e especialmente as coisas que amo.

Dr.Kameleon
fonte
Era exatamente isso que eu estava procurando. Obrigado! Quase todas as outras respostas também foram boas, muito poucas continham algo errado ou inútil. Atualizarei a pergunta para incluir uma pequena seção sobre o motivo da escolha e um link para uma postagem do blog que a detalha com mais detalhes (o motivo de colocar essa explicação no meu blog em vez de Programadores é devido ao já enorme extensão do post, bem como o crescente número de moderadores preocupados que já consideram a pergunta inadequada para este site). Fique informado. E obrigado novamente.
precisa
@PaulHazen Você é muito bem-vindo! Fico feliz em ter ajudado (se eu fiz) ... (Agora, quanto ao enorme tamanho da minha resposta ... argh ... O sistema o reconheceu automaticamente como um post "wiki da comunidade" e estou tentando obter os moderadores revertê-lo ao seu estado inicial: a simples - embora um pouco re-re-editado - resposta)
Dr.Kameleon
Em meta ( meta.programmers.stackexchange.com/questions/3513/… ), estou incentivando-os a movê-lo para um destino mais apropriado. De acordo com a FAQ oficial, a pergunta não é apropriada para este fórum. No entanto, observando o uso de fato dos programadores, sinto que é apropriado estar aqui. Os moderadores podem decidir onde melhor se encaixa. Para resumir meus pensamentos sobre como movê-lo: De acordo com o que os programadores devem ser, ele não pertence aqui, mas de acordo com o que os programadores são, ele se encaixa perfeitamente.
precisa
@PaulHazen Bem, pelo menos para mim (embora eu não seja um especialista em coisas SO), parece absolutamente apropriado.
precisa saber é o seguinte
Sim, eu vou jogar minhas mãos no ar. Contanto que as pessoas possam usar o Google ou o Stack Exchange para encontrar pelo menos as respostas, fico feliz. O conteúdo precisa ser facilmente descoberto no futuro por pessoas que tenham a mesma pergunta.
precisa
18

Como eu determino objetivamente quais áreas de estudo, conhecimentos gerais e outras habilidades eu teria adquirido com um diploma de CS que eu posso ou não ter agora?

Navegue pelo currículo do departamento de CS da UW, peça emprestado e navegue pelas leituras necessárias, veja os exames anteriores e os exercícios de laboratório (tarefas de casa). Se você não tem idéia de como abordaria o problema, tem um buraco no seu conhecimento.

Como classifico essas habilidades na ordem de maior importância?

Pense em que tipo de programação você gostaria de fazer no futuro. Se você gosta de criar sites e aplicativos CRUD, parece que já possui todo o conhecimento necessário.

A educação em CS entra em cena se você estiver interessado em entender como bancos de dados [distribuídos], servidores da Web, compiladores e intérpretes, sistemas operacionais, protocolos de rede etc. funcionam sob o capô e estiver interessado em construir esses sistemas você mesmo.

Qual é a melhor maneira (nos próximos dois anos) de suplementar minha educação para atingir esses atributos de forma a igualar ou até superar o nível de um estudante de graduação em ciências de uma universidade de ponta?

Eu não sei. Para mim, o maior benefício da universidade foi: 1) ampliar meus horizontes (esqueci 90% dos detalhes que aprendi na uni, mas lembro de conceitos e idéias) e 2) manter minha motivação intrínseca para aprender as coisas minguante: é mais fácil manter a motivação quando você está trabalhando em direção a uma meta - exame, outro exame etc. até se formar. (Além disso, estruturar a auto-educação não é uma tarefa fácil.)

[Adicionado: escolha uma universidade cujo programa de CS você gostaria de seguir, escolha cursos nos tópicos de seu interesse e faça você mesmo o currículo: trabalhos de casa, exames etc. A maioria dos cursos publica slides de aulas e trabalhos / exames de anos anteriores .]

Um conselho: não desista do seu diploma de matemática. Qualquer pessoa inteligente pode aprender a programar, mas a matemática lhe dará vantagem competitiva se você desejar trabalhar em aplicativos que não sejam CRUD / front-end, por exemplo, simulações fluidas e mecânicas, computação gráfica, processamento de imagem, reconhecimento e aplicativos de aprendizado de máquina, (até finanças!) etc.

ATUALIZAÇÃO 2 - experiência [longa]: obtive mestrado na faculdade de EE: os dois primeiros anos foram currículos comuns (física, engenharia elétrica, eletrônica analógica e eletrônica digital e muita matemática - álgebra linear; matemática discreta; real, vetorial e análise aplicada complexa.) Isso foi muito valioso, esp. a parte de EE e eletrônica - me permitiu trabalhar em projetos mistos de HW-SW, e a cooperação com os designers de HW foi muito emocionante. Eu não contribuí com nada para o design do HW, mas fui capaz de seguir o designer do HW "depurando" seu diagrama esquemático e fazer perguntas sensatas [não sabíamos se o bug estava no SW ou no HW - e sim no HW: -)]

Então as linhas se ramificaram e eu escolhi a linha CS. Alguns dos "detalhes" contribuíram para enraizar os conceitos (por exemplo, "executando" o algoritmo de Dijkstra manualmente). Também aprendi detalhes sobre como as CPUs funcionam (sinais de barramento, interpretação de diagramas de barramento, execução etc.) no exemplo do Motorola 68000 obsoleto, já na época, mas os conceitos aprendidos através dos detalhes também não são muito diferentes para os CPUs modernos.

Outros detalhes, esp. As implementações de SW (por exemplo, implementando o Dijkstra), foram para mim [desde que me tornei muito bom em codificação no ensino médio] um exercício inútil de depuração e contribuímos com o ZERO na compreensão dos conceitos.

E então me matriculei no programa de doutorado, onde tive que fazer cursos obrigatórios. Fiquei decepcionado com a escolha dos cursos, pois muitos deles pareciam mais estar orientados para as demandas da indústria (por exemplo, usando o Python para análise de dados científicos - obrigado, eu posso programar e sou muito capaz de me ensinar isso - - que novamente envolveu muita codificação inútil) do que no ensino de conceitos fundamentais (felizmente, realizei cursos de otimização discreta, análise estática de programas e análise formal com Promela).

Portanto, alguns detalhes foram úteis para incorporar conceitos e outros foram um fardo desnecessário (outro exemplo: programar a comunicação de porta serial entre dois computadores. Eu já estava acostumado a ler e interpretar especificações de HW e programar HW por meio de registradores, por isso era justo. Talvez eu seja ingênuo ao supor que os engenheiros médios de CS que precisam se tornar não precisam ser instruídos sobre como ler os documentos de HW).

Em conclusão: exponha-se a muitos conceitos diferentes (idéias de alto nível) e entre em detalhes para aqueles que você deseja priorizar e se tornar extremamente bom. [Você NÃO PODE ser extremamente bom em tudo!]

zvrba
fonte
+1 com certeza. Apesar de você ter esquecido 90% dos detalhes, diria que a experiência de aprender esses detalhes foi o que arraigou os conceitos e idéias, ou seria mais valioso investir tempo aprendendo menos detalhes e idéias mais conceituais / de nível superior ?
21119 Paul Hazen
@PaulHazen Veja a nova edição (a partir de UPDATE2 - não se encaixam no campo de comentário;))
zvrba
Muito afirmando os passos que estou tomando atualmente. A seção adicionada é inestimável. Sinto que a lista de coisas sobre as quais quero aprender detalhes é longa demais para ser razoável; historicamente, tenho um problema de escopo nesse sentido. Existe uma boa maneira de analisar o setor e identificar quais tópicos dentre os que me interessam seriam mais benéficos para obter detalhes? Ou você diria que realmente não importa quais eu aprendo, desde que eu mergulhe em um conjunto menor deles? Parece que a indústria pode ser difícil de prever a esse respeito.
Paul Hazen
1
Tentar prever a indústria é um jogo perdido de antemão [por exemplo, não tenho certeza de que alguém possa imaginar que o Twitter - (quase) clone de IRC para a web - se tornaria uma moda passageira. Ainda é um mistério para mim como eles pretendem ganhar dinheiro a longo prazo.] Você precisa fazer uma escolha proativa sobre o tipo de trabalho que gostaria de fazer e descobrir o que é preciso para conseguir isso. Quão? Encontre alguém que já trabalhe no setor alvo e converse com eles.
Zvrba
1
@ Paul Os conceitos são vitais, mas os detalhes (geralmente) não são. Você pode procurar os detalhes quando precisar deles, mas precisa aprender o panorama geral para saber que há algo que vale a pena procurar na área em primeiro lugar.
Donal Fellows
7

Eu entrevisto e participo no recrutamento de muitas pessoas juniores recém-saídas da faculdade. Ainda tenho que contratar alguém com base nas habilidades que adquiriu no programa que realizou. A razão para isso é simples: nenhum programa de CS (ou qualquer outro programa) que encontrei ensina habilidades concretas relacionadas à programação ou desenvolvimento de software em nível profissional e comercial . Ser capaz de desenvolver modelos e soluções para equações diferenciais complexas e escrever algoritmos de classificação otimizados para fins especiais pode ter valor acadêmico e / ou científico, mas não tem influência no desenvolvimento geral de software.

O que procuro então? Bem, espero que um graduado tenha aperfeiçoado a arte de aprender. Afinal, isso é o que uma boa faculdade deveria ensinar aos seus alunos. Como analisar e decompor problemas gerais em componentes lógicos e discretos, previsivelmente solucionáveis. Uma abordagem metódica para encontrar, avaliar, organizar e aplicar conhecimentos e informações para uma solução.

Além disso, procuro pessoas que entendam que um grupo de pessoas, trabalhando juntas e se comunicando, vale muito mais do que a soma de seus indivíduos. Isso requer maturidade e humildade e a capacidade de dar e pedir ajuda.

Portanto, voltando ao escopo de sua pergunta: embora um diploma de CS possa melhorar suas chances de conseguir a primeira entrevista fora da faculdade, acho que isso tem pouca ou nenhuma influência no seu sucesso ou proficiência como desenvolvedor. Eu sempre segui a filosofia "contratar por atitude, treinar por habilidade" e é bem recompensada.

Meu conselho: continue com seu diploma de matemática, se isso for algo que lhe interessa. Qualquer educação científica o servirá bem, então escolha a que você mais gosta, pois é a que você mais se destacará. Depois, concentre-se em aprender as coisas importantes: como aprender, como analisar e abordar a solução de problemas em de maneira estruturada, como interagir e cooperar com outras pessoas, como assumir a liderança e a responsabilidade pela entrega dos seus e dos colegas de equipe. O resto é apenas tecnologia e codificação, as ferramentas do comércio. Aqueles, você pode e vai aprender por conta própria. Escolha e estude alguns conhecimentos de uso geral, como padrões de design populares e paradigmas arquitetônicos. Comece a escrever programas para praticar. Escolha uma linguagem e uma base tecnológica bastante atualizadas, mas não cometa o erro de pensar nisso ' é o último que você aprenderá. Ferramentas e idiomas mudam o tempo todo, portanto o desenvolvimento de software é um processo constante de aprendizado.

pap
fonte
Seria justo dizer que, do seu ponto de vista, há pouco ou nada dentro de um diploma de CS que, por si só, é útil para se tornar um programador de sucesso? Atualmente, eu gosto mais da sua resposta, você certamente encontra muitas coisas que estou tentando entender e entender. Você poderia emprestar algum contexto adicional para qual área do CS você recruta? Imagino que os recrutadores que contratam novos graduados para trabalhar em sistemas operacionais possam ter perspectivas diferentes das suas (mas eu posso estar totalmente errado sobre isso). Apreciar o tempo que você tomou, este é super útil
Paul Hazen
Eu trabalho para uma empresa de consultoria de TI que recruta bastante na faixa de 0 a 1 ano de experiência. Não posso responder com confiança em relação às lojas de desenvolvimento de sistemas operacionais (quantas existem?), Mas eu diria que o mesmo vale para elas, se forem inteligentes. Pouquíssimos graduados terão habilidade suficiente no assunto para serem competitivos sozinhos; portanto, você contrata atitude, potencial e capacidade de aprender.
pap
Interessante. Dei a você um "+1", e eu gosto mais do que você tem a dizer mais do que qualquer outra pessoa, no entanto, você está respondendo com mais precisão à pergunta "como entrar com sucesso no campo do desenvolvimento de software" Informações inestimáveis ​​para ter certeza , mas meu interesse é entender os atributos de um programador bem - sucedido , não os atributos de um programador desejável (sim, obviamente, programadores bem-sucedidos também são desejáveis, mas nem sempre o contrário).
21119 Paul Hazen
Eu não contratei pessoas que não entendo ou já são bem-sucedidas ou têm potencial e capacidade para serem bem-sucedidas. Então, para mim, "desejável" e "bem-sucedido" são a mesma coisa. Se alguém está recrutando por outros critérios, está errado ou é ruim em detectar talentos. De qualquer forma, provavelmente não é um bom lugar para trabalhar. A chave, no entanto, como empregador, é saber aproveitar o potencial de seu pessoal e convertê-lo em sucesso real. Essa é uma mistura de treinamento, orientação e treinamento e, se você não a possui, não importa o quão talentosas você contratar.
pap
7

Esta é, em essência, a minha pergunta: como posso determinar objetivamente quais áreas de estudo, conhecimentos gerais e outras habilidades eu teria adquirido através de um diploma de CS que talvez eu não tenha agora?

resposta 1

Se você aprender algo novo com seu estudo. Então você pode dizer objetivamente que ganhou isso através de um diploma em CS.

A1 O porquê

Um diploma de CS é conceitualmente sobre aprendizado. Se alguém retornar de um diploma de CS sem diferença líquida, seu objetivo principal não será cumprido. Exames e cursos são a medida "oficial" do que foi aprendido. No entanto, a compreensão individual (aprendi algo novo?) Deve ser uma medida objetiva melhor.

A1 A experiência

Eu já estive na academia e agora trabalho profissionalmente. Eu escolhi um Mestrado em Ciência da Computação porque queria expandir minha compreensão e tenho uma paixão por aprender.

Meu mundo se expandiu como resultado da obtenção de um mestrado em computação. Meu mundo também se expandiu de trabalhar profissionalmente.

Como classifico essas habilidades na ordem de maior importância?

Resposta 2

A importância é relativa para quem está fazendo a pergunta e para que situação. Se é para crescimento pessoal , então tudo é importante. Se for para a indústria, coisas importantes como algoritmos e boas práticas de OOP / software padrão são importantes.

A2 O porquê

O "escopo" da importância é altamente dependente do "contexto". Sem um contexto, é difícil classificar os méritos das habilidades.

A2 A experiência

Eu descobri que as habilidades obtidas na "universidade" vs "no campo" são diferentes. As "habilidades" na universidade são mais "teoria", da indústria é mais "prática". Por esse motivo, essa diferença significa que as habilidades são realmente classificadas de maneira diferente em termos de importância.

Qual é a melhor maneira (nos próximos dois anos) de suplementar minha educação para atingir esses atributos de forma a igualar ou até superar o nível de um estudante de graduação em ciências de uma universidade de ponta?

Resposta 3

Empurre-se para além do ponto de ruptura e, quando quebrar, continue se quebrando novamente.

O que eu quero dizer?

Se você chega a um ponto em que não entende, então se quebra. Continue aprendendo até entender. Em seguida, empurre mais até encontrar outra coisa que você não entende (ad infinitum) .

A3 O porquê

Se você apenas aprender e permanecer dentro dos seus limites, estará apenas "ok". Você não quer ficar apenas "ok". Você quer ser o "melhor" que pode ser. Você não pode alcançar seu potencial real, se você não ultrapassar CONSTANTEMENTE seus limites.

A3 A experiência

Eu sempre vou ser um estudante ao longo da vida, não vou enumerar meu conjunto de habilidades atual; se você estiver curioso, pode ver apenas meu perfil.

A única coisa que direi é isso. Eu nunca sou realizado com meu conhecimento atual. Quero voar mais alto, ver mais longe e ir mais fundo.

Noite escura
fonte
Boas observações, com certeza, isso ressoa comigo. Veja a atualização se você está se perguntando por que não consigo marcar qualquer resposta como "correta" ainda.
precisa
E boas atualizações. Mantenha a fé, não esquecerei de marcar uma resposta como tal quando chegar a hora.
precisa
1
Poderia, por favor, limpar sua resposta? Você tem dois cabeçalhos de seção repetidos, com conteúdo diferente, mas semelhante embaixo de cada um.
21119 Paul Hazen
Olá Paul, não sei bem como você gostaria que eu limpasse. Eu acho que parece um pouco confuso. Cada subtítulo está relacionado a cada pergunta, ou seja, cada "pergunta" possui um "Por que" e "Experiência" para respaldar a resposta conforme solicitado na atualização. Fico feliz em fazer alterações em termos de clareza.
quer
Ohhh ... era isso que era tão confuso para mim, você poderia incrementar os títulos ou usar texto em negrito para marcar subtítulos? Eu acho que isso ajudaria a melhorar a clareza.
Paul Hazen
4

Como eu determino objetivamente quais áreas de estudo, conhecimentos gerais e outras habilidades eu teria adquirido com um diploma de CS que eu posso ou não ter agora?

Basta olhar para os requisitos de graduação e, em seguida, procurar o currículo de cada classe.

Como classifico essas habilidades na ordem de maior importância?

Você realmente não pode fazer isso sozinho sem o benefício da retrospectiva. Eu diria que a coisa mais importante que a maioria dos programadores autodidatas não tem é a análise e o design de algoritmos. O restante pode ser colhido em pedaços.

Qual é a melhor maneira (nos próximos dois anos) de suplementar minha educação para atingir esses atributos de forma a igualar ou até superar o nível de um estudante de graduação em ciências de uma universidade de ponta?

Mesmo se você não for admitido no programa, poderá frequentar aulas de outros departamentos como eletivas. Uma das minhas aulas favoritas era uma aula de projeto da engenharia aeroespacial, onde trabalhei em eletrônica e firmware para um pequeno satélite.

Você também pode comprar o livro de texto que sua classe desejada está usando. Fiz isso em algumas aulas que não cabia na minha agenda. Outra opção é o curso aberto do MIT .

Karl Bielefeldt
fonte
Um usuário experiente, surpreso por não ter lido tempo para ler as respostas postadas por outros usuários, sua resposta é quase idêntica a algumas que já estão aqui. Tenha cuidado para revisar respostas pré-existentes ou, se você acha que sua resposta é diferente, ajude a esclarecer isso para mim.
precisa
Não vi mais ninguém recomendar aulas de CS para disciplinas eletivas, o que muitas pessoas não percebem que é permitido. A quase duplicação no resto é o resultado de pedir uma grande questão multipart :-)
Karl Bielefeldt
Peço desculpas, você está correto. Ninguém mais sugeriu aulas de CS como eletivas. Embora seja um bom conselho e certamente não esteja errado , algumas das outras respostas foram mais completas e abordaram as três perguntas em um contexto melhor com o restante da minha pergunta. Para não negar nenhum dos conselhos que você der (dou-lhe um +1), isso será levado a sério, com sinceridade, muito obrigado e novamente desculpe-me pelo meu erro.
precisa
3

Por que você acha que um diploma de CS é tão importante para ser um programador de sucesso ?

O que você precisa para ser um programador de sucesso é:

  • Paixão pela programação
  • Uma sede sem fim de conhecimento sobre novas tecnologias
  • Entre na indústria de alguma maneira

Normalmente, o grau de CS o levará para dentro da indústria, mas se você não tiver paixão e sede de conhecimento, sofrerá e nunca será um bom programador.

Parece que você já entrou no setor e certamente parece que você tem paixão e sede de conhecimento.

O que você precisa saber é continuar pesquisando, aprendendo e ganhando experiência, e a indústria saberá como apreciá-lo sem o diploma.

Um exemplo de alguém com quem trabalho

um dos desenvolvedores de software que trabalha na minha equipe é formado em direito ... depois de alguns anos, ela entendeu que não gosta de direito e que deseja ser programadora. como ela não conseguiu um emprego como programadora (sem experiência, sem diploma), fez um curso de informática por seis meses, conseguiu um emprego e é uma grande desenvolvedora desde então.

Mithir
fonte
Embora esse seja um ótimo conteúdo, acho que não atinge a marca de responder à minha pergunta (algo que pode muito bem ser minha culpa em termos errados). Eu não acredito firmemente que ter um diploma de CS faz de um programador de sucesso. A minha pergunta é mais "qual dos tópicos ensinados dentro de um grau CS fazer tendem a contribuir para o sucesso de um programador, e como faço para objetivamente determinar como eu medir-se nos tópicos, e como fazer Isupplement / enriquecer a minha paixão existente, fome por conhecimento e experiência no setor com esses tópicos? " Sua resposta certamente não está errada.
precisa
2

IMHO não existem trabalhos de programação (ou trabalhos de vendas ou trabalhos de administrador de sistemas, etc.), existem apenas trabalhos de solução de problemas. Contratamos e pagamos pessoas para resolver problemas, escrever código é apenas parte da solução do problema. Sim, mesmo as vendas são uma forma de resolução de problemas. Portanto, um diploma de matemática prova que você pode resolver problemas e também um diploma de CS.

Com a sua publicação, fica claro que você está recebendo muita experiência / estágios. Ótimo! não se preocupe em conseguir um emprego depois da formatura.

Para tentar responder às suas perguntas:

aulas? escolha algumas aulas teóricas de CS em vez de aulas de escrita de código. Encontre algumas aulas que não sejam de CS / matemática, por exemplo. filosofia vai ajudar você a se destacar da multidão

prioridades? aprenda coisas novas (e não apenas aulas fáceis que você já conhece)

próximos dois anos? converse com as pessoas, aprenda, construa relacionamentos, procure atividades externas. (Hobbies / esportes / passatempos fora do trabalho / estudo é uma pista para ver como o candidato está motivado.)

Dicas finais: forme-se o mais rápido possível. Construa uma rede de contatos. E o único trabalho seguro é criar seu próprio trabalho. Procure idéias / oportunidades onde você pode começar seu próprio negócio. Boa sorte.

jqa
fonte
Isso é ótimo, obrigado por sua resposta. Dou um "+1", mas não posso marcar como resposta, outras respostas aprofundaram o porquê e identificaram maneiras de determinar objetivamente as metas de aprendizado. Nada disso nega sua resposta, eu entendo o que você diz ao coração e é realmente útil, então obrigado mais uma vez.
precisa
@PaulHazen - se você quer saber 'por quê?' então escolha uma aula de filosofia :-) Mas, falando sério, eu fiz um curso teórico de CS de 4 anos em que não havia curso C porque 'isso é algo que você pode ensinar a si mesmo'. Para aliviar, escolhi uma pequena aula de filosofia um semestre e depois fiz outro. Além de desafiador, foi um grande grupo de pessoas e idéias refrescantes. E sua pergunta demonstra claramente que você possui as habilidades de escrita necessárias para qualquer aula que não seja de matemática / ciências da computação.
JQA
1

Em primeiro lugar, deixe-me dizer que estou muito feliz por você ter feito essa pergunta, porque é uma pergunta que me fiz ao longo dos anos.

Acho que até agora me considero um pouco bem-sucedido nessa área. Tenho alguma experiência na faculdade e gostaria de terminar meus estudos na área de Ciência da Computação, mas ainda não mereço um diploma neste momento da minha vida. No entanto, tive bastante sucesso na engenharia de software, apesar dessa desvantagem (decorridos 10 anos). Eu tenho que ser honesto com você, no entanto, não era necessariamente uma coisa fácil de fazer (é claro, eu apostaria que qualquer coisa que valha a pena fazer, na maioria das vezes NÃO é a mais fácil). Também vou dizer que ainda não é a coisa mais fácil. Existem muitas empresas por aí dispostas a dar uma chance ao candidato certo, mas eu entrei em contato com outras pessoas que ficarão frustradas com a falta desse "selo de aprovação" da educação universitária. Contudo,

Começou no .net em uma empresa muito grande. Como não programador (por pouco tempo) (trabalhei como representante de suporte técnico, na época), aprendi tudo o que pude sobre as linguagens e tecnologias usadas quando aplicadas à empresa em que trabalhava. Além disso, e esta é provavelmente a coisa mais importante que eu criei em rede. Enviei um e-mail para todas as pessoas que encontrei no diretório que tinha Engenheiro de Software no título. Eu era irritante? Provavelmente. Eu sempre fui cortês e respeitoso com o desejo de aprender. Eu agendava almoços ou apenas os encontrava na cafeteria e me sentava para tentar conversar. Às vezes era embaraçoso ou eu era desprezado, mas no final, obtinha os resultados esperados. Consegui obter credenciais de menor tempo para alguns bancos de dados internos e, após algum tempo, adquiri as credenciais necessárias para desenvolver software em sua plataforma proprietária. Logo depois, me encontrei em uma posição dentro da empresa para emprestar algumas habilidades no desenvolvimento de ferramentas internas para a equipe de análise em que eu trabalhava na época. A partir daí, eu sempre me esforcei para ser o cara mais inteligente da sala da maneira mais despretensiosa possível. Eu estava ansioso e me certifiquei de que todos soubessem disso. Sempre tentei fornecer uma solução sempre que possível e descobri que, se você se esforçar o suficiente, existem muito poucos domínios de problemas que são impossíveis de resolver (fora da teoria quântica, talvez). Eu me encontrei em uma posição dentro da empresa para emprestar algumas habilidades no desenvolvimento de ferramentas internas para a equipe de análise em que eu trabalhava na época. A partir daí, eu sempre me esforcei para ser o cara mais inteligente da sala da maneira mais despretensiosa possível. Eu estava ansioso e me certifiquei de que todos soubessem disso. Sempre tentei fornecer uma solução sempre que possível e descobri que, se você se esforçar o suficiente, existem muito poucos domínios de problemas que são impossíveis de resolver (fora da teoria quântica, talvez). Eu me encontrei em uma posição dentro da empresa para emprestar algumas habilidades no desenvolvimento de ferramentas internas para a equipe de análise em que eu trabalhava na época. A partir daí, eu sempre me esforcei para ser o cara mais inteligente da sala da maneira mais despretensiosa possível. Eu estava ansioso e me certifiquei de que todos soubessem disso. Sempre tentei fornecer uma solução sempre que possível e descobri que, se você se esforçar o suficiente, existem muito poucos domínios de problemas que são impossíveis de resolver (fora da teoria quântica, talvez).

Para encerrar o que poderia ser uma longa história (e se você estiver no noroeste do Pacífico, adoraria discutir uma cerveja), tive minha "grande oportunidade" em uma pequena startup que estava disposta a me dar uma chance . Eles trocaram minha falta de experiência por um salário um pouco menor, e eu comecei a correr. Depois, passei de uma pequena loja de desenvolvimento para a próxima nos próximos anos, ganhando amizades e habilidades ao longo do caminho, para onde finalmente estou como desenvolvedor líder e diretor de uma pequena empresa de engenharia.

Um ponto importante aqui, se eu não o tiver comunicado com eficácia suficiente, é que você precisa se conectar. Faça amigos, tome umas cervejas e ria e encontre pessoas que estão no campo em que você deseja trabalhar (de preferência na pilha de tecnologia que você preferir). Certifique-se de que as pessoas saibam sua disposição de fazer o que for preciso e vontade de fazer o trabalho, por mais monumental que seja. Você basicamente tem que "superar" sua falta de educação formal. Entre e divirta-se com isso. Esta indústria é a melhor do mundo, IMHO. Fiz amizades duradouras e contatos que me ajudaram de um lugar para outro e continuarei fazendo o mesmo por eles sempre que a oportunidade se apresentar.

Paul Shoemaker
fonte
1
Eu me sinto muito mal por não poder marcar isso como a resposta. Como muitas das outras respostas, nada do que você diz achar errado , mas você se concentra inteiramente em como promover minha carreira quando o ponto crucial da minha pergunta é como ser um programador de sucesso. Embora um programador de sucesso implique uma boa carreira, prefiro focar no aspecto "programador de sucesso" e deixar a parte da carreira ser (um importante e muito intencional) após reflexão. Dou-lhe um "+1" para informações valiosas que respondem parcialmente à minha pergunta.
precisa
Ah, e por falar em rede, eu adoraria ouvir mais sobre sua história! Parece que compartilhamos muitos dos mesmos caminhos / objetivos. Sinta-se livre para escolher o método de contato mais adequado para você em paulhazen.net/about , e nós vamos pegar essa cerveja.
precisa
1

Primeiro, deixe-me rir na estipulação "concisa mas completa" perto do final de sua grande obra. Direto aos negócios:

Como eu determino objetivamente quais áreas de estudo, conhecimentos gerais e outras habilidades eu teria adquirido com um diploma de CS que eu posso ou não ter agora?

Como outros mencionados, você pode começar no catálogo de cursos . Mas eu encorajo você a sair dos limites dessa lista. É realmente bom que você esteja se formando em matemática. Muitos engenheiros com quem trabalhei não se lembram de como realizar uma integração simples e nunca exploraram fora dos muros dos cursos tradicionais de matemática discreta do CS.

Essa resposta parece bastante esparsa em termos de detalhes. Eu não sou formado em ciências da computação e não me encontrei nas áreas necessárias. Eu desejo, no entanto, que passei mais tempo com as outras coisas que me interessavam. História, Linguística e Inglês, por exemplo.

Como classifico essas habilidades na ordem de maior importância?

Aprenda o que você ama

O que é importante para você? O que é importante para os empregadores? Minha heurística pessoal sempre foi aprender o que me parece mais interessante - você precisa amar o que faz; caso contrário, você queimará. O software é um campo de atuação tão amplo que sempre parece haver um emprego disponível para um desenvolvedor competente e apaixonado por qualquer uma dessas habilidades.

Aprenda a aprender e se esforce

Eu acho que isso me leva a duas meta-habilidades que eu colocaria acima do resto: aprender as coisas vorazmente e trabalhar duro. Isso pode parecer clichê e dolorosamente óbvio, mas a combinação é rara. Eu estive em todo o mapa em termos de habilidades "necessárias" - front-end HTML / javascript para extensões de linguagem, desenvolvimento móvel, visão computacional para administração de sistemas e, novamente, mais de 7 idiomas. A única verdadeira habilidade essencial em tudo o que está tornando o hábito superar minha própria ignorância.

Eu realmente amo a filosofia de Jack White sobre guitarras e música (sério, vá assistir a isso), e acho que é extremamente aplicável ao mundo da programação. Coloque as coisas um pouco mais fora de alcance. Esforçar-se. Então parecerá fácil quando tudo o que alguém quiser é o seu trabalho.

Qual é a melhor maneira (nos próximos dois anos) de suplementar minha educação para atingir esses atributos de forma a igualar ou até superar o nível de um estudante de graduação em ciências de uma universidade de ponta?

  1. Classes de CS não principais

    Como você, o departamento de CS da UW me rejeitou ... embora eu ache que os deixei fazer isso pela terceira vez antes de voltar aos meus sentidos. Acabei me especializando em informática e minoria em matemática aplicada. Mas eu ainda peguei toda a faixa principal do CS. São CSE 373, 410, 413, 415 e 417. Portanto, acredito que você deve seguir sua paixão primeiro. Os meus me levam a essas aulas. E acho que você recebe uma educação básica bastante abrangente com eles, embora possa ser um pouco de luz sobre o lado teórico das coisas.

    Agora, aqui está o mais interessante: com a informática, a maioria delas contava com minhas disciplinas eletivas necessárias. No departamento de matemática, pode ser necessário obter aprovação explícita e pode ser uma extensão para qualquer um, exceto o CSE 417.

    Convoque uma consulta DARS (provavelmente um link apenas para UWNetID) e veja onde estão as coisas. Eu costumava fazer isso para vários cursos ad nauseum .

  2. Classes AMATH

    Na mesma linha, o departamento de Matemática Aplicada possui algumas classes que podem ser trabalhadas como requisitos eletivos. Você pode até ser menor no AMATH como o seu verdadeiramente.

    Por que eu mencionei isso? A computação numérica - por exemplo, AMATH 301/352 - é um grande mistério para a maioria dos programadores. Se você não obtiver mais nada, poderá escrever posts interessantes no blog . Mas eu argumentaria que conhecer os problemas que envolvem os tipos numéricos de um idioma e saber como mensurá-los e melhorá-los é muito importante.

  3. Construa algo!

    A coisa mais importante que você pode fazer é criar algo novo. Tome uma idéia do início ao fim. Não deixe que seja algo fácil dentro da sua zona de conforto.

    As aulas de programação mais proveitosas que eu tive sempre tiveram um grande componente de programação prática. Para um engenheiro, a teoria é incrivelmente importante - desde que possa ser transformada em algo real. Então, encontre um papel CS com um som legal e tente implementá-lo. A sério.

  4. Arrume um emprego

    Agora, você já mencionou que tem um estágio na Amazon. Isso é ótimo. Experiência de trabalho real é realmente a chave! Há uma abundância de pessoas com graus CS que não pode programar a sua maneira fora de um saco de papel molhado. Ter uma boa experiência de trabalho vale muito mais que um diploma.

fuga
fonte
ESTA. Isso é muito bom. De fato, considero que essa é uma resposta mais do que válida. A resposta marcada foi apenas um pouco mais válida ... * suspiro * tão difícil de julgar com tantas ótimas respostas :( Gostaria de poder ajudar mais seu representante. Mas como eu te conheço na vida real (mas principalmente através do twitter como nós) 've haha discutido anteriormente), eu vou ter que comprar uma cerveja ou uísque como um prêmio de consolação.
Paul Hazen
-2

Existem mais de algumas histórias de pessoas se tornando milionárias antes de se formarem na faculdade, talvez a que mais ouço seja Bill Gates. As pessoas com habilidades de nicho tendem a se sair melhor sem um diploma do que o graduado em bolachas com caramelo.

Encontre algo em que poucas pessoas se interessam, geralmente algo que é chato, tedioso ou difícil de aprender, e aprenda bem, fique obcecado por isso. Algumas áreas das quais ouvi falar são sobre o back-end do Unix (não o Linux, embora o Linux não esteja muito atrás), Flash (não sei o suficiente sobre o flash para lembrar exatamente o que era, mas conheço um cara que se mudou rápido sabendo disso e ele disse que ainda existe um mercado para isso, principalmente porque as pessoas dizem que está morrendo e não vão aprender). Você pode precisar de algumas aulas para começar, mas se você conhece suas coisas e tem um portfólio impressionante, existem negócios por aí que vão precisar de você!

BillyNair
fonte
1
-1 por não responder à minha pergunta. Você não está errado, mas parece que pulou minha seção "o que não estou procurando" e não encontrou nenhuma das coisas que estava procurando.
precisa