English readers and other languages: Many posts are in portuguese, you can use the Translate button at left side.

Clique nas imagens dos artigos! Elas levam você para o site do artista que a criou e muitas
vezes tem assuntos relacionados ou outras imagens para expandir seus horizontes!

quinta-feira, 18 de julho de 2013

Software - Simplificação Inteligente é Trabalho do Desenvolvedor

As fotos mostram um belo exemplo de design bem bolado. 
Software bem feito também pode ser assim.
Multiplo by HeyTeam

Software - Simplificação Inteligente é Trabalho do Desenvolvedor
18/03/2010

Em resposta ao artigo "A Dificuldade da Simplificação", de Letícia Polydoro publicado no site Baguete. 

"Menos é mais. Esta sábia frase foi dita em 1919, por Mies van der Rohe, sintetizando a filosofia da renomada escola de design e arquitetura alemã Bauhaus que fez história. Que impacto teria essa frase dita por um arquiteto do século passado nas nossas empresas de tecnologia atuais?"


Meu comentário


Simplificar é agregar inteligência ao sistema. Acho muito oportuno os comentários sobre a tendência dos programadores, quanto a colocarem excesso de recursos de software numa mesma tela, ou num mesmo programa.

Excessos de mecanismos são prejudiciais, tanto quanto a falta de funcionalidade que observamos em muitos sistemas.

Um programa inteligente, ou que utilize conceitos de sistemas especialistas, deve ter previsão no seu funcionamento para executar, sem esperar pela solicitação do usuário, muito mais do que os tradicionais 10% a 20% (quando muito) do que a ampla maioria dos analistas e programadores fazem.

Infelizmente por aqui, o nível de requerimento das empresas para gerar bons resultados desenvolvendo recursos melhores para suas atividades fim (ou seja gerar lucro ao invés de só cuidar de economizar papel higiênico), costuma ser tão baixo quanto seu descaso em formação de equipes e estrutura adequada. Mas continuam gastando fortunas em propaganda para fingir que são modernas, mostrando até Ferraris quando só querem pagar por fusquinha para não gastar nem com água.
Não existe milagre no desenvolvimento de software profissional para gerar verdadeiros e bons resultados. E não adianta ficarem publicando aquela tantos estúpidos artigos sobre "falta de jovens talentos". Tradução: querem novatos sem experiência mas que sejam gênios de nascença (existe um a cada 10 milhões talvez) e com o poder de um deus e com salário de faxineiro. Por favor me desculpem os zeladores que cuidam de manter nossos ambientes limpos por favor.

Desenvolver com inteligência deve ser abrangente tanto em termos do que é o mínimo a fazer (nem isto vemos tantas vezes), seja otimizando a navegação entre campos, telas, etc., seja efetuando pré-processamentos, ou por outro lado, realizando uma grande quantidade de tarefas pela dedução (mecanismos de inferência) das atividades e passos complementares que o usuário vai realizar, o sistema deve fazer mais com menos.

Mas também, lembremos que fazer mais na interação com o usuário, também deve seguir um conceito de “menos é mais”. Eliminar interações desnecessárias, atuar como um expert na atividade que realiza, são atributos de um programa inteligente.

Uma interface bem feita é importantíssima. E fazer com que esta interface tenha um funcionamento de alto nível, é mais ainda.

Existe uma relação inversa entre cada recurso que o programa disponibiliza facilitando a vida do usuário e a quantidade de trabalho de programação necessária para criar seu funcionamento. Ou seja, quanto mais simples (e poderoso) para o usuário, a tendência é de que haverá muito mais trabalho para o programador.

Existe certa resistência entre trabalhar para criar soluções inteligentes de software, amigáveis ao usuário final e, desenvolver objetivando facilitar a vida do programador ou de usar aqueles recursos que este está interessado.

Devemos lembrar, nosso trabalho é para o usuário final, não para nós mesmos. Imagine um restaurante em que o cozinheiro tende a ignorar o gosto dos clientes, e impor seus gostos pessoais, mesmo que o restaurante acabe ficando quase vazio, ou que o pessoal da cozinha nem consiga limpar os pratos depois.

É importante interagir com os usuários para avaliar suas necessidades. Mas também, pela experiência, aprendemos que apenas reuniões não fornecem tudo que precisamos saber. Um certo distanciamento, como apenas estar por perto, observando o que os usuários realmente fazem quando estão por sua própria conta, fornece muitos pontos importantes.

Outra coisa importante de lembrar, é que o processamento faz parte da interface, tanto quanto quaisquer retornos fornecidos ao usuário. Uma mensagem de erro que não seja extremamente clara e precisa sobre o ponto e o que causou um problema, é inútil.
Inclusive, neste aspecto, tratamentos de erro devem ser inteligentes sim! Veja, voltando para o exemplo comparativo do restaurante, boa parte dos programas que vemos por aí, servem arroz queimado para o cliente. Se o cozinheiro viu isto, deve por sua própria conta preparar outro arroz, trocar os pratos e servir o cliente, e também avisá-lo sobre a demora se for o caso. Um programa razoavelmente bem feito tem que ter estas características.

Dá trabalho? Sim, dá muito trabalho. Mas este é o meu trabalho e a minha opinião. Eu não acredito em fazer “programinha” e tenho pavor de trabalhos sem um pingo de acabamento ou interfaces precárias. Acredito que nossa área é trabalhar na interação Homem X Máquina e que isto faz parte do processo de evolução social, econômica, científica, enfim, de tudo em que poderemos realizar e melhorar com a utilização dos computadores.

Nosso trabalho é criar boas soluções, dentro é claro, dos recursos disponíveis, mas que devem ser necessários para o que se pede. Não existe sistema de grátis, assim como nenhum restaurante distribui comida. Pode ser um sanduíche, mas pode ser bem feito e ter um guardanapo para acompanhar.
Se o cliente do restaurante deve pegar uma mesa, buscar as cadeiras, levar o pedido na cozinha, comer qualquer coisa que seja servida, ou então receber a comida numa dúzia de potinhos separados e ainda descobrir que é ele quem tem de lavar a louça porque o pessoal da cozinha não gosta, é algo de se pensar. Vemos isto acontecer em software a toda hora e é preciso melhorar. Temos excelentes exemplos no mercado internacional, e não estou falando das megacorporações de software.

E também é possível fazer tanto trabalho de forma simples. De que adianta tantos frameworks se isto não for usado justamente para otimizar a qualidade e a produtividade? A barbaridade que virou o uso da linguagem Java é um exemplo catastrófico de como conseguiram piorar toda experiência acumulada por décadas com o Cobol. Cada empresa tem uma "coisa" tipo framework de Java que não tem nada a ver com o resto. Todo mundo quer sentir-se importante inventando mais um framework apesar da solução já existir por toda parte. Mas não. O ego, a vaidade tem falado tão alto que é realmente uma temeridade olhar cada nova proposta na área. 
Não está na hora de pararem de reinventar a roda o tempo todo?

Mas mesmo assim, se usarem inteligência aquela coisa que faz parte do cérebro, (sim existe algo dentro da cabeça, acreditem), pode-se criar grandes resultados, com simplicidade. Mas é preciso pensar, estudar, aprender sobre interações humanas e empresariais, observar o mundo ao redor.

Um software simples de usar pode ser não tão trabalhoso de fazer. Mas se tiver que ser que seja, mas também, já como o alicerce para um próximo passo em que podemos utilizar aquilo que aprendemos e realizamos. Ou seja, um trabalho bem feito, mesmo que difícil, vai facilitar o que for feito depois.


.'.

Sem comentários: