Profissão: Backend Developer

Não há razão para parar - 
estou andando, planando.
E no mundo não existem tais picos, o
que não pode ser tomado.
V. Vysotsky


Se este artigo não fosse publicado na Habré, mas em uma revista educacional, eu começaria assim: “Lembre-se dos sites que você gosta, com navegação conveniente e uma interface agradável. Mas você sabia que isso é apenas a ponta do iceberg ... ” Mas, provavelmente, tudo sabe sobre Habré, portanto, nenhuma letra. O back-end de qualquer projeto da web é um sistema complexo que permite que o aplicativo trabalhe rapidamente, pesquise com eficiência, forneça informações rapidamente ao usuário, armazene dados com segurança e proteção e, se necessário, trabalhe com outros sistemas externos. É como um relógio suíço: eles o compram por estilo e placa de identificação, mas os conhecedores sabem que, sob o mostrador restrito, está o mundo mágico do relógio. E os desenvolvedores de backend são mágicos de mecanismos, organismos, intestinos, vísceras ou como você chama em aplicativos da web. Eh, sem letra não era possível! 

Em resumo, hoje estamos analisando outra profissão na série "Profissão ...". Então, e se você for para os desenvolvedores de back-end? 


O back-end é sempre um pouco de dor

Quem é esse?


Falando academicamente, um desenvolvedor de back-end é um programador responsável pela lógica interna e computacional de um site ou aplicativo da Web, além de outros softwares e sistemas de informação. A rigor, o back-end não é apenas para soluções da Web, está disponível para aplicativos de desktop e móveis, como de fato, o back-end é tudo o que se refere ao hardware e software do serviço. Mas historicamente aconteceu que o back-end e o front-end começaram a ser especialmente claramente distinguidos precisamente no desenvolvimento da web. E como essa também é a esfera mais popular no momento, falaremos especificamente sobre a web (para o desktop, muitas teses também serão válidas, mas falaremos sobre desenvolvedores móveis em um dos problemas separadamente).

O desenvolvedor de back-end cria componentes e funções acessíveis ao usuário do aplicativo ou site por meio da interface. Simplificando, os backders são programadores que desenvolvem tudo o que o usuário não vê e não toca diretamente. Ou seja, um belo formulário de entrada de dados ou cesta de uma loja on-line é um front-end, e armazenar dados em um DBMS, vários campos de formulário de registro e uma cesta, integração com um gateway de pagamento, letras automáticas, carregamento e atualização de conteúdo é um back-end. Portanto, se o formulário de registro começar a apresentar um erro no banco de dados, a falha será ... o testador :-) (por que - também contaremos na próxima série).

O responsável pelo desenvolvedor de back-end:

  • garantir o correto funcionamento de todas as funções do site e sua lógica computacional;
  • organização e trabalho com bancos de dados através do DBMS;
  • desenvolvimento de lógica básica e algoritmos de operação de aplicativos;
  • API
  • integração necessária com serviços externos;
  • aplicativos de teste e depuração e componentes individuais.

Em geral, o cérebro e o sangue do site estão na consciência do desenvolvedor de back-end. Só não precisa pensar que esse é o deus e o rei de todo desenvolvimento, e o resto dos participantes congelam antecipando suas ações - isso não é inteiramente verdade (bem, quase).


Os desenvolvedores de front-end pintam a lâmpada de amarelo e esfregam-na para que a lâmpada funcione, mas apenas durante o dia.


Os desenvolvedores de back-end ficam surpresos com o fato de todos terem problemas com essas lâmpadas, lembrando que ele esqueceu de colocar luz no banco de dados, se acalma e culpa o front end.

Onde é necessário?


