Posts com Tag ‘Especificação’

h1

O valor do programador em tempos de crise

Maio 20, 2009

// Isto não é uma campanha do estilo “Pague bem seu programador”.

Quando alguém que não seja da área de TI pensa em desenvolvimento de sistemas, provavelmente acredita que para que um sistema seja criado precisa somente de um pouco de programação. Porém, alguém que já tenha participado de pelo menos um projeto de médio porte sabe que as coisas não funcionam bem assim. Podemos definir um projeto de sistemas pelas seguintes fases.

  • Definição do problema
  • Especificação dos requisitos
  • Planejamento das próximas fases baseado nos requisitos
  • Arquitetura do Sistema
  • Modelagem em alto nível
  • Modelagem mais detalhada
  • Programação
  • Testes unitários
  • Testes de integração
  • Integração das partes já desenvolvidas
  • Testes baseados nos processos funcionais do negócio
  • Correções e manutenções finais

Essa lista pode variar de acordo com o tamanho e formalidade do projeto. Mas em geral, projetos de desenvolvimento de sistemas passam por essas fases, mesmo que com outros nomes, aglutinadas em menos ou subdivididas em mais. Podem, inclusive, ser repetidas inúmeras vezes.

No entanto, por mais fases que existam, a programação acaba sendo a que demanda mais tempo no desenvolvimento do projeto. Mesmo ao utilizarmos o TDD, metodologia cujos testes representam um tempo considerável do projeto, estes não deixam de ser uma forma de programação. Logo, gerar linhas de código, ao invés de diagramas e modelos, é o que mais demanda tempo.

Ao iniciarmos nossas atividades na área da computação, seja ela no meio universitário ou profissional, é comum ouvirmos algo do tipo: “Programar não dá dinheiro. Análise, modelagem e gerência, sim”, mas associar salário a uma função pode não ser tão simples.

Se pensarmos em “responsabilidade atribuída“, podemos pegar como exemplo um motorista de ônibus. Este possui sob sua responsabilidade cerca de 50 vidas, entretanto não é uma profissão bem remunerada. Podemos pensar também em “nivel de escolaridade“. Mas aí temos muitos médicos que não ganham tão bem e que dependem de um valor/hora bem baixo pago pelos planos de saúde e hospitais. Por último, existe a questão ”importância e contribuição para sociedade“, mas talvez seja melhor nem comentar os salários dos professores no Brasil… Com estes exemplos, podemos concluir que o fato de não ser bem remunerado não determina um bom profissional.

Então, para se ganhar dinheiro não bastar ser bom, ter um bom nível de escolaridade, um cargo de alta responsabilidade e ser diretamente responsável pelo desenvolvimento da sociedade. Tem que ser raro! De preferência um dos únicos. A raridade de um profissional é diretamente proporcional ao seu salário.

E estamos vivendo uma época em que faltam analistas. Mas analistas que metam a mão na massa. Definitivamente, bons programadores são raros de achar.

Um dos ditados mais conhecidos é “tempo é dinheiro”. Não seria em desenvolvimento de sistemas que isso seria diferente. Tanto que nesse ramo a cobrança é feita por hora. E como programação é o que demanda mais tempo do projeto, o cliente paga mais por programação do que por modelos.

Para quem não trabalha diretamente com tecnologia da informação, um sistema é visto da seguinte maneira:

Entrada –> Transformação–> Saída

Não importa a quantas fases são necessárias, a quantidade de camadas usadas, as madrugadas em frente ao computador. Só o que interessa para o cliente é entrada, transformação e saída. E em tempos de crise, todas as áreas estão propensas a cortes, por isso, chega a ser comum ouvir dos próprios clientes e usuários que não é tão necessário pagar por análise, modelagem e testes. Quem trabalha com desenvolvimento de sistemas sabe da necessidade de uma boa análise, modelagem e testes minuciosos. E o objetivo desse post não é discutir sobre a importância desses três ou mais itens.

