Screencaster Mostrando conhecimento


Dicas para não precisar de aspirina no seu próximo projeto web

Sem muito papo e muita enrolação, seguindo os moldes do meu último “post happy-list”, vamos à lista da felicidade para não precisar passar na farmácia por causa de um projeto, especialmente um sistema, web.

1 - Pegar sistema “pela metade” pra completar, nem pensar!

Eu juro pra vocês que estou neste momento terminando um sistema que se encaixa neste item. Mas estou porque é para alguém conhecido, apenas como uma ajuda, porque isto dá uma dor de cabeça dos infernos! Analise comigo: o tiozinho liga para você, ele tem um “sisteminha”que o sobrinho dele começou a fazer mas não conseguiu terminar, e pergunta se você pode terminar o sistema. O que você responde? “Sim, é claro”… NÃO! Repita comigo: Não! Não pegue sistema pela metade pra completar, isto é suicídio. Imagina pegar um sistema com modelo de dados mal-projetados, que não seguem nenhum tipo de padrão ou convenção, telas todas geradas com tabelas por um WYSIWYG qualquer, controllers sem identação e com nomes de variáveis tipo $incredibleCrazyHugeNameVariable, e por aí vai… segue aqui para o divertimento de vocês uma pequena demonstração da estrutura de um banco de dados que eu vi em um sistema escrito por um maluco estripador programador:

Trata-se de uma tabela com cidades. Começamos com o campo de id, que em vez de simplesmente id, é chamado de id_Cid. Então vemos o campo nome, que em vez de nome se chama nom_cidade, e finalmente o pa_ID que é, certamente, o ID do país… não! É o ID do estado! Está aí um belo exemplo de tabela mal-projetada. Seria correto fazer id,nome,estado_id, ou então id_Cid,nome_Cid e estado_id_Cid, mas não esta mistura sem nexo nenhum.

2 - “E se isso”, “e se aquilo”…

“E se o usuário clicar aqui primeiro e não alí?”, “E se o site estiver fora do ar?”, “E se eu desistir do sistema e quiser todo o meu dinheiro de volta?”… existem pessoas e clientes que gostam de ficar imaginando situações-exceção em vez de imaginar as situações que ocorrem todos os dias no uso de um sistema. Cuidado com os “e se(s)”, eles podem lhe render horas a mais de programação para uma funcionalidade/exceção que nem 0,1% dos seus usuários vão notar, e ao mesmo tempo tirar uma funcionalidade/recurso que 99,9% dos seus usuários sentirão falta.

3 - “Okay, daqui á 6 meses te mostro o sistema funcionando”

Aí está mais uma prática suicida. Depois destes 6 meses você mostra o sistema e ele não era nada do que o cliente imaginava. Por favor, divida o desenvolvimento de um sistema ou site grande em partes menores para que você não passe por isso. Não trabalhe mais que duas semanas sem perguntar para o cliente se está okay até o momento. Pense comigo: se tiver algum problema ou algo que não estiver de acordo com a expectativa do cliente, o que é melhor: refazer 6 meses ou refazer 2 semanas de trabalho?

4 - “Quero um efeito igual ao do Exterminador do Futuro 2″

Esta é clássica: o cliente chega e exige um monte de efeitos e firulas inúteis que só vão te dar mais trabalho e não vão acrescentar em nada (além de kbytes) no site/sistema dele. Minha dica: tente convencê-lo de que isto não vale a pena, se não tiver jeito e você realmente precisar fazer, cobre (e caro) por isso, afinal na maioria das vezes quando somos obrigados a fazer algo do tipo, o site não fica bom o suficiente para o portfólio.

Aí estão algumas das minhas dicas para poder dispensar a aspirina? Quais são as suas? Podem recomendar algum outro remédio, caso a aspirina não esteja adiantando :D


12 pessoas comentaram

  1. Ótimas dicas guilherme,
    valeu!

  2. Excelente dicas! #clap

    Valeu. ;)

  3. Todas as palavras no diminutivo tb tem que fugir, ex: aquela alteraçãozinha, botãozinho..
    a pior de todas, “É Simples, só um sisteminha!”

    Valeu.

    • Nei says:

      Diminutivo é o pior de todos :) essa questão 2 semanas é super importante, esses processos iterativos e incrementais são ótimos para não fugir das expectativas do cliente. Outro fato importante e um dos príncipais é no início do projeto o progaramador ou responsável estar sintonizado com os objetivos do cliente, se não tiver procurar sintonizar antes de começar qualquer linha de código, e ai trabalhar pelo menos um pouco descrevendo as funcionalidades do projeto…

      obs.. tive que ver o fonte desse form de comentário para saber oq colocar nos campos, não tem labels?

  4. Lembro-me de uma vez que pegamos um cliente que se dizia “entendido em programação” por ter feito um semestre ou dois da faculdade.. Aquilo foi um terror… tem uma frase que me lembro até hoje:

    “É só fazer um ifzinho ali…”

    Credo! (entra bem na descrição do diminutivo do Tiago também hehe).
    Abraços

  5. inside says:

    Sem dúvida, pior que o diminutivo é o cliente que pensa que entende de programação e começa a se meter em detalhes técnicos que deveriam ser responsabilidade exclusiva do programador “de verdade”.

  6. Mayck Xavier says:

    O problema eh quando o cara ainda diz “Um outro cara me disse que faria na metade do tempo e pela metade do preco.”.
    Nessas horas eu sempre digo “Entao faz com ele.” =)

  7. Bicudo says:

    Justamente para ninguem mexer nos meus sistemas que eu nomeio os campos assim:
    ninf_id
    iowfdwon_nome
    bnehf_papai

    explicando:
    ninf_id = id da cidade
    iowfdwon_nome = nome da cidade
    bnehf_papai = estado

  8. inside says:

    Se você consegue entender essa bagunça, tudo bem xD

  9. Brown says:

    Valuable thoughts and advices. I read your topic with great interest.

  10. Pelo jeito mais um blog seu Guilherme, abandonado….

  11. Mano HD says:

    Muito bom mano. Já peguei algumas bombas e sei exatamente o que é tentar desvendar o enigma da P.O.G (Programação Orientada a Ganbiarra)

Agora é a sua vez: