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!
Mostrar mensagens com a etiqueta Programação. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Programação. Mostrar todas as mensagens

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.


.'.

quinta-feira, 21 de outubro de 2010

25 Anos de Windows ou como fazer fogo!



25 anos de Windows, 25 anos de críticas.

Os fanáticos obsecados pelo Linux (que uso profissionalmente assim como Unix, todos os dias), que me desculpem, mas cada um tem suas vantagens. Defeitos ambos tem.


Vamos imaginar os procedimentos para fazer fogo, algo simples e que todos humanos precisam, mais ou menos algo assim:


Em Windows:

Passo a passo:

O programador já sabe que fogo precisa madeira, ignição, oxigênio, etc.

Cria um programa chamado FOGO.EXE.

Se for o caso, vai ter um INSTALADOR que coloca o programa pronto para rodar na sua máquina. Basta fazer o download (clicar num link nalgum site), ou copiar o arquivo INSTALADOR para a máquina. Depois é só clicar no INSTALADOR que ele deixa tudo pronto para rodar.

Para acender o fogo, basta então, clicar no ícone: FOGO. Pronto.


Em Linux:

Observação: É aquele famoso ambiente movido a muitas linhas de comandos e mais comandos de texto que tem de ser digitados.


Passo a passo:

Abrir a console. É aquela tela que imita os antigos métodos de entrada de dados, também conhecida como "tela preta". Se for uma das muitas versões do Linux que têm uma tela gráfica piora porque você tem que descobrir aonde está escondido o menu para abrir uma janela que vai imitar o velho método de entrada manual.

Digitar alguns comandos, mais ou menos parecidos com estes:

apt-get install gravetos
apt-get install troncos.gz
untar troncos.gz
...attrib +644x machado.sh

Nota: Com muita sorte, mas muita sorte mesmo, é só isto. Em boa parte das vezes você vai descobrir que faltam módulos e que são diferentes de uma versão do Linux para outra. Passe as próximas duas ou três horas pesquisando todo tipo de resposta absurda para resolver seu problema simples.

Finalmente instalado! Agora é só acender o fogo:


sh machado.sh -cp .\troncos .\lenha
mv gravetos .\fogueira
mv lenha .\fogueira
cron 1 0 0 5 5 soprar
fogo.sh -start -soprar
etc...


Repetir os passos de ignição, soprar, monitorar até que o fogo esteja aceso.



Os comandos podem mudar de acordo com a distribuição de Linux usada. Neste caso, consulte um dos milhares de tópicos perguntando a mesma coisa e que sugerem milhares de maneiras diferentes de fazer o que deveria ser a mesma coisa.


Quem vai acampar e quer curtir uma fogueira, sabe como é bom um simples isqueiro. Claro que no espírito aventureiro de Indiana Jones o passeio poderia ser na base de paus e pedras que soltam faíscas... (risos)

.'.

quinta-feira, 26 de agosto de 2010

Windows por Linux? Dinossauros evoluíram.

Foto: Richard Mayston

Enquanto alguns consideram tendenciosa, outros tem reações apaixonadas, outras bem embasadas.

Na minha humilde opinião pessoal gostei da matéria publicada na Computerworld, "5 fatores a serem analisados antes de trocar o Windows por Linux".

Aliás, achei ótima matéria. Em hipótese alguma tendenciosa, eu diria que é bem realista e sem argumentos do tipo político partidários em ano de eleição.

O Linux tem ótimas vantagens, favor ler outras excelentes matérias aqui da Computerworld. Quem acompanha a revista e o site verá que tem material de sobra.

Não existe sistema "de grátis". E muitas vezes, quem não tem dinheiro nem para monstar a máquina, muito menos terá para pagar o salário do profissional que passa anos em treinamento continuo para depois receber MENOS que uma diarista e ainda achar que está abafando. Claro que quem não tem "papi" que lhe sustente vai pensar um pouco diferente.

Tenho aqui servidores RISC (HP-UX), Linux e Windows. Manter Servidor WIndows e Linux prá mim custa a mesma coisa e precisa profissional capacitado para ambos. Se bem que em 99,99% das vezes, é muito mais prático, simples e objetivo instalar qualquer coisa em Windows. 99,99% das vezes, tem um instalador para Windows que faz tudo. Já no Linux, haja peripécias e muitas e muitas linhas de comando. Isto se você tiver a sorte de usar uma versão certificada que combine exatamente com que se quer instalar. E sem conexão de internet, pior. Pelo menos para Windows geralmente quando precisa, vem um CD junto, não tenho preguiça de apertar o botão da gaveta... (risos)

Pera aí, linha de comando? Isto é aquilo que nós usávamos ainda nos anos 80? Mas que barbaridade... depois eu que sou dinossauro. Olha, num passado remoto, trabalhamos até com cartões perfurados, mas não temos saudade nenhuma daquilo, e custa mais caro para a empresa se eu perder um tempão dando voltas em instalações (que são mesmo) precárias (até simplórias), cheias de incompatibilidades e remendos.

Se duvida, é só olhar os milhares de foruns em que o pessoal apresenta todo tipo de problema para instalar isto e aquilo. Tem coisas assim no Windows também? Claro que tem, mas não de nível tão primário (IMHO).

O Windows ainda tem coisas que podemos (eu disse podemos) fazer em linhas de comando, mas isto não é algo obrigatório. Eu trabalho nesta área por décadas e minha missão é otimizar a disponibilizar a interação Ser Humano X Máquina para geração de resultados, produtividade, auxiliar em processos, trazer qualidade de vida e EVOLUÇÃO. Custa muito caro quando paro de trabalhar para resolver coisas que já foram solucionadas no século passado.

Quando os desenvolvedores Linux tiverem menos preguiça e entregarem seus produtos com um instalador no mínimo decente, eu serei o primeiro a aplaudir mais esta excelente ferramenta que é o Linux, mas que infelizmente, as vezes é um grande s*co de se usar.

.'.

segunda-feira, 5 de abril de 2010

Não é Máquina Atolada. A Performance É Que Foi Prô Brejo...

Wasting Time in the Lab - 07
Foto: Kenneth Kully


Uma cena real entre tantas que acontecem todos os dias: Digito o código para uma pesquisa relativamente simples, num sistema rodando no servidor de uma rede local.

No momento, o sistema tem apenas 11 usuários no total (maioria nem está sentada no computador), numa estrutura supostamente feita para suportar centenas ou milhares de transações simultaneamente.

Depois de dois segundos a coisa já está irritante. Cinco, dez, quinze, dezoito... vinte e oito... trinta e cinco segundos depois, finalmente, volta a tela de consulta, um simples retorno de poucas linhas, a partir de uma tabela que deve ter uns dez registros, e olhe lá.

Outra transação que vai procurar dados de cadastro mais completos, noutra tabela com algumas centenas de milhares de registros, não me interessa quantos na verdade, demora também intermináveis segundos.

E não se trata de máquina "atolada" (carregada demais). Sobre isto veja a matéria: Adicionar hardware não compensa software lento.

