quinta-feira, 11 de fevereiro de 2010

Compila mas não roda

Como é carnaval, resolvi entrar na brincadeira e escrevi uma pequena sugestão para o bloco do #horaextra:

Compila, mas não roda


Já são seis horas da tarde,
a tal classe já esta pronta,
é hora de fatorar...

lá no teste foi tranquilo,
meu sprint em feedback,
só me falta compilar.

Executo meu comando,
gcc e coisa e tal
e eis que nada acontece.

E debugo sem sucesso
linha a linha revisada
eu recorro agora a preces.

Se esta coisa não rodar
digo adeus ao meu chefinho
vou lá para o #horaextra
repensar com meu chopinho.

Compila, compila, compila, mas não roda.
Se vira, façanha, se acerta, dá seu pulo, dá seu jeito.
Debuga, revisa, faz teste, pede ajuda no twitter.
Esqueça um pouquinho de menos wall (-wall),
vem pro #horaextra neste carnaval.

segunda-feira, 1 de fevereiro de 2010

7 Passos para imortalizar um projeto

Os passos citados para se caminhar na larga estrada do insucesso, não são fruto de nenhuma tese acadêmica ou de um livro de auto-ajuda. São situações reais, vivenciada ou assistidas por mim. Não há, nestes passos, nenhuma intenção subentendida com o propósito de espalhar um moral que possa ser a saída para os seus (ou meus) problemas de desenvolvimento de software. São apenas coisas que hoje, acho graça, mas que no passado geraram sérias consequências.
Claro, este elenco não será nenhuma novidade. É o que eu chamo de “chover no molhado”: sempre há alguém falando no assunto, a gente sempre lê algo a respeito, mas ufa... temos a tendência de ignorar. Até porque, é tudo tão repetitivo que por vezes não sentimos necessidade de refletir.

Passo 1 – Aceitabilidade inconsequente
    Sim, eu posso fazer
Se esta é a primeira resposta a uma requisição de um projeto, saiba que o primeiro passo pode simplesmente ser o único. Por inúmeras vezes, cheio de ansiedade e boa vontade, disse sim sem nenhuma análise. O fato de eu conhecer do que se tratava nunca foi suficiente para enfrentar as adversidades comuns em todos os projetos. Não há prosseguimento em projetos sem análise ou planejamento. É bom sempre estar certo nas suas respostas, positivas ou negativas, mas é bom entender que nenhuma delas se sustentará sem uma análise prévia, por mais que julgue dominar o assunto.

Passo2 – Falsas Promessas
    Você vai ter isto, e isto e mais aquilo.
Já que você respondeu sim, sem nenhuma análise, esteja certo que um destes dois pontos foram afixados num tipo de contrato consanguíneo entre as partes: ou o cliente espera que você faça exatamente o que ele esta pensando, não o que ele lhe pediu; ou você ofereceu um pouco mais do que ele esta pensando, dizendo coisas que ele ainda não compreende. Isto se chama expectativa. É bastante complicado lidar com expectativas, pois eles são muito íntimas. Tão íntimas que na maiora das vezes é difícil expressa-las. Criar expectativas nos clientes, é algo tão perigoso que causa consquências até no ramo da física: a partir daí, o contínuo-espaço-tempo não será mais como conhecemos. Para o cliente, o tempo passará mais rápido, e para você, nunca haverá espaço suficiente para implementar o prometido. Por fim, nada se continua.

Passo 3 – Ação pelo Menor Esforço
Hum, existe um exemplo na net...
Sim, existem inúmeros exemplos na internet. Eu mesmo vivo postando exemplos. Mas a finalidade é outra. São para estudos. E aliás, acaso o cliente lhe pedira uma colcha de retalhos? Imagine se você descobre que o seu sistema operacional, que é lento, cheio de mensagens de erros intraduzíveis, é feito com uma coletânea de códigos retirados de um fórum? Um projeto, em todas as suas instancias, deve começar do zero e terminar no fim. Pesquise, veja fontes, mas faça a sua própria codificação.

Passo 4 – A Não Comunicação
Eu acho que esta fórmula fica melhor assim.
Não ache, tenha certeza. Você sabia que um dos papéis do cliente e justamente o de se comunicar com você? Se você ou o seu cliente dispensam explicações, um dos dois é deus. Ou pensa ser. Ou talvez até tenha certeza. Lembre-se: o cliente acredita dominar do negócio assim como você crê dominar uma linguagem de programação. É sempre útil e aconselhável que se ouçam.


Passo 5 – O Não Planejamento
Já está quase pronto.
Qual a medida do quase? Esta nos testes finais, refatorando a página inicial, embrulhando para entrega? Muitas das vezes, o quase significa: não sei onde estou, mas imagino que estou perto. Se não consegue planejar não consegue executar. É melhor afirmar que apenas uma quinta parte está pronta, do que chutar que o todo esta quase pronto.

Passo 6 – Não Testar
Bom, na minha máquina funciona perfeitamente.
Se é assim, sempre dê sua máquina para o cliente e pronto, estará livre deste desgaste, de ter que rever código, tela, classe, função. E pensar que este desajeito pode ser evitado apenas testando. Sim, testes não são enfeites ou uma moda passageira. São necessários e protegem a sua reputação.

Passo 7 – Roteiro Improvisado
Mas eu fiz tudo certo
Não. Esta frase não seria necessária se os seis passos anteriores nunca tivessem sido dados. O caso é que não há uma forma empírica para se conduzir projetos. Se você não conhece, estude. Se conhece, estude também. Não há soluções mágicas ou receitas de bolo. A gestão de projetos é uma ciência séria, com fundamentos e métodos há muito sendo estudados. É sempre bom acompanhar o os estudos recentes, conhecer as origens, estar por dentro. Não improvise um roteiro de projeto, conheça um.

Como disse, estes passos já foram dados por mim e posso lhes assegurar o resultado: fracasso total. Como eu creio na vida após a morte, acredito que sempre que segui um ou alguns destes passos, meus projetos se tornaram imortais: morreram. É uma pena que os mortos pertencem aos mortos...