Como ser um desenvolvedor full stack

Ser desenvolvedor Full-Stack é uma tendência no desenvolvimento de software.

Estes profissionais requisitados poderiam ser ditos como universais, e surgiram graças à evolução dentro do desenvolvimento técnico. A sede de aprender tecnologias novas os auxilia a compreender todo o ecossistema de um projeto de software. Trata-se de um processo evolutivo.

Neste artigo eu não vou discutir cursos, programas de desenvolvimento, linguagens, em vez fornecerei um guia definitivo para o que considero o mais importante habilidades necessárias para se tornar um desenvolvedor Full-Stack e conseguir um emprego.

A lista se baseia na minhas experiências com entrevistas em empresas para desenvolvedor no passado e também entrevistar potenciais candidatos para a atual Full-Stack na minha empresa atual.

O que é ser um desenvolvedor full-stack?

Um desenvolvedor Full-Stack é profissional capaz de desenvolver em servidores front-end e back-end de partes de uma aplicação.

Front-end, geralmente, refere-se a a parte de um aplicativo que o usuário irá ver ou interagir com, e o back-end é a parte do aplicativo que lida com a lógica, interações com banco de dados, autenticação de usuário, configuração do servidor, etc.

Sendo um Full-Stack, não significa que você necessariamente tem dominado tudo o que é necessário para trabalhar com o front-end ou back-end, mas isso não significa que você é capaz de trabalhar em ambos os lados e entender o que está acontecendo quando a construção de uma aplicação.

Características de um desenvolvedor full stack

Se você quer se tornar um desenvolvedor full stack, você precisa entender que existem características necessárias.

  • Mente analítica e focada em resolver probleas
  • Paciência
  • Adorar tecnologias e aprendizado
  • Atenção aos detalhes
  • Disciplina

Se você deseja se tornar um desenvolvedor Full-Stack, vou separar referências do que você precisa aprender.

HTML/CSS

HTML e CSS são fundamentais para desenvolvimento web, em que você se encontra primeiro no início de qualquer curso de programação. Ele funciona desta forma porque, graças ao HTML, você pode adicionar conteúdo para distribuir pela Internet, e CSS ajuda a dar aparência elegante.

  • Semântica do HTML.
  • Ser capaz de explicar o CSS Box Model.
  • Benefícios do CSS pre processadores (você não precisa necessariamente entender como usar um a um nível profundo, mas você deve entender o que eles são e como eles ajudam com o desenvolvimento).
  • CSS Media Queries para atingir diferentes dispositivos e escrever responsivos CSS.
  • Bootstrap (um quadro para ajudar o design e o layout de conteúdo em uma página e, embora muitos programas on-line ou escolas centrar-se fortemente no ensino de Bootstrap, na realidade, é mais importante ter um conhecimento profundo de fundamental CSS específicos Bootstrap recursos e métodos).

JavaScript

A linguagem JavaScript é cada vez mais popular a cada ano e novas bibliotecas, frameworks e ferramentas estão constantemente a ser lançado.

Sim, o JavaScript é a língua mais popular, tanto em Full-Stack, Front-end, Back-end e Desenvolvimento.

É a única linguagem que roda nativamente no navegador, e pode dobrar como um do lado do servidor e a linguagem (com o Node.js).

Abaixo estão alguns tópicos que você precisa para entender como um Full-Stack Desenvolvedor:

  • Entenda como trabalhar com o DOM. Também sei que o JSON é e como manipulá-lo.
  • Importantes características da linguagem, tais como funcional, composição, herança prototipada, encerramento de atividades, o evento de delegação, o âmbito, funções de ordem superior.
  • Assíncrona de controle de fluxo, promessas, e as chamadas de retorno.
  • Aprender como fazer corretamente a estrutura de seu código e modularizar partes dela, coisas como webpack, browserify, ou construir ferramentas como o gole definitivamente vai ser útil saber.
  • Saber como usar, pelo menos, um framework popular.
  • Embora alguns possam argumentar que você deve estar usando isso menos ou que está morrendo lentamente, o código jQuery que ainda existe na maioria das aplicações e uma sólida compreensão do que vai ser útil.
  • Algum conhecimento sobre estruturas de teste e por que eles são importantes (alguns podem até reclamar que esse tópico deve ser opcional).
  • Aprender sobre algumas importantes ES6 recursos (opcional).

Backend

Uma vez que você sentir que você tenha obtido um bom conhecimento em HTML/CSS e JavaScript, chegou a hora de conhecer uma linguagem back-end que vai lidar com as coisas como operações de banco de dados, autenticação de usuário, e a lógica da aplicação.

Você vai ter uma tonelada de diferentes respostas se você perguntar a alguém qual o back-end é a melhor para aprender, portanto, a seguir fiz uma lista de algumas combinações de populares.