Será que o pessoal esqueceu que existe uma coisa chamada continuidade de pensamento? Se o usuário que está no terminal demorar para ter sua resposta, vai inevitavelmente perder a linha natural de raciocínio. Resultado: menor produtividade, alavancada pelo mau resultado do software, neste caso.

Claro que a culpa podia ser do hardware, isto acontece também. Mas já abordamos performance em posts anteriores e, em pleno século XXI, fazer software que ofende até a paciência dos mais ancestrais anciões, é no mínimo, uma demonstração torpe do mau uso dos recursos  de que dispomos.

Para quê tanta sigla bonitinha, framework daqui e dali, metodologia de escolinha do Professor, se o resultado é francamente ruim?

Olha gente, temos um mercado internacional, global, conectado via internet. Amplo acesso a informações e possibilidades inúmeras de pesquisa e troca de informações com outros profissionais para se fazer um trabalho decente.

E porque tantas e tantas vezes vemos este péssimo resultado nas nossas empresas? Muitas vezes é para que um empresário sem nenhum escrúpulo, ou apenas incompetente, pressione suas equipe até arrancar sangue, mas apenas conseguindo resultados medíocres, porém ganhando alguns poucos tostões nas costas dos demais, quando poderia ter uma lucratividade muito maior.

Ou quem sabe para que algum líder de projeto mirabolante coloque todas presunções possíveis, agregando tanta tralha no sistema que a coisa se arrasta.

Ou passando um paninho naquele velho remendo de sistema, sem nunca se importar em corrigir, muitas vezes, pequenas coisas que melhorariam, e muito, o resultado.

Eu alterno as funções de desenvolver e de usar software. E olha, quando eu estou sendo o cliente, me pergunto se as pessoas lá do outro lado, lembram que usuário também existe.

Velocidade de sistema é um fator crítico. Infelizmente a quantidade de MIPS (milhões de instruções por segundo) parece servir mais para mascarar serviço mau feito do que para fornecer resultados efetivos, e rápidos.

Novas versões de ferramentas de software e  hardware ajudam um pouco, mas a construção do produto final ainda é a principal responsável por um produto bem feito.

E ainda tem empresário que reclama porque as suas equipes são dispersas ou dormem no computador.

Muitos, talvez nem tenham percebido.


Imagem: "Okinawa Soba", sobre a lentidão no sistema.


05/04/2010
.'.

terça-feira, 23 de fevereiro de 2010

Mitos sobre desenvolvedores de software mais velhos.

Cinco mitos difundidos sobre desenvolvedores de software mais velhos.

Interessante e bem embasado artigo de Dave Rodenbaugh

Five Pervasive Myths About Older Software Developers


Foto: Mike Pirnat

.'.

Separando programadores de não programadores

Como saber se alguém possui as características necessárias para tornar-se programador?

Esta é uma interessante pesquisa sobre determinar de forma científica, se uma pessoa possui ou não habilidades para tornar-se programador.

Arquivo em formato .pdf

Quickly separating programmers from non-programmers


Foto: Pedro Vera

.'.

quarta-feira, 27 de janeiro de 2010

Alta Produtividade no Ms-Office/Access Para Quem Quer Lucro e Bons Resultados

Dog
Photo by Dominic - Austria


Alta Produtividade no Ms-Office/Access Para Quem Quer Lucro e Bons Resultados!


Faz tempo, o Ery Jardim escreveu uma matéria no Baguete sobre ser produtivo no pacote Ms-Office, treinamento, etc. Infelizmente vejo que mais uma vez o link não existe mais no site.



Minha opinião:

Começando pelos tostões, para quem só pensa em migalhas. Desculpem, mas é o que parece tantas vezes.

É muito comum ver alguns questionando a Microsoft, aliás qualquer uma que cobre pelo seus sistemas, começando geralmente pelo famoso argumento sobre não ser "de grátis", ou que isto e aquilo. E pior ainda, que o Bill Gates ficou milionário. Claro que ficou! Mas gerou centenas de milhares de empregos e toda uma indústria que envolve milhões de pessoas no mundo todo. E você? A sua empresa quer criar algo verdadeiro, que tenha mérito e fazer dinheiro também? Então não critique o sucesso dos outros. Pode ter tantos outros argumentos, mas simplesmente porque não "é de grátis" não é nem um pouco razoável. A menos que você seja estelionatário ou seja sustentado pela família e não precise trabalhar ou, acha que dinheiro e sexo são pecados e não tem motivo algum para precisar trabalhar ou ter sexo na sua vida, apesar de ter nascido como fruto disto. Então faça um favor ao universo, vá viver da sua herança e pare agora mesmo de ler este artigo que é escrito para quem precisa e vive do seu trabalho. E não encha meu saco com comentários idiotas a respeito.

Muito raramente vejo algum outro argumento quanto aos recursos, a funcionalidade, a facilidade de uso, os inúmeros recursos muito avançados, o quão simples é manter uma instalação destas. E menos ainda eu vejo eles comentarem sobre quem é que pagou pela criação do software e máquinas que estão usando.
Pior ainda, quantas vezes já vi empresas que usam "software livre", um conceito muito bom e cujos resultados são feitos por toda comunidade de forma colaborativa, mas fazendo o oposto, obrigando seus funcionários a assinarem um termo impedindo os mesmos de compartilharem o que fizerem na plataforma de software live! Sim, não estou falando de algo relacionado ao negócio da empresa, mas das ferramentas que usam e supostamente teriam concordado com os termos da licença de uso. Por exemplo, se eu fizer uma melhoria para um dos editores texto do Linux, que seria algo que retribuiria parte do que estamos recebendo, por que eu não posso passar isto de volta? Isto foi um caso real meu.
Software livre para quem? Os espertalhões? Lamento, software livre é uma idéia colaborativa e se a sua empresa é daquelas que só sugam e nada devolvem, lamento, sabemos aonde vocês vão parar logo adiante: nas mãos de quem tem uma visão maior que a sua... o mercado dos que trabalham melhor do que vocês, seus concorrentes. Casos assim não faltam.

Eu pergunto qual a diferença entre usar um software qualquer para fazer apenas o básico do básico OU usar algo que tenha recursos decentes, para pelo menos trocar alguns documentos de forma decente com o mundo que está lá fora? Se você está satisfeito no fundo do quintal tudo que você precisa é alguma coisa para fazer uns papéis e colar na porta da geladeira na sua casa, tudo bem. Mas se pretende ser uma empresa de verdade, vai precisar trocar dados com o mundo, é necessário pensar melhor. Você pode usar software livre e paga profissionais altamente gabaritados e muito competentes para fazer tudo funcionar, ou você usa uma plataforma de software que também precisa de profissionais competentes, mas que estarão mais dedicados ao seu negócio.

Este não é mais um texto copiado da Microsoft. É minha vivência de software e de empresas, resultado de décadas, portanto, minha opinião pessoal.

The Peaceful Tree
Foto: Ronaldo F Cabuhat
Sou desenvolvedor sênior, e nestas décadas de atividades, uma das minhas ferramentas preferidas é o Ms-Access e a programação avançada com VBA (Visual Basic for Applications), que posso usar em todos módulos do MS-Office e aí sim ter acesso ao poderio de agilização que a suíte toda oferece.

