Desenvolvedor em um site remoto - do zero ao herói

Recentemente, um número crescente de pessoas começa a sonhar com a forma como ficará em casa, escrever projetos legais em uma equipe distribuída, acariciar um gato sob uma xícara de café em casa e saquear um bom dinheiro. E, de fato, não há nada errado com isso, milhares de desenvolvedores trabalham dessa maneira. No entanto, caras que não têm experiência suficiente geralmente começam a falar sobre isso e, na realidade, é improvável que consigam esse emprego sem obter experiência de combate no escritório.



Jones no controle remoto não é necessário


Como os caras da Toaster gostam de dizer, em particular os curadores da maioria das seções, eles não precisam de nenhum jones em um site remoto, assim como a probabilidade de ganhar algo de um mês de junho como freelancer. E é mesmo. Mas também todos sabem que sempre haverá uma pessoa que fará o que foi considerado quase impossível.

E assim, meu nome é Sergey, sou desenvolvedor corporativo, moro na cidade de Ussuriysk (Primorsky Krai, 200k população, +7 horas com Moscou), não tenho formação especializada e não trabalho no escritório como desenvolvedor por um dia. E essa história é sobre como cheguei a essa vida.

Não tenho como objetivo inspirar os caras da província para que todos se apressem e tentem conseguir um emprego em um site remoto. Quero mostrar a enorme quantidade de tempo que gastei para crescer como desenvolvedor (sem dúvida, se houvesse um "escritório" na minha cidade, eu teria feito isso muito mais rápido).

Depois da universidade


Inicialmente, eu planejava trabalhar no setor de jogos de azar. Depois da escola, fui para o “Serviço Sociocultural e Turismo”, mas a lei da Federação Russa sobre a proibição de atividades de jogos de azar saiu no segundo ano. Embora eu moro no Território de Primorsky, onde eles deveriam construir um cassino até 2012, todos os prazos foram quebrados e, de fato, na época do meu lançamento, não havia nada. Mais precisamente, havia cassinos subterrâneos, mas esses eram os lugares onde você definitivamente não gostaria de trabalhar.

Como resultado, primeiro consegui um emprego em uma empresa atacadista de arroz, depois deixei o local como instalador de conexão à Internet e, em seguida, como suporte ao franqueado 1C. Tudo levou cerca de um ano e meio. Como se costuma dizer, nas mãos de um diploma vermelho da universidade, e todas as portas estão abertas na sua frente.

Suporte técnico


Todo esse tempo eu estava olhando para algo mais adequado, e um dia no My Circle vi uma vaga no suporte técnico noturno. Imaginei que, levando em conta meu fuso horário, sete horas da manhã em Vladivostok, são 0-00 em Moscou, posso trabalhar no turno da noite praticamente durante o dia. Respondi, conversei e consegui um emprego.

Naturalmente, assim, a pessoa esquerda não será levada em apoio. Gosto muito da construção de sites desde a escola e fiz vários sites para minha equipe dotka e o clube de jogos local. Além disso, devido à minha educação, eu tinha um bom inglês, o que me permitiu também fornecer suporte a clientes da Austrália, Nova Zelândia e EUA. Na verdade, eu tinha o nível de um bom webmaster com inglês, além da experiência de suporte da 1C.

Seguir em frente


Em um dos congressos corporativos, conversei com o pessoal do departamento de desenvolvimento e percebi que os tópicos discutidos não eram algum tipo de "ciência do foguete" e que eu poderia tentar também. Além disso, a educação formal, embora fosse humanitária, mas ainda tínhamos matemática, estatística, economia, contabilidade e programação, então eu não tinha muito medo de fórmulas e números.

Foi em 2014, em todos os lugares que eles gritaram que php é péssimo, que python é o futuro e assim por diante (como eu era ingênuo e estúpido!). Então comecei a aprender programação com ele. Como eu fiz isso:

1) Eu baixei os livros de Mark Lutz “Learning Python”, “Programming in Python”. Os livros eram bastante difíceis, porque lê-los era extremamente chato, no entanto, eles davam uma base muito boa. Se você tiver a opção de começar rapidamente ou ler algum livro fundamental sobre programação, recomendo começar com o segundo para obter a base necessária. É importante entender, não apenas "Como", mas também "Por que" e "Por que".

Após os livros, decidi jogar um pouco e comecei a escrever vários analisadores para portais de jogos (Brablay / GoodGame), a fim de coletar estatísticas sobre certos tópicos. Em particular, foi interessante ver como certas pessoas deixam comentários, em particular seu grande número.

2) Decidi fazer algo mais significativo e montar um portal de artigos em Python. Eu li um livro sobre o Django (para ser sincero, não entendi muito - as informações foram fornecidas muito rapidamente e muito "vácuo"). Então, assisti a alguns vídeos introdutórios no Django do ITVDN e consultei a documentação oficial.

Durante 4 meses de desenvolvimento, me acostumei ao layout, entendi como trabalhar com o banco de dados, escrever migrações, definir SSL e assim por diante. Como resultado, no ano seguinte, passei no lançamento de vários projetos próprios e no desenvolvimento de pequenos locais para crianças locais (local de entrega de porcos, loja de bicicletas, loja de nutrição esportiva etc.).

