A tal da faculdade e o desenvolvimento de software

diploma

Com os olhos de hoje, visito os anos que passei na faculdade e as matérias que aprendi. Com isso me pergunto: será que a faculdade valeu mesmo a pena?

TLDR: Sim, a faculdade valeu a pena. Recomendo a qualquer iniciante em computação a ingressar e passar um bom tempo em uma. Precisa terminar? Precisa do diploma? Ajuda, mas em geral não precisa.

Dia 4 de Fevereiro de 2016 recebi um e-mail da secretaria da FEI para retirar um diploma até o dia 21 de Março. Eu me formei em 2011 e até aquele momento não tinha me preocupado em buscar o meu diploma de Ciências da Computação, ninguém tinha exigido antes e por isso não me preocupava em tê-lo em mãos. Logo, totalmente normal um ser humano graduado deixar o diploma para lá, certo? :P Essa situação é parecida com viajar para um lugar incrível e não tirar nenhuma foto; as experiências e memórias estão vivas dentro de você, mas não existe nada para provar que foi mesmo para lá. Mas provar… Provar para quem?!

O engraçado é que aquele e-mail para buscar o diploma não deixou claro o que iria acontecer se eu não fosse buscar. Será que vão botar fogo? Decidi respeitar a data e ir atrás, apesar de nunca ter precisado usá-lo. Afinal de contas o diploma é meu. Se for para alguém joga-lo em uma fornalha, eu gostaria de ser o único a ter este prazer.

Ao chegar na faculdade para buscar o diploma várias lembranças surgiram. Desde o primeiro dia que pisei ali até o dia em que fui embora. Ainda naquela semana, surgiram várias conversas no trabalho sobre o que aprendemos na faculdade e a distância do mundo profissional. Recentemente no twitter surgiu uma thread parecida. Aquelas discussões de sempre: vale a pena fazer faculdade? Precisa? Vou tentar responder isso retrocedendo no tempo, vou lembrar as principais matérias e mensagens que impactam minha vida até hoje.

Ingressando na faculdade

Antes de entrar na faculdade eu tinha feito Técnico em Informática na ETEC de Diadema, tinha trabalhado ensinando o pacote Office da Microsoft e um pouco de desenvolvimento web com Dreamweaver, Flash e Fireworks. Meu ingresso na faculdade foi em 2008 com uma bolsa de 100% graças às minhas boas notas no ENEM e ao programa PROUNI do governo Brasileiro. \o/ Ainda me lembro da enorme auto-cobrança que sentia. Se eu não atingisse uma boa nota em alguma matéria eu perderia a bolsa e perdê-la não era uma opção. Eu não tinha condições de pagar uma mensalidade, então perder a bolsa seria igual ter que abandonar a faculdade. Me dediquei muito, principalmente nos primeiros anos. Sem a ajuda da minha avó, que agilizava os corres domésticos, seria impossível ter chegado ao fim.

Ter entrado na faculdade com um bom nome abriram as portas para o meu primeiro emprego em programação. Esse foi o primeiro benefício de ter ingressado em uma faculdade: para uma pessoa sem experiência em desenvolvimento, uma boa faculdade ajuda abrir portas. Era um trabalho informal, que na época chamavam de “cooperado”. Trabalhava muito, ganhava pouco, mas era o meu primeiro passo. Já tinha consciência que era muito importante ganhar experiência. Trabalhei e aprendi várias coisas sobre desenvolvimento de software: desenvolvimento do processo cascata, CSS, Tableless, PHP, Coldfusion, .Net, SQL e organizar o seu código em camadas (data layer, business layer e view layer).

O primeiro ano

Voltando à faculdade, no primeiro ano de ciências da computação, a maioria das matérias envolvem bastante matemática. Essas matérias pareciam fáceis para a maioria dos alunos, mas para mim não eram. Aquele era o meu primeiro contato com equações gigantes, logaritmos, matrizes, física avançada, derivadas e integrais, por conta disso, aquele foi um dos anos mais difíceis para mim. Havia também aulas de programação em C++, as aulas ensinavam variáveis, controles de fluxo e estruturas de dados. Essa parte de programação eu tirava de letra já que não era o meu primeiro contato, enquanto outros alunos brigavam com o compilador no laboratório. Eu nem precisei estudar programação fora das aulas, mas ao mesmo tempo eu estava levando listas e mais listas de cálculo para praticar em casa nos finais de semana.

A matemática da faculdade tinha mais letras do que números, mas era muito difícil encaixar essas contas todas com o que se faz no dia-a-dia, por isso não tive muito proveito. Parando para pensar um pouco, essas matemáticas a gente trabalhava muito com abstrações e simplificações. Uma equação gigantesca poderia ser simplificada para uma equação y = 2x. De certa forma, não é isso o que fazemos quando estamos refatorando um código? Não pegamos aquele código cheio de variáveis, classes, métodos, tentamos simplificar até chegar algo mais fácil de entender?

Enquanto isso, nas aulas de programação, aprendemos a construir vetores, lista ligadas, hashes e árvores binária, entre outras estruturas de dados. O principal conceito disso tudo era: dependendo da maneira, você poderia deixar a leitura ou a gravação dos seus dados mais simples ou complexa. É tudo uma questão de avaliar vantagens e desvantagens para seu problema, não tem bala de prata. Aprender as estruturas de dados mais comuns ajuda a não reinventar a roda, mas quem disse que eu lembro de todas elas? Não lembro, mas eu sei que existem. Sei onde procurar quando precisar.

O segundo ano

O segundo ano da faculdade foi bem parecido com o primeiro. Várias matérias de matemática e física com um acréscimo de aulas de computação. Novamente tive bastante facilidade com computação enquanto sofria nas matérias de matemática, com exceção de elétrica e sistemas digitais. Na adolescência eu tinha feito um curso de 2 anos de eletricista no SENAI, isso me ajudou bastante na faculdade.

