Estou me formando em Ciência da Computação, mas vejo sites como o Stack Overflow e mecanismos de pesquisa como o Google e não sei onde eu começaria a escrever algo assim. Durante um verão, tive a oportunidade de trabalhar como desenvolvedor de iPhone, mas senti como se estivesse colando bibliotecas que outras pessoas haviam escrito com pouca compreensão da mecânica que acontecia sob o capô.
Estou tentando melhorar meu conhecimento estudando algoritmos, mas é um processo longo e doloroso. Acho os algoritmos difíceis e, na velocidade em que estou aprendendo, uma década se passará antes que eu domine o material do livro. Dada a minha situação atual, passei um mês procurando trabalho, mas minhas habilidades (C, Python, Objective-C) são relativamente rasas e não são tão desejáveis no mercado local, onde C #, Java e desenvolvimento web são muito mais altos em demanda. Isso não quer dizer que as oportunidades C e Python não existam, mas tendem a exigir mais de 3 anos de experiência que eu não tenho. Meu GPA está bom (3.0), mas não é alto o suficiente para ser aplicado a grandes empresas como a IBM ou retornar para estudos de pós-graduação.
Basicamente, estou me graduando em Ciência da Computação, mas não sinto que aprendi a programar. Eu pensei que ingressar em uma empresa e programar em tempo integral me daria a chance de desenvolver minhas habilidades e aprender com os mais experientes que eu, mas estou lutando para encontrar trabalho e estou começando a ficar realmente frustrado.
Vou ampliar minha rede e olhar além da cidade em que cresci, mas o que outras pessoas em situação semelhante tentaram fazer? Eu trabalhei duro, mas não tenho confiança para sair por conta própria e escrever meu próprio aplicativo. (Ou seja, torne-se um desenvolvedor independente no mercado de aplicativos para iPhone.) Se nada acontecer, terei que considerar a atualização e o aprendizado de habilidades mais populares ou experimentar algo marginalmente relacionado, como a TI, mas, considerando todo o esforço que pus como fugir.
Embora eu entenda por que você acha que isso não era "programação real", a verdade é que o trabalho de integração representa uma porcentagem significativa da carga de trabalho típica de um programador corporativo. Sua experiência pode ser um pouco mais valiosa do que você pensa :)
fonte
Primeiro, obrigado por uma pergunta imensamente honesta. Existem várias maneiras de resolver os problemas em questão. Aqui estão algumas dicas que eu considerava muito úteis para mim no passado e ainda continuo a usá-las para ampliar meu conhecimento.
Aprenda, Aprenda e Aprenda um pouco mais. Esta é provavelmente a dica mais importante que posso lhe dar. Nunca pare de aprender . Conhecer um idioma é bom, conhecer vários é ainda melhor. O conhecimento de outros idiomas o tornará um programador melhor e facilitará o processamento de determinadas tarefas e o ajudará a obter um melhor conhecimento das estruturas de dados comuns.
Comece pequeno .
Inicie um projeto de hobby no seu tempo livre. Não faça algo que possa realizar com bastante facilidade. Assumir um projeto em que você não tem idéia por onde começar. Jogue-se no fundo do poço. Os benefícios disso é que você aprenderá coisas que nunca soube que existiam e, quando concluir, sentirá um imenso orgulho e satisfação. É isso que me faz continuar.
Tenha uma verdadeira paixão pelo que faz. Embora as pessoas discordem de mim neste caso. Não acredito que você possa se destacar nesse campo se simplesmente considerar um trabalho entre 9 e 5 anos. Tem que haver uma paixão para fazê-lo.
Ajude outras pessoas no SO! A melhor maneira de entender é tentar ensiná-lo a outras pessoas.
Estude os programas de outras pessoas e tente descobrir como eles funcionam, depois implemente técnicas semelhantes em seus próprios programas. Tente lê-lo e entendê-lo, e faça você mesmo com base nesse entendimento, em vez de copiar e colar.
Continue nisso . Às vezes, as coisas podem ficar muito frustrantes, mas muito gratificantes quando terminadas. Se você não entender alguma coisa, faça uma pausa, limpe seus pensamentos e tente novamente. Pergunte-nos no SO! Somos um bando disposto :)
Nunca pare de aprender novas tecnologias.
Leia alguns livros. Eu entendo que, sendo estudante, você teria feito uma tonelada de leitura. Aqui estão alguns livros práticos que você pode achar úteis ... esperançosamente - O programador pragmático: do viajante ao mestre - Código completo: um manual prático de construção de software
fonte
Inicie um projeto pessoal. O problema com a escola é que a coisa mais complicada que você fez foi um projeto que levou 15 semanas a um ano e envolveu algumas outras pessoas. O domínio do problema foi bem compreendido (seu professor não deu nenhuma tarefa que não se encaixasse perfeitamente no seu semestre.) Esse não é um luxo que o mundo real oferece.
Se você precisa fazer algo importante, do início ao fim, pelo qual possa se apaixonar, seu cérebro começará a envolver o processo. Contanto que seja apenas uma carreira e você não a ame, ainda assim sentirá que ainda não conseguiu.
fonte
fonte
Não posso ajudar com sua situação profissional, mas espero poder ajudá-lo a desenvolver suas habilidades e também colocar em perspectiva seus sentimentos sobre suas próprias habilidades.
É possível que seus instrutores tenham algo para se envergonhar. Também é possível que o seu sentimento de não saber programar seja natural e apropriado para esse estágio de sua vida e educação. Aqui estão algumas idéias que podem ajudar:
Muitos empregadores não se importam com os cursos da sua transcrição ou com o GPA. Em vez disso, eles querem saber o que você pode fazer, e especialmente o que você construiu. Para um bom trabalho, o que você construiu é mais importante que a tecnologia (C, C #, o que você tem) em seu currículo.
Se você não teve a chance de construir uma série de projetos interessantes durante a sua educação, tenha vergonha de seus instrutores. Mas você pode criar esses projetos agora. Vasculhe os sites em busca de problemas interessantes. Nossos alunos do segundo semestre estão terminando a "Pesquisa de músicas" - selecionamos uma quantidade enorme de letras para um site, elas criam um índice invertido, você as alimenta com palavras-chave e mostra as letras que contêm essas palavras no contexto. Não é o Google, mas é feito com os mesmos princípios com estruturas de dados semelhantes, e você pode começar a construí-lo agora.
Talvez você não tenha trabalhado duro nos tipos certos de problemas? É bom encontrar problemas que
Se você enfrentar esse tipo de problema, aprende a fazer escolhas, a conviver com as consequências e, se as coisas não derem certo, a voltar e revisar suas escolhas. Você aprenderá mais com seus fracassos do que com seus sucessos, mas ganhará mais confiança com seus sucessos do que com seus fracassos.
Bons problemas - com propriedades como as listadas acima - são como ouro, exceto que se você receber um bom problema de outra pessoa, eles não perdem nada. Vasculhe a web em busca de bons problemas e pratique, pratique, pratique. Se os problemas de Euler são onde você deve começar, eles são adequados para iniciantes. Mas em breve você desejará criar projetos pequenos ou médios que você ache muito legais . Se você está animado com algo que construiu, isso impressionará potenciais empregadores. Se você não está animado, é difícil contratá-lo.
Peter Norvig relata que são necessários dez anos para se tornar um especialista . Claro que você não se sente um especialista logo após se formar. Vou lhe contar um pequeno segredo: a maioria dos membros da faculdade de Harvard (eu fazia parte de oito anos) sente que realmente não pertence a Harvard, não sabe o suficiente e deve ter sido algum erro que eles foram contratados. Esse tipo de sentimento é muito, muito comum para as pessoas que fazem a transição da escola para o local de trabalho ou de um tipo de trabalho para outro. Tão comum que existe um nome para isso: "a síndrome do impostor".
Mesmo que você seja formado, sua universidade ainda conversará com você. Se você teve realmente bons professores, eles provavelmente ainda se preocupam com você. Eles certamente se importam com o fato de uma de suas alunas ter se formado com uma média B e ainda assim sentir que não domina as habilidades básicas de seu ofício. Portanto, procure um ou dois dos professores mais enérgicos e compreensivos do seu programa e obtenha ajuda para encontrar bons problemas. Em seguida, coloque- se no comando de suas habilidades, conhecimentos e sentimentos sobre elas. Crie um pouco de coisa todos os dias e não perca tempo precioso com nada que não seja muito legal. Eventualmente, prometo, você recuperará uma sensação de empolgação com a programação e, depois disso, poderá também criar confiança em si mesmo.
fonte
Houve uma cena em uma antiga Lei e Ordem na qual um promotor de justiça reclama que ela não aprendeu nada sobre como fazer seu trabalho na faculdade de direito, que não aprendeu nada sobre o mundo real. A professora a quem ela está reclamando responde: "É uma faculdade de direito, não uma faculdade de advogados".
O mesmo se aplica à ciência da computação. Talvez você não tenha aprendido a contribuir imediatamente para algum projeto que vê online, mas provavelmente desenvolveu a base de que precisa para ter sucesso a longo prazo.
Primeiro, arrume um emprego, qualquer emprego. Torne-se auto-suficiente. Particularmente na economia atual, eu nunca culparia nenhum candidato por trabalhar em uma livraria ou o que quer que seja enquanto procura emprego mais apropriado. Eu tenho perguntas para pessoas que ficam sentadas sem fazer nada.
Encontre um projeto, qualquer projeto. Existem muitos projetos aplicáveis no github.com, por exemplo.
A boa notícia é que, muito antes do que você pensa, ninguém vai se importar onde você foi para a escola, qual era seu GPA ou algo assim.
Mantenha-se firme! Pode ser difícil, mas você ficará feliz com a experiência um dia.
fonte
Você já olhou para o ProjectEuler ? Eu me ensinei Python fazendo os problemas nesse site. :] Se você está aprendendo Java ou C #, pode tentar isso. Além disso, eu recomendo tentar suas mãos na programação da GUI também.
Editar:
Aqui está um ótimo tópico sobre SO para muitos links que você pode procurar na prática de codificação:
https://stackoverflow.com/questions/662283/websites-like-projecteuler-net
fonte
Pelo seu nome de usuário, acho que você é uma mulher ... Se não, fique à vontade para ignorar isso ou adaptá-lo ao seu próprio ponto de vista.
Na minha experiência, as mulheres que se formam na faculdade em ciência da computação se consideram muito menos competentes do que suas colegas do sexo masculino com habilidades semelhantes. Pode-se dizer que as mulheres são (ou, para ser exato, mulheres que eu conheço) simplesmente mais honestas em relação às suas próprias deficiências, mas, no final, elas têm mais problemas para vender a si mesmas aos empregadores.
(Passei a maior parte do ensino médio me sentindo um fracasso total em comparação com meus colegas e acabei me formando no topo da minha turma.)
Portanto, meu conselho seria permanecer honesto consigo mesmo e continuar trabalhando duro no desenvolvimento de suas habilidades. Mas não subestime o que você sabe ao procurar um emprego e não se importe em se candidatar a empregos de "alcance".
Adicionado como uma reflexão posterior:
fonte
Muitas pessoas disseram que você deveria iniciar um projeto pessoal. Na minha opinião, este é o melhor conselho aqui. Eu acrescentaria algumas coisas que não vi quando li as outras respostas ...
Escolha algo em uma área que você é apaixonado sobre . O melhor lugar para descobrir isso talvez seja do seu interesse, fora da ciência da computação. Pode ser uma organização sem fins lucrativos em que você está envolvido, um hobby pelo qual se apaixona, um esporte que pratica.
Encontre um colaborador . A codificação sozinha é difícil, então outra coisa que ajudaria enormemente seria se você encontrasse um amigo para colaborar com você nesse projeto. Isso torna muito mais divertido e mantém você motivado. Em seu recente post no blog, Jeff Attwood fala sobre isso exatamente em sua experiência em criar SO. http://www.codinghorror.com/blog/2010/05/on-working-remotely.html
Escolha algo modesto (inicialmente) . O projeto ideal começaria com algo pequeno. Se o objetivo fora do portão for muito ambicioso, será muito assustador. Tendo desenvolvido o desenvolvimento para PCs, telefones, sistemas embarcados e a web, eu diria que a web é o melhor lugar para procurar algo realizável que outras pessoas possam começar a usar imediatamente.
Se esse projeto é um trabalho de amor no qual você trabalha feliz durante a noite e depois sai da cama na manhã seguinte para voltar a fazê-lo, coisas boas se seguirão. Você aprenderá, a confiança aumentará. E uma vez que você tem algo por aí que as pessoas podem ver, torna-se o começo do seu portfólio. Nada impressiona os programadores e os gerentes de contratação (decentes) do que algo real.
fonte
Alguns comentários, da perspectiva de alguém que é desenvolvedor há mais de 20 anos:
Eles são o produto de equipes, principalmente baseadas em bibliotecas e infraestrutura (.net, java, asp.net etc.) produzidas por outras equipes e apoiadas em experiência e recursos. Que você, individualmente, não saiba por onde começar a fazer algo semelhante, é completamente compreensível. Não se preocupe com isso.
Muito trabalho de desenvolvimento é agora assim, receio. Mas há muito espaço para se fazer um trabalho interessante 'em cima' dessas bibliotecas. E não se preocupe em achar algoritmos difíceis - você quase nunca precisará implementar uma lista rápida, lista vinculada ou qualquer outra coisa durante sua carreira. É para isso que servem as bibliotecas.
Saber programar e saber como funcionar como desenvolvedor profissional são duas coisas muito diferentes. Você só precisa de alguma experiência, de preferência trabalhando com outros desenvolvedores em sistemas do mundo real. Tente adicionar C # ou Java ao seu conjunto de habilidades - não há muita diferença entre eles, portanto o conhecimento é transferível. Cuidado para se tornar muito especializado cedo demais. Você pode ter que aceitar que não ganhará muito dinheiro imediatamente. Portanto, mantenha seus custos pessoais baixos por um tempo, se puder.
Comece a trabalhar no projeto que você mencionou, mas, além de aumentar seu conhecimento de programação, tente usá-lo para obter experiência em habilidades relacionadas, como controle de versão, teste de unidade e integração e até escrever documentação simples. Esse tipo de habilidade é o que distingue um desenvolvedor de um programador e é uma boa vitrine para um possível empregador. Existem muitas ferramentas gratuitas disponíveis (as edições expressas do Visual Studio, github, nunit, aplicativos do Google) que podem ajudar.
Pelo que você escreveu, parece que seu diploma de CS o ensinou a pensar em problemas técnicos. Você também parece ter um bom nível de autoconhecimento, inclusive sobre seus limites e experiência técnicos atuais. Use-os como vantagens. Agora não é um bom momento para entrar no mercado de trabalho, mas se você trabalhar duro, ficará bem. Não se preocupe, aprenda, obtenha experiência, mantenha-se atualizado, tente fazer o que gosta.
Boa sorte!
fonte
Programar não é tudo sobre sua compreensão de algoritmos ou seu GPA durante a faculdade. Programar é ter a capacidade de pensar fora da caixa, desejo e vontade de aprender e, acima de tudo, criatividade.
Em uma nota pessoal, eu tinha acabado de me formar na faculdade em maio passado e tinha um GPA terrível. Eu me concentrei mais na minha vida social do que na academia e paguei o preço.
No entanto, durante minha recente entrevista de emprego fora da faculdade ( que me levou menos de um ano para chegar à terra ), mostrei minha criatividade, paixão pelo aprendizado e habilidades analíticas, que me ajudaram a conseguir o emprego.
fonte
Nota: Espero que este post seja votado com voto negativo. Esta não é uma resposta ao pôster original, mas uma observação sobre a maioria dos comentários que li acima.
As respostas que estou lendo acima estão realmente me assustando. Parece haver um sentimento quase universal de que os diplomas de graduação são inúteis ou não são relevantes ou não ensinam nada. Os graus comp.sci realmente se tornaram tão ruins ou tudo isso é apenas ar quente de desenvolvedores sem graus tentando justificar sua falta?
Sério gente, o que eles estão ensinando hoje na universidade? Quando você se forma no ensino médio (pelo menos quando eu era estudante) quando se formava, você tinha uma boa noção do design do compilador, comp. complexidade, métodos e lógica formais, um zoológico inteiro de estruturas e algoritmos de dados, pesquisa básica de operações (LP etc.), bancos de dados, criptografia e segurança, algoritmos de agendamento, protocolos de rede, desenvolvimento da Internet, design de SO e kernel, algoritmos paralelos e estruturas de dados, algoritmos numéricos e muito mais. O lote todo é normalmente complementado por um grande projeto de programação que faz parte da dissertação final. Não me diga que os graduados em comp.sci não recebem programação prática suficiente.
Também aprecio o fato de que alguns dos graus mais tradicionais de comp.sci omitem alguns aspectos do ciclo de desenvolvimento de software; provavelmente você não ouvirá muita conversa sobre TDD, teste de unidade. Mas sejamos brutalmente honestos: não é realmente ciência do foguete, é? Você também não ouvirá sobre o SCRUM ou a análise de pontos de função. O ensino de cursos detalhados sobre questões básicas seria bastante redundante, embora muitos diplomas hoje em dia tenham um curso sobre design de sistemas, onde eles dão aos alunos uma idéia de como essas coisas funcionam.
É verdade que você pode não ser um especialista em .NET, PHP ou outros padrões atuais do setor, mas isso deve ser irrelevante. Dentro de 5 a 10 anos, os idiomas escolhidos terão mudado de qualquer maneira. Só porque você aprende a dirigir em um Peugeot não significa que você não deve dirigir um Fiat, e o mesmo se aplica às linguagens de programação. Deve levar alguns meses para praticar, com alguns bons livros, a competência para trabalhar em qualquer idioma.
Certamente, se alguma coisa é uma perda de tempo, são essas "certificações" caras, que basicamente envolvem a realização de um exame eletrônico de múltipla escolha e perguntam sobre minúcias (geralmente sem sentido) de uma arquitetura ou idioma específico. Eles tendem a medir a competência de um programador por seu conhecimento de certos casos de programação patológica.
Trabalhei no setor de TI em várias empresas e também participei do processo de entrevista para outros desenvolvedores de software. Fizemos algumas das perguntas usuais do fizzbuzz, mas elas eram direcionadas principalmente a pessoas sem treinamento formal ou estagiários. Eu nunca conheci um graduado em comp.sci que não é capaz de responder a perguntas básicas e não tão básicas sobre programação.
Nota: Eu moro na Europa e sei apenas sobre diplomas universitários europeus. No entanto, tenho certeza de que o padrão universitário nos EUA é muito superior ao da UE.
fonte
Sua humildade irá atendê-lo bem. A Mente do Iniciante é útil para todos os tipos de aprendizado, não importa quanta educação e experiência tenhamos.
Faça exercícios, como outros sugeriram - no Projeto Euler e em outros lugares.
Crie soluções para ajudar outras pessoas aqui no SO. O exercício de entender a pergunta, determinar o que você sabe que pode ser aplicado e finalmente articular uma resposta ajudará a aumentar sua confiança, à medida que os exercícios aumentam suas habilidades.
Fique com ele; Você vai ficar bem.
fonte
Formar-se com um diploma de mestrado em ciências da computação não o torna um ótimo programador do que se formar em um programa de música o torna um ótimo músico.
Não há substituto para a prática, prática, prática e experiência. Programe 8 horas por dia e em 5 anos você pode ter o entendimento que lhe falta no momento.
fonte
Uma pergunta tão sincera, ótimas respostas - vou gritar brevemente :)
As respostas até agora me fizeram rir um pouco - elas potencialmente comemoram nossa própria grandeza um pouco ironicamente. Eu venho para o SO por causa da documentação e erros ruins nas estruturas. Obviamente, há outro ouro aqui, mas vale a pena manter sua humildade, mesmo que você se torne um grande desenvolvedor - e digo isso da perspectiva da arrogância histórica (?) Pessoal.
Lembre-se de que você não pode (provavelmente não está) ser contratado por um técnico, embora pessoas e gerentes de RH melhores usem um técnico para avaliar você.
Os empregadores têm um plano para seus funcionários, tentam perceber o plano o tempo todo e se prendem a ele com respeito, talvez dando a ele um toque pessoal e aprimoramento. Dificuldade e oportunidade podem surgir quando um empregador realmente não tem um plano específico - fazer boas perguntas e ajudá-lo a especificar o plano pode realmente fazer você se destacar nessas situações.
Os empresários podem (com razão) ficar paranóicos com os desenvolvedores que os apadrinham, já que muitas vezes precisamos gerenciar um pouco suas percepções para ajudá-los com decisões que eles não entendem - e eu digo isso, de boca aberta, para mostrar a perspectiva de NÃO ter ou desenvolva seus colegas de trabalho não técnicos. Humildemente, acho importante entender que essa é a essência das relações entre técnicos e não técnicos - e é difícil evitar o que fazemos é obtuso.
Ser profissional, de mente aberta e respeitoso consegue empregos - se você é confuso com o que é profissional, tenho certeza de que há lugares para resolver isso na web - eu gostaria que alguém tivesse apontado isso para mim quando comecei. :)
A última coisa que eu diria é que, à medida que você melhora o desenvolvimento e a arquitetura e já parece que entrou nesse caminho, pode descobrir que seu código profissional pode se tornar intensamente insatisfatório, mesmo que seja o solução apropriada.
Não sei ao certo qual é a solução, mas tente encontrar uma saída e se envolva menos emocionalmente em seu trabalho. Isso ajudará você a se acelerar e viver uma vida melhor - tenha cuidado especial ao tentar fazer um esforço extra para fazer algo "certo" - na maioria das vezes você criará complicações para seus colegas de trabalho e quase nunca poderá dedicar o tempo necessário para realizá-lo dentro do prazo de seu projeto. Um sintoma disso é "escurecer" - quando você não quer explicar o que quer fazer com ninguém. Muitos dos melhores desenvolvedores podem explicar a essência do que estão fazendo com uma pessoa leiga - essa é uma grande habilidade para aprender e eu achei intelectualmente libertador para a prática.
Heh, e ao estimar, para começar, divida sua tarefa em bits, totalize o tempo e depois dobre (é chamado, divida, conquiste, marque em casa;)
Boa sorte! Saí da escola esperando ser instrutor de esqui e acabei como desenvolvedor líder. Tenho certeza de que você também se sairá bem no que quer que seja.
fonte
Sim, é razoavelmente normal - a maioria das escolas, mesmo as de prestígio, faz um ótimo trabalho no ensino de ciências da computação e um péssimo trabalho no ensino de desenvolvimento de software. Isso está melhorando lentamente, mas ainda há um longo caminho a percorrer.
De qualquer forma, parece que você está fazendo a maioria das coisas certas:
fonte
Realmente ótima pergunta. Tenho certeza de que muitas pessoas estão passando exatamente pelo que você descreveu em todas as esferas da vida e no mercado de trabalho.
Primeiro - não precisa mais se preocupar com coisas que estão fora de seu controle. Você não tem permissão para se estressar ou sequer pensar na escola, no que aprendeu ou não, ou no desempenho acadêmico.
Segundo - especialize-se. Sempre haverá demanda por pessoas realmente boas no que fazem, mesmo que o que fazem seja obscuro. Você precisa escolher sua linguagem de programação favorita e resolver dominar completamente essa linguagem e "criar sua própria linguagem". Você já tem muitos bons conselhos sobre como melhorar as habilidades de programação, mas no final do dia nada se compara a encontrar um livro oficial sobre o assunto e trancar-se em seu quarto por alguns dias, enquanto você não faz nada além de ler todas as páginas e escrever todos os exemplos que o livro fornece.
Terceiro - anuncie a si mesmo. Nesta história da ciência da computação, essa etapa nunca foi tão fácil quanto é hoje. As respostas que você dá e as perguntas que você faz no SO são o seu currículo. Assuma a responsabilidade de se tornar a principal autoridade em SO para o idioma que você decidiu dominar. Assuma a responsabilidade por qualquer pergunta que venha através deste servidor com sua etiqueta, mesmo que isso signifique horas de extensa pesquisa e respostas tardias. Pesquise nos arquivos e leia todas as perguntas já feitas no SO sobre seu tópico. Corrija desinformação, forneça suas próprias respostas e variações de respostas e combine algumas respostas existentes em uma melhor resposta. Inundar SO com um fluxo interminável de comentários, respostas e edições deve ser sua razão de ser (mais sua diversão, porque você ganha pontos de reputação).
Quarto - trabalhe com sua imagem pública. A autoconfiança é essencial para conseguir o melhor emprego. As empresas querem pessoas que sejam excelentes colegas de trabalho, colaboradores e comunicadores. Se você acha que isso pode ser um problema, diga a seus amigos que você precisa deles para impulsionar seu ego e encher você de infinitos complementos; em seguida, vá à sua biblioteca local e escolha um deles .
fonte
Ok, então vi essas notícias sobre hackers e eu fiquei tipo "CRAP SANTA QUE SOU EU !!"
Então, me formei em dezembro passado com um diploma em CS e senti que, de alguma forma, eu havia conseguido passar nas aulas e obter um diploma sem realmente obtê-lo. Parecia que todos os meus colegas de classe tinham habilidades de codificação incríveis e tudo que eu podia fazer era criar programas Java básicos. Aprender a codificar e se tornar um bom codificador leva muito tempo. Há muitíssimas coisas por aí para aprender e meu conselho é apenas levar um pouco de tempo. Você aprenderá as coisas à medida que avança. Como todo mundo está triste, a melhor maneira de aprender é fazendo especialmente com a codificação. Sem mencionar que há muito sobre a criação de aplicativos que eles nem sequer se incomodam em contar na escola. Não se sinta mal, apenas saiba que há muito por aí para você aprender e perceba que levará tempo para aprender.
Eu acho que você definitivamente deveria olhar além da cidade onde cresceu. Há uma tonelada de empresas contratando graduados em CS e nem todas exigem ou esperam que você seja um grande programador logo após a escola. Houve muitas entrevistas em que não recebi nenhuma pergunta sobre codificação (também houve muitas que me pediram para resolver algoritmos e codificar). Inscreva-se em empresas que se preocupam mais com a sua capacidade de aprender do que com o que você já conhece (na minha experiência, empresas maiores se importam mais com isso, porque isso não afetará tanto elas se você não conseguir criar o código imediatamente).
Não sei se a codificação é algo que você deseja fazer e buscar, mas também há muitos trabalhos não técnicos que exigem uma formação técnica. Você pode olhar para essas opções.
Eu não focaria em aprender os meandros de uma linguagem como C # ou Java e focaria nos princípios de programação. Você deve ser capaz de transferir boas habilidades de codificação e aplicá-las em qualquer idioma (isso é importante para a longevidade de sua carreira .. Java não ficará quente para sempre). Por outro lado, conhecer as "habilidades quentes" pode ajudar a conseguir um emprego. As habilidades de entrevista são REALMENTE importantes. Faça todas as entrevistas que conseguir, mesmo que seja apenas para praticar.
De qualquer forma, não pense que grandes empresas como a IBM estão fora de seu alcance. Senti o mesmo que você há alguns meses atrás e trabalho na IBM agora. Meu GPA também não foi tão bom. Ainda sou péssimo em programação, mas sei que vou melhorar com o tempo. Basta ter confiança na sua capacidade de aprender!
fonte
Uau, que muita resposta antes desta.
Que tal uma resposta completamente diferente ...
Vamos reformular o seu problema em termos de ser humano.
"Eu me formei na aula de concepção e estou prestes a nascer. Minha mãe está coroando e devo ser entregue amanhã de manhã. Mas quando olho para atletas como Usain Bolt , penso" como posso correr isso? velozes?".
Mas aqui está você, você é um ser humano de pleno direito, passou pela escola, pode andar, conversar e, se fez um curso de computação, é bastante inteligente em iniciar. Nada do que se envergonhar.
Agora, Usain Bolt nasceu e, de repente, começou a colocar tempos insanos na pista, ou foi uma grande quantidade de vida, descobrir o que ele estava interessado, seguido por uma quantidade incrível de aplicações e de repente " Bam! " ele estava lá.
Provavelmente o último. Portanto, não se preocupe por não saber o que deveria estar fazendo. Leva tempo para descobrir o que é certo para você. Isso é para você , não o que seus pais pensam, não o que seus colegas pensam. O que é certo para você . O que acende o seu fogo . O que faz você pensar * sim, isso é legal ", mesmo quando todo mundo pensa que é calça.
Não é incomum começar (e / ou) deixar seu diploma sem ter idéia do que você quer fazer.
Para mim, eu era bom na escola nos níveis O (uma qualificação no Reino Unido), mas não dava a mínima para os níveis A (necessários para ingressar na Universidade para fazer um diploma). Então, fui para um lugar menor para fazer meu diploma (e, como resultado, não o diploma que eu preferiria). Mas eu o destaquei (ainda sem ter idéia do que eu queria como carreira) e aprendi muito sobre eletrônicos e outras coisas que a maioria dos caras de software nunca aprende. Durante esse período, trabalhei como freelancer em jogos de computador.
O resultado final? Depois de me formar (com elogios), entrei em um emprego com uma entrevista de emprego com um salário mais alto do que aqueles que usavam eletrônicos retos e não tinha trocado de cabelo ou usava terno. O que? Bem, aos 23 anos, essas coisas são importantes (olhando para trás agora, aos 44 anos, eu meio que ri disso, mas isso é a vapidez da juventude para você).
Essa empresa faliu e então comecei a ficar mais sério. Mas provavelmente não foi por mais alguns anos até que de repente eu encontrei (por acidente) o que realmente me interessava. Acabou sendo ferramentas de software de baixo nível. Deveria ter sido óbvio - todos os jogos de computador que escrevi foram escritos em montagem, eu sempre gostei das coisas de baixo nível que ninguém mais conseguia entender. Mas, para ver isso como um futuro, é preciso mais maturidade e nenhuma surpresa de que ele não tenha se manifestado até os 20 anos.
Muitas vezes fico impressionado (e espantado) que os jovens, muitas vezes ainda na adolescência, pareçam saber o que querem fazer. Mas a verdadeira questão é: eles ainda estão fazendo isso aos 27 anos? Ou eles mudaram de curso porque suas idéias iniciais não eram corretas para eles?
Em termos de como faço algo tão impressionante quanto ISSO (seja o que for, Google, SO)? Bem, você faz isso em partes, assim como faz software e tudo mais na vida. Você começa com o básico, obtém experiência nele. Se você é bom o suficiente, continua e obtém mais experiência, etc., ou o abandona porque percebe que não é bom o suficiente ou que é tão chato como o inferno (é por isso que eu não faço comunicações, mesmo que seja sempre foi uma mina de ouro. Para mim, é chato!).
Por todos os meios, olhe para seus colegas, olhe para os mais velhos, examine suas escolhas e interesses. Mas examine o seu também. Muitas vezes, o que à primeira vista parece louco / maluco é realmente o verdadeiro negócio. Fazer algo que você achar interessante (em vez de apenas pagar as contas) é MUITO mais gratificante.
Sim, eu sei que, aos 23 anos, você está focado no Audi TT e no flat legal e, portanto, tentado por dinheiro, em vez de escolhas de carreira sensatas, mas sério, em algum momento, você perceberá que o carro legal não está totalmente quebrado ser - essa garota deve gostar de você por quem você é, não pelo que você dirige.
Sério, pense sobre isso. A solução não tão legal pode ser apenas a resposta certa.
fonte
Além dos ótimos conselhos dados por outras pessoas, eu acrescentaria a participação em eventos de desenvolvedores em sua área. Procure reuniões, grupos de usuários, campos de barra, campos de código, etc. Isso ajudará você a interagir com outros desenvolvedores, obter oportunidades de emprego, acompanhar as novas tecnologias e fornecer uma visão realista dos níveis de habilidade de outros desenvolvedores.
fonte
Siga a regra das 10.000 horas.
Para se tornar um mestre em algo, você precisa praticar por pelo menos 10.000 horas. Portanto, gaste 10.000 horas de programação e você se tornará um mestre nisso. Se você não passou 10.000 horas programando e não se sente um mestre da arte, não fique desanimado, gaste mais tempo codificando.
Observe também que você provavelmente levará cerca de 3 anos e meio para fazer isso se programar 8 horas por dia. Se você programar apenas durante o horário comercial, provavelmente levará cerca de 4 anos. Se você não gastou tanto tempo durante sua graduação de 3/4 anos, provavelmente não se sentirá um mestre.
fonte
Apenas alguns pensamentos, se eu puder.
Wendy diz que alguém pode se formar com um diploma em ciências da computação, mas tem pouca idéia da prática da programação. Isso não é extremamente preocupante, nem mesmo horripilante? É tão perturbador quanto a fraude que submergiu os departamentos de inglês nos anos 70: a literatura não é uma coleção de idéias que se pode entender e integrar, mas um monte de 'textos' que o aluno deve abstrair e 'desconstruir' ( http: / /www.answers.com/topic/deconstruction ). Felizmente, essa maré fétida está diminuindo, talvez porque os instrutores que acabaram com seu surto de ervas daninhas estejam se aposentando agora.
Anos atrás - décadas atrás - meu primeiro curso em CS me ensinou a linguagem assembly (antes de C ser inventada) usando problemas reais como classificação, hash e pesquisa (e, sim, recursão). Meu segundo curso ensinou o design e a realização de um compilador de trabalho real. Eu era estudante de meio período no MIT e esses dois cursos eram tudo o que eu precisava para começar a ser pago como programador; e se tornar um pouco produtivo dois ou três meses depois.
Então, nesta manhã, ouvindo o grito de Wendy, acho que certamente o MIT, de todos os lugares, não pode ter diluído suas ofertas e iludido seus alunos com (no contexto da prática de programação) porcaria praticamente inútil. Mas quando olho para o currículo de EE / CS do MIT, vejo que foi exatamente o que aconteceu:
http://student.mit.edu/catalog/m6a.html
Percebo particularmente que o departamento usa Python como / a linguagem de ensino! Quero dizer, sério! Parece que um diploma de CS no MIT significa qualificar um aluno para se tornar um professor de CS no MIT. Fale sobre recursão!
Então me deparei com essa contribuição para o Coding Horror ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) e pensei muito bem ao ponto desta conversa:
"Sou um retardatário dessa discussão [sobre prever o sucesso de candidatos a programadores], mas, em minha experiência como graduado em ciências da computação de 30 anos, descobri que as aulas de programação são inúteis e menos ensinadas como Eu só estive em uma faculdade comunitária e depois na Universidade de Illinois em Chicago, mas as aulas de programação introdutórias eram:
"1. Orientada a objetos, que deixou os alunos com pouco ou nenhum entendimento dos métodos processuais, e
"2. Aulas de eliminação de ervas daninhas. As aulas consistiam principalmente de descrições de diferentes tipos de problemas e da matemática por trás deles, em vez de ayntax e estrutura, para as quais as pessoas deveriam ler o livro.
"O código mal foi reconhecido diretamente até o núcleo das estruturas de dados e, em seguida, ainda dependia de qual instrutor você tinha, alguns sendo muito leves e alguns pesados demais. Você poderia dizer que era uma grande tentação para os professores serem leves" neste ponto, porque se eles se concentrassem no código, também teriam que se concentrar em ensinar aos alunos que estavam em um curso de ciência da computação por dois anos como programar.
"Como a codificação é um hobby para muitos jovens, acho que as instituições de ensino se basearam nisso para estabelecer suas curvas de aprendizado esperadas, deixando as pessoas que tinham pouca ou nenhuma experiência em programação quando ingressavam na escola sem escolha a não ser trapacear como loucas, gastar tudo do seu tempo livre estudando código ou trocando de curso, e isso não é necessariamente um déficit no pensamento abstrato em minha experiência, porque todos que eu conheço que abandonaram o ensino médio acabaram na Engenharia Elétrica, o que não é nada para mudar. na frente abstrata.Eles ainda não sabem programar, enquanto fazem matemática que eu não consigo entender. Memórias mais absurdas:
"1. Java como a linguagem de programação necessária. Não vou basear o Java aqui, mas não seria bom que os alunos aprendessem sua própria coleta de lixo? E os ponteiros não seriam uma boa coisa para aprender, mesmo se nunca decidirmos programar um idioma com eles novamente?
"2. Tomando uma aula básica de teoria de sistemas operacionais, depois de ter sido inundado com Java, e descobrindo que estava em C (é claro) sem sequer uma aula em C no campus?
"É claro que tenho trinta anos e também sou uma daquelas pessoas que sempre programava, então não tive problemas, mas vi muitas pessoas que eu sabia que eram melhores em abstração do que eu (das aulas de Cálculo, DiffEQ e física antes). ) e sua total agonia ao tentar concluir um programa que havia sido empilhado contra eles ".
Apenas alguns pontos de dados, mas, como outros já disseram, assustador.
- Pete
fonte
Em primeiro lugar, aguente firme!
Em segundo lugar, aqui estão algumas coisas que me ajudaram:
Em terceiro lugar, eu estava em um barco semelhante ao seu quando me formei novamente, aguente firme e continue procurando. Seu primeiro emprego está lá fora.
fonte
Muito poucas pessoas se formam em qualquer disciplina, sendo especialista em algo que apenas estudaram. A ciência da computação não é de forma alguma especial a esse respeito. Nada supera a experiência empírica e você apenas obtém isso ao desenvolver software completo para clientes reais, com todas as demandas, restrições de tempo, mudanças e trabalho em equipe que isso envolve.
fonte
Eu encontrei este site ruim no outro dia http://99designs.com/ Sob o design do site ou outro design, você provavelmente pode encontrar alguns projetos relacionados a software.
Essa seria uma ótima maneira de obter código, desenvolver novas habilidades, conhecer novas pessoas que podem ser empregadores em potencial e você pode até ganhar algum dinheiro.
Descobri que os empregadores têm um grande valor em mostrar que, apesar de você não ter um emprego, não estava sentado na sua bunda. Mostre que você chegou lá e fez alguns projetos, de preferência os que você pode mostrar em uma entrevista.
fonte
Não se preocupe. Roma não foi construída em um dia.
EDITAR:
#! diff A B
fonte
Primeiro, não se preocupe, pois você não pode codificar o google. O Google foi criado ao longo de vários anos por muitos programadores muito experientes. É como terminar um diploma de artes visuais e imaginar como você poderia fazer A Última Ceia.
Para procurar emprego, não se preocupe. Basta ligar para eles e dizer que você não tem anos, mas ainda gostaria de se inscrever. Se eles realmente querem a experiência, pergunte se há mais vagas juniores disponíveis - elas poderão criar uma nova posição apenas para você. A maioria dos empregos é criada para uma pessoa específica. Certifique-se de entrar em contato com o gerente do projeto, não com o departamento de RH. O RH geralmente não cria novos empregos, geralmente apenas seleciona os candidatos a empregos existentes. Google é seu amigo neste caso;)
Não tente codificar um aplicativo da Web (como o Google ou o estouro de pilha), a menos que você queira investir cerca de 6 meses. É uma enorme curva de aprendizado. Você precisa aprender a gerenciar um VCS, executar um servidor da web, codificação HTML JS e CSS, um sistema de banco de dados e a linguagem do aplicativo da web. É brutal. A maioria dessas tecnologias não é transferível, a menos que você queira fazer um trabalho na web.
Se você deseja fazer aplicativos da web, pode instalar um aplicativo da web simples (como este aplicativo de pesquisa de IP para país baseado em django - http://www.coulix.net/blog/2006/aug/17/ip- country-flags-django-comments / ). Você pode comprar um código de desconto de US $ 90 para o Dreamhost (para trabalhar em um servidor Web real) e tentar configurar as coisas. Não se preocupe muito com a segurança ou o desempenho (mas fazer uso ssh) - é apenas um projeto de aprendizagem.
Se você quiser fazer coisas na área de trabalho, pode dar uma olhada no pygame.
fonte
Você pode ler tudo sobre programação, mas não aprenderá realmente a programar até que esteja bem .. comece a programar!
Eu recomendaria que você iniciasse um projeto pessoal. O que você deseja criar? um jogo? Um blog? Não importa. Apenas faça alguma coisa!
Depois de fazer algumas codificações reais por um tempo (algumas semanas ou meses), recomendo tentar contribuir com projetos de código aberto. O projeto pessoal ajuda você a descobrir como programar quando o objetivo ainda não foi definido (saber como realmente projetar algo não costuma ser ensinado na escola). Contribuir para projetos existentes ensina você a trabalhar em equipe e a seguir os padrões de código.
Eu não perderia meu tempo lendo muito mais. Eu diria que, no máximo, você provavelmente deveria ler cerca de 20% das vezes e escrever os outros 80%. (é claro, com o tempo, quero dizer o seu tempo reservado para programar coisas relacionadas)
fonte
Bem, aqui estão os meus dois centavos ... juntamente com citações de algumas outras fontes.
Esse é um problema que eu já vi bastante, até o ponto em que pessoas com anos de "experiência" em seu currículo não conseguem executar tarefas simples. Pessoalmente, acho que os institutos de ensino são os principais responsáveis por isso, desde o corpo docente que não conhece o assunto ou não pode ensiná-lo aos conselheiros que deveriam orientar os estudantes que querem apenas se interessar por um determinado dinheiro sem um interesse razoável no próprio campo.
Pelo som da sua pergunta, você está saindo da faculdade sentindo que acabou de ser ferrado em alguns anos de sua vida para pegar um pedaço de papel. É assim que muitas agências de contratação veem um diploma atualmente para programadores. Eles querem pessoas que provaram que podem programar, não apenas alguém que tenha um pedaço de papel. Mas o fato de você estar fazendo essa pergunta em primeiro lugar me mostra um desejo de realmente aprender a programar.
Uma das melhores coisas que você pode fazer para aprender já foi apontada várias vezes, o que é programação. Infelizmente, embora isso absolutamente aumente seu conhecimento e entendimento da tecnologia, não é incrivelmente provável que o ajude a encontrar trabalho, a menos que seja algo que você possa colocar em seu currículo.
Sugiro que você comece desenvolvendo alguns aplicativos com um objetivo específico, descubra o que pode fazer e o que o desafiará a seguir em frente e, em seguida, vá a alguns lugares onde poderá trabalhar como freelancer. Não espere receber uma quantia enorme pelo trabalho freelance que você adquire na web, você deseja adicioná-lo ao seu currículo, não à sua carteira. Depois de obter de 3 a 5 itens para os quais você pode apontar e dizer "Eu criei isso" ou "Eu projetei essa funcionalidade para eles", liste tudo isso e encontre uma agência de contratação (em TODA PARTE. (caçadores de talentos) e trabalhe com algumas pessoas para simplificar seu currículo, para que ele destaque sua educação e recursos para encontrar trabalho a ser feito e minimize o aspecto de sua falta de experiência.
A maior coisa a lembrar quando você está conversando com potenciais empregadores (que eu vejo pessoas estragar o tempo todo), e algo que QUALQUER UM EM QUALQUER CAMPO DEVERIA prestar atenção é que, embora você absolutamente não queira vender a si próprio ou minimizar o que você PODE fazer, não se venda demais e faça-os acreditar que você pode fazer coisas que você não tem idéia de como. Os empregadores sempre têm um talento especial para pedir que você faça coisas que não sabe fazer, e é seu trabalho nesse momento descobrir isso, mas se você lhes disser que já pode, inevitavelmente vai comer suas palavras mais tarde .
Boa sorte para você!
fonte