segunda-feira, 29 de abril de 2013

Workaholic

Atualmente, além de ter uma rotina cheia, com um filho de 7 anos, outro de 2 meses e uma esposa jovem. Tenho um emprego, de desenvolvedor de softwares sênior numa grande empresa. O que seria demais para qualquer pessoa. Mas, não satisfeito, ainda tenho minha empresa, onde desenvolvo projetos de softwares, e me consome todo tempo disponível.
Eu nunca paro, nunca relaxo, nunca estou "sem fazer nada". O tempo todo estou pensando em produzir algo, em fazer a diferença, criar algo útil. Não por mim, mas pelo futuro, pela sociedade e pela minha família que vai dar continuidade ao meu trabalho quando eu não puder mais fazer isso.
Esse final-de-semana meu pai me acusou de ser egoísta, de só pensar em mim mesmo e no meu trabalho. Mas, não vejo como posso ser egoísta se estou trabalhando, criando projetos que vão se desenvolver a longo prazo. Minha empresa, eu trabalho nela porque sei que meus filhos poderão dar continuidade. Cada projeto que eu desenvolvo, eu sei que estou ajudando as empresas que vão trabalhar com meus sistemas.
Enfim, estou me esforçando para fazer sempre o melhor.

quinta-feira, 25 de abril de 2013

O bom programador

Recebi por e-mail hoje esse texto de um colega. Como ele autorizou, vou compartilhar.


Esse texto é específico para programadores. Coisas que vale lembrar de vez em quando.

Outro dia um colega me chamou num canto e fez um comentário mais ou menos nessas linhas: “olha, eu adoro trabalhar aqui, mas estou tendo um problema sério. O Fulano, da minha equipe, é um excelente programador, o cara é muito bom mesmo, mas eu sinto dificuldade para entender o código que ele escreve. Na hora que preciso alterar alguma coisa, o bicho pega.”

Conheço as duas pessoas e posso garantir que não se trata de incompetência de ninguém, pelo contrário, são ótimos profissionais. Ainda assim, o problema existe e merece atenção.

Para mim um bom programador é aquele capaz de fazer programas fáceis de entender, fáceis de alterar. Se meus colegas não entendem meu código, então não sou um profissional tão bom quanto pensava que era! Talvez seja hora de reavaliar os meus hábitos como programador.

É bom ter em mente que quando a gente escreve um programa, o fonte tem duas finalidades bem distintas: uma é fazer o computador produzir o resultado esperado. A outra é comunicar de modo claro o que você entende sobre o problema, facilitando ao máximo a vida do próximo programador, que vai manter o software depois, quando você estiver fazendo outra coisa.

Como nós trabalhamos com máquinas o tempo todo, a gente acaba se confundindo, achando que se o computador entende, então o ser humano tem que entender. Não é bem assim.

Para um compilador não faz muita diferença se você colocar vinte ifs, um dentro do outro. Do mesmo modo ele também não se importa quando acha uma classe com duzentos membros, ou um método com duas mil linhas. O computador não vai soltar nenhum “ai”. Já o ser humano, o pobre coitado que dará manutenção na sua obra prima, esse sim vai se arrepender de ter nascido.

Ocorre que, diferente do computador, nossa mente é eficiente apenas para pequenas quantidades*. Por isso quanto mais a gente divide, mais fácil fica lidar com o mundo. Dividimos livros em capítulos, dividimos o tempo em anos, meses, a semana em dias, dividimos os animais em mamíferos, répteis, etc. Na verdade nós gostamos de dividir tudo. Dentre tantas coisas no universo, porque você acha que o seu programa pode ser diferente, se é o mesmo cérebro que tem que entender isso tudo? Você não pode quebrar as regras e ficar impune.

Veja, não é suficiente que seja “possível” compreender o que você produz. Isso é só a sua obrigação. O que estou sugerindo é dar um passo além. Na nossa profissão o passo além é ser capaz de tornar fáceis coisas que normalmente se espera que sejam difíceis. Para um programador, isso equivale a dominar a complexidade inerente a um problema ir encontrando suas propriedades fundamentais, percebendo as características comuns, dividindo em pedaços simples e deixando tudo explicadinho, levando essa abordagem até as partes mais básicas.

Fora o tamanho, outra origem de dificuldade é o uso de construções muito complexas.