Exercitamos muito representações e operações binárias com AND, OR e XOR. Aprendemos alguns paradigmas de programação, destaque para o Prolog com seu paradigma lógico. Aprendemos vários algoritmos, principalmente os de ordenação e expressar sua performance com a notação Big O. Praticamos muito, mas muito mesmo, orientação a objetos(OO) com C++. Não exploramos boas práticas, SOLID nem chegou a ser mencionado. A parte não muito boa foi que gastamos muito tempo com a sintaxe C++, que convenhamos, para quem está aprendendo não é nem um pouco trivial. Além disso, praticamos estrutura de dados de listas ligadas até árvores rubro-negras.

O terceiro ano

No terceiro ano o equilíbrio entre aulas de computação e matemática começaram a mudar. Agora, a maioria das aulas eram de computação. Arquitetura de computadores, redes, sistemas operacionais, engenharia de software e banco de dados. Entre as de matemática, gostei muito das aulas de probabilidade e estatística, foi a matéria de matemática que mais gostei de todo meu período na faculdade.

As aulas de computação tinham embasamentos teóricos e matemáticos, por exemplo, nas aulas de banco de dados estudamos bastante a teoria de conjuntos e até tivemos umas integrais para calcular. Boa parte das aulas de engenharia de software foram focadas em diagramas UML, teve até teve algumas aulas de ágil, mas foi bastante fraca.

O quarto ano

No último ano, que foi um dos mais difíceis por causa do temido TCC (Trabalho de Conclusão de Curso), não foi fácil distribuir o trabalho de pesquisa/construção com os estudo das outras matérias. Elas não deram folga. Era inteligência artificial, robótica, computação gráfica, usabilidade, compiladores, sistemas distribuídos e segurança. Para complementar, havia algumas matérias de gestão e empreendedorismo.

O TCC era dividido em duas partes. O primeiro semestre era para pesquisar, definir e entender o problema e planejar uma solução. No segundo semestre era a construção do projeto e finalizar a dissertação com a solução e resultados alcançados. Por mais incrível que pareça, a parte mais difícil do TCC foi o trabalho em equipe. Aquele estereótipo das pessoinhas de computação que não se dá bem com pessoas. Foram brigas, ego e dedos apontados. Olho pra trás e percebo como nós perdemos energia com essas brigas bobas.

Nas matérias de computação, destaque para inteligência artificial, foi muito legal ver probabilidade e estatística aplicadas à computação. Foi muito interessante ver o que era possível fazer com um grande volume dado, nessa matéria mexemos com o cachorro robô da Sony e com LEGO Mindstorm. Foi muito legal.

Uma das matérias que eu estava super entusiasmado para aprender era computação gráfica e jogos digitais. Saí de computação gráfica traumatizado, era tanta multiplicação de matrizes para fazer qualquer coisa mexer na tela que fiquei #xatiado. Me lembro que o professor falava e falava e nada entrava na minha cabeça. Foi difícil, quase que eu repeti nesta matéria.

No fim, o TCC foi entregue com sucesso, até ganhou um prêmio de melhor ideia. Porém, a ideia foi do nosso orientador Filev, entregamos o troféu a ele, devidamente merecido. Consegui concluir a faculdade sem nenhuma dependência em nenhum semestre, entretanto, eu não fui na minha formatura. Usei o dinheiro da festa para comprar uma moto e melhorar minha qualidade de vida nos trajetos trabalho, faculdade e casa. Não me arrependo, minha vida melhorou muito podendo fazer os trajetos mais rápidos sem depender de ônibus.

Terminando a faculdade

Foram 4 anos de muito esforço, aulas de segunda a sábado, pressão e stress. Mesmo assim, esqueci de pegar o diploma por 5 anos. Parece até que não valeu a pena, mas eu digo: valeu e muito. O curso que eu fiz foi muito bom, claro que tinha várias coisas que poderiam ter sido melhores, nenhum curso é perfeito. Entretanto, qual curso eu poderia ter contato com tantas disciplinas de computação? Quais são os cursos que dão essa profundidade teórica? Qual curso vai fazer você ter a disciplina de estudar essas matérias diariamente?

Aprender framework de frontend aqui, aquela orquestração de containers lá ou aquela linguagem nova acolá é bem legal e bastante útil na prática. Porém, na maioria das vezes que você aprende uma tecnologia, o aprendizado pode ficar muitas vezes ligado apenas naquela tecnologia específica, sem explorar alternativas e suas bases. Quando aquela tecnologia cair em desuso pode acabar deixando a pessoa sem norte. Por isso, o curso de ciências da computação existe.

Engraçado é que, se eu fizesse o mesmo curso com a minha experiência de hoje, o curso seria totalmente diferente. Eu creio que iria aproveitar muito mais. Poderia ter um curso de ciências da computação para formados em ciências da computação, com uma carga horária menor, sem provas, só prazer de aprender e discutir as matérias, um ritmo para pessoas mais velhas (cof cof, os 30 anos chegando).

O curso de ciências da computação vale a pena, principalmente se você está no começo da carreira e precisa que algumas portas sejam abertas. Pode ser até útil para pessoas que possuem experiência de mercado e possuem uma curiosidade nas bases teóricas dentro da tecnologia que usam. Mas claro, não se faz necessário realizar ou terminar esse curso para ter sucesso na carreira de desenvolvimento de software. Admiro e me espelho em muita gente que não fez ou terminou faculdade, são pessoas que possuem um sucesso gigante, são grande referências e excelentes profissionais. Apesar disso, essas pessoas não são a maioria e se quiser aumentar suas chances de sucessos, cursar uma faculdade na área ajuda.