Conhecimentos Básicos para Iniciantes em Programação | Série "Começando aos 40"

Conhecimentos Básicos para Iniciantes em Programação | Série "Começando aos 40"

Introdução

Visão geral da seção: Nesta introdução, Fabio Akita fala sobre o currículo básico para quem quer se tornar um desenvolvedor web. Ele destaca a importância de começar do zero e adquirir conhecimentos em HTML, CSS, JavaScript e possivelmente outras linguagens como Java, C# ou PHP.

Currículo Básico para Desenvolvedor Web

  • É essencial começar com um pouco de HTML, CSS e JavaScript.
  • Alguns cursos de tecnólogo também podem incluir Java, C# ou PHP.
  • No entanto, esses cursos geralmente não abrangem tudo o que é necessário para construir uma carreira sólida.
  • Trabalhar em equipe é importante no início da carreira para aprender com os outros e ganhar experiência prática.
  • É impossível saber tudo em apenas 1 ou 2 anos.

Developer Roadmap

Visão geral da seção: Fabio menciona um repositório no GitHub chamado Developer Roadmap que lista as habilidades necessárias para diferentes carreiras na área de desenvolvimento. Ele destaca a importância desse roadmap como referência para os conhecimentos necessários.

Developer Roadmap

  • O Developer Roadmap é um mindmap atualizado anualmente que lista as habilidades obrigatórias e opcionais para cada carreira na área de desenvolvimento.
  • O roadmap é dividido em quatro partes principais: conhecimentos gerais, desenvolvimento front-end, desenvolvimento back-end e DevOps.
  • É importante notar que o roadmap pode mudar ao longo do tempo devido às mudanças na indústria.
  • O roadmap é uma referência útil para identificar as habilidades necessárias em cada etapa da carreira de desenvolvimento.

GIT como exemplo

Visão geral da seção: Fabio usa o GIT como exemplo para ilustrar a importância de aprender os conceitos básicos de uma determinada área antes de se aprofundar em todos os detalhes.

Exemplo do GIT

  • O GIT é um versionador de arquivos amplamente utilizado no desenvolvimento de software.
  • Ele permite que várias pessoas editem o mesmo código sem causar conflitos.
  • Existem muitos outros versionadores, mas o GIT se tornou o padrão na indústria.
  • É importante aprender pelo menos 20% dos conhecimentos básicos do GIT para resolver 80% dos problemas com controle de versão.

Conclusão e Recomendações Finais

Visão geral da seção: Fabio conclui destacando a importância de usar o Developer Roadmap como um checklist e enfatiza que a carreira de desenvolvimento exige aprendizado constante. Ele encoraja os espectadores a não tentarem aprender tudo de uma vez, mas sim focarem nos conhecimentos essenciais em cada etapa.

Conclusões e Recomendações Finais

  • Use o Developer Roadmap como um checklist para acompanhar seu progresso na carreira.
  • Não tente aprender tudo ao mesmo tempo, concentre-se nos conhecimentos essenciais em cada etapa.
  • Aprenda constantemente e esteja preparado para mudanças na indústria.
  • A carreira de desenvolvimento requer dedicação e estudo contínuo.

O fluxo de trabalho com GIT e suas principais ferramentas

Nesta seção, o palestrante discute o fluxo de trabalho com Git e apresenta algumas das principais ferramentas utilizadas pelos desenvolvedores.

Ferramentas essenciais do Git

  • "git init": comando para iniciar um repositório.
  • "git add": comando para acumular as modificações feitas.
  • "git commit": comando para empacotar as modificações.
  • "git push": comando para enviar as modificações para outro repositório de origem.
  • "git pull": comando para puxar as últimas modificações de um repositório.

Conceitos avançados do Git

  • Branches: conceito importante que permite trabalhar em diferentes versões do código.
  • Cherrypicking: técnica para selecionar commits específicos a serem aplicados em outra branch.
  • Rebasing e merge: diferenças entre esses dois métodos de integração de branches.
  • Stage: função e utilidade dessa etapa no processo de versionamento.
  • Squash de commits: técnica para combinar vários commits em um único commit coeso.
  • Bisect: recurso útil para encontrar o commit que introduziu um determinado bug ou problema.
  • Reflog: registro das referências anteriores do HEAD, útil na recuperação de commits perdidos.
  • Reset e clean: diferenças entre esses dois comandos para desfazer alterações.

Possibilidades avançadas do Git

  • O Git como um sistema de arquivos avançado: sua estrutura de dados baseada em um DAG (Direct Acyclic Graph).
  • Exemplos de uso avançado do Git: criação de um mini-clone do Dropbox, integração com sistemas de deployment e Continuous Integration.

A importância de dominar os conceitos básicos antes de se aprofundar

Nesta seção, o palestrante destaca a importância de aprender os conceitos básicos do Git antes de se aventurar em tópicos mais avançados.

  • É fundamental dominar os primeiros 20% dos comandos do Git para poder participar efetivamente em projetos.
  • Recomenda-se dedicar uma semana aos tutoriais iniciais do Git, como os disponíveis no site Github Guides.
  • É importante praticar em projetos próprios, cometendo erros e explorando o comportamento dos comandos.
  • Tutoriais mostram apenas passo a passo perfeitos, mas na vida real é necessário lidar com erros e situações não previstas.
  • Ao encontrar erros ou dúvidas, é recomendado pesquisar nas Issues do GitHub, Stackoverflow e outros fóruns online.

Aprender programação envolve tentativa e erro

Nesta seção, o palestrante enfatiza que aprender programação envolve tentativa e erro, e que tutoriais nem sempre refletem a realidade.

  • A programação é um processo de tentativa e erro, e os tutoriais não ensinam a lidar com erros.
  • É comum encontrar erros ao trabalhar em projetos reais, e muitas vezes as instruções dos tutoriais não funcionam nesses casos.
  • Recomenda-se assumir que a maioria dos erros já foi enfrentada por outras pessoas e buscar soluções em comunidades online como GitHub Issues, Stackoverflow, Stackexchange e fóruns.

A importância de praticar com projetos reais

Nesta seção, o palestrante destaca a importância de praticar com projetos reais para adquirir experiência prática em programação.

  • Ao invés de seguir apenas tutoriais passo a passo, recomenda-se procurar projetos no GitHub para clonar e explorar.
  • Praticar com projetos reais permite lidar com situações mais próximas da realidade e entender como funciona o código dos outros.
  • É normal encontrar projetos ruins ou semelhantes ao que você está buscando. O importante é praticar mesmo assim.

Aprender sobre sistemas operacionais

Nesta seção, o palestrante destaca a importância de aprender sobre sistemas operacionais, independentemente de ser um programador front-end ou back-end. Ele menciona que a maioria das pessoas usa Windows, mas é essencial aprender sobre distribuições baseadas em Linux.

Aprendendo sobre sistemas operacionais

  • O conhecimento sobre sistemas operacionais é crucial para programadores.
  • É comum rodar Linux em máquinas virtuais usando programas como Virtualbox ou VMWare.
  • Muitas pessoas não configuram seus próprios sistemas operacionais e acabam dependendo das configurações padrão.
  • Recomenda-se começar com uma distribuição Linux mais desafiadora, como o Arch Linux, para obter uma compreensão mais profunda do sistema operacional.
  • O Linux é o nome do kernel responsável por iniciar a máquina e oferecer serviços aos aplicativos.
  • Existem várias distribuições Linux disponíveis, cada uma com sua seleção de aplicativos e formas de configuração.
  • Distribuições como Ubuntu e Fedora são mais simples de usar, enquanto o Arch Linux exige configuração manual passo a passo.
  • O Arch Linux permite que os usuários tenham uma experiência prática ao configurar cada componente do sistema.

Compreendendo permissões e daemons

Nesta seção, o palestrante aborda a importância de entender as permissões do sistema operacional e os daemons. Ele explica que é necessário distinguir entre o acesso geral de administrador (root) e o acesso limitado do usuário. Além disso, ele menciona a necessidade de aprender sobre ferramentas como "sudo" para obter privilégios temporários de administrador.

Permissões e daemons

  • É importante compreender as permissões do sistema operacional, incluindo o acesso geral de administrador (root) e o acesso limitado do usuário.
  • Daemons são processos em segundo plano que rodam com privilégios maiores para controlar aspectos importantes do sistema operacional.
  • O uso de ferramentas como "sudo" permite que um usuário temporariamente tenha privilégios de administrador.
  • No Windows, isso é semelhante à janela de confirmação que solicita uma confirmação antes de executar uma ação com privilégios elevados.

Gerenciando versões e linguagens

Nesta seção final, o palestrante destaca a importância de gerenciar versões adequadas das linguagens de programação, como Javascript, Ruby, Python, PHP e Java. Ele menciona que códigos antigos podem exigir versões mais antigas dessas linguagens e enfatiza a necessidade de instalar as versões corretas para evitar falhas.

