Informações úteis aos meus/minhas nov@s alun@s

Neste texto falarei sobre algumas coisas que você ouvirá em aula de forma breve pois talvez não façam parte de nosso plano de aulas (diretamente), mas que considero útil você saber, para em algum momento (talvez) se dedicar a estas coisas, caso faça parte do seu plano futuro para sua carreira. (resumindo, conselhos/dicas que eu gostaria de ter tido na faculdade e aprendi “sozinho”)

Antes de mais nada, é sempre bom lembrar, você gostar de programação não é sua obrigação (e ta tudo bem!), mas como aluno de um curso de “exatas”/computação/sistemas é esperado que você ao menos entenda o básico (suficiente) para ser capaz de entender trechos/fluxos/estruturas de códigos e perceber se alguma solução apresentada a você é impraticável, ou ao menos razoável.

Comecemos do início, programação, seja estruturada ou orientada a objetos, uma linguagem de programação nada mais é do que uma ferramenta através da qual realizará a implementação de seus algoritmos para que o computador entenda o que ele deve fazer. 

Em meus cursos de graduação trabalho basicamente com 2 linguagens, Java e C, e como linguagens de programação nem sempre são coisas triviais é bom termos um caminho para estudarmos de forma efetiva, levando em consideração que todos temos dificuldades com uma coisa ou outra relacionadas ao tema.

Java: linguagem de programação orientada a objetos, muito famosa e largamente utilizada no mercado de trabalho brasileiro.

Caso tenha dificuldades, recomendo que procure livros como Use a cabeça! – Java pois se trata de uma série (“Use a cabeça!”), focada em apresentar conceitos de forma simplificada e sempre muito ilustrativa.

O livro do Deitel também é interessante, mas deve estar na centésima edição, ter umas 2 mil páginas e dar dor nas costas só de pensar em colocar na mochila. No entanto, o livro do Deitel possui muitas dicas relevantes sobre aspectos de engenharia de software, abrangendo diversas informações valiosas e dicas, além do conteúdo sobre a linguagem Java.

Outro caminho muito interessante para a linguagem Java que recomendo, são cursos online, recomendo analisar a Alura (em português, mas com cursos pagos), da empresa Caelum que também possui uma apostila em português muito completa e gratuita sobre Java (clique aqui). Também recomendo os cursos das plataformas Code School, Code Academy e Solo Learn, que possuem alguns cursos introdutórios gratuitos, mas na língua inglesa. 

Sobre a Udemy, é uma ótima plataforma, mas é sempre complicado filtrar um curso realmente relevante, dado a enorme quantidade de cursos ofertados (opinião pessoal).

A Udacity não possui cursos específicos de Java.

Linguagem C: linguagem de programação estruturada, muito poderosa (rápida) e importante em termos de seu uso no passado e também nos dias de hoje.

A linguagem C não é tão popular nestas plataformas de cursos online, mas de toda forma possui alguns cursos interessantes na Coursera e na Learn C (https://www.learn-c.org), mas a minha escolha para aprender C de forma efetiva é o livro “C completo e total” (ele me salvou na faculdade), é um livro de conteúdo fácil de digerir e com um encadeamento de temas muito bom para quem quer aprender sozinho (os capítulos iniciais já irão salvar seu semestre).

Também deixo a dica de usar o site https://www.onlinegdb.com/online_c_compiler que possui um compilador online e descomplicado para estudar e programar algo caso precise.

Agora que as dicas para o caminho das pedras em programação foram dadas, vamos falar um pouco sobre programação orientada a objetos.

Normalmente nos ensinam que POO é representar entidades do mundo real no mundo computacional. Bem, é uma forma poética de ver as coisas, mas vai muito além disso, a POO trouxe grandes avanços ao desenvolvimento de software por nos permitir abstrair melhor as entidades que representamos em nossos sistemas através de todo o ferramental oferecido por ela (encapsulamento, composição, herança, polimorfismo e etc).

No entanto, comecemos do básico, creio que um dos livros mais palatáveis para aqueles que tem dificuldade no tema, seja o livro “Use a Cabeça! Análise e Projeto Orientado ao Objeto”, as justificativas para o uso deste livro permanecem as mesmas ditas anteriormente.

Outro livro de peso que utilizei e gostei muito durante a faculdade, porque ele trabalha diretamente com o pensamento de um projeto, onde se modela com foco em orientação a objetos é o livro “Utilizando UML e Padrões” do Craig Larman. É um livro um pouco extenso, mas vale a penar ler ao menos os seus capítulos iniciais.

RECOMENDO OUVIR O PODCAST HIPSTERS PONTO TECH, especificamente o episódio sobre orientação a objetos: https://hipsters.tech/praticas-de-orientacao-a-objetos-hipsters-129/

Agora vamos a recomendações um pouco mais “advanced”, para você ler em seu tempo livre, ou depois de se formar e não precisar dividir seu tempo entre sobreviver a uma matéria que não gosta ou ao prazer de estudar alguma coisa que seja do seu interesse.

Ainda no tema de programação e afins, recomendo o livro “Código Limpo” do Autor Robert C. Martin (mais conhecido como Uncle Bob), é um livro muito interessante, sobre boas práticas de programação, um pouco de design, TDD (test driven development) e mais algumas coisas. Já sobre “comportamento” profissional de um programador, recomendo o livro O Codificador Limpo. Uncle Bob é amado por uns, ligeiramente criticado por outros, mas o fato é que ele soube sintetizar e tornar alguns conteúdos de um linguajar bastante acadêmico para o fácil entendimento do público em geral.

Um tema um pouco mais avançado, mas que vale a pena olhar após estar mais amadurecid@ sobre o tema de orientação a objetos são os padrões SOLID, mais informações em:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Ou assistir a essa aula sobre o tema, do próprio Uncle Bob em Yale:


Outros livros (interessantes):
  • 97 Things Every Programmer Should Know: Collective Wisdom from the Experts
  • 97 Things Every Software Architect Should Know: Collective Wisdom from the Experts 
  • Padrões de Projeto – Soluções Reutilizáveis de Software Orientado a Objetos (considero um grande dicionário para programadores, que você deve passar os olhos ao menos uma vez na vida se você pretende seguir na carreira de programeir@)

Irei fazer outros posts, sobre carreira e etc com dicas interessantes sobre quais (infinitos) caminhos podemos seguir em nossa carreira, mas por hora este texto está bem longo e suficientemente completo, com relação ao conteúdo que gostaria que fosse priorizado para vocês!

Fique a vontade para compartilhar e principalmente comentar, ou me chamar para um café para falarmos sobre estes temas!

Espalhem a palavra! 😀