segunda-feira, 8 de dezembro de 2008

Software e caldo de cana

Galera, estou colocando meu Blog em ação.
Vou falar sobre um assunto que assombra a área de informática, o famoso prazo apertado, aquele prazo que o gerente de projetos chega e fala para você "ó, hoje é segunda-feira, então até sexta-feira temos que entregar esse sistema blz?", você fica puto da vida se perguntando, cade os casos de uso? análise de negócio? drafts de telas? requisitos do sistema? modelo do banco de dados?, é um tanto quanto desanimador, ainda hoje, em muitas empresas de software, se quer utilizam um processo formal de desenvolvimento, não se enganem com empresas que tenham nível de CMMI que seja, nem todos os projetos elas seguem o processo homologado. Mesmo que seja um processo específico da empresa ele deve existir.
Muitas perguntas são feitas sobre a engenharia de software, uma delas é porque a engenharia de software não é precisa igual as outras engenharias?? Difícil de explicar! No ponto de vista de muitos a engenharia de software ainda é muito jovem, no meu ponto de vista ela não é usada, para qualquer evolução precisa ser usada, testada, na atualidade existem muitas empresas não adotando um processo formal de desenvolvimento, simplesmente porque isso vai demorar o desenvolvimento, com isso o desenvolvimento de software fica mais caro e o prazo é estendido, como seu gerente vai poder pedir aquele milagre de sexta-feira???? Com o prazo prolongado a empresa acaba perdendo clientes para a concorrência, perdendo espaço no mercado, empresas que querem um sistema para a automação de um processo procuram tempo curto e investimento pequeno. Agora eu pergunto! Como ter um software de qualidade, se fizermos com investimento curto e prazo menor ainda? Muitas empresas trabalham desse jeito! se dão certo? sim, não sei como mas elas ainda sobrevivem, projetos são começados já atrasados , sem atender os requisitos mínimos do cliente, sem padronização alguma, pode ter certeza que esses projetos são pagos pela empresa desenvolvedora e podem ser chamados de projetos Mun-Ha (o de vida eterna) , quando você acha que ele acabou, lá vem aquela alteração que se você tivesse prestado um pouco mais atenção no início projeto teria matado, o pior é que na altura do campeonato essa alteração pode causar um enorme trabalho, em algumas vezes o processo ou mesmo o software deve ser refeito.

Softwares são negociados como se fosse uma pastelaria, "vê um de carne" em menos de 5 min o sistema tem que estar pronto e a gosto do cliente. dificil pensar assim! Isso acaba em sistemas já prontos chupinhados da internet e adaptados para ficar ao gosto do cliente, não sou contra pegar problemas já resolvidos, mas sou contra a implementar e entregar ao cliente uma coisa que você nem sabe o que faz e nem como faz, já me aconteceu algumas vezes de entrarem em contato comigo dizendo que precisa de uma alteração em seu site, dizendo que o outro programador se recusa a fazer, pode ter certeza que nem ele sabe o que fez, dou aquela olhada no sistema e adivinha o que eu encontro? Simplismente tudo o que eu imaginei, coisas chupinhadas da internet jogadas, sem reutilização de código algum e ainda por cima módulos que nem são usados, nessas horas você deve avisar o cliente que o sistema não é de boa qualidade e oferecer um novo desenvolvimento, normalmente o cliente não aceita, ainda mas se o sistema atende suas necessidades, e com certeza ele vai encontrar alguém que irá fazer a alteração no emaranhado de nós, por uns e outros rpogramadopre que oferecem e aceitam esse tipo de serviço que a assombração nos persegue.

Portanto vão algumas dicas para um desenvolvimento rápido visando a qualidade, reutilização de código, entre outros.

Nunca pegue alguma coisa pronta da internet sem entender o que ela faz, como ela faz, qual a tecnologia utilizada, qual o conceito utilizado e qual a melhor forma de implementar o que o cliente está pedindo.

Trabalhe com um Framework de desenvolvimento rápido ou construa o seu próprio framework, eu prefiro sempre construir.

Elabore um processo formal para desenvolvimento de sistemas, não precisa ser um processo bem elaborado tipo XP, RUP, Scrum, mais coloque no papel todos os passos necessários para o desenvolvimento, desde a extração de requisitos até a entrega ao cliente.

Automatize processos que iram se repetir, isso faz com que você tenha uma produtividade maior.

Fique sempre atendo as novas atualizações da linguagem, framework, etc, utilizados, para implementações em novos ou projetos anteriores.

Use todo o suporte que a linguagem te oferece, muitas linguagens hoje são extritamentes comerciais, rápidas para se desenvolver.

Programe orientado a objetos, gaste um tempo para aprender todo o conceito de orientação a objetos e aplica-lá corretamente.

É isso mesmo galera, vamos transformar a área de informática em uma area respeitada e conceituada novamente, temos que nos portar como uma software house e não como uma barraquinha de pastéis.

Enquanto não utlizarmos a engenharia de software não vamos conseguir evolui-lá, melhorá-lá, transformá-la em uma ciência exata.