Gerenciando versões e linguagens

  • É essencial saber quais versões das linguagens de programação instalar, pois códigos antigos podem exigir versões mais antigas.
  • Instalar a versão mais recente pode resultar em falhas ao executar códigos antigos.
  • É importante considerar as necessidades específicas de cada empresa ou projeto ao escolher as versões adequadas das linguagens.

The transcript does not provide enough information for further sections.

Desenvolvimento de Software - Introdução ao Gerenciamento de Código e Ferramentas

Nesta seção, o palestrante introduz a importância do gerenciamento de código e ferramentas no desenvolvimento de software.

Gerenciamento de Variáveis e Ferramentas

  • O palestrante menciona a necessidade de instalar um gerenciador de variáveis como VIRTUALENV ou ASDF para lidar com múltiplas versões das linguagens.
  • Ele destaca que é importante entender onde estão localizados os executáveis, interpretadores, compiladores, bibliotecas e outras ferramentas relacionadas às linguagens que estamos usando.
  • É enfatizado que é essencial aprender a gerenciar o código usando ferramentas como GIT e serviços como GitHub.
  • O controle sobre a própria máquina é destacado como uma habilidade fundamental para programadores, pois permite que eles controlem as máquinas para fazerem exatamente o que desejam.
  • A falta de conhecimento sobre as ferramentas e o sistema operacional pode levar a dificuldades na evolução como programador.

Domínio das Ferramentas

  • O palestrante reforça a importância de dominar as ferramentas utilizadas no desenvolvimento de software.
  • Ele destaca que as próximas partes da série abordarão outros aspectos relevantes do desenvolvimento.

The transcript provided is in Portuguese.

Video description

Neste terceiro episódio da série "Começando aos 40" vou finalmente começar a tocar em assuntos mais práticos, pra começar o que eu considero que é o absolutamente básico que você precisa começar a dominar o quanto antes. Neste e nos próximos 2 episódios, pelo menos, vou dar uma visão mais estruturada do que considero que a carreira de "desenvolvedor Web" envolve para que você tenha uma idéia 'macro' do que deve planejar para estudar e treinar. Agora é a hora de arregaçar as mangas e treinar! Links: * Developer Roadmap (https://github.com/kamranahmedse/developer-roadmap) * git-remote-dropbox (https://github.com/anishathalye/git-remote-dropbox) * Building a Continuous Delivery Pipeline with Git & Jenkins (https://stackify.com/continuous-delivery-git-jenkins/) * A beginner's guide to continuous integration (https://about.gitlab.com/2018/01/22/a-beginners-guide-to-continuous-integration/) * TodoMVC (http://todomvc.com/) * Arch Linux (https://www.archlinux.org/) AkitaOnRails Blog: * Jogar Pedra em Gato Morto: por que Subversion não presta (https://www.akitaonrails.com/2007/09/22/jogar-pedra-em-gato-morto-por-que-subversion-no-presta) * GIT: Muito Promissor (https://www.akitaonrails.com/2007/09/22/git-muito-promissor) * Micro Tutorial de Git (https://www.akitaonrails.com/2008/04/02/micro-tutorial-de-git) * Dicas de Git (https://www.akitaonrails.com/2009/07/05/dicas-de-git) * [Screencast] Começando com Git (https://www.akitaonrails.com/2010/08/17/screencast-comecando-com-git) * Chatting with Chris Wanstrath (Err the Blog/Github) (http://www.akitaonrails.com/2008/04/21/chatting-with-chris-wanstrath-err-the-blog-github) * Arch Linux - Best distro ever? (http://www.akitaonrails.com/2017/01/10/arch-linux-best-distro-ever) * Optimizing Linux for Slow Computers (https://www.akitaonrails.com/2017/01/17/optimizing-linux-for-slow-computers) * From the Macbook Pro to the Dell XPS. Arch Linux for Creative Pro Users (http://www.akitaonrails.com/2017/01/31/from-the-macbook-pro-to-the-dell-xps-arch-linux-for-creative-pro-users) * Running Arch Linux over Windows 10! (http://www.akitaonrails.com/2018/04/29/running-arch-linux-over-windows-10) * Transcript: https://www.akitaonrails.com/2019/02/06/akitando-38-conhecimentos-basicos-para-iniciantes-em-programacao-serie-comecando-aos-40 * Audio: https://anchor.fm/dashboard/episode/eav9ou