O que eu encontrei de melhor para estudar ciência da computação

 · 6 mins read

Eu não estudei ciências da computação em uma faculdade e nunca tive um curso “formal” de programação. Sem entrar muito em detalhes quero reafirmar que, ao olhar para o passado, de maneira alguma acredito que ter feito uma outra faculdade (diferente da profissão que tenho hoje) foi perda de tempo. Uma universidade ensina muitas coisas que você não consegue aprender sozinha, atrás de um computador, naufragando num mar de conteúdos. No entanto, ao decidir mudar de área você tem que nadar forte para conseguir superar o buracos que a falta de um curso teórico de ciência da computação pode te dar. Ao longo do tempo vim colecionando cursos e textos que me ajudaram e ainda me ajudam a preencher as lacunas. Hoje vou compartilhar o que eu encontrei de melhor em termos de cursos e textos para aprender o que eu considero a base do conhecimento na área de tecnologia, sem me preocupar com linguagens de programação.

Quero deixar claro que eu não vou incluir cursos de plataformas de aprendizado (como Udemy e Coursera) e nada que seja pago. Também não vou focar em tutoriais que ensinam sobre linguagens de programação específica. Quis focar unicamente em conteúdos que explicam conceitos teóricos ou mais aprofundados e preencheram parte das minhas lacunas de forma rápida, eficiente e gratuita 🙃.

Obs: Esse é um post incabado. Está sujeito a alterações conforme eu encontrar conteúdos que me cativem.

O básico do básico

Uma falha muito grande que eu sempre sentia era que eu nunca realmente entendia como um computador funcionava por baixo dos panos. Como que tudo (lá embaixo de tudo), é apenas zeros e uns? Como que os cálculos são feitos? O Crash Course é um canal do Youtube que contém dezenas de vídeos sobre os assuntos mais diversos possíveis. Eles tem um curso de ciência da computação que vai desde o básico (0s e 1s) até como construir uma CPU e assim port diante. O curso é ministrado pela Carrie Anne da RaspberryPi Foundation, que é uma mulher incrível e apaixonada pelo que faz, o que faz o curso ser ainda melhor.


O básico de programação

Já vi vários cursos básicos de programação e a grande maioria foca em ensinar uma linguagem. O MIT tem uma plataforma de divulgação de algumas de suas matérias e uma delas é uma disciplina chamada “Introduction to Computer Science and Programming”. Essa disciplina foi gravada duas vezes, uma em 2008 e uma em 2011 e ambas estão disponíveis na plataforma. Apesar de serem antigas, as aulas não focam em uma linguagem específica, mas em conceitos de programação como um todo. Os exercícios e exemplos são em Python 2 e estão todos disponíveis. Antigamente o curso estava disponível com legendas em português, mas não consegui encontrar o material. Ele está também no Youtube, com legendas em inglês:


Design de sistemas

Outra coisa que eu sempre senti falta foi a parte de design de sistemas ou arquitetura de sistemas. Eu sempre soube que as grandes empresas faziam entrevistas em que se perguntavam coisas “Como eu construo um WhastApp?”. E claro que esse é o tipo de coisa difícil de aprender se você foca apenas em estudar programação. Andando pelo Youtube encontrei o canal de um rapaz Gaurav Sen que faz vídeos didáticos e leves sobre diversos temas. Acabei assistindo a maioria dos vídeos sobre design de sistemas e eu realmente recomendo:


Um pouco de engenharia

Uma forma legal de você entender melhor o que se passa por baixo dos panos em um computador é usar um hardware mais simples para fazer testes e criar protótipos. O Arduino é um pequeno hardware para criar protótipos que pode ser programado em C. Por um preço não muito alto é possível comprar um kit que vem com várias peças, LEDs e sensores para brincar em casa. Existem milhões de tutoriais na internet e eu encontrei um que achei bastante didático:


Blog do Pantuza (em português!)

O Blog do Pantuza é sempre uma fonte de conhecimento sobre coisas que eu nem havia pensado e, normalmente, mais baixo nível (mais próximo do computador do que do programador). Com exemplos de código e ilustrações bem feitas, os posts são sempre excelentes. Recomendo o texto do Jantar dos Filósofos sobre sincronização de sistemas, o texto sobre tabela hash e o texto sobre threads.

Algumas palestras que me marcaram

Introdução a filas [em português!]

A palestra do André Pastore é um excelente material para entender um pouco mais do conceito de filas.


Microserviços

Eu gostei muito dessa palestra que fala sobre os pricipais problemas de implementar microserviços:


E a palestra do Osvaldo Santana (em português!) sobre como e porque a empresa que ele trabalhava implementou um sistema baseado em microserviços:


Textos que são pérolas

Alguns textos me marcaram bastante, e alguns me fizeram compreender mais coisas que muito curso por aí:

Finalmente

Existem milhões de guias para você fazer “uma universidade” por você mesma. Coisas como o Coding University Interview que passam um milhão de tópicos e materiais para você estudar. Mas honestamente, eu prefiro não me cobrar considerando listas intermináveis como esse Coding University Interview. Todo dia vou descobrindo uma coisa nova e tentando preencher uma lacuna que falta, e busco o melhor conteúdo que se adapta à minha necessidade. Aqui deixo minhas dicas pra quem, assim como eu, está sempre em busca de conteúdo de qualidade.