Falo como usuário e como profissional. Preciso de recursos práticos, efetivos e eficazes, para desenvolver ferramentas de alta produtividade e com detalhamento muito grande de funções, incluindo mecanismos de inteligencia artificial, volume de dados, apresentação profissional, adaptação do processamento e suas interfaces com o usuário em tempo real, previsão de continuidade e de compatibilidade futuras. Fiz muitas coisas simples e também muito programas extremamente complexos, realmente muito "cabeludos", daqueles que muitos só ouvem falar a respeito e preferem evitar.

Que tal ter uma ferramenta para desenvolver um software de alta complexidade, focado para poucos usuários, com possibilidade de utilizar os mais rebuscados recursos computacionais, sem perder tempo em coisas básicas?

Pense um pouco nas diferenças de mercado e de nível dos usuários. Agora me responda por que o Ms-Access, o Ms-Excel e Ms-Word possuem funções de cálculo, obtenção de dados e formatação profissional altamente complexas além de ser possível acessar os mais rebuscados limites do sistema operacional? Só para bonito? Lamento, isso não é mercado para os palpiteiros peritos em games que gostam de pegar tudo pronto, de preferência uma cópia pirata baratinha. Lamento mesmo pela falta de conhecimento técnico e falta de profisionalismo.

Por exemplo, "Regressão Linear". Seu profissional de marketing sabe te falar sobre as vantagens disto sem ter que procurar no Google? Como é que ele calcula e te dá retorno das campanhas realizadas? Uhm? Isto é apenas uma de tantas funções do Ms-Excel.
Amplie um pouco e vamos para desenvolver Engenharia Operacional como PCP de produção de fábrica. Aí entra necessidades reais de programação e é preciso uma ferramenta sólida para isto. Ou para fazer algoritmos de inteligencia artificial para gerar modelagens de vestuário ou analisar Legislação Tributária. São exemplos pessoais em que usei todos estes recursos para empresas que sabiam o que precisavam.

Serviço profissional é feito por profissionais. Ponto. Tem seu preço mas também seu resultado. E verdadeiros gestores de empresa deveriam observar isto. É aí que vocês colocam a responsabilidade do capital da empresa? Falam mal do governo mas publicam todos dias anúncios de recrutamento que são a piada do século pelos mais absurdos ridículos? Tipo, pedem qualificação de décadas, incluindo até sistemas que só a NASA usa e experiência de 2-3 anos? É piada ou tem vergonha de dizer que sua empresa estará logo mais a venda para os asiáticos por tostões?
A culpa é sua caro gestor. Se você não sabe, busque ajuda de quem sabe. Se você ou alguém da sua família precisar num caso realmente sério, quem você escolhe, a vizinha fofoqueira, o balconista da farmácia, o estagiário de medicina ou um médico experiente? Lembre disto se algum familiar seu sofrer de uma doença grave. Tenho interesse pessoal, estudo e conheço outras áreas e posso dizer: um shamã pode fazer maravilhas por você, mas mas não vai reimplantar um braço arrancado num acidente. Cada área tem seus profissionais. Então por favor, menos conversa de bar e um pouco mais de raciocínio.

Nos Estados Unidos e Europa temos os maiores foruns com milhares profissionais de alto nível fazendo as coisas mais complexas nestas ferramentas. Muitos não são programadores. São usuários finais de nível avançado. O seu contabilista realmente sabe programar em Ms-Excel ou fica só nas formulas básicas, quanto muito se souber formatar a tela para uma apresentação melhor? Já pensou que treinamento é responsabilidade da empresa? Uhm? Pense nisto, pois vai receber muito mais do que isso possa custar.

Nosso ensino é claro precisa melhorar. E é o que move a máquina das nações. Mas sempre existirão os visionários, os empreendedores! Na virada dos anos 90-2000, quando começaram os chats, conheci uma americana que estudava linguagem C desde os 13 anos na escola, como parte do curso normal. Ela estava se preparando para ser veterinária e sabia mais sobre programação em C do que muitos programadores que conheci e do que é apresentado em nossas universidades ainda hoje.

É com este mercado que você quer competir?

Vemos debates do mais alto nível nestes forums internacionais sobre programação VBA usando estas ferramentas, acessando recursos que muitos pensam só existir em filmes de ficção pela nossa realidade comum. Boa parte deles não são profissionais de TI, mas contabilistas, engenheiros, médicos, etc.

Por exemplo, os modernos PCs possuem CPUs com multiplos processadores. Que tal planilhas em Excel que processam tantos dados, que são feitas para funcionar em modo multi-tarefa, isso mesmo.  Um exemplo que olhei, fazia o controle de uso do processador e abria tantas planilhas quanto possível limitadas pela capacidade da máquina e da conexão de internet para buscar os dados em outros lugares! Num teste a planilha abriu quase duzentas execuções em paralelo, usando ao máximo os recursos disponíveis.
Uhm? Sua empresa precisa de algo tipo big-data? Como é que vai fazer isso? Usar uma ferramenta monstruosa que precisa uma grande equipe para atender milhares de usuários ou desenvolver objetivamente com inteligência só para os que realmente precisam?

As áreas mais altas de gestão não precisam das mesmas estruturas que são mais adequadas a sistemas que terão milhares de usuários.

Ms-Access e VBA é a ferramenta para fazer comparativamente, tanto um automóvel popular quanto um esportivo do mais alto nível, sob encomenda. Ou um avião simples até um jato executivo. Se você precisa de uns poucos automóveis não precisa montar toda uma indústria automobilística. Nem precisa montar uma companhia aérea se precisa apenas de um jato de caça.



Use bem seus recursos, é isto que estou falando.


As áreas mais altas e especializadas funções precisam de sistemas que sejam detalhados, específicos.


Porque eu vou perder o meu e o seu tempo quando o que eu preciso é fazer uma solução que será usada por um diretor de empresa, um especialista nalguma área? Entende isto?

Digo, até mesmo algo realmente muito sofisticado e complexo.


Existem milhares de empresas que sabem disto.


Muitas usam para terem soluções e atender milhares de usuários, mas cada um usando apenas o que precisa. Entende isso? Pelo tempo que seria necessário para fazer um único aplicativo em Java por exemplo, muitos seriam feitos em Ms-Access e VBA.

Veja, não estou falando de aplicativos gigantes. Estou falando de uma ferramenta que permite soluções individualizadas por um custo muito menor e uma possibilidade técnica muito grande.


Eu posso fazer as coisas de várias formas:
- Mais fácil;
- Mais rápido;
- Mais detalhado;
- Mais automatizado;
- Mais recursos;
- Mais possibilidades de programação, da mais básica até o uso de recursos avançados próprios das melhores linguagens;
- Mais flexível, juntando tudo isto acima com a possibilidade de integração com outras suítes e mecanismos de bancos de dados, seja SQL Server, Sybase, Oracle, etc.
- Mais produtivo utilizando recursos de automação de desenvolvimento que atendem desde os requisitos de usuários novatos, até funcionalidades necessárias para programação avançada. Para o novato ou com pouco conhecimento, é uma suíte muito amigável. E para o profissional que precisa de recursos avançados e até acesso direto aos recursos internos do sistema operacional também é uma ferramenta que atende muito bem.