Como no caso do desenvolvimento front-end, em todo lugar existe um site ou aplicativo que interage com o usuário na web. Outra questão é que todos precisam de back-end de níveis diferentes: no escritório de uma rede social condicional ou de um grande site de anúncios, o desenvolvedor de back-end deve não apenas ter habilidades básicas, mas também trabalhar com altas cargas, arquitetura de microsserviço e contêiner (Docker, Kubernetes), conhecer os sistemas de monitoramento ( como Zabbix, Grafana), possuem habilidades em Scrum (opcional para empresas específicas). E para uma pequena loja online, um monte de DBMS necessário para PHP-Ajax e algum HTML é suficiente, às vezes até menos. É claro que os salários e os requisitos de experiência também são completamente diferentes. 

Tradicionalmente na carreira de Habréencontramos 444 vagas do desenvolvedor de back-end, quase duas vezes mais do que no front-end. No hh.ru - por volta de 1800. Em geral, os fornecedores front-end estão esperando por você nas estações de trabalho, onde a pesquisa no site leva duas horas para ser concluída :-) Mas, falando sério, a empresa pode ter 2-3 desenvolvedores de back-end por front-end, especialmente se estamos falando de aplicativos com lógica interna complexa e lógica de negócios (loja online, CRM-ERP, portal corporativo etc.).

salário médio


Também veremos os salários na Haber Career. Leve os dados para o segundo semestre de 2019, independentemente da propriedade de uma pilha específica. 
Nível especialista
salário médio
Estagiário (Intern)
35 345 esfregar.
Júnior
55 241 esfregar.
Meio
105 048 esfregar.
Senior
168 350 esfregar.
Apresentador (lead)
185 335 esfregar.

Se compararmos com os salários dos concursos iniciais, o crescimento é insignificante, de algumas centenas de rublos a 6.000 rublos. (No meio). Mas esses são realmente valores muito médios, muito depende da pilha de programação, habilidades adicionais, experiência e a principal linguagem de desenvolvimento. A propósito, o PHP está em primeiro lugar para todos os níveis do desenvolvedor de back-end, e falaremos mais sobre isso.

Requisitos profissionais básicos


Os requisitos para o back-end são ainda mais sensíveis aos recursos da empresa e seus processos de negócios do que o front-end. Às vezes, pode ser muito estranho, à primeira vista, coisas como "entender os princípios do refrigerador de peixe como empresa", "conhecimento dos conceitos básicos de vendas ou experiência em vendas", "conhecimento brilhante de JavaScript, CSS e HTML". Mas parece louco e repulsivo apenas com a primeira abordagem. De fato, o desenvolvedor de back-end está realmente mais imerso nos processos de negócios, deve não apenas desenvolver o código de acordo com eles, mas também ajustar algumas coisas para tarefas específicas, entender como ele funciona por dentro. Se você nunca viu um funil de vendas e não entende que tipo de lixo é, nunca pode desenvolver sua lógica junto com filtros, fatias e transições (mesmo se você tiver excelentes especificações técnicas, é difícil descobrir isso).Bem, no exemplo com "conhecimento brilhante de JavaScript, CSS e HTML", tudo é simples: o gerente provavelmente não confia realmente no outro desenvolvedor e está pronto para reconsiderar sua abordagem ao desenvolvimento. Isso geralmente acontece em pequenas empresas. 

Mas há também um conjunto básico de requisitos que um desenvolvedor de back-end verá em quase qualquer trabalho.

  • Conhecimento de pelo menos uma linguagem de programação "servidor": PHP, Go, ASP.NET, C / C ++, Python, Ruby, Java. Em alguns casos, o conhecimento de JavaScript para o back-end (Node.js) é suficiente, mas isso é mais do que um ponto.
  • Conhecimento de API (REST, SOAP - cada vez menos).
  • Compreendendo os princípios do Apache, NGINX, IIS e outros servidores.
  • Habilidades para escrever testes de unidade e cobrir código com testes.
  • Noções básicas de segurança de rede e conhecimento das ferramentas para garantir isso.
  • Conhecimento de estruturas da web populares que podem resolver os problemas do desenvolvimento de um aplicativo específico.
  • Habilidades em escrever consultas e design de banco de dados.
  • Conhecer o básico do front-end não é uma vantagem, mas um ponto obrigatório, caso contrário, será extremamente difícil projetar e escrever um aplicativo.

