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?
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:
- Pergunte à comunidade de desenvolvimento (este post)
- Prosseguir tutoria com desenvolvedores experientes que compartilham uma carreira semelhante comigo
- Definir metas de "aprendizado" a curto e longo prazo e os programas subsequentes descrevendo os tópicos de estudo
- 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.