Tag: filosofia

  • Transpire Qualidade

    Transpire Qualidade

    Na biografia do Steve Jobs escrita pelo Walter Isaacson, tem um trecho em que o biografado fala sobre a influência que o pai dele deixou para ele na criação de produtos.

    Ele conta que o pai gostava de fazer alguns trabalhos de marcenaria por passatempo e que um dia ele estava corrigindo um pequeno defeito na parte interna de um guarda-roupa que ele havia terminado de construir.

    O Jobs vê o pai investindo um esforço enorme naquele conserto, pergunta:

    — Pai, esse defeito está do lado de dentro… ninguém vai ver ou se importar com isso.

    No que o pai dele responde algo como:

    — Eu vi e por isso me importo.

    O mito e as histórias criadas sobre o Steve Jobs mostram que ele sempre foi obsessivo pelos detalhes dos produtos que ele ajudou a criar até os mínimos detalhes internos das placas de circuito impresso.

    Ele fazia isso porque ele entendia que o cuidado com as todos os aspectos do produto “transpiravam” para a qualidade geral dele. Ele também fazia isso porque era um tremendo babaca, mas isso a gente pode discutir em outro momento.

    Seu código transpira

    Várias vezes ao longo da minha carreira esbarrei com empresários, gestores, profissionais da área de produto e até mesmo desenvolvedores que diziam que a qualidade do código não era tão importante quanto o fato do produto estar “funcionando” e “entregando valor para o cliente”.

    Será mesmo? Será que teu cliente sabe que aquele software porcaria que ele está usando poderia ser muito melhor, mais eficiente, mais estável, etc.?

    Vamos ser honestos… vocês não estão de saco cheio de usar software lento e cheio de problemas? Vocês já tentaram comprar passagem aérea recentemente? Fazer um PIX no aplicativo do seu banco? Já tentaram resolver um problema com seu pedido em um site de e-commerce?

    Sabe porque a nossa vida é miserável assim? Porque toda a engenharia de software está mais comprometida em desenvolver software do que refatorar software.

    Afinal de contas, todos os “stakeholders” estão interessados em vender mais, faturar mais, aumentar o “market share” e se, por exemplo, aquele sisteminha de rastreamento de encomenda está mal-feito ou com uns bugs que afetam só 1% dos usuários pode deixar lá.

    O custo de refatorar esse sistema para ele funcionar melhor seria muito alto e esses recursos seriam melhor empregados implementando um sistema de venda de publicidade para aumentar as vendas no site, não é mesmo? E aqueles 1% dos usuários afetados pelo problema já compraram, não é mesmo?

    Para os “stakeholders” é melhor investir em uma funcionalidade que aumenta o faturamento em 5% imediato do que arrumar um sistema que afeta somente 1% do que já foi faturado.

    Aquele pequeno “TODO”

    E se você está pensando que estou falando apenas dos grandes sistemas e serviços, você está enganado. Estou falando daqueles “TODO” e “FIXME” espalhados pelo seu código.

    Estou falando daquele backlog de consertos e refatorações que nunca é priorizado pelo time. Daquele código “vizinho” ao seu que está cheio de problemas e que não será melhorado porque está fora do escopo da sua tarefa.

    Quando eu trabalhava diretamente com software livre e open-source era muito comum você encontrar melhorias para fazer no código conforme você ia desenvolvendo seu próprio código. Se você mandasse seu código sem melhorar o outro código vizinho provavelmente rejeitariam sua contribuição até que você fizesse tudo direito.

    Fazer isso em uma empresa tem se mostrado quase impossível.

  • Comunicação Indolente

    Comunicação Indolente

    Sou extremamente entusiasmado com tecnologia e adoro até mesmo aquelas tecnologias que chegam pra quebrar tudo que já existe. Tecnologias disruptivas, na maioria das vezes, empurram a sociedade pra frente. Na terminologia usada na política eu seria chamado de “progressista”. O oposto de um “conservador”.

    Mas ser um progressista não deveria impedir as pessoas de apontarem os problemas causados por novas tecnologias. É necessário que isso aconteça para que a sociedade coloque essas novas tecnologias problemáticas como pauta para novos “progressos”.

    Tecnologias usadas nas redes sociais, os tais “algorítmos”, produtos construídos no bojo da Inteligência Artificial (Machine Learning, Deep Learning, etc), Deep Fake, e etc já estão se mostrando bastante problemáticas em muitas aplicações. Não quero que elas acabem (até porque seria impossível) mas precisamos entender elas melhor e ajustar o seu uso.

    Mas não pretendo tratar desses grandes tópicos aqui. Eu sequer teria capacidade para abordar esses assuntos. Vou tratar de uma tecnologia bem mais prosaica: as novas ferramentas de comunicação empresarial.

    Vou falar sobre o Slack mas acho que os pontos aqui também se aplicariam a ferramentas similares como o Teams, Rocket Chat, e até certo ponto, o Discord. E vou falar mais do Slack porque é a que tenho usado por mais de 5 anos infelizes.

    Comunicação

    Existe uma classe de medicamentos chamada de “genéricos”. A piada (ruim) diz que os medicamentos genéricos servem para curar problemas genéricos.

    Se existe uma classe de problemas genéricos essa classe é a dos “Problemas de Comunicação”.

    Eu aposto uma jujuba que em quase toda reunião de feedback, sprint review, ou post-mortem/lessons-learned, alguém vai logo dizer “ah! mas isso foi um problema de comunicação”, ou, “acho que é só a gente melhorar a comunicação”.

    A comunicação… ah essa malvada! Sempre essencial e importante e tantas vezes negligenciada.

    A comunicação é composta de vários elementos: emissores, receptores, mensagens e meios e para que ela funcione bem todos esses elementos precisam funcionar corretamente. Se tudo isso funcionar corretamente a gente acaba com uma comunicação efetiva.

    Não importa se a comunicação é síncrona, assíncrona, rápida, lenta, detalhada, superficial, urgente, importante, online, offline, etc. Tudo isso pode variar e mesmo assim você pode ter uma comunicação efetiva.

    Vai falar que comunicação assíncrona é melhor para aquele cara que quer avisar que o sistema principal da empresa caiu. Uma plataforma de chat, um mensageiro eletrônico ou até mesmo um telefone são muito mais adequados para comunicar essa ocorrência do que um e-mail em um grupo de discussões, um telegrama ou uma carta.

    O oposto disso seria o processo de comunicação necessário na criação de um novo produto. Não me parece que usar um chat seja o melhor lugar para conduzir a comunicação necessária nesse processo.

    Imagine todas aquelas informações importantes sobre o projeto morrendo na timeline do chat como se fossem lágrimas na chuva.

    Nesse caso uma reunião presencial (quando possível), uma reunião online com um documento compartilhado ou uma thread em um bom fórum/grupo de e-mail funcionaria bem melhor. No caso do fórum/grupo você ainda incluiria aquele coleguinha que não pôde participar da reunião por um motivo qualquer (ex. férias, doença, compromisso pessoal, …).

    Indolência

    Eu comecei esse artigo com uma reclamação no Twitter. Logo vi que parte das pessoas não entenderam muito bem o meu ponto por lá. Sabe porque? Porque o Twitter é uma péssima ferramenta de comunicação para expressar tudo o que estou colocando aqui.

    Por esse motivo achei importante escrever exatamente o que eu penso aqui. Um meio muito mais adequado para comunicar ideias mais elaboradas. Eu precisei ser menos indolente (slack) e menos negligente (slack) na minha comunicação.

  • Negócios na “internet fechada”

    Negócios na “internet fechada”

    Já faz algum tempo que acompanho o desenvolvimento de novos negócios de tecnologia ao redor no mundo. Por conta disso participei e participo de vários eventos dessa área no Brasil. Eventos onde empreendedores apresentam suas idéias, fazem seus pitches, demonstram seus produtos e buscam melhorar o seu relacionamento com outros empresários, investidores e até mesmo com seus clientes.

    Nessas apresentações eu já vi todo tipo de negócio na área de tecnologia. Negócios que funcionam nos mais diversos tipos de plataformas. As plataformas mais comuns são a Web e a Mobile.

    Quando um empreendedor começa a desenhar o seu modelo de negócio ele precisa pensar em diversas coisas e nesse processo ele eventualmente se coloca em uma armadilha que dei o nome de “internet fechada”. Já explico o que isso significa.

    Todo mundo sabe que a internet é uma rede aberta, com padrões e protocolos abertos. Essa abertura da internet permite que você faça o que bem entender com ela (desde que não seja ilegal) sem se preocupar com nada. Na internet aberta ninguém tem poder de te censurar sem motivo razoável.

    Mas existem plataformas dentro da própria Web onde existem regras mais rígidas que mudam frequentemente.

    Se o empreendedor baseia toda a sua estratégia de negócio e desenvolve uma aplicação Web para o Facebook, por exemplo, ele fica sujeito às regras do Facebook. E no Facebook eles mudam essas regras o tempo todo.

    O risco do Facebook inviabilizar o negócio desse empreendedor é muito alto. O empresário está lá trabalhando para aumentar a sua empresa e num dia de manhã, quando abre a sua Inbox, dá de cara com uma “Alteração nos Termos de Serviço”. Nessa alteração o Facebook proíbe ele de fazer algo essencial para atender os seus clientes.

    O impacto dessa mudança nos Termos de Serviço pode até não ser fatal mas certamente vai dificultar muito as coisas para esse empresário.

    Outra característica das plataformas fechadas é a de que os clientes nunca serão 100% do empresário em questão. Os clientes são da tal plataforma. Ou você acha que o Facebook vai te entregar os usuários deles?

    Quando eu conversava sobre esse assunto com um amigo que desenvolve Apps para celular ele me perguntou se o mesmo não acontece nas lojas de aplicativos? Ele citou dois problemas principais: as regras mudarem de forma a impedir que sua App seja vendida na loja e o caso onde a fabricante da plataforma (ex. Android ou iOS) fornece uma App parecida com a sua integrada no aparelho.

    No primeiro caso o problema é bem parecido com o da internet fechada. O segundo não.

    A Apple é bem conhecida por suas mudanças de regras que levam empresas inteiras a passarem por dificuldades. Apps que promoviam outras Apps sofreram muitas restrições de funcionamento. Outras que vendiam livros, música, filmes, etc… sofreram barbaridade com a proibição de vendas a partir da App.

    Pense nos empresários que investiram alto para criar esses produtos e acordaram um dia sem nada. Se a App estiver disponível para Android a coisa fica menos pior mas o impacto vai ser grande mesmo assim. No mundo do Google/Android a coisa é um pouco mais tranquila mas o risco está lá.

    O segundo caso, quando uma a fabricante lança uma App similar já integrada com o SO, é diferente porque ela não proíbe você de negociar sua App.

    Para resolver esse problema é só o empresário fazer a App dele ser preferida pelos seus clientes. A Apple tem o iMessage nem por isso o WhatsApp sofreu. As coisas ficam mais difíceis mas não impossíveis.

    Portanto, a dica que fica para os futuros empreendedores é: não amarre o seu “core business” à internet fechada.

    Integre sua aplicação com o Facebook, Twitter, etc. sem problemas. Mas faça isso de um modo onde seja possível trabalhar também de forma desacoplada: na internet aberta.

  • E os programadores, onde erram?

    O @marionogueira provocou e eu vou responder.

    Carreira de programador

    Mas antes vou explicar porque eu compartilho da visão de que o trabalho de desenvolvedor guarda semelhanças com o trabalho de um artista (importante dar destaque à palavra “semelhança” para não pensar que as coisas são iguais).

    Como programador você pega uma especificação abstrata que se parece com uma ‘inspiração’ e começa a trabalhar nela até obter algo ‘bruto’, aí você vai lapidando (iterando) sobre esse trabalho, simplificando, e aproximando o software daquela inspiração (especificação).

    Nesse processo o programador vai deixando seu “estilo” no código. Na escolha de algorítmos, de estruturas de dados, nos textos de comentários e até mesmo no “Coding Style”. Essas características são tão notáveis que depois de um tempo é possível identificar o autor do código mesmo quando ele não está ‘assinado’.

    Uma diferença importante entre o trabalho de artistas e de programadores é que raramente vemos o trabalho em equipe (times) no universo das artes e o mesmo é quase uma regra no mundo do software.

    Mas daqui para frente eu vou falar sobre um tipo específico de artistas: aqueles que trabalham sob encomenda pintando retratos de reis e nobres para garantir o seu sustento. E para ilustrar o meu raciocínio vou usar uma das obras de arte mais conhecidas no mundo: a Monalisa.

    A Monalisa (La Gioconda) foi uma obra encomendada por Francesco del Giocondo a Leonardo Da Vinci. Existe muitas versões, mitos e mistérios que cercam essa obra mas vamos nos ater à “história oficial”.

    Francesco passou uma especificação para Da Vinci (ele queria um retrato de sua esposa Lisa Gherardini) e provavelmente especificou prazo e preço. Ou talvez tenham feito um contrato de escopo aberto? Não sei, não estudei essa história muito a fundo.

    Leonardo Da Vinci, então, fez os primeiros esboços e foi apresentando esses esboços ao contratante. Talvez não tenha feito isso porque o contratante confiava plenamente na capacidade de entrega dele. Mas não teria sido vergonha se tivesse que apresentar os esboços no meio da execução do projeto.

    O resultado final foi um trabalho encomendado, executado no prazo combinado, à um custo determinado e que, mesmo assim, era uma obra de arte.

    Curiosamente o escritório da Triveos é vizinho de uma escola de pintura. Todo dia passo em frente à sala de aula e vejo o trabalho dos alunos. É fácil perceber que não tem nenhum Leonardo Da Vinci ali (por enquanto). Falta-lhes experiência. Prática. Com o tempo e empenho eles se transformarão em bons artistas. Talvez gênios.

    O mesmo acontece com os programadores. Só com a prática, a experiência, e com o domínio da técnica um programador se tornará um ‘artista’ de verdade.

    Mas voltando à questão levantada pelo @marionogueira…

    O ‘mundo’ está errado no gerenciamento dos programadores quando eles mudam escopo, prazo e custo dos projetos a todo o instante e ainda exigem uma obra de arte como resultado do trabalho. Ou quando não permitem que o ‘artista’ trabalhe ao seu modo.

    A Monalisa seria uma obra de arte se, durante o seu desenvolvimento, o contratante desse palpites sobre as cores e cenários deveriam ser usados na obra?

    Mas os programadores também erram!

    Erram quando aceitam o desafio de desenvolver uma obra de arte sem ter o domínio adequado da técnica, a prática e a experiência necessária para transformar aquela especificação em arte.

    Em projetos ideais onde o escopo é claro, o prazo é razoável e custo está sob controle os programadores falham quando não compreendem que, mesmo tendo sido encomendada, a ‘obra de arte’ é dele também. Sem essa compreensão eles deixam de se comprometer com sua execução.

    Mesmo tendo sido encomendada, Da Vinci não fez a Monalisa ‘nas coxas’. Ele fez o máximo possível para entregar uma obra de arte única. Isso fica claro em projetos open-source onde a obra e o nome do artista fica público.

    Um artista não precisa de foco e disciplina para se inspirar. Aliás, isso pode até atrapalhar. Mas para executar a obra é necessário muito foco e muita disciplina. Principalmente se a obra foi encomendada e tem custos e prazos pré-estabelecidos.

    O programador falha quando ele não tem foco e disciplina no seu trabalho. Twitter, MSN, GTalk, IRC e outros sugadores de foco, hoje, ficam mais tempo em funcionamento do que a IDEs, editor de textos e outras ferramentas de desenvolvimento. Eu sei. Eu vivo isso.

    Fora isso eles podem errar em outras questões que envolvem relacionamento interpessoal, trabalho em equipe, ética, etc. Mas nessas questões todos podem errar.

  • Invasão bárbara. Como lidar?

    Desde muito tempo tenho participado de fórums e listas de discussões. A grande maioria delas trata de assuntos relacionados à informática mas também de listas com assuntos mais ‘genéricos’.

    Já a algum tempo, com a popularização do acesso à Internet, venho presenciando uma invasão bárbara nos meios de comunicação onde antes costumava imperar as regras de etiqueta (tratada pelos internéticos ‘da antiga’ por netiqueta).

    Quando algum desses bárbaros são inquiridos a se portarem de maneira adequada eles reagem nos tachando de mal-educados, reacionários e puristas da Internet. Eles nos adjetivam dessa maneira porque eles são os mal-educados e porque geralmente acham que qualquer novidade tecnológica que é boa pra eles necessariamente tem que ser boa para todos os outros participantes das listas.

    Alguns casos que saltam mais aos olhos serão enumerados nesse artigo.

    Letra maiúscula serve pra GRITAR!

    Aos bárbaros que não conhecem nenhuma regra de netiqueta ou que não sabem que é possível desligar aquela luzinha do teclado onde está escrito “CAPS LOCK” preciso dizer que, por convenção, escrever em letras maiúsculas (caixa-alta) na Internet é exatamente o mesmo que gritar no ouvido do destinatário da mensagem.

    É muito comum encontrarmos e-mails inteiros escritos em letras maiúsculas. Acho que esse tipo de e-mails só seria válido em listas de discussão que falem sobre letras de música de Trash Metal.

    Quando expliquei isso para um dos bárbaros apontando para ele uma RFC (Request for Comments) que define regras de Netiqueta dizendo que os protocolos da Internet são especificados através desse tipo de documento o bárbaro me chamou de reacionário e afirmou que tal RFC ‘havia sido escrita a mais de dez anos atrás’. É quase como se eu falasse que quem navega na Internet é reacionário porque a RFC que define o protocolo HTTP/1.0 é da mesma época.

    Vamos falar em português?

    Vamos! Mas só em listas, fórums, comunidades do orkut, etc onde o idioma padrão é o português. O brasileiro fica todo orgulhoso da ‘invasão brasileira ao orkut’ e adora mostrar mais essa ‘conquista da amarelinha’ escrevendo em português até em comunidades de “Practice your English”. Parabéns! Nós deveríamos nos sentir orgulhosos por sermos tão mal-comportados bárbaros.

    Já não bastasse os bárbaros escreverem em português nesses fórums, o português usado é de um nível tão baixo que chega a doer os olhos de quem lê. Não precisamos ser o ‘professor Pasquale’. Mas quem consegue ler esse tipo de coisa?

    ‘OI MEU NOME E OSVALDO E ESTOU COMESSANDO AGORA A PROGRAMA EM COMPUTADORES E ESTOU AXANDO TUDO MUUUUUUITO LEGAL E UM AMIGO MEU ME DISSE QUE PROGRAMAR EM PYTHON E SUPERLEGAL ENTAO REZOLVI ESPERIMENTA NE? RSRSRSRSRSRSRSRS E TIPOWWWW… GOSTARIA DE SABER SE SERIA POCIVEL VCS ME AJUDA A FAZER UM PROGRAMA DE CONTROLE DE UZINA NUCLEAR?????????????????????’

    Adoraria que o exemplo acima fosse uma extrapolação do que tenho visto. Mas posso afirmar com absoluta segurança que já vi coisas muito piores. Como poderíamos fazer para explicar para os bárbaros que e-mail não é chat e que até mesmo em chat escrever de maneira totalmente ‘sem-nossaum’ não é uma coisa legal?

    A minha irmã é uma das que escreve desse jeito. Eu já disse pra ela que pra conversar comigo tem que escrever certo. Ela estudou, tem um grau de instrução bom, sempre esteve rodeada de livros e leu vários deles. Quando começou a escrever ‘certo’ comigo fiquei impressionado com a quantidade de erros ortográficos no que ela escrevia. Esse tipo de linguajar ‘internético’ deseduca as pessoas.

    Erros de ortografia, desconhecimento total de uso de pontuação (faltam vírgulas e sobram interrogações e exclamações), erros gramaticais, vocabulário paupérrimo, gírias ‘internéticas’, falta de parágrafos e uma total ausência de ordem na construção do texto já estão virando uma marca registrada da Internet por causa dessa invasão bárbara. Isso é bonito? É algo que deveria dar orgulho ao brasileiro? Do jeito que a coisa anda aqui no Brasil a gente vai comemorar o ‘exacampeonato'(sic) brasileiro no futebol.

    Informação boa é melhor que visual bom

    Tá, quase toda a totalidade dos clientes de e-mail hoje em dia sabem abrir um e-mail em formato HTML (aqueles todos coloridinhos com os smileys gráficos e onde as respostas ficam escritas em azul) mas isso realmente é necessário? E quem não usa esse tipo de cliente de e-mail? E quem tem necessidades especiais (deficiência visual) e precisa usar um cliente especial de e-mail? E quem ainda acessa a Internet usando Modem e uma linha discada?

    Um e-mail em formato HTML é consideravelmente maior do que um e-mail convencional e esse tamanho maior não adiciona absolutamente nada de informação relevante à discussão. Então estamos desperdiçando recursos computacionais por nada. E os bárbaros, com esse tipo de atitude, ainda desperdiçam recursos computacionais dos destinatários de suas mensagens.

    Quando recriminei um bárbaro por usar esse tipo de e-mail ele me chamou de ‘vovô da Internet’ como se isso fosse alguma forma de ofensa e não um elogio à minha experiência superior à dele.

    Ouvir é melhor do que falar

    Quando escrevemos uma mensagem em um fórum escrevemos ela uma única vez e muitas pessoas irão lê-la, correto? Na Internet a gente lê e ouve muito mais do que escreve e fala. Por isso é importante saber ouvir.

    Quando você instrui uma pessoa que sabe ouvir ela te agradece por tê-la ajudado a se tornar uma pessoa melhor. Quando você instrui um ostrogodo ele se considera afrontado e reage mal.

    Concluindo

    Além desses ítems que descrevi aqui ainda existem outros. Resolvi me limitar aos que ocorrem com maior freqüencia para poupá-los de cenas mais fortes 🙂

    Estou tratando desse assunto porque na lista PythonBrasil, onde sou moderador, geralmente somos tratados como rudes, mal-educados e coisas do tipo quando apontamos alguma coisa errada no comportamento dos participantes da lista.

    A lista é uma ferramenta importante para todos que estão lá. Pedimos ajuda, trocamos experiências, aprendemos e ensinamos. Os bárbaros não invadirão o nosso território para nos matar e pilhar, e para que isso não ocorra expulsamos eles da forma mais polida que conhecemos: fazendo eles nos ouvirem. Ao aceitar a ajuda conseguimos ver que ele não é um bárbaro, é apenas alguém inexperiente.

    Agora deixo a pergunta em aberto para que vocês me ajudem: Existe alguma maneira mais eficiente ou mais adequada para lidar com esse tipo de gente?