Cortar custos simplesmente é bobagem, desculpem a sinceridade. É preciso usar bem os recursos, aumentar a rentabilidade e o faturamento, lucrar mais e melhor.

O preço da licença e todos recursos e facilidades de uso custam muito menos no que o tempo e salários gastos para se tentar fazer o mesmo de outras maneiras. Na maior parte das vezes, a relação custo X benefício é absurdamente melhor. A menos que você só olhe quanto gasta por dia e não olhe o que vai economizar em pouco tempo mais. Casos não faltam.

Eu costumo repetir que as empresas que pensam apenas em cortar custos, estão fadadas ao fracasso cedo ou tarde. Claro que sempre é necessário usar bem recursos, veja a diferença. E é mais necessário ser criativo, produtivo, ter qualidade e produtividade. E isto não é possível quando se joga no lixo as suas melhores cabeças pensantes porque custam mais caro que um novato que não vai fazer sequer uma fração do serviço.
A menos é claro, que você queira ter uma daquelas muitas empresas com produto ruim, feito de qualquer jeito e azar dos clientes.

Lembram daquela marca líder no mercado, que por um tempo virou até sinônimo de qualidade? Cortaram custos, incluindo o custo de respeitar o cliente. Jogaram no lixo o que tinham e agora são o mesmo que qualquer outra lavadora, geladeira, etc.  Posso falar como cliente muito insatisfeito e conhecendo muitos outros.

Comparando com serviço de táxi, você pode comprar um carro sem bancos e colocar caixotes para economizar, e quando entrarem os passageiros, dar para eles uma lista de comandos dizendo como fazer para se segurarem e utilizarem os pedaços de corda que estão ali, para servir de cinto de segurança. Economia que vai favorecer só os concorrentes.
Este texto foi editado, então veja o caso do Uber. Carros novos, limpos e o aplicativo não dá margens a ser roubado pelo motorista que inventa voltas por ruas que tu não conhece. Quem realmente usa táxi em muitas grandes cidades e nunca foi roubado por um taxista atire a primeira pedra na própria mãe, seu filho ingrato e mentiroso! Respeite sua mãe pô! (risos)....

Claro que tem casos que vale a pena desenvolver em plataformas mais detalhadas, .Net, Java, Python, Ruby, ASP, PHP, etc,  o que for adequado. Com toda certeza é diferente desenvolver um sistema desktop dedicado para uns poucos usuários em relação a um outro que vai ter 10.000 usuários. Mas porque vou perder um mês inteiro fazendo, por exemplo, uma única tela baseada em Java e toda parte Web, se é possível fazer o mesmo numa fração do tempo em Ms-Access e, utilizar o resto do tempo para agregar recursos que vão trazer maior funcionalidade, detalhamento, qualidade e integridade para o usuário?

E também, lembre sempre que não existe uma ferramenta que sirva para tudo.

Como trabalho também com Linux, já utilizei Br-Office, OpenOffice e outros, é claro que nem tudo é portável, especialmente se na minha experiência, várias vezes vi duas instalações da mesma versão de uma destas ferramentas, apresentarem funcionamento diferente, especialmente quando preciso que acessem arquivos padrão do Ms-Word ou Ms-Excel. Qualquer um que tente enviar material formatado de um sistema para outro sabe muito bem que a coisa não funciona muito bem, e muitas vezes até nos mais simples detalhes, como os tipos de "Fontes" de caracteres. Melhor opção? Mande em PDF ou então reze muito para ninguém precisar editar o texto lá do outro lado.


Claro que são boas ferramentas, mas não são a mesma ferramenta. Já perdi a conta de quantas vezes tive que explicar para algum neófito muito entusiasmado que programação de uma ferramenta não é igual a outra e que não, não e não, banco de dados não é só fichário de video locadora que fazem na escola. Não dá para migrar direto um sistema Ms-Access com programação própria diretamente para estes pacotes, tem que fazer tudo de novo! Não existe milagre, exceto aquela da lábia de certos vendedores.

Sobre o comentário do colega, olha, faz muito tempo  que não vejo tela azul com problema que seja do Windows. Nestes últimos anos, eu vi mais travamentos (e certas "doideiras") e necessidade de reboot justamente nas máquinas Linux, geralmente por conta de mais um daqueles tantos parâmetros que o coitado do usuário tem que resolver de n-ésimas maneiras diferentes com linhas de comando. É só procurar "como se faz isto ou aquilo" nos muitos foruns e a quantidade de respostas diferentes totalmente sem sentido é de apavorar. Começa em "qual" das muitas versões de Linux indo diretamente a sugestões tão estrambólicas quanto possíveis na metodologia de "tentativa e chute".

Eu ainda tenho em 2016 um Pentium III, funcionando e que rodou Windows 98 e depois XP direto. Tela azul? Vou responder sobre o outro laptop mais moderno que "torrou" a placa mãe e o meu atual Intel I5. Já tive tela azul neles, sempre por problemas de hardware e também por causa do aplicativo bancário que dá problema adoidado, todo mundo reclama e sempre dá um jeito de bagunçar com o sistema. E sim, tenho ferramentas de diagnóstico profissional, mexo nisto desde 1976 então posso apontar o dedo. Pau do Windows pode até acontecer, mas geralmente é hardware ou software de terceiros. E claro, os piratinhas e seus games pirateados que vão dar pau em tudo. Leiam as mensagens nos foruns que vocês vão averiguar isto por vocês mesmos.
Claro que pode realmente acontecer um problema genuíno do Windows, e isto, muito raramente vi nestes anos todos. Não, por favor, não me beije Bill Gates. Gosto de você, mas um emprego honesto e muito bem pago podendo levar meus cachorros juntos já está bom. Sim, vocês pagam a mudança é claro. (risos).   

NOTA OFF-TOPIC: Adote um cachorro. Sempre que possível adote, não compre. É uma vida. Tenho quatro, de várias idades, todos resgatados por mim direto da rua. Se ele gostar de você, pode até dar um pouco de trabalho nos primeiros dias pois estão assustados com tudo que sofreram na rua e precisam de atenção e carinho até sentirem-se seguros e se adaptarem ao novo lar. Mas vale a pena! São como crianças. Ou vá até o canil da sua cidade ou algum abrigo de voluntários. Isso não tem preço. Serão seus melhores amigos. Uma dica que poucos lembram: muitas pessoas pensam em pegar filhotes de raças pequenas pensando em não ter "traumas anteriores". Uhm, estude sobre a raça antes disto! Geralmente vira-latas são mais dóceis do que tantas raças "bonitinhas". E também, com filhote você vai ter uns dois anos de muita energia ativa (e comendo tudo que enxergar na frente). E alguns são muito ativos! Hahahahahah. Então, pense um pouco, os velhinhos abandonados, só querem carinho, e vão gostar de estarem tranquilos apenas perto de você.


Vamos em frente.

