Como aprender Android (ou qualquer coisa) de verdade

Padrão

Essa semana eu estava conversando com o João Gouveia e o Halyson Gonçalves, dois ótimos desenvolvedores Android que trabalham conosco aqui na Concrete Solutions, sobre um problema que já me incomodava há algum tempo, mas que estava hibernando, só esperando a faísca de uma boa conversa para acordar:

Será que os desenvolvedores não estão se apoiando demais em bibliotecas e frameworks? Será que estamos virando apenas bons usuários de bibliotecas?

Essa pergunta virou uma pulga que ficou ali atrás da orelha desde então.

Comecei a brincar com o Android no final de 2010. Até então, minha experiência tendia muito mais para C++ do que para Java propriamente dito. Essa diferença de conhecimento me fez estudar muito mais a fundo a própria linguagem Java que, naquela época, fazia Android brilhar aos olhos por não ter as limitações que o JavaME, por exemplo, impunha. Mas vamos deixar de lado essa história por enquanto.

O que tenho visto em muitos desenvolvedores, principalmente naqueles que começaram a programar para Android nos últimos dois anos, é que eles não sabem ao certo como as coisas funcionam no Android. Muitos deles se agarraram às facilidades de uma biblioteca X ou Y, e sequer sabem o que acontece por baixo dos panos (ou under the hood, que funciona muito melhor para essa analogia).

Como funciona o ciclo de vida de uma Activity? Como você controla o estado dos seus campos em uma mudança de configuração, por exemplo? “Ah, eu só anoto a variável com a biblioteca Z”. Como você faz uma requisição a um servidor? “Ah, o Retrofit resolve pra mim”. Mas e a mudança de contexto para publicar o resultado na thread de UI? “Ah, não sei, o Callback já faz isso pra mim”.

Uma dica que dou pra vocês que estão começando (ou nem tão começando assim) é: façam um projeto sem biblioteca alguma. Ok, a Support Library & cia. vale, mas entendam como o Android funciona. Como consumir um REST sem o Retrofit? Como fazer parse de um JSON sem o GSON ou Jackson? Você sabe o que é um Content Provider e como criar um? Testem, estudem, experimentem. Não tenho dúvidas de que aquela nuvem cinza que aparece na sua cabeça quando algum framework mágico surge vai começar a dissipar.

Android-LearningConheçam o terreno onde estão pisando! Não importa o que estejam aprendendo, evitem os atalhos. Não que eles sejam ruins, mas, principalmente no momento de aprendizado, precisamos de bases sólidas, de conhecimento sobre o básico. Conhecimento esse que será sua especialidade futuramente. “Por fora bela viola, por dentro pão bolorento”.

Concordam, discordam ou têm alguma opinião sobre o assunto? Aproveite os campos abaixo!

Originalmente publicado no Blog da Concrete Solutions.

  • Excelente Rafael!
    Posso dizer que passei por cenário parecido ao que você mencionou..

    Iniciei com Android utilizando Android Annotations, ORMLite entre outras facilidades.. e viciei em tal..

    Em um projeto pessoal, alguns meses depois desse primeiro projeto, fiz o que você recomendou. Utilizei Support Library & cia!
    Aprendizado pra toda vida!

    Parabéns pelo post 😉

  • Matthew

    Hi,estou iniciando a desenvolver para Android e preciso muito de suport