Os antigos construtores romanos eram como bons programadores.
Outro dia estava vendo televisão e assisti a um programa que contava a história da construção do Coliseu. Pode parecer uma certa loucura mas na mesma hora acabei trançando um paralelo com a forma que estamos concebendo sistemas atualmente. Mal comparando, nos dias de hoje, a construção de prédios é um processo mecânico e repetitivo onde, para ser feito, não exige um pedreiro que seja um verdadeiro artista: basta que ele faça seu trabalho e sigas as regras definidas pelos arquitetos e engenheiros. Essa forma podemos dizer que se assemelha muito a diversos processos de produção de softwares que temos por aí onde, um grupo selecto de pensadores definem “TUDO” e como serão todos os aspectos antes; já os programadores tem a única missão de criar código que faça exatamente que essa elite definiu sem grande rompantes de criatividade e dentro das regras pré estabelecidas pelos engenheiros responsáveis pelo cálculo estrutural do aplicativo.
Na época dos romanos, os pedreiros eram artistas e mestres em seu ofício. Construir algo fugia de formulas e tarefas repetitivas. Era um trabalho que exigia inspiração e muito talento. Não era qualquer um que era capaz de pegar um bloco de mármore e transformá-lo numa linda coluna jônica adornada. Existiam aprendizes e quase mestres, todos menos preparados, que faziam um trabalho bruto inicial, mas a medida que se aproximava do produto final, eram somente os grandes mestres que punham as mãos na massa. Como que numa inversão da linha do tempo, essa forma de fazer as coisa se assemelha ao jeito que temos buscado implementar as coisas em TI.
Voltando a questão do Coliseu, o narrador explicava alguns detalhes da construção e seus porque. Uma coisa que me chamou a atenção foi quando ele explicou a questão dos arcos externo: são todos iguais. Isso aconteceu pois na época não tinham tantos mestres pedreiros disponíveis e este eram muito caros. Logo se optou por padronizar diversas formas no momento como uma forma de permitir que alguém se grandes preparos fosse capaz de fazer aquilo. Se pegarmos a ideia e extrapolarmos que isso acontece muito no nosso meio. Existem diversas empresas por aí que não querem pagar pelos melhores que optam por padrões e formulas de enquadramento para permitir que um profissional menos qualificado seja capaz de realizar o trabalho. Claro que isso, assim como no Coliseu, se mostra em muito dos caso um OVERDESIGN.
Embora isso até funcione dentro de algum contexto, o a exigência dos clientes e usuários está aumentando. Hoje todos buscam por coisas que sejam fáceis de usar, bem feitas e robustas do ponto de vista das falhas. Ninguém mais aceita sistemas que falhem; ninguém mais aceita sistemas que seja mal feitos; nenhum cliente tolera ver seu produto – no qual pagaram bastante caro – cheio de bugs e gambiarras em produção; etc. Conceber um sistemas não é o mesmo que fazer uma parede: é necessário uma certa inspiração para que seja feita uma boa implementação, numa forma clara, testável, entre outros aspectos. Quem nunca ficou apavorada ao abrir classes de 10 mil linhas? Quem nunca ficou horrorizado ao ver métodos com um amontoado de if aninhados? Quantas vezes você não xingou a mãe de alguém que deixou aquele código porco que não dá para entender onde ele começa e termina?
A frase frequente do mercado é que este tipo de profissional, altamente qualificado (vulgo ninja) é caro. Que nem sempre os orçamentos podem comportar muito desses caras. Embora isso, de certa forma, seja verdade, diversos estudos (vide o livro Mítico Homem mês) mostram que este profissionais também são mais produtivos, com diferenças de até 10 vezes. Outra pergunta que deve ser feita é quanto a qualidade daquilo que está sendo entregue vale para o contratante ou para o usuário final. Outra coisa, em minha humilde opinião, não é preciso que todos do time sejam grandes conhecedores e senior . Podemos ter diversos ali que estão aprendendo e nessa caminhada podem se ocupar de realizar trabalhos menos vitais e tudo sobre a tutela dos mais experientes. Além disso, acredito que o processo de realizar um sistemas esteja mais para uma produção artística do que para a construção de uma casa. Não para ter um monte de gente trabalhando numa escultura da mesma forma que temos um amontoado de gente fazendo a casa.
Muitos poderiam dizer que existem projetos e projetos, outros mesmos diriam: “Esse regra que afirmam por aí de usar times pequenos (entre 2 a 6 pessoas) não se aplica quando se fala de grandes sistemas como um sistema operacional. ” Só lembro que o Linux, sistema que está na grande maioria dos servidores atuais, foi inicialmente concebido por uma única pessoa. Sei que isso pode soar como uma exceção, entretanto, a cada dia que passa vejo o quanto isso está certo. Mas esse assunto de times pequenos quero trazer em outro momento. Fiquem atentos aos próximos posts.
O ser humano por mais desbravador e aventureiro que seja seu espírito ( estamos tentando ir para todo lado, entender tudo, etc) sempre vive um desconforto frente a possibilidade de experimentar o novo. Que criança nunca “torceu o nariz” quando a mãe mandava provar uma comida que não tinha visto antes; que pessoa num recuou frente a um possibilidade de ir em direção a uma oportunidade nova; quem nunca sentiu insegurança quando se formou e agora terá de enfrentar um mundo novo… O problema é quando esse desconforto virá medo paralisante e inconscientemente nos tornamos agressivos com relação aos agentes da mudança.
Quando o medo (receio) frente a mudança se torna agressividade – agressividade aqui diz respeito ao bloqueio e criticas mordazes - isso acaba virando um jogo perigoso e, em minha opinião, NUNCA é (ou será) bom para nenhuma empresa. Em muitos casos, as coisa ficam num clima de guerra onde existe o pessoal que defende a mudança “com unhas e dentes” e outros que contrariam as mudanças “com unhas e dentes” . Sei que existem milhares de técnicas, dinâmicas, e outras coisas, que podem miticar esse clima, mas um vez esse ambiente criado sempre existirá um desgaste que poderia ser evitado se as pessoas agissem como humanos e fossem mais desbravadoras.