Oddbean new post about | logout
 O fato de haver essa picaretagem não deve te desanimar, mas fazer com que você entenda  que nenhuma área científica hoje está livre de manipulação. A TI tem a vantagem de ser aberta e permitir, com pouco orçamento, aprender pessoalmente à revelia da academia. Minha formação como programador é auto-didata. Eu não fiz curso nenhum, porém, comecei em 1990. Eu vi quase tudo acontecendo pessoalmente. Desde a briga Token Ring x Ethernet e do Open Sistemes x Novell, até a chegada do linux. Trabalhei com super micros Cobra e Sid SMX 390. Então, eu tive a oportunidade de pegar o fio da meada. Mas não acho impossível que alguém consiga entender tudo por si só hoje. Ademais, há muita informação na internet, que é totalmente aberta. 

O importante são os fundamentos. Estude os fundamentos bem: estrutura de dados, lógica de programação, algoritmos, conceitos de OOP, versionamento de código, Banco de dados, Sistemas operacionais e redes de computadores. Hoje se consegue vasta documentação livre para estudar. Uma vez dominando minimamente estas disciplinas, se pode aprofundar em linguagens de programação. 

Só não pense que é simples e fácil, nem que é algo que precisa décadas pra começar. O campo é vasto, quando souber onde o galo canta, escolha uma área específica pra se aprofundar. 

Não se prenda a modinhas do momento. Em cajuzinhos do verão. Nunca vi isso funcionar por muito tempo.

Sobre fontes: Em relação aos fundamentos, prefira bons livros sobre estes assuntos. Há dezenas deles na internet, dentre alguns clássicos. Segue uma lista:

Lógica de Programação

"Lógica de Programação: A Construção de Algoritmos e Estruturas de Dados" de André Luiz Villar Forbellone e Henri Frederico Eberspächer

Estruturas de Dados

"Estruturas de Dados e Algoritmos em Java" de Robert Lafore
"Algorithms, Part I and II" de Robert Sedgewick e Kevin Wayne (também disponível como curso online gratuito no Coursera)
Algoritmos

"Introduction to Algorithms" de Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein
"Algoritmos: Teoria e Prática" de Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein
Linguagens de Programação

Python: "Python Crash Course" de Eric Matthes
JavaScript: "Eloquent JavaScript" de Marijn Haverbeke (disponível online gratuitamente)
Java: "Java: The Complete Reference" de Herbert Schildt
C++: "Programming: Principles and Practice Using C++" de Bjarne Stroustrup
Conceitos de Orientação a Objetos (OOP)

"Design Patterns: Elements of Reusable Object-Oriented Software" de Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides
"Head First Object-Oriented Analysis and Design" de Brett McLaughlin, Gary Pollice e David West
Desenvolvimento de Software

"Clean Code: A Handbook of Agile Software Craftsmanship" de Robert C. Martin
"The Pragmatic Programmer: Your Journey to Mastery" de Andrew Hunt e David Thomas
Versionamento de Código

"Pro Git" de Scott Chacon e Ben Straub (disponível online gratuitamente)
Banco de Dados

"Database System Concepts" de Abraham Silberschatz, Henry F. Korth e S. Sudarshan
"SQL For Dummies" de Allen G. Taylor
Redes de Computadores

"Computer Networking: A Top-Down Approach" de James F. Kurose e Keith W. Ross
Sistemas Operacionais

"Operating System Concepts" de Abraham Silberschatz, Peter B. Galvin e Greg Gagne