Programador 2020: Terminator Resting

Um programador hoje não é o mesmo de antes - o conhecimento de uma linguagem de programação (ou linguagens) não é suficiente para ser verdadeiramente competitivo no mercado de trabalho. Você pode escrever o quanto quiser no código C ++ um ponteiro para um ponteiro para um ponteiro, mas qual é o ponto se o seu empregador está chorando (menos caras baunilha gritam, priva-os de bônus, ameace e fique do lado do cliente - no sentido de um cliente vivo e usuário de seu programa, não é algo que se comunica com o servidor)? Há algum tempo, esses gadgets, esses conceitos de gestão, que as tendências de seleção de pessoal gravitavam em torno do mesmo: modularidade, discrição e até mesmo primitivização e estreita especialização de funcionários, software, ferramentas. Mas a evolução tomou o caminho errado e agora o mundo exige dispositivos inteligentes que podem fazer tudo, programas multifuncionais e aplicativos (olá,Yandex Go) e, claro, especialistas universais. O conceito de “homem-orquestra” voltou à moda, não tendo tempo para sair dela. 





Então, o que você precisa para a felicidade de programação completa de um conjunto de correspondência no final de 2020?



▍Estruturas de dados e algoritmos



Hoje em dia, existem muitos programadores autodidatas com boas habilidades de codificação em uma linguagem de programação específica. Estes são técnicos, retreinados de outros perfis, “vhozhdens em TI”, amadores de auto-educação, etc. eles realmente entendem como escrever código, são bem versados ​​em funções e sintaxe, conhecem alguns truques e são especialmente avançados em OOP e padrões. Isso já é muito para ser competitivo no mercado de trabalho. 



Mas nos primeiros dias de trabalho em um bom projeto, os problemas começam e fica óbvio que as tarefas educacionais que fizeram de você um programador legal não têm nada a ver com o código em produção. Para escrever um código profissional bom, você precisa entender estruturas de dados e algoritmos e ser capaz de projetar software. Tenho visto programadores muito inteligentes que não usam matrizes, árvores, listas vinculadas, classificações, etc. Esses caras têm duas características distintas: 1) eles são teimosos e confiantes em sua superioridade; 2) eles passam muito tempo escrevendo o que já existe como estrutura - já vi espécies e árvores reinventadas, é assustador e estranho. Já estou calado sobre os recursos.



Portanto, um programador de qualquer nível deve operar facilmente com estruturas e algoritmos existentes. A propósito, os profissionais de RH e CIOs adoram usar esses tópicos nas entrevistas. Se vale a pena transformar uma entrevista em um exame é um assunto para um artigo separado, mas o fato permanece.



▍ Processos de Negócios



Ainda me lembro dos bons tempos em que era possível criar o produto dos seus sonhos, e especialistas de produto, marqueteiros, vendedores o transformavam no produto dos sonhos dos clientes da empresa. Agora, é claro, é diferente: os caras do comercial relaxaram, o cliente tornou-se exigente e os concorrentes aprenderam a fazer coisas bonitas em vez das velhas hastes nos joelhos. Agora, qualquer programador e qualquer desenvolvedor deve compreender os processos de negócios para os quais cria software, deve ter um conhecimento mínimo do campo de atividade da empresa. E aqui argumentos como "Um cirurgião não precisa ser operado dez vezes" não vão, porque se trata de uma falsificação de argumentação e sofisma: o cirurgião, além da localização da incisão e de um órgão específico, entende análises, farmacologia, ressuscitação, anatomia geral, fisiologia, etc. 



E este é um grande problema: os desenvolvedores criam um produto simplesmente de acordo com as especificações técnicas, não para a conveniência de clientes específicos. Portanto, se é importante para você ser eficaz e criar um produto valioso e vendável (em benefício do seu salário), crie-o tendo em mente as necessidades do cliente, não levando em consideração sua visão das necessidades. Pergunte ao usuário os requisitos, colete informações sobre como o produto é usado, identifique módulos e funções inconvenientes e convenientes - então tudo ficará melhor e mais fácil. 



A propósito, um pequeno hack de vida sobre como entender os processos de negócios para os quais seu aplicativo está sendo criado. Reúna-se com os colegas da parte de “vendas”, do front office e faça um seminário mútuo: eles falam sobre processos e clientes, sobre o perfil de uso e vantagens importantes, e você diz que desenvolvimento não é uma onda de um pau e “lavou uma calculadora para mim o cliente pediu muito para calcular os parâmetros e custos do projeto da usina nuclear em meia hora. "   



▍Math



Rainha dos campos. Bem, ou ciências, não a essência. Não importa o quanto evitemos a matemática no mundo da TI, sua importância aumenta a cada ano. Nem o aprendizado de máquina, nem as redes neurais, nem a inteligência artificial podem ser desenvolvidos sem o conhecimento da matemática. E se você, um desenvolvedor de site ou desenvolvedor front-end, simplesmente resmungou e foi ler o próximo parágrafo, pare, isso se aplica a todos. Porque logo os programas sem pelo menos alguns rudimentos de ML / AI / redes neurais / BigData ficarão para trás. Portanto, a solução é simples: antes que seja tarde demais, estude a fatia necessária da matemática.



