O livro “Carreira de Programador” é baseado na experiência da participação prática do autor em diversas entrevistas realizadas as melhores empresas. É a essência de centenas de entrevistas com muitos candidatos, o resultado de respostas a milhares de perguntas feitas por candidatos e entrevistadores nas principais empresas do mundo. Dos milhares de possíveis problemas e questões, 189 dos mais interessantes e significativos foram selecionados para o livro.
A sexta edição deste best-seller global ajudará você a se preparar melhor para uma entrevista de emprego como programador ou gerente em uma grande organização de TI ou em uma startup promissora. A maior parte do livro consiste em respostas a perguntas e tarefas técnicas que os candidatos costumam receber durante entrevistas em empresas como Google, Microsoft, Apple, Amazon e outras. Considerado erros típicos que os candidatos admitem, bem como técnicas eficazes de preparação para uma entrevista. Usando o material deste livro, você pode se preparar facilmente para um emprego no Google, na Microsoft ou em qualquer outra empresa.
Todos os livros apresentados no site são apenas para fins informativos.
Qualquer uso deles por você é permitido apenas para fins informativos. Se você planeja usá-los no futuro, deverá adquiri-los dos detentores dos direitos autorais. A administração do site não é responsável pelo uso deles.
Tenho quase 40 anos e pertenço a uma geração de programadores artesãos e autodidatas que receberam educação técnica superior em uma universidade soviética no início e meados dos anos 90, quando o treinamento era diferente e até mesmo um conceito como ciência da computação ainda era ausente em nossas universidades. Foi só no exterior, e nada sabia sobre esse termo e a disciplina correspondente até 2007, quando comecei a ir ativamente a entrevistas e a me posicionar no mercado de trabalho.
Na verdade, não é tão simples. Não sei que tipo de trabalho procuro. Não tenho ideia de que trabalho será valioso e importante para mim. Devemos tentar de tudo. A concorrência é alta. Muitos jovens. Os formandos de ontem conhecem muito bem a informática e conhecem todas essas palavras misteriosas, passes mágicos e conseguem falar com clareza. As regras do jogo mudaram, embora Unix, C++ e OOP permaneçam. Surgiram entrevistas longas, significativas e em vários estágios, entrevistas cansativas. Os requisitos para os candidatos estão sendo reforçados. Agora ninguém contrata um “aluno sem experiência” nem por um salário ridículo. “Estranho”, pensei. “No início dos anos 90, havia um buraco demográfico no qual os meus potenciais concorrentes tinham de cair.” Mas isso não é verdade. Revelam-se as minhas lacunas e falhas de conhecimento, as consequências de muitos anos de “prática artesanal” e a falta de um sistema de conhecimento. Acontece que eu não sei em detalhes como funciona qualquer algoritmo de classificação (há 20 anos venho classificando com a “classificação” usual em todos os tipos de variantes e em todos os tipos de linguagens de programação, que, na minha opinião, classifica muito bem, mas como exatamente depende de mim nunca me importei, porque classifica da melhor maneira!), não conheço os princípios da OOP (uso desde o ensino médio, mas, aparentemente , incorretamente, pois não conheço os princípios corretos), o formato dos pacotes TCP/IP (por que preciso disso? sabe? Eu sabia quando escrevi meu diploma na universidade e depois esqueci!), algoritmos em gráficos e muito mais... Mas de alguma forma trabalhei durante esses 20 anos e escrevi um software excelente e funcional, que ainda está em uso e será usado por muito tempo! Como pode ser isso? Eu mesmo estou surpreso.
E a segunda ronda de entrada no “mercado livre” decorreu na mesma “atmosfera calorosa e amigável” da primeira.
Kaspersky novamente me convidou para um “brainbench” com ele, como nos bons e velhos tempos (“Obrigado, cara, mas eu não jogo mais esses jogos, já fiz brainbench por toda parte”), Yandex rejeitou todas as minhas inscrições em todas as vagas , desta vez silenciosamente, sem nem convite para entrevista (em 2007 entrevistei e “rejeitei”), e parece que ele me incluiu em um banimento vitalício, pois já estou bastante cansado do RH deles, já que respondo a quase todas as suas vagas ; mail.ru fez o mesmo, e Parallels, Mirantis e outros “tubarões” do mercado de software já me “rejeitaram” na entrevista. não éramos mutuamente adequados e não nos adaptamos há muito tempo Somos muito diferentes, por exemplo. língua Inglesa. Mas será que Yandex gosta disso? Não tenho certeza.
Do lado dos empregadores: eles podem ser compreendidos. Sua tarefa é descobrir o conhecimento do candidato sobre a maior variedade possível de tópicos no menor tempo possível. Eu mesmo recrutei programadores e sei por experiência própria como isso não é trivial. Perguntas prontas exigem modelos de respostas prontas. Como Zhvanetsky: “...aqui está uma lista das suas perguntas, aqui está uma lista das minhas respostas”. Técnicas favoritas utilizadas em entrevistas, que coletei ao longo de muitos anos de entrevistas e que me confundem, me confundem (ainda não sei as respostas para algumas delas), e, parece-me, algumas delas têm pouca relevância à programação e eles são simplesmente solicitados porque é um “método comprovado” e “todo mundo pergunta”. Minhas respostas, que não agradam aos empregadores, estão entre parênteses:
Os empregadores estão fazendo absolutamente a coisa certa, é claro. Eu entendo por que eles fazem isso. Eles selecionam e selecionam os candidatos fazendo-lhes perguntas básicas para começar. Depois passam para outros mais complexos, depois cada vez mais. O problema é que as nossas abordagens nunca coincidem com as deles. Apesar de ter a certeza de que na maioria das empresas onde fui para uma entrevista pude trabalhar sem problemas, mas os empregadores sabem melhor, e com razão.
PS. Na verdade, não tenho problemas com o trabalho. Esta é apenas uma desculpa para descrever minha carreira bizarra. Finalmente, foi encontrado um empregador que “passou o sinal vermelho”, ignorando todos esses numerosos avisos sobre o que eu não sabia, não fez uma única pergunta sobre ciência da computação e simplesmente me ofereceu um emprego.
Atualização. Mesmo assim, há problemas com o trabalho, porque o único empregador que me queria acabou por se recusar a contratar-me. Alguém tem emprego?..
No artigo descrevo minha opinião sobre as prioridades na escolha de um empregador para programadores. Indiquei o tamanho do salário como principal fator, justificando pelo fato de sobrar mais tempo para a vida. A seguir, apresento meus motivos pelos quais você não deve se deixar levar pela reciclagem. Continuo o artigo dando uma olhada no desenvolvimento de projetos residenciais, o que, na minha opinião, ajuda a acompanhar as tendências da profissão e, além disso, traz prazer. Cheguei a esses pensamentos depois de trabalhar como programador em tempo integral por 8 anos.
Encorajo pessoas experientes que sabem trabalhar e viver a comentarem meus pontos de vista e expressarem suas opiniões sobre questões nas quais foram encontradas diferenças. Para aqueles que iniciaram recentemente sua jornada de programação ou simplesmente nunca pensaram nessas coisas, recomendo não tomar este artigo como um guia sério. Escrevi sobre meus sentimentos sobre essas questões na esperança de que alguém possa encontrar algumas idéias úteis caso esteja se sentindo desanimado como programador.
Ao escolher um emprego, defino para mim as seguintes prioridades.
Muito pouco desta lista pode ser aprendido antecipadamente sobre a empresa antes de se candidatar a um emprego. Mas dada a ordem de prioridades, você pode facilmente comparar seu emprego atual e outro potencial, sabendo o valor do salário. Às vezes você pode sacrificar parte do segundo e do terceiro, em prol de um bom salário. Claro, esse equilíbrio é diferente para cada pessoa.
Algumas pessoas têm vergonha de dizer isso em voz alta, mas o dinheiro é o primeiro e principal fator na escolha de um local para trabalhar. Se você receber bem, não terá que trabalhar horas extras e horas extras, o que significa que terá mais tempo para aproveitar a vida. Meu ponto de vista é o seguinte: se você é um programador com mais de 3 anos de experiência e sente que gostaria de receber mais, comece a conseguir isso sem deixar para mais tarde. Muito provavelmente, não há razão para você não receber mais, se possível.
Há uma opinião de que você pode simplesmente pedir isso à sua administração. Pode funcionar. Mas sugiro primeiro descobrir quanto outros empregadores estão dispostos a pagar a você. Se você não tem ofertas de emprego prontas, precisa começar a procurar vagas por conta própria. Considere opções que sejam consistentes com sua experiência e salário acima do atual. Esteja preparado para fazer testes, entrevistas por Skype ou entrevistas presenciais. Veja isso como um lucro potencial, não se isole do seu ego.
Considere não apenas os empregadores da sua cidade, mas também o trabalho remoto. Existem muitos artigos sobre as desvantagens do trabalho remoto, mas se você ainda não experimentou, ainda pode considerar essas opções. Lembre-se disso trabalho remoto– isso não significa necessariamente trabalhar em casa. Com o salário de programador, você pode alugar um escritório ou mudar para um espaço de coworking.
Você precisa se preparar para entrevistas. Você pode encontrar uma lista de perguntas que podem ser feitas online. Aproveite o tempo para estudá-los, pense nas respostas. A ordem das entrevistas é importante. Comece com o empregador cujos termos e condições lhe parecem menos atraentes e, em seguida, vá aumentando para tornar o novo emprego potencial mais atraente. A questão desse procedimento é que é muito mais fácil falhar nas primeiras entrevistas. Durante as primeiras entrevistas, é provável que você se preocupe mais, esqueça mais e aja com menos confiança. Além disso, se você receber perguntas que falhou em uma entrevista, poderá estudá-las e respondê-las nas subsequentes. Assim, você aumentará suas chances de receber uma oferta da empresa que for mais atrativa para você.
Se antes de uma entrevista em uma empresa você acha que definitivamente não irá trabalhar lá, leve essa entrevista a sério, pois com isso poderão ser revelados novos detalhes que tornarão esse empregador mais atraente. Vale sempre lembrar que você está escolhendo um novo emprego, apesar de tudo ter começado com o objetivo de aumentar seu salário.
Se você está começando a sentir que está levando a próxima entrevista muito a sério e está muito preocupado por causa disso, então o conselho é o oposto do anterior: perceba o empregador não como um potencial, mas simplesmente como um meio de aumentar seu salário no emprego atual, sabendo que se não der certo nada mudará. Mas encontre o equilíbrio para parecer um profissional e não um cara agressivo com um ego inflado.
Depois de receber uma oferta de emprego atraente, não deixe seu empregador silenciosamente. Discuta a situação com a pessoa que toma a decisão de aumentar seu salário. Este é um momento muito emocionante; na primeira vez você pode não ter determinação suficiente. Se você não se sentir confiante o suficiente para discutir essas questões, tente iniciar uma discussão correspondência por e-mail. Mas, muito provavelmente, você ainda terá que se comunicar por voz.
Se você não tem ideia de como ganhar coragem para pedir aumento de salário, sugiro o seguinte. Comece a focar em todas as deficiências do seu local de trabalho atual: o quanto você não gosta que alguém esteja sempre esquentando peixe na hora do almoço, que o ar condicionado esteja funcionando logo acima das suas costas, como a multa por chegar atrasado no trabalho te enfurece . local de trabalho por um minuto, como você está cansado de implementar recursos que ninguém realmente precisa, como você está cansado da atual pilha de tecnologias usadas, como você não aprende algo novo há muito tempo. Mas o mais importante: imagine se você pudesse ganhar +X% de dinheiro, mas não o conseguisse por causa do seu empregador. Você gosta quando seu empregador fica com seu dinheiro? Não? Vá em frente e converse com ele sobre isso. Só não vá trabalhar ofendido, faça o seu trabalho de alguma forma, esperando que o gerente perceba e ofereça algo. Isso não é profissional.
Se o seu gerente negar uma promoção e deixá-lo ir, é hora de ir embora. Com que frequência você pode pedir um aumento? Contanto que você receba ofertas significativamente melhores do que a sua situação atual. Mas não tente trapacear, você deverá receber uma oferta de emprego válida depois de passar em todas as entrevistas.
Um emprego de tempo integral significa que você trabalha 40 horas por semana. Se lhe pedirem para trabalhar mais do que isso, lembre-se de que o trabalho já ocupa cerca de um terço de toda a sua vida diária. Se você não tem mais nada na vida além de trabalhar e dormir, pode matar o tempo trabalhando. Caso contrário, pense nas suas prioridades. Não concorde em fazer horas extras se não pagar o suficiente. Mas mesmo neste caso, pode acontecer que você simplesmente não tenha tempo para gastar seu salário. Você pode pensar que agora economizará para comprar um apartamento, depois para um carro, depois para férias com a família e então a vida seguirá em frente. Mas a vida já segue em frente e você está envelhecendo. Afinal, tente começar a ganhar mais pelas mesmas 40 horas semanais, e não por horas extras. Gaste seu tempo livre fazendo coisas que você gosta e aprendendo coisas novas para acompanhar as tendências em sua profissão.
Existe uma opinião comum que é mais ou menos assim: “Já programo o dia todo, não tenho mais energia para voltar para casa e desenvolver um projeto favorito ou me comprometer com o código aberto”. Entendo que nem todo mundo é um grande fã de programação pelo bem do processo, e para eles a opinião acima é verdadeira. Mas, para alguns, presumo que o motivo é que eles simplesmente não tentaram programar nada interessante para si próprios. Talvez eles simplesmente não tenham pensado em algo interessante que pudesse ser criado, e talvez nem tenham tentado pensar nisso.
Pode parecer que você não terá tempo para isso. Mas desenvolver projetos domésticos tem muito mais a ver com criatividade do que com seu trabalho diário como programador. E há uma ótima história em quadrinhos sobre a hora da criatividade. A questão é que quando você programa para se divertir, você fica com uma pressa que torna difícil parar, até mesmo para comer ou dormir. Mas lembre-se que existem outras coisas interessantes na vida além da programação, procure o seu equilíbrio.
A profissão de programação é relativamente nova, portanto há poucos caminhos conhecidos nela. Especialistas nesse perfil costumam encontrar o caminho para o sucesso por meio de tentativa e erro.
De que forma eles podem implementar a experiência acumulada?
A melhor escolha para um geek é (ou seja, treinamento direcionado sem alterar o status do trabalho). Um programador que melhora constantemente é um funcionário valioso.
É improvável que ele se ofenda ao distribuir o fundo salarial. Ele se tornará um candidato digno a uma vaga em alguma empresa de maior reputação, até organizações internacionais.
Dica a ser observada:
Não é realista ser generalista em TI. Para mover-se horizontalmente rapidamente, selecione direção específica(bancos de dados, C++, java, etc.) e tente se tornar o melhor nisso.
Tendo alcançado um certo nível, você entenderá que está pronto para compartilhar sua experiência. Nesta fase, uma nova perspectiva se abre diante de você - a autorrealização no papel de consultor.
Você pode consultar tanto clientes offline (por exemplo, empresas municipais que criam um site de vendas para vender produtos) quanto clientes do espaço virtual. Bom trabalho esse tipo de coisa fará de você um nome e, por sua vez, gerará renda.
Você sonha em se tornar um especialista respeitado? Não se concentre apenas na programação. Aprenda facilmente comunicar com as pessoas, competente e figurativamente expressar pensamentos.
Se você atingiu o nível de especialista, mas não deseja registrar um empreendedor individual, tente construir uma carreira vertical em uma empresa de renome.
Você terá a tarefa de planejar e supervisionar o trabalho de outros especialistas.
Essencialmente, você será o chefe. Portanto, desenvolva em você mesmo qualidades de liderança, aprenda a motivar as pessoas.
Outra opção de carreira – talvez a mais difícil – é dar vida ao seu próprio projeto (por exemplo, lançar algum serviço original pago).
As startups são bem-sucedidas apenas para os programadores que têm espírito empreendedor ou encontrar um parceiro de negócios experiente.
Não entre imediatamente em um grande projeto que exija um enorme investimento de tempo e dinheiro. Primeiro, experimente um negócio que inicialmente lhe permitirá manter sua antiga fonte de renda.
Talvez, depois de ler o artigo, você comece a procurar uma vaga. Aproveite os publicados em nosso catálogo.
Você deve começar seu caminho para uma carreira como programador respondendo à pergunta: você precisa mesmo de programação? Essa questão não se aplica a quem está estudando ou já cursou alguma especialidade próxima à programação. Se você era melhor em matemática na escola do que em humanidades, se gosta de passar muito tempo no computador, se quer aprender algo novo, então programar é para você.
Existem várias opções para o desenvolvimento de eventos, a partir dos quais uma pessoa se torna programador. O primeiro são os pais-programadores que ensinaram tudo aos filhos. Essas crianças nem precisam ir para a universidade. A segunda opção é a profissão da moda de programador. Depois da escola, tivemos que escolher onde estudar e escolhemos a área da moda de TI, da qual parecíamos gostar. E última opção- um hobby que virou trabalho.
Se nenhuma das situações acima aconteceu com você, você terá quatro opções para escolher:
Quando você se tornar um programador, depois de um ou dois anos você estará livre para escolher a linguagem que desejar. Mas ao escolher uma primeira linguagem de programação, um iniciante deve considerar os seguintes critérios:
Você também terá que decidir sobre a direção da programação. Mobile, desktop, jogos, web, programação de baixo nível e assim por diante. Os setores mais populares e relativamente fáceis são o desenvolvimento para clientes web, móveis e desktop. Um idioma pode ser adequado para cada direção e outro não. Ou seja, na hora de escolher uma linguagem de programação também vale partir desse fator.
De qualquer forma, aprenda tecnologias da web. Esta é a linguagem de marcação HTML, estilos CSS e , que tornarão sua página dinâmica. O próximo passo é aprender uma linguagem server-side (Python, PHP, Ruby e outras) e frameworks web adequados para isso. Estude os bancos de dados: quase todas as vagas de programador mencionam isso.
Sem experiência você não conseguirá um emprego. Sem trabalho você não obterá experiência. Um círculo vicioso da vida real. Mas está tudo bem, vamos sair dessa.
Primeiro, não espere até ler todos os livros sobre a linguagem de programação escolhida. Comece a escrever suas primeiras linhas de código após o segundo capítulo do livro. Complete todas as tarefas dos livros, redigite os exemplos, entenda-os. Complique os exemplos e tarefas dos livros com suas próprias ideias. Crie suas próprias tarefas para o material abordado. Resolva esses problemas.
Em segundo lugar, você precisa encontrar seus primeiros projetos. Esta é provavelmente a opção mais difícil, mas funciona. Você mesmo terá que procurar os pedidos, atendê-los e se preocupar com o pagamento. Para um iniciante, isso é extremamente difícil, mas todas as outras opções parecerão moleza. Os projetos concluídos podem ser registrados como experiência e mostrados ao seu futuro empregador. Projetos reais são uma grande vantagem no seu currículo.
Se você sabe inglês, é melhor se cadastrar em intercâmbios de língua inglesa. O mercado é maior lá. Se você não sabe inglês, aprenda. Enquanto isso, intercâmbios freelance em russo estão disponíveis para você. Procure projetos pequenos que estejam no mesmo nível ou um pouco acima do seu nível de habilidade. Candidate-se a algumas dezenas desses empregos. E prepare-se para receber um mar de recusas. Mas se uma ou duas aplicações derem certo, você terá a chance de ganhar experiência real.
Outra boa opção para obter experiência real é o código aberto. Esses projetos sempre precisam de gente nova, até mesmo iniciantes. Você pode procurar bugs no projeto ou procurar no rastreador de bugs e sugerir métodos para resolvê-los. Você pode encontrar facilmente esses projetos no GitHub ou no . Fique à vontade para fazer perguntas lá.
A quarta opção para ganhar experiência é ajudar outros programadores. Peça-lhes que entreguem tarefas pequenas e simples para você. Se algo não der certo, você sempre terá alguém a quem recorrer. E ao mesmo tempo você participará de um projeto real.
A última forma são seus próprios projetos, vários hackathons ou trabalhando em um espaço de coworking. É difícil iniciar seus próprios projetos sozinho; é melhor procurar conhecidos ou amigos.
Vamos conversar um pouco mais sobre como escolher sua primeira linguagem de programação. A primeira linguagem deve ser simples e popular no mercado. Tal linguagem é Pitão. Eu recomendo fortemente escolhê-la como sua primeira linguagem de programação.
O código do programa Python é legível. Você nem precisa ser um programador para ter uma compreensão básica do que está acontecendo em um programa. Devido à sintaxe descomplicada do Python, você levará menos tempo para escrever um programa do que, por exemplo, em Java. Um enorme banco de dados de bibliotecas que economizará muito esforço, nervosismo e tempo. Python é uma linguagem de alto nível. Isso significa que você não precisa pensar muito nas células de memória e no que colocar nelas. Python é uma linguagem de propósito geral. E é tão simples que até as crianças podem aprender.
Para ser justo, vale a pena mencionar outras linguagens de programação. Java pode ser uma boa escolha para um iniciante. Essa linguagem é mais popular que Python, mas também um pouco mais complexa. Mas as ferramentas de desenvolvimento estão muito mais desenvolvidas. Basta comparar Eclipse e IDLE. Depois do Java, será mais fácil passar a trabalhar com linguagens de programação de baixo nível.
PHP- outra linguagem muito popular. E acho que é ainda mais simples que Python. É muito fácil encontrar um mentor ou uma solução para um problema no fórum. Isso ocorre porque existe um grande número de programadores PHP de diferentes níveis no mundo. Não existe importação normal em PHP; existem muitas opções para resolver o mesmo problema. E isso complica o aprendizado. E o PHP foi projetado exclusivamente para a web.
Idiomas C E C# muito difícil para um iniciante. Rubi- uma boa escolha como segunda língua, mas não como primeira. JavaScript- uma linguagem muito simples, mas que não vai te ensinar nada de bom. Mas a tarefa da primeira linguagem de programação ainda é ensinar algo correto, definir algum tipo de lógica.
Importante! Não sabe? Ensinar. Você sabe? Melhorar. Aprenda a ler, escrever, ouvir e falar inglês. Concentre-se na literatura técnica. Ouça podcasts em inglês. Leia livros didáticos de programação em inglês.
Claro que além da linguagem de programação e do inglês, você precisa saber mais alguma coisa. Mas o que depende da direção que você escolher. Um programador web deve conhecer HTML, CSS, JavaScript. Um programador de desktop ensina APIs de sistemas operacionais e várias estruturas. Um desenvolvedor de aplicativos móveis aprende estruturas Android, iOS ou Windows Phone.
Todo mundo precisa aprender algoritmos. Experimente fazer um curso no Coursera ou encontrar um livro sobre algoritmos adequado para você. Além disso, você precisa conhecer um dos bancos de dados, padrões de programação e estruturas de dados. Também vale a pena conferir os repositórios de código. Pelo menos com um. É necessário conhecimento de sistemas de controle de versão. Escolha Git, é o mais popular. Você precisa conhecer as ferramentas com as quais está trabalhando, sistema operacional e ambiente de desenvolvimento. E a principal habilidade de um programador é saber pesquisar no Google. Você não viverá sem isso.
Você precisa preparar um currículo. Não apenas um currículo, mas um arquivo . Você não deveria escrever lá, mas também não precisa ficar calado sobre suas habilidades. Depois de ser convidado para uma entrevista, você deve se preparar para ela. Consulte o material listado em seu currículo. Você deve estar confiante em seu conhecimento. Analise os projetos em que você trabalhou, pense nas tecnologias que você usou. E siga em frente - para um futuro brilhante com uma nova profissão como programador.