Coisas que eu gostaria de saber como um estudante de ciência da computação

Eu diria que a maioria dos estudantes de Ciência da Computação não sabe no que precisa prestar atenção. Afinal, há milhões de ideias competindo por sua atenção e todas parecem igualmente importantes. Mas não são.

Quando eu penso em meus primeiros anos como um desenvolvedor profissional, muitas vezes eu queria saber certas coisas mais cedo do que soube. Eu gostaria que alguém tivesse me dito o que era importante e em que eu precisava prestar atenção. Acho que se eu tivesse tido acesso a isso, provavelmente teria ignorado o conselho (porque é isso que jovens idiotas sabichões fazem), mas queria ter tido a oportunidade mesmo assim.

Enfim, aqui estão alguns dos pensamentos que eu gostaria de compartilhar com desenvolvedores em formação:

Tenha medo da obsolescência

Aqui está uma super generalização: aprender tecnologia em um ambiente universitário pode lhe dar uma falsa sensação de permanência.

Tecnologia e mudança caminham juntos como arroz e feijão. Quando me formei na faculdade, o cenário da tecnologia era um pouco diferente do que é hoje. Java era uma piada, JavaScript era uma piada maior ainda, Ruby era usado apenas por um alguns japoneses, e a plataforma. NET não existia.

E não foram apenas as linguagens ou as plataformas que mudaram. Problemas tecnológicos mudaram também. Naquela época, poucos estavam preocupados com "Big Data" e "escalabilidade massiva". "Mobile" significava pager e "Cloud" significava uma coisa grande e fofa no céu.

Em outras palavras, eu tive que aprender um monte de coisas novas depois de me formar e você terá que fazer isso também. Se não fizer, você estará cometendo suicídio profissional. Porque simplesmente não importa o quão legal uma tecnologia é hoje, ela não vai durar para sempre.

Escreva código sustentável

Aqui está outra generalização: pessoas no meio acadêmico não precisam viver com o código que eles escrevem.

Isso foi, certamente, verdadeiro para a maioria dos meus professores. Lembro-me de um caso em particular. Um dia na sala de aula, um professor escreveu um muito longo e complicado for loop na lousa. O loop era peculiar, pois não possuía um corpo. Tudo o que tinha era a variável do contador, a condição de iteração, e o limite.

Após ter feito com que olhássemos para ele por um tempo, ele alegremente explicou que esse loop reverteu uma lista linkada. Isso mesmo, toda a lógica necessária para atravessar e inverter uma lista linkada foi habilmente incorporada na condição de loop.

Desnecessário dizer que esse código era tão compreensível como era depurável: nenhum pouco. No entanto, nosso professor não foi minimamente incomodado por qualquer uma dessas realidades. Pelo contrário, ele estava orgulhoso de sua esperteza.

Para piorar as coisas, esse episódio teve um impacto muito negativo sobre o meu estilo de codificação, embora não tenha percebido isso na época. Fiquei tentando escrever código "inteligente" (não importa o quão obtuso), porque era o que eu julgava ser importante.

Quando você não precisa viver com o código que você escreve, torná-lo sustentável não é uma grande preocupação. Por outro lado, como um engenheiro, tudo o que você faz é corrigir e melhorar o mesmo código base. Portanto, a manutenção importa muito mais do que qualquer outra coisa: habilidade, desempenho etc.

iMasters

Postar um comentário