Eu tenho um pequeno segredo sobre como começar: compre qualquer enciclopédia infantil avançada ou livro popular de ciências sobre matemática e mergulhe na atmosfera, relembre os termos básicos. E então ele vai e até aperta. 



▍ Conhecimento básico em campos relacionados



Este ponto pode irritar qualquer um, mas sim - o programador e seus colegas ficarão melhor se todos souberem um pouco mais sobre o trabalho de um vizinho em um espaço aberto, escritório, equipe. Se você é um programador, é melhor conhecer alguns fundamentos de UI / UX, front-end e back-end, administração de sistema, testes, etc. Isso permitirá a construção de um diálogo de trabalho produtivo, sem acusações e suspeitas mútuas. Não há necessidade de se aprofundar no assunto - um livro básico, palestras online e um curso de Internet são suficientes. Se você está realmente interessado na carreira de desenvolvedor, pode fazer um programa de desenvolvimento integrado de software em tempo integral - tudo será dado em quantias moderadas, porém, na maioria das vezes, é pago. 



Esses “soldados universais” com uma visão ampla de trabalho têm maior probabilidade de cair nas fileiras de gerentes de projeto e líderes de equipe. Se você estiver interessado, cresça em amplitude e um pouco mais em termos de estudo de disciplinas dependentes. 



▍Techno-trio, sem o qual o futuro não será permitido



Pode parecer estranho, mas muitas vezes os programadores só sabem da existência dessas três tecnologias e podem explicar o que é em termos gerais. No entanto, em breve essas tecnologias afetarão a todos de uma forma ou de outra.



  1. . — , , ( ). . Amazon Web Service (AWS), Google Cloud Platform (GCP) Microsoft Azure . 
  2. . , , . ,   ,  . ( ).
  3. ( Docker Kubernetes) , , . , , , , . 


▍ -



Eu amo funcionários de empresas tóxicas. Se um relações-públicas ou um gerente de projeto corrige um quadrado nervosamente e diz que "Javist Sergey é tóxico" na empresa, eu sei que provavelmente Javist Sergey oprime colegas com seu volume de conhecimento, encontra erros profissionalmente e os explica de maneira enfadonha, com as melhores intenções e por causa da irritação outros se fecham em si mesmos e se comportam de maneira rude. Mas ele é um profissional - e há muitos deles. Mas, infelizmente, as pessoas são criaturas sociais com uma psique bem organizada e, portanto, não suportam pessoas sem empatia, um vetor social e, desculpe, inteligência emocional. Portanto, enquanto o javista Sergey está congelando e tendo conversas inteligentes com o coletor de lixo, o pitonista Savely já é um veterano e quer líderes de equipe e participou de três conferências, e ele mantém amizade com seus superiores e voa com um cliente para uma exposição em Barcelona (você já entendeu,que os exemplos são inventados e todas as coincidências são aleatórias, porque ninguém voa para Barcelona em 2020). 



Agora é a hora das comunicações, que são menos frequentes e mais valiosas, então anote o que você precisa bombear:



  • habilidades de comunicação, objeções, questionamento e discussão;
  • a capacidade de criar empatia e, por meio da empatia, extrair as informações necessárias;
  • a capacidade de expressar pensamentos de forma competente e inteligível;
  • habilidades de comunicação informal sem familiaridade e transição pessoal;
  • a capacidade de defender seu ponto de vista. 


Tenho boas notícias para você: a maioria das habilidades pessoais são instaladas em uma pessoa por padrão, você só precisa extrair com competência essas habilidades de si mesmo. Não vá a coaches e coaches, 2 a 3 livros básicos sobre psicologia organizacional, gestão de conflitos e psicologia social farão de você um conversador atencioso. 



Em geral, nossa vida está se desenvolvendo de uma maneira interessante: agora me lembro como o Google Glass foi uma inovação, como claramente o Pokémon Go entrou, como vários sistemas de gerenciamento de projetos decolaram e imediatamente entraram em colapso. Essas foram ondas de demanda exagerada, demanda por tendências. Portanto, as habilidades listadas de um programador em 2020 parecem ser tão "bonitas": elas são de longo prazo, e não por um par de temporadas. Ou seja, você pode conviver com eles até cerca de 2030 sem muito estresse. E o resto do mundo depende desses elefantes. Bem, linguagens de programação, é claro, a tartaruga sob os elefantes, a base do básico.  



Para que servimos? Feliz dia do programador, amigos! Você muda sua vida para melhor com o código, transforma requisitos em aplicativos funcionais, lê as especificações técnicas nas entrelinhas e sabe o que pensa o cliente ou o líder da equipe. Ame o seu trabalho, cresça nele e em você mesmo, e não deixe nenhum ";" passar despercebido. Todas as palavras de olá e menos bugs.



All Articles