Uma enorme vantagem para o currículo e seu trabalho real será outro conjunto de conhecimentos.

  • Administração UNIX ou conhecimento do Linux (você pode usar qualquer kit de distribuição).
  • Conhecimento dos princípios de trabalho HTTP (armazenamento em cache, autorização, estrutura de mensagens, cabeçalhos, códigos de resposta etc.)
  • Modelo OSI. 
  • As habilidades na preparação e avaliação dos termos de referência (TOR) são uma habilidade muito importante que é necessária para coletar as informações mais precisas sobre os requisitos de software. 

"Sim, enlouqueça!" - você dirá e estará certo. No entanto, tenho boas notícias: as ferramentas de desenvolvimento de back-end mudam muito mais lentamente que o front end, e os requisitos ficam desatualizados por um longo tempo. Então, eu o dominei uma vez e li os resumos para manter-me atualizado com as coisas, mas principalmente para não ferver porque o design plano ficou na moda e o cartão do produto em seu site está fora de moda há dois dias :)

A propósito, existem muitos matemáticos bons e fortes entre os backenders, porque o desenvolvimento do backend é uma ciência exata, e a qualidade do resultado depende fortemente da verificação dos algoritmos, padrões, ciclos, funções, etc.
Estagiário (Intern)
Júnior
Meio
Senior
Apresentador (lead)
  1. C ++
  2. C #
  3. Golang
  4. SQL
  5. .INTERNET

  1. Php
  2. Pitão
  3. Java
  4. Framework Java spring
  5. PostgreSQL

  1. Php
  2. Pitão
  3. Java
  4. PostgreSQL
  5. Framework Java spring

  1. Php
  2. Java
  3. Pitão
  4. PostgreSQL
  5. Framework Java spring

  1. Php
  2. Java
  3. MySQL
  4. PostgreSQL
  5. Sistemas altamente carregados


+ POO, estruturas

+ POO, estruturas, Docker
+ sistemas altamente carregados, OOP, estruturas, Docker
+ Linux, OOP, estruturas, Docker
Entre as 5 principais tecnologias procuradas pelos especialistas, de acordo com a "Carreira Habr", no segundo semestre de 2019, o resultado final são habilidades "adicionais".

O princípio de formar a lista: os usuários, inserindo dados sobre salários, indicam as habilidades que eles têm prioridade (o que podem fazer!). Ou seja, esses não são os requisitos do empregador, mas as habilidades dos especialistas em cada categoria.

Como você pode ver, as empresas estão prontas para fazer estagiários nas universidades C, C ++ e C # básicas, mas no futuro preferem especialistas com um "conjunto de trabalho" de back-end. Preste atenção ao interesse em conteinerização e sistemas com muita carga. 

A propósito, aqui está outro roteiro para você, mas já para o back-end do desenvolvedor(Os outros também estão no site - na minha opinião, este é um dos melhores e mais sistemáticos que já vi sobre esse tópico). Olhe, imprima e encaminhe para o topo do back-end. 


Qualidades pessoais importantes


O backup é bom, pode ser um introvertido :) Sua área de trabalho com os usuários é minimizada, basicamente, todos os contatos de trabalho com gerentes ou colegas. Esses caras costumam trabalhar no TK e fazem tudo como está escrito no documento ou de maneira a obter um estado o mais próximo possível do alvo (o TK, você sabe, também é imperfeito, ou mesmo nem um pouco ...).