Mesmo em tempos de crise, mesmo com clientes que não entendam absolutamente nada de sistemas, mesmo que a programação seja a fase mais demorada e cara de um projeto de desenvolvimento de sistemas, esta nunca é vista como desnecessária. Até porque, mesmo que o cliente não entenda nada, sabe que um documento do Word sozinho não irá resolver seu problema. E por mais importante que seja cada fase mencionada no início do post, sempre terá um cliente disposto a não pagar por todas e um fornecedor disposto a não usar todas. Faz parte do mercado.

Isso significa que independente da quantidade de fases no projeto, sempre haverá espaço pra quem faz a coisa acontecer: os programadores.

Acredito que se você puder escolher trabalhar em uma empresa onde não seja necessário bypassar fases importantes por pressão do mercado, esta seja a melhor escolha. Mas se a escolha for outra, tenha a certeza de cobrar pelo risco de passar finais de semana e feriados reprogramando o que não foi devidamente especificado e testado. O importante é que com crise ou sem crise, podemos dizer que o valor do programador está em alta.

h1

Vivendo os problemas alheios

Janeiro 12, 2009

Durante as gravações de Ray, cantor e compositor cego, Jamie Foxx manteve seus olhos tampados 14 horas por dia enquanto gravava. Isto para ter uma maior experiência sobre a vida de uma pessoa com deficiência visual.

Leonardo DiCaprio aprendeu a falar árabe para atuar no filme Rede de Mentiras.

Christian Bale emagresceu 28 quilos para fazer o filme O Operário.

Christian Bale, O Operário

Christian Bale no filme O Operário

Todos eles fizeram esses esforços para poder entender melhor a vida de seus personagens e reproduzí-los de forma mais realista para os espectadores. Certamente estes hábitos os ajudaram a entender melhor os problemas vividos e suas necessidades.

Provavelmente, se nenhum desses esforços fossem feitos, os filmes seriam reproduzidos da mesma maneira. Porém, não seriam tão convincentes. Perderiam a “mágica”. Possivelmente continuariam sendo o mesmo sucesso de bilheteria que cada um foi. Não se sabe exatamente qual foi diferencial ocasionado por cada um desses esforços, pois os filmes nunca foram feitos sem eles. Portanto, impossível de haver uma comparação.

Mas os esforços foram feitos, e acredito que cada um dos atores sabe porque fizeram e suas consequências diretas em suas atuações.

Isto porque a vivência e a experiência são insubstituíveis para compreender uma determinada situação. Tentar entender como vive um cego simplesmente ouvindo e lendo relatos, porém ainda continuar enxergando torna-se impossível de compreender. Deixar os olhos tampados durante o dia fez com que Jamie Foxx soubesse de forma muito mais real o que é ser cego. Somente algumas reuniões para tentar entendê-los não bastariam.

Fazendo uma comparação com análise de sistemas, é possível perceber que fazemos tudo errado. Justamente o contrário dos atores citados. Sempre falamos da importância de especificar os requisitos, porém, antes de desenvolver um sistema, nos reunímos com os únicos interessados e ficamos ouvindo, anotando, ouvindo, anotando, …. . Quando estes interessados não se lembram de mais nada de relevante, simplesmente terminamos a reunião e entramos numa caverna para “analisar” de bem longe os problemas vivenciados por aqueles que estão necessitando do sistema.

Nenhuma empresa contrata alguém para desenvolver um sistema e aceita ficar pagando para que esta pessoa fique simplesmente olhando o usuário trabalhar por muito tempo. Todos querem resultados rápidos.

Ficar olhando o usuário, trabalhando junto e fazendo as mesmas tarefas seriam o ideal. Pouparia tempo de algumas reuniões, e, provavelmente, teria menos retrabalho em partes do sistema em que o analista não soube compreender direito o que o usuário desejava.

Mas como toda metodologia ideal, financeiramente é inviável de ser feita por completa. Por tanto, mesmo que todos os personagens influentes em análise de sistemas escrevessem livros sobre isso e provassem que funciona, ninguém faria.

Então, para começar dá pra passar uma tarde, um dia. Quem sabe uma semana, só pra ver no que vai dar.

É claro que isso não é tempo suficiente para acabar com as reuniões de especificação de requisitos. E talvez nunca seja possível, afinal é importante formalizar as especificações compreendidas.

Mas caso tenha um pouco de tempo, não custa (muito) tentar.