Mostrando postagens com marcador software engineering. Mostrar todas as postagens
Mostrando postagens com marcador software engineering. Mostrar todas as postagens

segunda-feira, 19 de maio de 2008

Um Bom Desenvolvedor de Software

Outro dia conversava com um grande amigo e ex-chefe sobre como faltam no mercado bons desenvolvedores de software. Coloco aqui o que a meu ver é um bom desenvolvedor de software, independente da plataforma em que trabalhe, até por que um bom desenvolvedor de software é multi-plataforma. :-)
  • Ser uma pessoa de mente aberta

Pessoas dogmáticas nunca serão capazes de reconhecer que há maneiras diferentes de se resolver um mesmo problema, e de avaliar qual a melhor tecnologia a ser utilizada em cada situação.

  • Possuir bom raciocínio matemático

Programar é desenvolver algoritmos, é resolver o tempo todo problemas matemáticos, e em geral a solução mais simples é a correta, quem não consegue entender e resolver problemas matemáticos não tem como ser um bom engenheiro de software.

  • Ter boa capacidade de análise e interpretação.

Para começar a resolver um problema é preciso primeiro entender o enunciado, o que é pedido. Sem conseguir entender o que está sendo solicitado é impossível desenvolver uma solução adequada.

  • Ser comunicativo

Pessoas que não se comunicam, não conseguem trabalhar com os outros, é preciso saber trabalhar em equipe: Duas cabeças pensam melhor que uma.

  • Humilde

Quem não é humilde nunca reconhece que precisa de ajuda, nunca pede por ela, demora mais para resolver os problemas e nem sempre o fará da melhor forma.

  • Dominar o Inglês

Sem dominar o inglês o desenvolvedor não terá acesso a maioria das fontes de informação sobre resolução de problemas.

quinta-feira, 3 de abril de 2008

Funcionalidades não documentadas


Quando trabalhamos com desenvolvimento de software nos deparamos com situações complexas. Não é segredo para ninguém que softwares tenham sempre seus bugs e limitações, e muitas vezes nos frustramos ao instalar uma nova versão de algum programa que estamos acostumados a usar. Logo todos acusarão os desenvolvedores daquele programa de não terem testado adequadamente o produto antes de disponibilizá-lo no mercado, o que de fato pode ter acontecido, mas nem sempre é o caso. Nesse mundo dos programas de computador muitas vezes alguns bugs e falhas são tratados pelos consumidores como funcionalidades não documentadas e utilizados para resolver (acochambrar) problemas do dia a dia. Os desenvolvedores e testadores sem o conhecimento dos usos que a criatividade humana pode encontrar para os defeitos de um programa se empenham em corrigi-los para a próxima versão, e eis que ao lançar o novo programa se descobre que ele impede os usuários (CLIENTES) de continuarem fazendo o que estavam habituados a fazer, muitas vezes param de funcionar corretamente com outros programas assessórios que estes usuários usam. Isso é muito comum. Eu mesmo já vivi e essa situação dos dois lados, como usuário e como desenvolvedor.

É normal então ouvir algumas pessoas dizerem que o novo software está cheio de defeitos, o que no ponto de vista delas não é errado, de fato o novo software removendo falhas e defeitos antigos podem ter tornado mais difícil a vida dos usuários que se aproveitavam dessas brechas. Contornar esse problema deve ser muito mais difícil quando se trata de um sistema utilizado em escala global, como sistemas operacionais e browsers de navegação, nesses casos manter a participação no mercado será a decisão mais acertada mesmo que isso signifique manter funcionando os workarrounds feitos pelos usuários (clientes). Mas no caso de sistemas utilizados por usuários muito específicos em mercados pouco segmentados e com menor concorrência o mais sensato é entender as necessidades reais do seu usuário, desenvolver em novas versões verdadeiras soluções para seus problemas e aos poucos ir removendo completamente as “soluções engenhosas” sob pena de tornar inviável e extremamente custoso qualquer processo de desenvolvimento.