5 coisas que aprendi com programação

Com o final da minha faculdade resolvi criar uma série de textos relativos a educação e TI. Trabalho com informática a 10 anos, e como fiz a faculdade tardiamente acho que consegui ver a graduação com outros olhos, e não só ela, áreas de TI que eram totalmente uma incognita para mim ganharam novos ares, novas abordagens, uma delas programação.
Não é que passei a gostar de programar, só respeito mais e percebi que me engrandeceu profissionalmente, consigo ver a aplicação da minha área de maneira mais ampla, dimensionando melhor e ajudando mais no processo no geral.

Assim listo os 5 pontos mais relevantes:

1 – Esse sistema precisa de tudo isso de infraestrutura?
Muitas vezes pela dificuldade de saber o que o cliente precisa o programador enche seu código de coisas que não usará. Quando um sistema é standalone o problema fica menos perceptivel, mas como tudo é feito pra rede isso acarreta em tráfego desnecessário. Sabendo um pouco de programação (e banco de dados) algumas bizarrices podem ser evitadas. Economia de banda, afinal provavelmente não será a única a utilizar a infra.

2 – Não deixar programadores colocarem problemas no seu colo:
Com as coisas teoricamente funcionando não é rara as vezes que problemas são associados a infra, não que não existam problemas de infra, mas a grande maioria dos problemas quando existe uma infra enxuta, no padrão, são dos sistemas. Sabendo o básico se tem mais argumentos e pode-se ajudar os programadores a acharem os problemas.

3 – Integração entre sistemas e equipamentos
Muitas vezes é necessário ter aplicações para gerenciar equipamentos, digo servidores radius, appliances, wireless switchs, etc. e sabendo programar pode-se saber pedir esse tipo de sistema e assim ter algo mais eficaz.

4 – Automatizar pequenas coisas
Rotinas de backup simples, coleta de informações em roteadores, as possibilidades são muitas. Aí linguagens script como perl e bash se mostram eficazes e nem precisam de um conhecimento aprofundado de programação.

5 – Projetar sistemas:
Não necessáriamente programar, mas desenhar a arquitetura, casos de uso, a infra, com uma visão mais abrangente.

Desabafo: Problemas no ensino da Informática.

Apesar de ser jovem no ramo, durante os últimos dois anos de trabalho, tenho percebido uma interessante tendência nos jovens programadores: A aversão à teoria, e mais fundamentalmente, à matemática.
Hoje estava discutindo um algoritmo com colegas de trabalho e um deles propôs uma solução da qual discordei: “Vai ficar lento!”
No qual ele replicou: “Nãaaoooo eu ACHO que fica rápido”.

A palavra “Achar” é complicado quando se trata de algoritmos num sistema de missão crítica, mesmo que a tarefa em questão não fosse tão importante. Eu propus calcularmos a complexidade do algoritmo em questão, a qual ele fez cara de nojo e aversão e disse “Ahhh. Nãaoo..é um Core 2 Duo, deve rodar”.

Pare tudo. Por que raios se fica 5 anos em uma faculdade de engenharia, moendo o cérebro em aulas de cálculo, para nunca utilizar nada do que aprendeu, e ficar dependendo de “achismos” no ambiente de trabalho  ?

O problema em minha opinião é o método utilizado paro o ensino, em todas as faculdades do brasil.  Me parece que a teoria de computação não é aliada à prática de desenvolvimento de sistemas. É dado muita ênfase em programinhas simples, e não em projetos com começo-meio-fim, aonde o aluno deve preocupar-se com questões arquiteturais que impactam no funcionamento do projeto. Ao invés disso, temos uma série de “exerciciozinhos”  que resolvem problemas específicos (“implemente o algoritmo X”).

Confesso. Não sou um gênio. Alias, ao longo dos anos, fui muito desmotivado a aprender matemática e   computação teórica em geral, por maus professores e faculdades desmotivantes, porém através de livros bem selecionados estou tendando remediar os furos na minha educação. (O post sobre livros fica para mais tarde).

E vocês, quais são suas experiencias com a educação de sistemas ? O que estão fazendo para tentar remediar a situação ?