No entanto, há um conjunto de qualidades, sem as quais você não deve pensar na direção do back-end. Eles podem parecer-lhe algo como as qualidades de um funcionário de que uma "equipe em desenvolvimento dinâmico" precisa, mas não, trata-se de imperativos internos que ajudarão não apenas a fazer bem o trabalho, mas também a fazê-lo com conforto interno (em vez de "sair" ").

  • . , : , , , .. , — (, - - - CRM-).
  • . , , .
  • . — , , , « » , , - ( ).
  • . .
  • , . — .
  • . , . , . — . 
  • . — . , , . — ( ).
  • . , , , , , , , . , , — «» , « ».


Aqui está o que foi escrito para o desenvolvedor front-end.

Para qualquer programador, um inglês de pelo menos intermediário superior com um viés no inglês técnico é altamente desejável. Para que você possa ler no original as inúmeras recomendações do Google e de outras empresas para o desenvolvimento ideal (muita documentação útil!), Estude com a ajuda de palestras estrangeiras, comunique-se com colegas em fóruns, faça perguntas e também leia livros sobre usabilidade e design, entre os quais muitas edições legais em inglês e ainda não traduzidas. 

O mesmo vale para o back-end, ainda mais. Nos comentários do artigo anterior, eles notaram que o nível de intermediário superior é muito grande para um especialista em TI, bastante baixo. Eu julgo por mim e pelo nível dos livros didáticos. Digamos apenas que do intermediário para o intermediário superior, o passo não parece um apanhador e o nível de "bate-papo" é obtido facilmente. Mas do alto ao avançado - o abismo, a complexidade e o vocabulário. No entanto, se você ler as regras e entender que está lendo em um nível diferente, ninguém o levará para fazer o exame, use-o. 

Onde estudar


Em princípio, as mesmas universidades técnicas, cursos, auto-educação e universidades corporativas. Mas existem nuances importantes.

  • - (, , .), . - — , . , , , .. 
  • — - (, PHP Java) - -, , ( ).
  • , / . , .
  • open source , .
  • , , (-), . , , , , . , , - , - , .. ( / ). 



É necessário escolher as ferramentas de treinamento com base na linguagem de programação selecionada e na pilha atual em um momento específico. As recomendações gerais são as seguintes.

  • Um livro básico sobre sua linguagem de programação - eu gosto das edições O'Reilly, muitas são traduzidas por Peter. 
  • Da mesma forma, livros básicos em sua pilha. 
  • Livros de receitas por idioma e recomendações corporativas, artigos de blog etc.
  • Beck Kent, Programação Extrema. O desenvolvimento por meio de testes é um ótimo livro para qualquer desenvolvedor em princípio, mas especialmente para o back-end. Entrar na filosofia do TDD é caro.
  • Joel H. Spolsky - você pode ler o blog dele, ainda pode encontrar no e-livro da Runet "Joel about programming" - uma coleção de posts em russo.
  • « », « » — «» , .
  • « » — «» , .
  • , Youtube . , , . , . 
  • webref.ru — , , . 
  • codecademy.com — , , , . 
  • ITc comunidade de programadores - um carro de informações organizadas com cursos, palestras e qualquer outra coisa. Leia comentários, determine facilmente o melhor para aprender.
  • Biblioteca do programador - um monte de livros sobre qualquer tópico de TI.

Por que estou focando nos livros? Em primeiro lugar, eles são profissionais e, em segundo lugar, podem ser convenientemente mantidos à mão, fazer anotações e colar adesivos, retornar rapidamente às informações necessárias. Este é um formato conveniente e acessível para a apresentação de informações para o cérebro. Se você ainda não testou, não deixe de experimentar, divirta-se!

O futuro do back-end


O futuro do back-end é desenhado de forma bastante clara e promissora.

  • : junior , middle , senior , , , team lead .. , , , , .
  • : - Java, /++ « », , , , .. , .
  • -: .
  • DevOps, DevSecOps, — - , .
  • , . 
  • — . - ( -).

Vou lhe contar mais: se em 2020-2022 você aprender SQL e qualquer linguagem de programação "back-end", será bom para você em 2032. E o ponto aqui não é o suporte a legados, mas que ainda não há uma alternativa decente para a Web e, se e parecerá que o back-end tem uma chance muito maior de que sua pilha se encaixe.

A principal coisa que não funciona para você é ser um desenvolvedor ruim e, ao mesmo tempo, contar com algo interessante. O fato é que cada empresa espera responsabilidade do back-end (imagine erros no código de um aplicativo bancário, algum GIS crítico ou um sistema de monitoramento on-line - você pode ficar imediatamente cinza) e uma boa abordagem para o trabalho. É improvável que seja possível filtrar ou dizer "se destina" - com toda a invisibilidade externa do back-end, a falha nele é mais perceptível.

Mitos da profissão


AckO backend é muito difícil


Um ponto discutível. Alguns desenvolvedores afirmam que é mais fácil graças a ferramentas de desenvolvimento, inúmeras bibliotecas e um baixo nível de dinamismo, enquanto outros têm medo de abordar o back-end em princípio. No entanto, como sempre, no meio: em vez disso, a pilha do desenvolvedor de back-end é diversa e possui componentes heterogêneos, mas, primeiro, nem tudo é necessário no projeto, em segundo lugar, vale a pena entender uma coisa e agora todos os relacionamentos são óbvios, o conhecimento amarrado em uma única haste. De qualquer forma, você precisa tentar o back-end - mesmo se você se virar e escolher um tipo diferente de desenvolvimento, o conhecimento adquirido o ajudará em seu trabalho.


Developer Desenvolvedor de back-end recebe milhões


Isso geralmente é um mito comum sobre programação. O maior salário real do desenvolvedor russo, que eu tinha que ver com meus próprios olhos, é de 540 mil rublos. por mês (C / C ++, projeto estrangeiro, sistemas de visão computacional, doutorado, remoto), o segundo - 400 mil rublos. (Delphi, udalenka, empresa estrangeira, alemão como nativo). O resto é muito parecido com os números que tirei da "Habr Careers" para os meus pratos. Você receberá milhões apenas se convergir: conhecimento brilhante do idioma + talento + experiência e habilidades únicas em uma esfera estreita + projeto que está pronto para pagar tanto. Existem apenas alguns desses caras, e não vou dizer que o destino deles é lindo: 99% de suas vidas são trabalho, 1% é um sonho. Portanto, é importante realizar outra tese: os desenvolvedores de back-end estão em demanda e ganham um bom dinheiro, melhor do que muitos especialistas. SignificaVale a pena tentar.

PPHP - r @ vno, o PHP está morto, o PHP deve morrer


Eu amo esse holivar! Mas, ao mesmo tempo, sei como os iniciantes têm medo dele e estão tentando contornar essa linguagem poderosa e, de muitas maneiras, conveniente e suas estruturas. O fato é que, no início dos anos 2000 e 2010, o PHP era uma linguagem de programação extremamente popular para freelancers e outros colegas de sorte em TI. Diz um mar de sites e aplicativos amadores ruins - mas não porque o idioma seja ruim, mas porque esses caras não foram capazes de usá-lo de maneira graciosa e competente. A partir daí, esses mitos sobre "mau" foram embora.

É claro que o PHP é fácil de aprender, mais animado do que todos os vivos, centenas de milhares de projetos, projetos de design e engenheiros de projeto são escritos e suportados por ele, e ele permanecerá por um longo tempo. De acordo com o Stackoverflow, o PHP é escolhido por 25,8% dos desenvolvedores profissionais. A linguagem Yes e Octoverse GitHub é bastante estável no número de projetos:


A propósito, bons programadores de PHP são altamente considerados em todos os sentidos da palavra.

Dica principal


Não há linguagem melhor para o back-end; além disso, vou lhe dizer que não há linguagem de programação melhor para nada. Aprenda o idioma de que você ou seu futuro empregador em potencial precisa (você pode aprender isso com antecedência), para poder resolver rápida e elegantemente as tarefas que lhe foram atribuídas. Você não deve aprender alguma tecnologia com o princípio "todo mundo correu e eu corri". Então você pode se tornar um especialista verdadeiramente único, que pensa e ganha. O que ditará suas condições, é claro, as melhores. 

Bem, existem back-ends experientes entre os leitores? Como é? Por que você escolheu esse lado específico do desenvolvimento? Ah sim: Profissão: desenvolvedor front-endProfissão: administrador do sistema







All Articles