Sergio Vilar

writes about dev stuff

Porque você deveria terminar sua faculdade

29 Oct 2015

Steve Jobs não terminou sua faculdade, Bill Gates e Mark Zuckerberg também não. Ao invés de estarem perdendo tempo na sala de aula, estavam investindo seu tempo em algo muito mais valioso: mudar o mundo.

Você usa isso como justificativa, mas no fundo sabe que na real não tem nada de parecido com esses caras.

Estrutura de dados é besteira, qualquer um consegue implementar esses algoritmos, certo? E java? Ah, você tem asco de java. E também não gosta de um ou outro professor. E tudo isso se junta num único coro de “estou perdendo tempo aqui”.

Entrar no mercado de trabalho é irresistível. Dinheiro, frameworks, eventos, palestras, mil coisas pra aprender e pessoas pra conhecer. Porquê estou perdendo meu tempo aqui?

O problema do privilégio

Eu demorei muito pra conseguir entrar numa faculdade. Não por causa de vestibular, eu nunca conseguiria estudar numa federal mesmo. Como saí de casa muito cedo, tinha de trabalhar pra pagar as contas e por isso não tinha como estudar durante o dia numa federal. O que me restava era entrar numa particular, que funcionava à noite, mas que pesava no orçmento. Saí de duas faculdades por não conseguir pagar.

Não cheguei a ter a melhor das oportunidades quanto a educação, o que é uma coisa bem normal no mercado de TI. A maioria dos profissionais de TI começam a trabalhar antes mesmo de ter uma graduação. É muito difícil trabalhar o dia todo e ainda assistir aula a noite, puts. Realmente é muito difícil.

O problema é que quem tem privilégios muitas vezes não consegue reconhecer que os tem, como por exemplo, alguém que pode se dar o luxo de não pagar por sua educação e jogar uma oportunidade como essa fora, tendo milhares de pessoas querendo estar nessa posição, simplesmente por estar “perdendo tempo”.

O problema da escolha

Ao entrar no mercado de trabalho nos deparamos com uma série de novidades, dentre elas a mais notável sãos os frameworks. Muitos desenvolvedores escolhem e usam um frameworks durante praticamente toda sua carreira.

Existe um motivo pra isso, além claro da zona de conforto. Durante o dia-a-dia os frameworks abstraem vários conceitos de desenvolvimento de software para tornar o desenvolvimento mais prático, mais ágil. Trabalhando com feijão-com-arroz você pode ter a sorte de nunca lidar com problemas mais complexos e manter sua relação feliz e duradoura com seu framework.

Alguns desenvolvedores se sentem tão ligados a seus frameworks que têm um enorme peso na consciência de traí-lo com outro framework, ou até outra linguagem, mesmo que para aquele projeto outra ferramenta seja mais adequada.

Não é por outro motivo que vemos e-commerces em WordPress ou blogs em Rails.

Não tenho nada contra frameworks, o problema aparece quando deixamos os conceitos de desenvolvimento de software, padrões de projeto e tudo mais nas mãos de outro e ignoramos completamente esses conceitos.

O que acontece é que quando você tiver de resolver um problema mais complexo, ou gastará muito tempo, ou não fará da melhor forma, ou terá de pedir ajuda. Mas só por causa de sua negligência.

Os ossos do ofício

Costumo dividir o conhecimento de um desenvolvedor de software em duas partes: a base e a especialidade.

A base é o conhecimento comum entre todos os programadores: algoritmos, padrões de projeto, orientação a objetos, etc. As especialidades são os ramos que escolhemos seguir, por exemplo, um framework ou uma linguagem adicional não fazem parte de nossa educação básica, mas trabalhamos efetivamente naquilo que nos tornamos especialistas.

O problema de não cursar uma faculdade é sim, ser especialista em diversos assuntos (angularjs, laravel, WordPress, Rails, etc) mas ser deficiente no conhecimento básico, que é o que nos permite aprender e trabalhar com outras linguaguens e ferramentas com uma curva de aprendizado mínima, já que conhecemos todos os conceitos e apenas precisamos associá-los.

Programadores que têm conhecimento raso nas bases e conceitos de desenvolvimento de software tendem a se tornarem reféns de frameworks e ferramentas. Por medo, preguiça ou conforto. Aprender tudo de novo é impensável, se tornam avessos a mudanças mesmo quando pra melhor.

Buguinho Developer

Onde o rio desagua?

Empresas não só estrangeiras têm passado a procurar cada vez mais desenvolvedores multidiciplinares, facilmente adaptáveis. É preciso ser flexível para acompanhar o ritmo das startups, trabalhar desde a análise de requisitos até com DevOps pra entregar o produto.

A base também é importante para que haja uma comunicação fluída entre desenvolvedores de áreas diferentes, assim também como com pessoas resposáveis por DevOps e Análise de Requisitos.

Agora imagine a linha de aprendizado em cada linguagem/framework/ferramenta nova pra um desenvolvedor, que precisa ser multidisciplinar, sem a base.

O problema é esse, muitas vezes o caminho mais curto é mais tentador, mas a base é fundamental.