Crítica Use a Cabeça! C# (Head First C#)
Você quer aprender a linguagem de programação C# e existem diversos livros e cursos sobre o assunto. Por onde começar? Para quem gosta de aprender com livros (eu recomendo!), um dos mais indicados para iniciantes é o “Use a Cabeça! C#“. Em inglês, o título do livro é Head First C#. Este post faz uma crítica desse livro com muitos detalhes.
Crítica do livro “Use a Cabeça! C#” ou “Head First C#” em inglês
Se esta crítica fosse sobre um filme, eu diria: “contém spoilers”, mas penso que em livros técnicos não existe isso. Não existe trama, conflito ou suspense sobre como o livro acaba. Os autores e interessados em vender mais exemplares, se esforçam para anunciar tudo o que ele aborda.
Livros técnicos como esse, com mais de 700 páginas, embora sejam didáticos, não são, em geral, lidos em sua totalidade. Esse livro pode ser usado, parcialmente ou integralmente, como livro-texto de uma disciplina do curso de Ciência da Computação. Por isso, você não o lê em um final de semana. Caso o leia freneticamente em uma semana, não irá assimilar seus conhecimentos. É preciso ler e praticar, isto é, codificar todos os exemplos e projetos, o que exige mais tempo.
Exatamente por isso, você acaba de ganhar um presente ao decidir ler este post. Iremos lhe ajudar na tarefa de absorver o máximo possível de conhecimentos desse livro, mas naturalmente você precisa tê-lo para acompanhar o post. Caso contrário, o artigo servirá como referência do que encontrar nele.
Resumo em vídeo
Resumo em texto
O livro é abrangente e adequado para todos que estão iniciando o aprendizado da linguagem C#. No entanto, antes de lê-lo, você precisa saber algumas coisas.
- O livro é recheado de práticas e apresenta a teoria sob demanda. Em outras palavras, o livro não apresenta seus conhecimentos em uma ordem natural e gradativa a partir do capítulo 1. Ele começa por um projeto relativamente longo (10 páginas), sem que o aluno tenha ainda as explicações iniciais do ponto de vista de programação, e então começa a ensinar o que está por trás de tudo que apresentou no início, se estendendo pelos capítulos seguintes e adentrando C# em suaves parcelas.
- Por isso, alguns assuntos estão agrupados, outros não, pois eles são explicados a medida que os projetos passam por eles.
- A linguagem C# não está separada no livro, mas apresentada de forma conjunta com Visual Studio e .NET. Apesar disso, ela está bem sinalizada nos trechos que aparece.
- O primeiro item possui duas consequências. A primeira é que, se você é muito iniciante, pode desanimar-se ao final do capítulo 1 por não ter entendido quase nada e interromper a leitura. Você queria aprender C#, mas acabou vendo um monte de coisas juntas. Não desista! Pule para o último item desta lista para se motivar.
- Se você gosta de livros mais tradicionais, com boas explicações antes de práticas, com os assuntos agrupados, facilitando assim consultas futuras, esse livro pode lhe aborrecer.
- Para quem leu o livro até o capítulo 8, que dá quase metade do livro, pode reler o começo para assimilar o projeto do capítulo 1 de forma muito melhor. Vale a pena!
Foco inicial no IDE Visual Studio 2017
Um dos pontos centrais do livro é a linguagem C# que, por si só, não faz nada sozinha. Ela atua junto com o IDE Visual Studio, que é o ambiente que produz novos softwares, e com o framework .NET, que representa recursos prontos para lidar com muitas funcionalidades requisitadas no mundo do desenvolvimento. Assim, no início do primeiro capítulo, são destacadas diversas vantagens em usar o IDE Visual Studio, mas sempre com a ressalva que é você, programador, que está no comando. Como alguns exemplos das vantagens apresentadas, é dito que o IDE Visual Studio:
- É um programa que facilita a edição do seu código;
- É capaz de gerar código repetitivo, porém necessário, automaticamente para você;
- Permite desenvolver a interface do projeto de maneira fácil;
- Ajuda a gerenciar os arquivos de projetos;
- Fornecer recursos pré-prontos para acelerar o desenvolvimento;
- Publica seus projetos, isto é, cria uma instalação do software desenvolvido.
Assim, o livro, aos poucos, insere muitos conhecimentos segmentados, ora do IDE Visual Studio, ora da linguagem C# e ora do framework .NET, mas de forma transparente, avisando ao leitor quando um determinado conhecimento é de um ou do outro.
Contras
O ponto 5 acima é demonstrado logo no capítulo 1, com a criação de um software integrado com banco de dados. Acredito que isso foi feito por 2 motivos:
- Mostrar como um software com uma funcionalidade muito requisitada – cadastro em banco de dados – pode ser feito em poucas páginas, atestando o poder do combo Visual Studio, C# e .NET.
- Motivar o leitor a reproduzir o projeto e rapidamente se sentir produtivo, mesmo sem entender exatamente tudo o que fez.
Não simpatizei com essa introdução. Para quem é iniciante, imagino que ficou confuso começar a aprender os recursos mais avançados antes dos básicos, mas reconheço que muitas vezes, o que motiva mesmo, é apresentar o produto final para o que o aluno tenha o interesse em aprender como chegar naquele resultado adaptado para seu contexto.
Portanto, o primeiro contra do livro é esse começo acelerado, em que o leitor é obrigado a assimilar muita coisa ao mesmo tempo.
O segundo contra vai para a didática de explicar parte da teoria sob demanda e não concentrar a sintaxe de C#. Vejam que agora, mesmo após eu ler o livro todo, tenho dificuldade de achar onde ele explica sobre alguns temas pela primeira vez. Por exemplo, a estrutura de seleção if é explicada no começo e a estrutura switch no meio para o final.
Prós
Assim como acontece em outras áreas e sub-áreas de conhecimento, é impossível explicar plenamente uma sem tocar em outra. Meu professor de literatura, Nailor Jr., costumava falar que o estudo das disciplinas de História e Literatura tinham que ocorrer em conjunto, pois uma é fortemente dependente da outra.
Em desenvolvimento de software, apesar de toda parte técnica ampla, pesada e necessária, não se pode perder de vista conhecimentos mais conceituais da área de Engenharia de Software. Afinal, o objetivo do desenvolvimento é gerar um novo software, com qualidade e dentro do prazo. Por isso, antes de sair codificando um projeto, é preciso pensar nas necessidades dos usuários e combiná-las com técnicas e conhecimentos de Engenharia de Software. O livro faz isso em vários trechos, mostrando que muitas vezes o problema deve ser resolvido conceitualmente primeiro, pensando em todas as regras e exceções, para depois codificar as regras. Em outras partes, o livro introduz diagramas de classe para representar os dados do projeto.
Essas dicas de engenharia representam um ponto positivo do livro e agregam excelentes conhecimentos.
Projetos e Exemplos do livro
Para finalizar, coloquei aqui uma lista com os exemplos mais significativos do livro:
- Empresa de papel Vila Objeto – Capítulo 1 – Projeto com cadastro visto de forma acelerada
- Sistema de Navegação de GPS do Mike – Capítulo 2 – Somente protótipo.
- Laboratório de Corridas – Simulador/Game – Capítulo 4
- Eventos de Katkleen – Precificador de Eventos – Capítulo 5 e 6
- Simulador de Abelas – Sistema de Controle – Capítulos 6 e 7
- A Missão – Game – Capítulo 8
- Programa de desculpas de Brian – Projeto com arquivos – Capítulo 9 e 10
- Simulador de Baseball – Capítulo 11