Em termos de custos, manter uma instalação profissional Linux custa pelo menos, tanto quanto Windows, vai precisar de gente capacitada e, de uma documentação muito boa senão a herança certa vai ser a reinstalação quase geral só para que os herdeiros consigam se achar e saber como funciona a bagaça toda.
Em pequenas empresas, umas poucas dúzias de máquinas, isto vai custar caro.
Mas com certeza uma instalação destas com milhares de máquinas até pode valer a pena, assim você vai ter apenas uma dúzia de profissionais de suporte de alto nível e muito bem pagos senão o concorrente que paga melhor vai levar eles facilmente. Pelo menos no aspecto simples de ter sua rede funcionando, nada a ver com as soluções de software.

Portanto, faça as medidas. Instalar a rede e manter funcionando é uma coisa. Mas o software aplicativo necessário para sua empresa funcionar é outra coisa totalmente diferente.

Sr. Empresário entenda isto por favor: Linux e Windows são o sistema de base sobre o qual os aplicativos, os sistemas, o software que fazem sua empresa andar serão instalados e cada um tem diferentes formas de serem construídos. Alguns programas (vamos simplificar assim) serão os mesmos para milhares de pessoas usarem. Outros serão específicos para algumas áreas apenas. E ainda assim, alguns deverão ter relação com uma quantidade imensa de outros sistemas na sua empresa ou de seus clientes e fornecedores.

Então pense, que tal adotar uma solução barata, mas que seus clientes e fornecedores imediatamente terão problemas para usar porque todos eles usam uma plataforma diferente?
Ou que tal ver seu departamento de logistica prejudicado porque precisa de algo específico mas tem que lutar diariamente com alguma coisa que atende todo mundo, menos o que eles precisam?

Se eu usar a palavra prejuízo ajuda a entender? Ou tem que desenhar?

(Entra música suave de fundo).

Trabalhei com mainframes IBM, depois com Unix, gosto muito do Linux (quando tem uma equipe de suporte adequada). Mas enquanto o funcionamento pré-histórico para instalar a coisa mais básica do mundo for movida a muitas linhas de comando, sem ter um instalador no  mínimo decente, que já existe no Windows faz mais de vinte anos, eu vou manter minha preferência de usar melhor meu tempo, não desperdiçar trabalho com repetição injustificada de comandos quando o desenvolvedor do software, deveria ter sido um pouquinho só mais caprichoso e criado um arquivo chamado "Instalar".

E aquele editor VI do Unix/Linux? Usei muito. Assim como usei intensivamente o XEdit do ambiente VM/CMS nos mainframes IBM na década de 80. É um editor de texto mais do que pré-histórico e tem quem defenda isso. Até um amigo de quem gosto muito. Mas é como gostar de dirigir automóveis nos 50. Eu diria um hobby, Ok. Eu também gosto de órgãos Hammond, verdadeiros clássicos. Mas usar editor de linha para para trabalho profissional? Olha, eu sou um dinossauro da computação, mas não tenho saudade nenhuma de cartão perfurado! Quem é o dinossauro? Desde sempre desejei recursos melhores. Eu quero e faço questão de uar editores com recursos gráficos e versáteis. Cadê a produtividade em usar quinquilharia? Para mim, só curiosidade histórica ou hobby. Cada época teve sua tecnologia e editor de linha é coisa de antes dos anos 80, com os primeiros terminais de vídeo! Prove que sua mãe é virgem (respeitosamente num sentido figurado é claro) e eu mudo de opinião e até abro uma religião a respeito. Desculpa, mas sempre pensei em computação como sendo algo para ajudar a nossa evolução.

Voltando ao Office, recurso tem até demais. Aliás, como toda suíte Ms-Office, a maior parte não é sequer conhecida por aqui. Acho muito importante aprender e explorar suas potencialidades que certamente trarão muitos benefícios, mais produtividade e qualidade. Ou seja: lucro para sua empresa!
A Microsoft com muita frequência oferece palestras e cursos que mostram tudo isto. E os fóruns internacionais, onde são os  usuários que debatem, aprende-se muito.

Repito, melhor do que simplesmente cortar custos, é aumentar seu faturamento e rentabilidade utilizando bem os recursos.



Texto original em 27/01/2010. Editado em 03/06/2016.

.'.

Link para a matéria do Ery Jardim: Você é produtivo no pacote Office?

quinta-feira, 5 de novembro de 2009

Como ser um bom programador

Foto: riebschlager

Como ser um bom programador


Programação é uma atividade intelectual, racional, emocional, artistica, espiritual e mística. Tudo depende do como cada pessoa vai trilhar este caminho.

Seguindo na proposta de comentar sobre otimização, desenvolvimento e outras coisas, coloco então algumas observações que tenho coletado, observado e principalmente, vivenciado nestes anos todos.

Tornar-se um bom programador tem a ver com desenvolver suas habilidades pessoais em primeiro lugar. Ter gosto pelo estudo mas sem se apegar a dogmas e paradigmas. Estar pronto a revisar conceitos. Procurar fazer o melhor de si.

Claro que aprender tecnologias é importante, mas de nada adianta decorar milhares de parágrafos de informação se na parte da interação social entre você e as demais pessoas, o computador ficar como uma barreira.

O programador realiza a tarefa de projetar em detalhes e traduzir para o computador uma determinada tarefa humana. É isto que deve ser lembrado, os computadores devem estar a serviço da humanidade e é por isto que é sempre bom aprender sobre as pessoas.

Nosso trabalho é aprimorar as maneiras de se conseguir isto, mesmo que seja trabalhando muito mais para que outros possam trabalhar muito menos.

Acredite que você pode fazer melhor e trabalhe para isto.

Se você encontrar algo errado, arrume. Não interessa quem fez, se está na sua mão é responsabilidade sua melhorar ou resolver o problema.

Simplifique a vida do usuário. Seu programa deve ser simples e fácil de usar. Inclua tratamento decente de erros, com mensagens claras e objetivas. Crie tratamento automatizado para os erros mais comuns.

Teste seu programa de todas maneiras. Teste seu programa de todas maneiras. E principalmente, teste seu programa de todas maneiras. Só porque tem um botão na tela, não pense que alguém vai clicar direto nele. É mais provável que vão fazer de tudo, e as vezes, até clicar o maldito botão.

Documente seu código. O código deve ser claro, auto-documentado. Evite siglas e menmonicos, prefira nomes auto-explicativos.

Use bem os recursos de máquina. Boa performance economiza tempo, energia e ajuda a conservar o meio ambiente.

Dedique o tempo necessário para conseguir uma boa solução. Mas não gaste mais tempo do que o benefício que se pretende conseguir.

Identação de código é obrigatório. Desculpe, mas se você não entende nem isto, por favor, mude de ramo, esqueça programação e nunca mais chegue perto de um programa.

Lembre que algum dia alguém vai ter que mexer neste programa. Pode ser até você mesmo, mas com certeza, os comentários e clareza do código serão de imensa ajuda.

Evite malabarismos desnecessários só para mostrar que aprendeu alguma mágica diferente.

Elimine código inútil ou sem uso.

Fuja do código spaghetti tanto quanto possível.

Divida o programa em pequenas secções, use funções, etc.

Pense no que está fazendo. Longas cadeias de IFs ou IFs quilométricos, que se extendem por páginas e páginas são uma fonte certa de dor de cabeça e não tem a mínima justificativa.