3) Depois de um ano, eu me cansei de desenvolver projetos no Django. Comecei a procurar o que mais poderia ser pensado em Python. Eu provavelmente li todos os livros em Python que estavam no site da Ozon. Começando com um livro sobre Devops, terminando com visão computacional e aprendizado de máquina. Esses tópicos realmente não me inspiraram (não vi o valor aplicado em minha escala que posso usar aqui e agora), mas esses termos de alguma magia desconhecida e "skynet" se transformaram em fórmulas comuns e bibliotecas aplicadas.

4) No final, decidi aumentar um pouco meu nível de conhecimento em informática e comecei a ler livros sobre C / C ++ / Java / Redes de Computadores / PostgreSQL / TDD e padrões corporativos. Para ser sincero, uma experiência interessante quando você entende como outra tecnologia funciona, em que ela se baseia, quais desafios ela implica e como resolve "problemas complexos" da sua pilha.

Separadamente, podemos mencionar o livro sobre Spring, que mostrou o quão mais complexo é um aplicativo corporativo do que um projeto "fácil" no Django.

Teste e Teste Automatizado


Após três anos de trabalho de suporte, infelizmente, tive acesso negado ao departamento de desenvolvimento, mas houve uma oportunidade de conseguir uma posição no departamento de testes. Naquela época, eu conhecia o Python livremente e podia em Java, por isso seria tolice discordar.

O departamento de testes deu uma compreensão bastante boa de como sistemas complexos estão sendo desenvolvidos, como as equipes interagem entre si e entre si. Configuração de vários ambientes de teste, priorização de tarefas e muito mais.

Naturalmente, essa é a automação de testes em selênio com testes bruscos por meio de jenkins ao liberar novas construções.

Eu também gostei do tópico de design de teste. A empresa tinha um grande conjunto de vários cursos de teste, para que você pudesse aprender muitas coisas interessantes com as quais nunca havia pensado no campo do design de testes. Por exemplo, projetar o número mínimo de casos de teste para cobrir o maior número de variantes do sistema usando geradores em pares (http://www.pairwise.org/). Essas são coisas interessantes do trabalho do QA-Engineer, no qual muitos desenvolvedores nem sequer pensam.

Transição para o desenvolvimento


Depois de um ano e meio no departamento de testes, consegui um acordo de que, se eu fornecer um protótipo funcional na pilha php, terei a oportunidade de fazer um estágio no departamento de desenvolvimento.
Passei um mês em livros sobre PHP. Depois de Python e Java, dominar o PHP acabou sendo bastante fácil, embora de tempos em tempos as perguntas “Por que não aqui assim” aparecessem.

Passei três meses no serviço da API Symfony (focinho da web, conta pessoal, lógica de negócios, notificações de email, gerador de pdf, análise de estruturas json complexas e muito mais). De repente, verificou-se que o Symfony é um tipo de híbrido de Django e Spring, então não havia problemas de compreensão.

Como resultado, mostrei meu projeto e fiz um estágio no departamento de desenvolvimento, de onde eu já havia sido transferido para um desenvolvedor de pleno direito.

Primeiros meses como desenvolvedor


Recebi um mentor que realmente revisou meu código e sugeriu por que eu deveria fazer isso e não o contrário. Às vezes, as chamadas duravam de uma hora e meia a duas horas, quando o código era analisado em detalhes na bola e eram dadas recomendações sobre como melhorá-lo. De fato, aconteceu que tomei decisões no momento certo com a lógica certa, mas devido ao fato de não ter experiência em desenvolvimento corporativo, elas se mostraram muito confusas e complicadas. Além disso, de tempos em tempos, havia perguntas sobre o trabalho de Redis / RabbitMQ / Elastic, etc. Ainda assim, o principal trabalho foi realizado em campo para simplificar o código e torná-lo testável (quando você escreve o código para si mesmo, nem pensa que outras pessoas não serão capazes de lê-lo). Como resultado, em quatro meses, meu código apareceu em grande estilo para os padrões corporativos.

Na verdade, quando você escreve o código, nem pensa em como as outras pessoas o entenderão e se é correto expressar seus pensamentos dessa maneira. É difícil substituir a experiência de trabalho em equipe.

Experiência total para começar o trabalho do desenvolvedor em um site remoto do zero - 4 anos, 9 meses.

Como resultado do trabalho remoto a partir do zero:


  • A probabilidade de conseguir um emprego como desenvolvedor em um site remoto, após concluir um curso e ler alguns tutoriais, tende a zero.
  • A probabilidade de lidar mesmo com o trabalho de junho em um local remoto, sem a experiência de desenvolvimento comercial ou de projetos próprios, tende a zero.
  • A probabilidade de que, sem recomendações, a empresa dedique algum tempo para você ensinar alguma coisa - tende a zero.
  • A probabilidade de que, depois de ler alguns livros e conseguir um emprego em um site remoto, você receba "muito dinheiro" - tende a zero.
  • Tomar uma decisão no início de sua carreira, a fim de abandonar o escritório e procurar um local remoto é uma grande bobagem.
  • Recusar outros trabalhos de TI, como você só quer ser desenvolvedor em um site remoto desde o início de sua carreira, não passa de estupidez.

Source: https://habr.com/ru/post/pt476982/


All Articles