Conselho: qualquer que você decidir aprender, ficar com ele e aprender tanto quanto você pode sobre ele. Sugiro que foque em apenas uma, pois, entendo os conceitos de uma única linguagem, poderá te dar a base para entender outras.

  • PHP: PHP é, assim como em Java, é uma linguagem que possui muita demanda e é um dos pilares da web de hoje. A maior parte da web hoje possui
  • Node.js: É só por si um ambiente JavaScript que significa que você não precisa aprender uma nova linguagem. Esta é uma grande razão por que um monte de programas on-line e escolher para ensinar Node.js.
  • Ruby: Alguns populares frameworks para desenvolvimento em Ruby on Rails e Sinatra.
  • Python: Alguns populares frameworks para desenvolvimento em Python, como o Django.
  • Java: A linguagem Java não é ensinado tanto nestes dias, quando se trata de Full-Stack Desenvolvimento Web, mas algumas empresas fazem uso de Java como seu back-end e ainda na procura de idioma.

Banco de Dados

Quando aprender a construir aplicações web, em algum momento, você provavelmente vai querer armazenar os dados em algum lugar e, em seguida, acessá-lo mais tarde. Você deve ter um bom entendimento sobre os seguintes tópicos relacionados a bancos de dados e de armazenamento.

  • Entender os benefícios de dados relacionais, por exemplo, SQL.
  • Aprender sobre bancos de dados NoSQL, e.g. o MongoDB.
  • Entender o que seria melhor em determinadas situações.
  • Saber como conectar um banco de dados com o seu back-end do idioma (por exemplo, Node.js + MongoDB).
  • Compreender os benefícios dos dados na memória lojas como Redis ou memcached.
  • Web storage para armazenamento de sessões, cookies e dados em cache no navegador.
  • Dimensionamento de bancos de dados, ÁCIDO, e ORM (todos opcionais).

HTTP & REST

O HTTP é um protocolo de aplicativos sem monitoração de estado na Internet — é o que permite que os clientes se comuniquem com servidores (por exemplo, o código JavaScript pode fazer uma requisição AJAX para algumas código de back-end que você tem em execução em um servidor que irá acontecer através de HTTP).

Alguns tópicos importantes que você deve aprender sobre são listados abaixo:

  • O que é REST e por que é importante no que diz respeito ao protocolo HTTP, da web e de aplicativos.
  • Melhores práticas para a concepção de uma API RESTful.
  • POST/GET pedidos.
  • O que são Certificados SSL.
  • HTTP/2 & SPDY (opcional).
  • WebSockets e Web Workers.

Arquitetura

Uma vez que você pensar que você tem uma compreensão sobre HTML/CSS, JavaScript, back-end de programação, bancos de dados e HTTP/REST, em seguida, vem a parte complicada.

Neste ponto, se você deseja criar um pouco complexo aplicativo da web, você precisará saber como a estrutura de seu código, como separar seus arquivos, onde hospedar seus arquivos de mídia grandes, como estruturar os dados em seu banco de dados, onde para executar determinadas tarefas computacionais (do lado do cliente vs do lado do servidor), e muito mais.

Existem práticas recomendadas que você pode ler on-line, mas a melhor maneira de aprender sobre arquitetura de aplicação é por trabalhar em uma grande aplicação que contém várias peças em movimento — ou, melhor ainda, trabalhar em equipe e, juntos, desenvolver um pouco grande/aplicação complexa.

É por isso que, por exemplo, alguém com mais de 7 anos de experiência pode não necessariamente conhecimento de CSS ou JavaScript melhor do que alguém com 2 anos de experiência, mas ao longo desses anos todos eles, presumivelmente, trabalhou com todos os tipos de aplicações e sites, e aprendi como arquiteto e aplicações de design (entre a aprendizagem de outras coisas importantes) para ser mais eficiente e pode ver ter uma visão geral, quando se trata de desenvolvimento.

Abaixo estão algumas coisas que você pode ler que irá te ajudar a aprender como arquiteto de aplicações de forma eficiente:

  • Aprender sobre plataformas comuns como um serviço, por exemplo, Heroku e a AWS. Heroku permite que você facilmente fazer o upload do seu código e fazer uma aplicação em execução, com muito pouco de configuração ou de manutenção do servidor e a AWS oferece dezenas de produtos e serviços para ajudar com o armazenamento, processamento de vídeo, equilíbrio de carga e muito mais.
  • Otimização de desempenho para aplicativos e navegadores modernos.
  • Algumas opiniões sobre o que é uma arquitetura do aplicativo da web deve incluir.
  • Concepção de Aplicações Web pela Microsoft.
  • MVC.