Faça modelos ou programas de exemplo para testar o funcionamento das diferentes partes, algoritmos e/ou funcionalidades.

Nenhum otimizador de programa ou SQL ou seja o que for, vai fazer milagre se o seu código for mal feito. Pode até melhorar um pouco e virar um código mal feito otimizado. Otimizadores funcionam bem mesmo é com código razoavelmente bem feito. Nenhum deles vai fazer milagre em arrumar lógica absurda.

Máquina mais rápida faz código ruim rodar um pouco menos devagar. Melhore o código até chegar ao equilíbrio entre tempo de desenvolvimento versus custo de hardware.

Lembre, programar é a arte de dizer ao computador quais são os passos que deve executar com as informações. Ponto. Portanto, estude lógica e pratique.

Verifique, compile, teste seu programa com frequencia.

Leia seu código fonte. Quanto mais você ler o código fonte, melhor vai ter compreensão dele.

Use padrões.

Reutilize código que funciona. Crie funções genéricas para atender necessidades comuns.

Use sua auto-crítica.

Otimize. Reotimize. Melhore e aperfeiçoe.

Adote um padrão de codificação.

Foto loupiote (Old Skool)

Não seja preguiçoso. Fazer algo correndo pode lhe custar dez vezes mais tempo mais tarde. Ao invés de ser preguiçoso, use sua criatividade para desenvolver ferramentas que vão tornar seu trabalho mais fácil. Lembre, no início havia apenas a linguagem de máquina. Depois algum programador criou o Assembler e as linguagens de programação que facilitaram tudo.

São os programadores quem vão criar as ferramentas que serão usadas amanhã, portanto, não espere encontrar tudo pronto nalguma ferragem.

KISS. Sigla de "Keep It Single Stupid". Tradução: Faça isto simples estúpido!

Código bom é código simples. Mesmo que seja uma rotina complexa, pode ser feita com clareza a objetividade.

Não se case com nenhuma idéia. A pior coisa é você estar atrelado a uma grande idéia e ter apenas uma única grande idéia.

Mantenha contato com seus superiores e usuários para saber se vocês estão indo na mesma direção.

Converse com outros desenvolvedores para debater sobre o código, algoritmos, metodologias, etc. Conversa de bar está liberada.

Mantenha-se informado e adote novas tecnologias sempre que adequado.

Estudar novas tecnologias e também outras áreas, incluindo ciências humanas, lhe trazem idéias, inspiração e conhecimento sobre diferentes maneiras de fazer as coisas, de pensar, analisar e solucionar problemas.

Aprenda outras linguagens e principalmente, aprenda a programar de maneira diferente pois cada linguagem tem conceitos diferentes. Se você faz a mesma coisa com linguagens diferentes, está desperdiçando o potencial que cada ferramenta possui. É por isto que vejo tanto programa spaghetti feito em linguagem Java!

Não existe uma linguagem que seja ótima para tudo. Se necessário, adote linguagens que possam ser complementares, utilizando o melhor de cada uma, de acordo com a necessidade a ser atendida.

Pense para o futuro! A sigla de tecnologia da moda de hoje, será ultrapassada em dois anos.
Em cinco anos você vai descobrir que a linguagem atual é muito mais parecida com a linguagem de 20 anos atrás do que você pensa.
Em dez anos você vai saber que os princípios continuam os mesmos, apenas temos ferramentas melhores, hardware mais rápido e barato.
Boa parte das melhores ferramentas de hoje, foram idealizadas e desenvolvidas pelos que já pensavam nelas a 20 ou 30 anos.
Se você duvida, é só ler os livros e manifestos dos anos 70 e 80.

P+
05/11/2009

.'.

quinta-feira, 29 de outubro de 2009

Adicionar Hardware Não Compensa Software Lento

Relação de Amor e Ódio
Foto: Jay Murdock

Adicionar Hardware Não Compensa Software Lento
29/10/2009

Por causa da redução do preço do hardware ou limitações de desenvolvimento (tempo, experiência, etc), tornou-se prática comum colocar mais máquinas para compensar o fraco desempenho dos sistemas.

Além de maior consumo de energia e dos impactos ambientais, isto não significa tanta melhoria assim nos resultados.

"Você é programador? Quer fazer algo pelo meio ambiente e mesmo, fazer do mundo um lugar melhor? Então comece a otimizar seu código! - Jeff Atwood."


Simplesmente colocar mais equipamento tem sido a solução preferida ao invés de fazer o software rodar mais rápido com o hardware existente. Fazer mais com menos é uma regra importante a ser lembrada, tanto quanto a Lei de Wirth: "Software fica lento mais rápido do que o hardware acelera."

Como resultado, isto anula os ganhos com a Lei de Moore!!! O hardware fica mais rápido a cada 18 meses, mas o software dobra de tamanho, fica maior, mais lento.

Jeff Atwood sugere alguns passos para começar:
  1. Coloque hardware mais rápido e barato para o problema de performance.
  2. Se o aplicativo atingir sua meta de performance, pare por aí mesmo.
  3. Faça benchmarks para determinar aonde estão os problemas de performance do seu software.
  4. Analise e otimize as áreas que você identificou no passo anterior.
  5. Se agora o aplicativo atingir sua meta de performance, pare por aí mesmo.
  6. Volte ao passo 1.

Outra coisa importante a observar é quais aspectos otimizar, como por exemplo, a interação com o usuário. Um tempo de resposta de até um segundo é até aceitável. A partir de um segundo, isto já chama a atenção do usuário e pode começar a irritar. Se passar de dez segundos (máximo!), o usuário vai perder a linha de raciocínio e passar a fazer outras coisas enquanto espera.

Para grandes volumes de dados também existirão os aspectos de tempo de execução e da quantidade de volumes alocados durante o processamento, que certamente afeta outras tarefas que poderão estar sendo feitas.

Otimização de performance envolve mais testes e menos adivinhação. Quando se pensa numa escala de milhões de operações por segundo, qualquer detalhe pode ser importante. Mas também existem detalhes que tomam tempo e não valem a pena otimizar.

Com certeza, a otimização requer conhecimento efetivo e prática dos recursos e técnicas adotadas.

Pessoal com menos experiência vai ter melhores resultados se trabalhar em grupo e utilizarem intensos benchmarks para analisar cada porção do software.

E claro, isto vale para mim e para todos: Sempre estude. Procure aprender de quem sabe mais que você. Graças a internet, hoje alguns dos melhores programadores do planeta mantém sites, blogs, etc com um amplo conjunto de informações e código fonte que merecem ser cuidadosamente estudados.

Dica: soluções de estruturas de lógica, de "como fazer", podem ser feitas com diferentes linguagens, portanto, amplie seu foco de estudos. Como se diz faz décadas, basicamente "quase tudo são IFs e assinalamentos."

As vezes, descobre-se que seria mais desejável reescrever o software. Isto deve ser considerado quando:
  1. O código for efetivamente ruim ou mau feito;
  2. A solução atual puder ser realmente melhorada;
  3. Houver incompatibilidade na maneira que o código faz o processamento, em relação a algum outro recursos, normalmente externo.

E lembrando, muitas vezes o código é reescrito apenas porque o programador não entendeu o que foi feito. Geralmente falta estudar o código. Portanto, antes de qualquer coisa, estude o código e a solução de lógica adotada, conheça a ferramenta ou linguagem que está usando.

Soluções de automatização de performance, como as existentes nos gerenciadores de banco de dados e, em certas linguagens de programação, podem muitas vezes ser uma armadilha. As pessoas acham que o computador vai resolver sózinho o trabalho de melhorar a execução do código, mas esquecem completamente que isto vai ser feito de acordo com algumas regras padronizadas. Logo, com frequencia os resultados podem ser bem fracos em relação ao esperado.

Algum tempo atrás já comentei algumas coisas em relação a isto, citando casos bem reais, no tópico "Performance, quando a culpa não é do banco de dados".

Vamos continuar abordando este tema em posts futuros.

.'.

terça-feira, 27 de outubro de 2009

Defeitos dos profissionais de informática?

Computer Control Room
Imagem:
Ryudenki Tori Kamiya


A coisa que mais escuto, é que todo pessoal de informática fala uma língua que ninguém entende.

Todo mundo entende a língua de médicos, engenheiros, bruxas, economistas, cozinheiros, etc...

Mas as PESSOAS NÃO NOS ENTENDEM!!!

Discutimos numa língua esquisita que ninguém sabe.

Não acho que arrogância seja problema, isto tem em toda profissão.

Humildade? Tente conversar com pessoal da Odontologia ou de Comércio Exterior antes de questionar a imensa e profunda humildade de um profissional de informática!!!

Minha muito humilde opinião, é que temos um problema de IDIOMA. Isto mesmo.

Não nos comunicamos com os malucos dos usuários porque ELES não entendem NOSSO IDIOMA.

E olha que além de Inglês e Espanhol fluentes, tenho noções de alemão, francês e italiano.

Fazem anos alguém disse que depois da linguagem de programação, a linguagem mais usadas pelos programadores é a linguagem obscena.

O resto, meus defeitinhos pessoais, são coisinhas insignificantes, como meu perfeccionismo e detalhamento extremo, ler manual no banheiro, rede LAN em casa, licença QUENTE de Cobol, Clipper, Delphi, Visual Basic, Access, etc, gastar um tempão para que um programa seja completamente a prova de operador.

Convenhamos, fazer o programa aceitar clique do mouse fora do campo sem cancelar ou enlouquecer o processo é básico.

Eu confesso! O grande defeito, não é o profissional! É o USUÁRIO.

Colossus, HAL 9000 e outros, serão lembrados como mártires!



.'.

quarta-feira, 14 de outubro de 2009

Prestação de Serviço

Gerar novas sementes, criar novos sistemas.
Foto: Altus




Como trabalhar sempre é bom, aproveito para fazer um pouco de "shameless self-promotion" (auto-promoção).


Na área de informática:

Desenvolvo sistemas sob encomenda, soluciono coisas complicadas, otimização de performance, tratamento de grandes volumes de dados, migrações, recuperação de dados, etc.

Trabalhos que precisem de um elevado grau de detalhamento e complexidade, qualidade, técnicas de inteligência artificial, interação em alto nível com usuário (sistemas easy to use), performance elevada, atender necessidades especificas ou que não tenham similares, etc.

Alguns sistemas que trabalhei são PCP de Vestuário (chão de fábrica), Advocacia Tributária, aplicativos Ms-Access com programação VBA avançada, SPC, Patrimônio, ERP, Administração, etc.

Meu portfólio de ferramentas é bem abrangente. Não sou casado com nenhuma tecnologia, o que me permite escolher o que achar mais adequado para cada situação. Tenho ampla vivência com Ms-Access, VBA, PHP, JSP, Java, Ruby, Python, Clipper, Cobol, Accell, etc, etc


Na área humana:

Os vários artigos do blog apresentam meus trabalhos em várias áreas como ocultista, e estes ensinamentos fazem parte do processo da vida humana, seja pessoal, seja profissional.

Uma empresa é um organismo vivo e interage com  todos seus membros, portanto podemos ter diferentes abordagens que nos forneçam diferentes visões para pesquisar e buscar melhores níveis.


Busco a evolução como caminho lógico para todos os seres que desejem encontrar e buscar seu caminho.

.'.

segunda-feira, 5 de outubro de 2009

Valor de ferramentas, terceirizações, produtividade, etc

"The minimum amount of knowledge required for the task to be carried out with an acceptable degree of success."
Foto Edward Bilodeau

Valor de ferramentas, terceirizações, produtividade, etc
05/10/2009

Revisando alguns posts, estava observando este, de 2003, em que debatiamos alternativas para continuidade de sistemas desenvolvidos em Clipper.

O resultado, foi que comentamos sobre qualidade de serviço, terceirizações, além é claro, sobre o valor das coisas.

Segue-se mais um post, que colocarei aqui mais tarde, para deixar claro que não estou dizendo que grátis é ruim, muito pelo contrário.

O que estou dizendo, é que tudo tem valor e devemos cuidar de como encaramos isto.


Esta mensagem foi postada no excelente fórum Clipper-Br do Yahoo Groups, dedicado a linguagem Clipper e linguagens do padrão xBase.


Data: Qui Jun 5, 2003 2:33 pm
Assunto: Re: X-HABOUR p/Gilberto

Carlos. escreveu:

porém vc não consegue desenvolver nenhum tipo de trabalho de alta
qualidade sem que ele receba críticas.

Pura verdade.

Sandro escreveu

objetos do xBase++. Inconvenientes do xBase++: é pago, caro e ....
.......

Ôôôpa!!!

Seguem meus comentários:


O fato de ser PAGO é justamente um critério que permite que as pessoas que estão trabalhando recebam pelo seu serviço e possam no mínimo sobreviver. ISTO É UMA QUESTÃO ÉTICA, que é justamente assegurar as pessoas que recebam uma justa renumeração pelo seu trabalho. Posições públicas de que este ou aquele software é ruim porque é "pago" induzem mais ainda, aos MAUS empresários, aos que tem visão "limitada" e aos espertalhões em geral, de que podem exigir que os outros trabalhem de graça ou por valores abusivamente baixos.

Caso você não saiba, hoje em dia muitas empresas oferecem serviço "temporário", sem nenhum vínculo legal, nem estabilidade, nem horas extras, pelo mesmo que se paga para, por exemplo, um cobrador de ônibus, que é também uma profissão digna como todas as outras.

Isto é muito ruim, pois as empresas PERDEM muito mais do que pensam ridiculamente estar economizando, pois trabalhadores temporários não geram algo importante que é conhecido por "CULTURA EMPRESARIAL".

O know-how vai embora todos os meses pelo ralo da economia mal feita.

Se você tirar o açúcar, o café fica uma droga né? Além disto, algums empresas além de fazer a nociva "economia de cafezinho", fazem pior, fazem "economia de água".

Alguns resultados disto:
  1. o conhecimento é perdido e tende a surgir uma desorganização constante. Mesmo pequenos padrões são difíceis de manter e perdem-se a cada mínima mudança na equipe.
  2. na sua maioria, os profissionais não vão fazer tudo que sabem ou poderiam;
  3. não se desenvolvem realmente muitas técnicas novas;
  4. não vai existir empenho nem motivação em alguém que sabe que vai ser descartado;
  5. é uma prática predatória, portanto, fatalmente vai extinguir sua fonte.