Eu reconheço o valor de um profissional capaz de se manter antenado nas novas tecnologias, sempre se aprimorando profissionalmente, sempre afiando o machado. Com certeza isso é importante. Porém, se eu tiver que escolher, eu não tenho dúvida: prefiro um programador que saiba produzir um software simples e funcional do que um gênio que produz peças de alto grau de complexidade técnica e que teremos que jogar fora no ano que vem. Se você usa técnicas incompreensíveis para seus colegas, seu trabalho é inútil numa empresa séria. Sinto muito.

Talvez dominar técnicas sofisticadas lhe confira um grau de satisfação pessoal. Só que você não deveria exigir habilidades incomuns das outras pessoas, porque provavelmente quem vai dar manutenção no seu sistema será um profissional menos experiente que você. Isso é a coisa mais natural do mundo. Tudo correndo bem, no futuro você estará desenvolvendo outros sistemas. E quem vai manter o atual? O “sangue novo”, claro. Se o sangue novo não for capaz de continuar com o produto, isso indica que ele é um incompetente? Talvez seja. Porém o mais provável, independente do mérito do colega, é que você tenha criado um problema para a empresa. Eu te pergunto: é interessante ter um programador que cria este tipo de situação?

Você pode pensar “ah, qualquer coisa, se não entenderem meu código, eu sento e explico”. Enquanto é muito bacana compartilhar conhecimentos e poder explicar pessoalmente para um colega como se usa a técnica que os gurus inventaram na semana passada, a verdade é que provavelmente o pobre infeliz do seu colega não vai ter a mesma facilidade que você teve para digerir e empregar esse conhecimento. Estou falando desse cara, que está sentado ali do seu lado hoje. Agora imagine a pouca sorte do outro sujeito, aquele que terá que lidar com o seu software daqui a dez, quinze anos, quando você já estiver navegando em mares distantes.

Se me permite sugerir, meu nobre colega, não escreva código para pessoas tão inteligentes e capacitadas como você. Compreenda e seja compreendido. Lembre-se que um comunicador eficiente não exige vasto conhecimento da sua audiência, procurando manter as coisas simples.

Dizem que certa vez Charles Chaplin e Albert Einstein foram a um evento público e num dado momento, quando eram aclamados pela multidão, Chaplin comentou com Einstein “eles te aplaudem porque NINGUÉM te entende, e me aplaudem porque TODOS me entendem”.

Um abraço.
O JuciÊ

sexta-feira, 19 de abril de 2013

Sem novidades

Sem novidades. Postando apenas para registrar o momento. Mas quem ler que não entenda mal. Sem novidades não quer dizer que a vida está chata e sem graça, muito pelo contrário. Estou com isso, querendo dizer que a vida continua sendo uma aventura incrivelmente maravilhosa, emocionante e cheia de amor e lições todos os dias.

Victor está muito bem, assim como toda a minha família. E Ângela e Vinicius estão voltando a se dar bem, como costumava ser, e isso é maravilhoso para mim. É muito importante que eles se amem como eu os amo para que possamos ser sempre uma família unida e feliz.

Profissionalmente as coisas estão correndo muito bem, e meus planos estão se concretizando. Só preciso seguir trabalhando com esse objetivo. Na Agência Estado, estou curtindo bastante e me encaixando bem no projeto. E a DSoft está indo bem. Dos antigos clientes, conseguimos nos acertar com quase todos, estamos (estou) lucrando ainda mais do que antes e novos clientes estão surgindo.

Vinicius está crescendo lindo e forte. Vai sempre ser o meu melhor amigo. Pois o que já passamos juntos foram experiências únicas que me marcaram demais como homem e como pai. Mas, fico triste por ele não ter tanto gosto pelos estudos quanto eu sempre tive.

Ângela me faz muito feliz. Sendo a mulher que eu desejo todos os dias, com seu jeito único e maravilhoso, sua simplicidade. Eu adoro fazer essa mulher feliz...






Na última foto, com a Ângela, estão Júlia, uma amiga de infância da Ângela que eu adoro demais, e tem nos visitado com alguma frequência, e Andreza, minha cunhadinha linda e chata que eu adoro.

Mais metas para o futuro

Estou num momento muito bom e confortável da minha carreira. Depois de décadas trabalhando com desenvolvimento de softwares posso dizer que...