Estágios de Programação

Programando profissionalmente para uma pequena empresa web me perimtiu visualizar os mais adversos estágios de programação que um poderia imaginar. Os estágios iniciais foram-me apenas relatados, como se fossem estórias de terror de tempos imemorávis.

Inicialmente cada programador era responsável por um projeto. Ele recebia o layout do design, cortava-o do jeito que o convinha programar, organizava a base de dados de acordo com sua lógica, sempre sem utilizar chaves estrangeiras uma vez que estas não existiam nas rudimentares versões de mysql utilizadas outr’ora. As ferramentas de gerência da página de internet eram geradas com um script, que era basicamente um copy-pasta de outros projetos. Bugs eram resolvidos com dificuldade, e toda melhoria no sistema gerava uma quantidade enorme de re-trabalhos e bugs causados porque algo foi mudado que não deveria. Este é o estágio “Cada um por si, e o manual nos acuda!

O segundo estágio envolve os primeiros passos de centralização do processo de trabalho. Todos os projetos são reunidos e os banco de dados centralizados em um um único servidor. Ferramentas “padronizadas” e testadas são reutilizadas em novos projetos. A programação, porem, continua caótica. Uma vez que os arquivos são abertos diretos do servidor, se duas pessoas tiverem de trabalhar em um mesmo projeto e tiverem de editar um arquivo centralizado, como o arquivo de CSS do site, haverá conflitos por perca do trabalho do primeiro tão cedo o segundo sobre-escrever o arquivo salvo deste. A aparente organização do servidor defato torna dificil trabalhar em time, fazendo os programadores a se forçarem a trabalhar sozinhos para evitarem as dores de cabeça de ter de compartilhar os recursos do servidor. Este é o estágio “Um servidor para todos governar e na desorganização aprisioná-los

Até o momento não falei em programação orientada a objetos. Esta incrivel opção, introduzida no PHP 3, melhorada no PHP4, divinizada no PHP5, e em processo de trancedencia no PHP6, permite que dados e funções sejam encapsulados de acordo com o contexto destes. $contato_sexo não mais irá receber qualquer valor, mas $contato->setSexo($value) irá tratar o valor de acordo que somente valores válidos sejam retornados com um $contato->getSexo(). Uma vez que as funções do objeto ficam centralizadas num arquivo apenas, é possível organizar o código de modo a re-aproveitar o código em diversos outras funções do site. O programador fica todo bobo com as possibilidades da progarmação orientada à objetos que começa a fazer tudo, por mais ridiculo que seja, utilizando objetos. Este é o estágio “$this->programacao->incrementarEstagio()

Outro estágio é o de separar o código em camadas. Temos uma camada que conecta com o banco de dados, outra camada que trata de processar as requisições do usuário e organizar os dados vindos do servidor, e uma terceira camada que exibe estas informações seguindo um código simples e fácil de compreender em HTML com pouca inclusão de código PHP (pois a camada de processamento dos dados já deixou tudo arrumadinho para esta). Aqui somos defato programadores profissionais, com códigos limpos e de fácil leitura. Separando as camads, é possivel substituir os códigos de uma de modo a atender as necessidades e limitaçõs do servidor. Programamos o site com mysql, mas o servidor utiliza Oracle ? Sem problemas, basta trocar a camada de banco de dados para Oracle. Esta é a fase “Quer programar como?

O próximo passo consiste na sequencia do segundo. A estruturação da base de dados agora deixa de ser função do programador, e passa para as competentes mãos de um analista. Chaves estrangeiras são respeitadas, nomes de variáveis padronizadas, alem de todo um trabalho de indexar as tabelas de modo a agilizar sua consulta. O servidor centralizado deixa de simplsmente armazenar os arquivos, mas passa a controlar estes com ferramentas de controle de versão, como o CVS e o SVN. Vemos a divisão da equipe de desenvolvimento em progamadores de módulos e macacos de programação, onde os primeiros desenvolvem as ferramentas que serão utilizadas em todos os projetos que os segundos irão processar. Este é o estágio “Dividir para programar“.

Antes de dar seqüência, quero deixar claro que não há nenhum preconceito para com os macacos de programação. Estes são parte vital da companhia, uma vez que sem eles para finalizarem projetos baseado nos frutos do trabalho dos programadores de módulos não haveria dinheiro algum entrando na empresa. Um necessita do outro para realizar suas funções.

Muito bem, muito bem. Temos agora um ambiente bem organizado de trabalho. Porém ainda não tratamos do árduo processo de personalizar a dar manutenção ao site do cliente. A vantagem de ter o código quebrado em dezenas de arquivos diferentes é que se for necessário corrigir um, basta substituí-lo sem grandes danos aos demais. Porém, o que ocorre quando uma melhoria num módulo tem de ser aplicada em dezenas, centenas!, de clientes diferentes, cada um com uma personalização diferente para o módulo ? E se o site tiver de ser traduzido para um novo idioma, o que fazer ? Para resolver este dilema passamos a nos utilizar de Markup Languages, como XML e YAML. Organizando o código de modo a buscar nestes arquivos os dados personalizados do cliente, podemos muito bem alterar nossa programação sem temer que pornografia apareça em meio ao site daquele cliente filiado à igreja. Este é o estágio “Admirável Configuração Nova“.

Estes são os estágios perceptiveis da organização do processo de trabalho desta empresa. A cada passo que damos é mais um passo para a maturidade desta. Nossos futuros passos, porém, ainda são muitos, e não temos uma noção concreta de para qual direção eles nos levam.

0 Responses to “Estágios de Programação”



  1. No Comments Yet

Leave a Reply




Categories

RSS The Kennel

Archives