Eu construí sistemas distribuídos em meta. Eu ainda recomendo começar com o Web Dev.

Quando as pessoas ouvem que eu trabalhei no armazenamento distribuído na Meta, eles assumem que eu devo ter seguido o caminho intensamente técnico: escrever C ++ desde o primeiro dia, cavando profundamente em sistemas operacionais e construindo algoritmos do zero na faculdade. Mas a verdade é: comecei o desenvolvimento da web. E se eu pudesse voltar, começaria da mesma maneira. Isso surpreende as pessoas. Alguns até recuam. Não é apenas HTML, CSS e JavaScript? Eu não deveria ir direto para a programação de sistemas se quiser trabalhar em uma empresa como Meta ou Google? O desenvolvimento da web não é apenas um trabalho de front -end? Entendo de onde vem o ceticismo. Mas essa é minha opinião honesta com base em mais de uma década de experiência, desde a construção de pequenos sites até o armazenamento distribuído em escala e agora orientando milhares de desenvolvedores por meio da educação: o desenvolvimento da web é um dos melhores lugares para iniciar sua carreira como engenheiro de software, mesmo que seu objetivo seja trabalhar no Systems. Legle me diga o porquê. Por que começar com o desenvolvimento da Web Não entendi completamente modelos de memória ou chamadas de sistema quando comecei a programar. Mas eu entendi uma coisa: eu queria criar algo real. Lembro -me da primeira vez que fiz um site básico. Era desajeitado, com certeza, mas eu poderia abri -lo em um navegador, clicar e compartilhar com um amigo. Esse loop de feedback instantâneo era poderoso. Isso fez a programação parecer real, não teórica. A maioria dos iniciantes subestima isso. Vendo instantaneamente o resultado do seu código é imensamente satisfatório e esse loop de feedback é essencial para continuar a aprender. O desenvolvimento da Web ensina muito mais do que as pessoas dão crédito. Quando você cria um aplicativo da Web simples, está tocando em várias partes principais dos fundamentos da computação: você está aprendendo como clientes e servidores conversam entre si. Você está trabalhando com código assíncrono, como lidar com eventos ou buscar dados de uma API. Você está lidando com modelos de dados, interação do usuário e preocupações de segurança. Mesmo a construção de um formulário de login apresenta conceitos como autenticação, gerenciamento de estado, protocolos HTTP, arquitetura em camadas e interface com bancos de dados. Essas não são idéias menores – são fundamentais. Ao criar sistemas de armazenamento em larga escala no setor, eu me apoiei fortemente nos mesmos conceitos. Isso incluía tentativas de manuseio (onde aplicativos ou sistemas são projetados para repetir automaticamente as operações com falha devido a problemas de rede temporários, por exemplo, conexões descartadas e intervalos de tempo) sobre a rede, lidando com solicitações de usuário em tempo real e gerenciando a consistência do Estado. Tudo começa com o entendimento de como os sistemas se comunicam. E adivinhe o que ensina lindamente isso? Um aplicativo da Web simples. Sistemas de aprendizagem sem ficar perdidos Os novos engenheiros não se desanimam quando tentam entrar na programação de sistemas muito cedo. Eles começarão a ler sobre consenso distribuído ou tentar configurar o Kubernetes na segunda semana de sua jornada de aprendizado. Em seguida, eles atingem uma parede e muitas vezes saem. Comece com o desenvolvimento da web mantém a curva de aprendizado razoável. Você pode criar projetos que funcionam. Você pode depurar problemas visualmente, pois há um site com o qual você pode interagir. Você pode explorar conceitos como latência, escalabilidade e simultaneidade de maneiras intuitivas e não uma mera sobrecarga cognitiva. Lidamos com petabytes de dados, projetando sistemas que poderiam sobreviver a travamentos do servidor, partições de rede e comportamento imprevisível do usuário. Foi um trabalho desafiador e fascinante. Mas aqui está o que costuma perder: os melhores engenheiros de sistemas com quem trabalhei não eram apenas especialistas em algoritmos distribuídos. Eles também entenderam como seus sistemas foram usados por pessoas reais, em aplicativos reais, através de interfaces reais. O objetivo era tornar esse processo mais rápido, reduzindo o tempo de espera para as pessoas que usam nossos serviços. Nossas melhorias vieram da compreensão do caminho de solicitação de ponta a ponta de um clique da página da web, até a gravação do disco. Essa mentalidade, pensando em ponta a ponta, é algo que desenvolvi pela primeira vez ao criar aplicativos da web. Que não é sério o suficiente. Que é apenas para desenvolvedores juniores ou amadores. Eu não pude discordar mais. Iniciar o desenvolvimento da web não significa que você não tenha ambição. Isso significa que você está escolhendo o caminho mais inteligente, deixando você aprender fazendo. Aquele que constrói sua confiança. Aquele que o prepara para se aprofundar, quando estiver pronto. É como aprender a andar antes de correr. Ou aprender aritmética antes de abordar o cálculo. Você precisa dessas vitórias iniciais. Eles constroem a fundação. Se você estiver apenas começando, aqui está o meu conselho honesto: não se preocupe em aprender “tudo” ao mesmo tempo. Concentre -se na construção de uma estrutura da web. Construir algo real, qualquer coisa com o qual você se preocupe. Learn como os dados fluem do navegador para o servidor e Back.Indra e as APIs, bancos de dados e lógica do lado do cliente. Aprenda o que acontece sob o capô. Mova -se para o back -end. Explore os sistemas quando estiver pronto e quando necessário. Eu prometo que você estará muito melhor preparado do que alguém que tenta começar no extremo mais profundo da piscina e fica impressionado com a abstração. Um sistema complexo que você admira começou a algum lugar pequeno. O Google começou com uma caixa de pesquisa básica. O Facebook começou como um diretório de estudantes. Até os sistemas distribuídos mais avançados começam como solicitações simples, passando por uma pilha de camadas, cada uma fazendo seu trabalho. Comece com o desenvolvimento da Web. Não porque é fácil. Mas como é uma das maneiras mais eficazes de aprender como os computadores funcionam e como as pessoas os usam. E se você o mantiver, ficará surpreso com o quão longe você leva. Eu certamente era.

Fonte

Publicar comentário

Você pode ter perdido