Ferramentas pagas, ajudam a lembrar aos seus usuários, que os técnicos também são pagos. E também que a formação técnica, como treinamento, atualização e disponibilidade de recursos para aprendizado é responsabilidade das empresas e não apenas dos funcionários. Ou por acaso alguém é maluco para comprar por conta própria uma instalação completa de algum DB só para aprender como funciona e depois dar "de grátis" para empresas que não valorizam o trabalham e pagam mal?

Grandes empresas migram para Linux e outras ferramentas, porque é "de grátis". Depois seus diretores compram um terno Giorgi Armani novinho, fazem declarações modernistas lindas de morrer (de rir) na revista Info, Exame, ComputerWorld, etc enquanto reduzem o salário e despedem programadores e analistas achando que eles também devem trabalhar de graça.

Minha posição sobre software "de grátis" é amplamente pública: 
Se não tiver alguma renumeração DIGNA para quem faz e quem mantém SOU CONTRA. 
 
Isto inclui xHarbour, Linux e tudo o mais. Tudo bem que existam alguns laboratórios com "alguma" verba governamental, mas daí a não terem uma responsabilidade de gerar resultados reais, ou seja, gerar seus próprio sustento, acho muito preocupante.

Sabem por que nos países desenvolvidos Empresários (com "E" maiúsculo) investem pesado em projetos e pagam bem suas equipes?

Simplesmente porque vivem do que fazem e seus projetos visam lucro e desenvolvimento de empresas.

Quem é que vai fazer algo assim se a empresa que trabalha não precisar gerar lucro nenhum? Se o café da manhã sempre for servido na cama, a pessoa nem se levanta mais e suas pernas atrofiam.

E não, note bem, não tenho dinheiro para pagar por todas licenças de software que gostaria de ter, por isto:
  1. uso só as que posso.
  2. uso as que estão compartilhadas no mercado e que servem também como promoção de seus autores. Está de uso corrente uma versão limitada que é free e outra que é paga, o que ajuda a manter o negócio andando.
  3. sempre presto créditos a tudo que uso. É o mínimo que posso fazerpara retribuir.
  4. considero que parte de meu trabalho assalariado é ajudar a manter estas ferramentas. Ou seja, a empresa me paga para prestar colaboração no mercado.

Foto: PaDumBumPsh

Uma coisa é termos ferramentas elaboradas com a participação de milhares de pessoas, em regime de colaboração e assistência mútua, levando ao crescimento coletivo.

Agora, outra coisa totalmente diferente é alguém dedicar-se em tempo integral para algo que é entregue sem qualquer renumeração. Vai viver de que? Papai e mamãe vão sustentar toda vida? Empreguinho que titio e padrinho querido arrumaram passando por cima de todo mundo?

Veja, nem todo mundo tem a possibilidade de estar, por exemplo, literalmente "mamando" numa empresa estatal para sair por ai fazendo propaganda do software livre, quando tem seus salários gordinhos assegurados por conta de impostos cobrados das empresas (coitadas) que tem de vender e (conseguir) receber pelos seus trabalhos. Além do que, estando assegurados pelo concurso público, alguns não se importam em tratar realmente mal os coitados dos clientes que eventualmente a empresa tenha. Qualquer problema, o governo paga a conta (ou seja os impostos cobrados...)
Claro que boa parte do pessoal do funcionalismo público é boa gente, mas não sou cretino para negar que o lixo continua todinho lá, atrapalhando quem tenta trabalhar direito.

Por favor, sugiro que repense nestas palavras, pois eu realmente não posso trabalhar de graça para ninguém. Cada vez que faço isto, a energia elétrica é cortada, falta comida na minha geladeira, eu não posso comprar sequer um sapato.

Eu adoro ensinar as coisas que sei, colaborar com os demais e me entusiasmo ao desenvolver coisas novas e sofisticadas, mas de graça, eu só mostro uma fração do que sei e posso fazer. Colaboro aonde posso, mas tenho sempre a visão de que este é meu trabalho, minha fonte de sustento, portanto, preciso fazer  propaganda e mostrar um pouco do que faço para os demais.

Quanto a ser caro, tem preço para tudo. Já comentei uma frase que vi na correspondência de uma grande empresa estrangeira que explicava que:
 "a BMW não baixa o preço se você só tem dinheiro para comprar um Chevette."


Nota:
Meus comentários são minha opinião e não refletem opiniões e/ou ideais do meu empregador.



.'.

quarta-feira, 30 de setembro de 2009

Funcionar não significa bem feito (nem seguro)

"The Fabric of Clouds"
Foto himitsuhana (Chiara Fersini)


Estava lendo o blog do Jeff Atwood e encontrei este post:


"As a software developer, you are your own worst enemy. The sooner you realize that, the better off you'll be. In fact, that's the tipping point between amateurs and professionals in our industry: the professionals realize everything they write sucks."

O texto comenta sobre fazer as coisas bem feitas, ou resolver na base do "remendo" (gambiarras).

Logo adiante, um visitante deixou esse comentário bem pertinente:

"MarketGarden: That is why we do not hire programmers unless they have 5 years of experience. Its money well spent as we do not have to deal with any snot-nosed punks who think they know it all, but obviously do not."


Um pouco irônico, pois nem todos novatos são punks, muitos são da geração-saúde ou mauricinhos (risos).
Mas concordo com o tempo mínimo para alguém (na média de 99% do mercado) começar a ter condições de programar decentemente.

Isto não é ofensa para ninguém, pelo contrário. Se assim fosse, a faculdade de medicina liberaria todo mundo para fazer cirurgia cardíaca logo no primeiro ano, e o tempo de residência clinica deixaria de ser obrigatório.

Ninguém nasce sabendo. Eu também já fui novato. Eu também já quis ser expert em tudo que havia. Mas independente do meu talento natural precisei estudar e praticar, e nunca mais parei de me atualizar. Também precisei viver e conhecer as pessoas e tornar-me adulto. Tive como colegas vários profissionais muito bons, que foram meus mentores, e estimularam o gosto pela pesquisa, atualização e principalmente fazer seu serviço bem feito!

É necessário ter autocrítica. Claro que às vezes uma gambiarra resolve o problema. Mas ficar meses e meses empilhando remendos ao invés de reescrever o código que está errado é perda de tempo e dinheiro.

Escovar bits em excesso é uma coisa nem sempre necessária. Mas procurar trabalhar sempre com capricho e boas técnicas é essencial.

E principalmente, gostar de estudar.

Então:
Someone may tell me why in our country, every job advertisement ask for english but in 99,99999% nobody is able to talk with english with me, nor at interview, nor daily?

Tradução: Alguém me diga por que em nosso país, em qualquer anúncio de emprego pedem inglês, mas em  99,99999% das vezes praticamente ninguém da empresa é capaz de falar em inglês comigo, nem na entrevista nem diariamente?

Entendeu?

.'.
 
Related Posts Plugin for WordPress, Blogger...