Categorias
Listas de livros

Bons livros lidos, Verão 2022-2023

Uma estação está acabando, e uma das coisas que gosto de fazer (pra variar, inspirado pelo Austin Kleon) é rever os livros que li nessa estação, para ver se há algum tema.

Apesar de que o ano passado foi supostamente o Ano de Ler e Escrever, a leitura de livros acabou ficando para trás, frente a estudos e escritas de notas. O verão que agora acaba marca uma volta muito profunda aos livros, como forma de entretenimento e como fonte das maiores ideias para seu trabalho, como PH Santos muito bem ilustra nesse excelente vídeo:

Excelente vídeo sobre usar livros para produzir outras coisas

Se o Ano atual é de Simplificar, o Verão foi a Estação de Simplificar as Finanças, e para isso I Will Teach You to be Rich, de Ramit Sethi, foi fundamental. Eu tenho grandes problemas com a criação de jargão artificial nessa obra, como um “Plano de Gastos Conscientes” e o “Método dos Envelopes”, que são apenas técnicas de orçamento (apesar de o autor jurar que você não precisa organizar o seu orçamento). Mas a sua abordagem prática em acumular pontos em cartão de crédito e em como organizar categorias de gastos de uma maneira realista tiveram grande impacto em mim. Esse livro me mostrou que, se eu otimizar os gastos fixos, cuidando da minha família, ao mesmo tempo em que tento investir um mínimo viável e de maneira inteligente, eu posso sim gastar com livros, se isso é realmente importante para mim.

Um livro que comprei desde que adquiri essa mentalidade e que já é um dos meus livros favoritos de toda a vida é Amigos, Amores e Aquela Coisa Terrível, o livro de memórias do Chandler de Friends. A sua maneira livre, honesta e profunda de escrever sobre problemas foi muito importante em algumas semanas particularmente depressivas. Os problemas existem; se você escreve sobre eles, eles não diminuem, mas também não aumentam.

Como inspiração para o trabalho, o duo de livros de Nathan Yau, Visualize This e Data Points (embora esse último seja bem raso e um pouco inútil para quem já sabe um pouco sobre visualização de dados), me ajudou a pensar mais como cientista de dados ao analisar resultados de simulações no meu emprego. Mesmo que eu não tenha aprendido nada de muito nova, ajudou-me a reforçar algumas ideias de organização de dados (lembrando que é sua tarefa fazer isso).

E agora: que livros me esperam no Outono?

Publicidade
Categorias
Artigos

Apps e programas que um pesquisador usa

Inspirado por uma série de episódios anuais do Cortex, aqui está uma lista dos apps e programas que eu, um pesquisador de Engenharia, uso diariamente (para fins de trabalho):

iPhone

  • Drafts – quando você abre o Drafts, ele imediatamente abre uma página em branco, sem eu precisar explicitamente criar uma nova nota. A minha versão de “manter cartões de anotações” o tempo todo comigo conforme recomendado por David Allen e Anne Lamott;
  • Todoist -para consultar minhas tarefas;
  • Outlook – app de email que uso por nenhuma razão específico para usar e nenhuma razão específica para deixar de usar. Meu relacionamento com e-mails é o seguinte: eu abro regularmente, arquivo 90%, mando 5% para o Evernote, respondo os 2% rapidamente no iPhone, e deixo os outros 2% para responder com calma no PC;
  • Kindle – para sempre ter um livro à mão (e leio muito coisa técnica);
  • PCalc – porque eu sou engenheiro, e como todo bom engenheiro, uso com modo RPN;
  • NetNewsWire – sei que a internet diz para não acompanhar notícias, por isso vou consultando ao longo do dia meus blogs favoritos (muitos deles relacionados ao trabalho);
  • Forest – um app que faz crescer uma árvore no seu celular e, se você sai do app para consultar o Instagram, email, WhatsApp etc, a árvore morre. Bom para se concentrar!

Windows

E é assim que eu trabalho.

Categorias
Artigos

Desacelere no trabalho para fazer mais e melhor

Se você quer ficar bom em algo, desacelere.

Kourosh Dini
Kourosh Dini, pianista, escritor e psiquiatra, falando sobre treinar uma música mais devagar. Recomendo fortemente o canal dele para seus vídeos semanais de “recitais” de piano e sintetizador

Sim, eu também faço isso: para cumprir prazos, eu quero fazer as coisas na pressa – e aí demora mais do que se eu tivesse feito as coisas com calma.

Exemplo prático e real no mundo da Engenharia: eu recebi uma demanda de implementar um algoritmo de cálculo estrutural no programa que minha equipe e eu desenvolvemos. Eu sou Engenheiro Mecânico, e gostava bastante da área de Mecânica dos Sólidos na faculdade; mas depois segui carreira acadêmica nas Ciências Térmicas, e meus conhecimentos atrofiaram (infelizmente). Quando eu recebi a tarefa, varri o nosso código (que é bastante extenso, e inclui já uma parte de cálculo estrutural) em busca de fazer uma alteração rápida.

O problema é que eu não estava entendendo nada, e eu precisava desacelerar. Corri então para a biblioteca, li livros e diversos artigos, começando desde a Introdução, e agora posso ficar em paz e dizer: “entendo o que precisa ser feito!”.

Alterações em softwares nunca são filhas únicas. Esse tempo “perdido” lendo livros introdutórios vai ser compensando porque, quando outras alterações forem solicitadas (e vão ser), eu já entendo a teoria (e tenho diversas notas nos meus cadernos para serem consultadas), e posso partir diretamente para a implementação.

Recentemente, promovi uma grande refatoração no nosso programa, mudando nomes de variáveis internas e documentando cada função. Os nossos clientes não ligam absolutamente nada para isso, e esse mês foi aparentemente “desperdiçado” nessa tarefa lenta e árdua sem nenhum resultado concreto – mas novamente, cada nova alteração é facilitada porque o programa está mais fácil de entender.

Obviamente, como tudo na Engenharia, é uma questão de otimização de recursos. Minha personalidade que gosta de estudar tenderia e querer ler vários livros e artigos, e indo nas referências de cada um, até entender com máxima profundidade o assunto. Mas, após me sentir em paz, eu decido que o estudo é suficiente e é hora de implementar.

Fora que, ao fazer as coisas com calma, a probabilidade de fazer correto é maior – e não é isso que importa?

Categorias
Artigos

Como decidir quando é hora de parar de trabalhar em um projeto e partir para o próximo

Vamos imaginar o seguinte cenário comum: você está trabalhando em algo que vai demandar vários dias para completar. Aliás, você tem diversas demandas em paralelo que precisam ser trabalhadas todo dia, por vários dias. O malabarismo é alternar entre as diversas atividades nos intervalos entre reuniões.

Há quem defenda a estratégia de trabalhar com foco e energia total em uma única coisa, o dia inteiro, até acabar com a tarefa #1; depois, passa-se para o mesmo regime na tarefa #2 e assim por diante. Eu não gosto disso porque, além de cansar bastante o hábito de dedicar 8 horas a uma única coisa, eu gosto de trabalhar mais picado para que as ideias de um projeto “vazem” para outro. Se estou implementando um algoritmo para um programa, de repente tenho ideias sobre a documentação e testagem de outro programa, e quero passar para o projeto 2 o mais rápido possível para não perder o pensamento.

Porém, se eu trabalho em várias coisas por dia, como decidir quando está na hora de acabar com uma sessão de trabalho e passar para o outro?

A resposta para mim vem da religião. Como diz Frei Ignácio Larrañaga nas Oficinas de Oração e Vida e em seus livros, o critério mais fácil para se conectar com Deus é a paz; se você está em Paz, você está com Deus, agora, neste exato momento e neste local. Lembra da oração da paz na Missa? “Eu vos deixo a Paz, eu vos dou a Minha Paz”…

Portanto: quando você fica em paz com seu trabalho, quando é capaz de dizer “fiz o suficiente por hoje” sem mentir para si mesmo, é hora de parar de trabalhar. Aliás, é melhor parar de trabalhar agora, antes que você continue na sua tarefa, encontre problemas e perca a sensação de paz…

Isto vale também para o encerramento do dia de trabalho. Eu não quero voltar para casa e preparar a janta para meus filhos enquanto penso no que deu errado; isto requer que eu dedique tempo a “amarrar as pontas soltas”, rever o que falta de cada projeto, deixar tudo anotado, até que eu esteja em paz.

Você está em paz com seu trabalho?

Categorias
Artigos

O melhor curso de programação para engenheiros (e que ninguém conhece)

Eu aprendi a programar na faculdade, e nos semestres finais eu só fazia os trabalhos com cálculos implementados em computador. Ao longo de minha carreira, utilizei diferentes linguagens, técnicas, e métodos, mas a programação sempre fez parte do meu trabalho.

Se você estuda Engenharia, você precisa aprender a programar.

Quando eu comecei no meu emprego atual, eu me deparei com um desafio que eu não tinha enfrentado antes: desenvolver programas não seria apenas um meio para outro objetivo (como escrever teses ou preparar aulas), mas é o trabalho; meu papel aqui é desenvolver, manter, testar e documentar softwares de Engenharia que outros pesquisadores e pesquisadoras usam. Eu precisava subir de nível na minha habilidade.

O caminho que escolhi é o projeto Open Source Society University, que prescreve um “caminho” para cursar Ciências da Computação com apenas cursos online. Eu não tenho essa pretensão, e nem acho que é possível. O meu objetivo é trazer conceitos mais rigorosos, efetivos e eficazes do mundo do desenvolvimento de software para a Engenharia.

E já no primeiro curso, o mais básico, surpreendi-me positivamente, e agora acho que todo estudante de Engenharia deve começar o quanto antes o curso online e gratuito How to Code: Simple Data, que usa o meu novo livro preferido de programação (também online e gratuito) How to Design Programas (2 ed.)

Esse não é um curso sobre uma linguagem específica, tanto que usa uma linguagem não muito popular chamada Racket. É sobre projetar programas, como um projeto qualquer de Engenharia: com requisitos, critérios de sucesso (como você sabe que o programa está correto? Você testa todas as suas partes). É sobre seguir um método, rigoroso e sistemático. Tanto no curso quanto no livros, os autores enfatizam a importância de documentar o que você está fazendo, com muitos exemplos.

Minha dica é essa: siga esse curso, tentando fazer todos os exercícios, e então busque traduzir os conceitos na linguagem que você usa nos seus projetos (provavelmente uma das minhas recomendadas). A qualidade dos programas que eu escrevo e o meu entendimento sobre eles aumentou exponencialmente.

Fora que programas em Racket é divertido.

Categorias
Artigos

3 objetos sem os quais eu não poderia viver

A sugestão de prompt do WordPress hoje é essa:

Quais são os três objetos sem os quais eu não poderia viver?

Sem pensar muito profundamente, olhei para a minha mesa e vi esse arranjo:

e pensei: aí estão 3 objetos singelos que estão sempre comigo e que são realmente fundamentais:

  1. Caderno: já falei aqui sobre a minha prática de manter um caderno. Quando estou me sentindo mal, é ali que desabafo. Em um dia de trabalho, uso para anotar minhas tarefas. Quando estudo, tomo notas – e para isso preciso de :
  2. Caneta: eu tomo notas de tudo. Mesmo em casa, com meu filho mais velho, brinco de desenhar os personagens preferidos dele (geralmente da Patrula Canina). Com a minha esposa, anotamos os gastos da nossa próxima viagem. Eu já fui o tipo de pessoa que sonhava em “viver sem papel”, mas agora eu não consigo viver sem a sensação de escrever com caneta em um pedaço de papel. Também já foi do tipo que comprava canetas caras, mas agora eu tenho mais o que fazer. E quanto escrevo, é bom tomar água ou café em uma…
  3. Caneca: mas poderia ser uma garrafa. Ter água ou café sempre à mão é o que me permite e concentrar no meu trabalho, e o que dá combustível e refrescância para passar com a família nesses dias quentes.

Aí estão: três objetos simples, que representam instantes agradáveis em casa e no trabalho. A vida é melhor com uma boa bebida enquanto registro meus pensamentos.

Categorias
Artigos

Linguagens de programação que todo pós-graduando deve saber: a Tríade da Ciência de Dados

Se você está iniciando em uma carreira de pesquisa, você vai ter de tratar dados experimentais ou numéricos e apresentar seus resultados. Não há escapatória além de aprender a programar, e isto vale para todas as áreas; John MacFarlane, por exemplo, é professor de filosofia e um grande nerd.

Para mim, existem três linguagens básicas que você deve saber e estudar continuamente, e vou apresentar na ordem em que acho que devem ser estudadas. Também, como eu sou o Fábio, eu vou dar dicas de livros, que ainda são muito superiores a simples tutoriais para realmente aprender algo.

Python

Se você está começando, este é um excelente primeiro passo. Python é uma linguagem simultaneamente fácil de aprender e poderosa; é bastante geral, e tem bibliotecas para processamento de arquivos, interfaces web e cálculo numérico e matricial.

Eu uso Python regularmente para meus projetos de Engenharia desde 2011. No meu mestrado, criei scripts para pegar os arquivos que o sensor de pressão da minha bancada escrevia e criar gráficos de pressão x tempo para cada teste que eu havia feito. No meu doutorado, criei dois programas que resolviam as Equações de Maxwell para duas geometrias diferentes de ímãs permanentes e calculavam o campo magnético gerado por cada uma. Atualmente, mantenho alguns programas de simulação de poços de petróleo e cálculo de propriedades de óleos.

Uma boa introdução geral é este livro, enquanto este aqui é excelente e mais voltado para área de dados.

R

Você pode usar Python para praticamente qualquer tarefa, mas sempre há benefícios em conhecer mais linguagens. Bjarne Stroustrup, criador da linguagem C++, diz que um salto fundamental para alguém que sabe programar é passar de uma para duas linguagens: o conhecimento de uma alimenta o estudo da outra.

Acontece isso comigo ao estudar R, uma linguagem voltada à Estatística. Embora eu não use muito scripts em R em si, o conhecimento que tenho da linguagem me faz pensar melhor na organização das tabelas de dados, e em como posso juntar todas as simulações que faço em uma única tabela que é filtrada e transformada (e.g. calcular a média de todas as linhas da tabela mestre que correspondem a uma mesma condição de pressão) para diferentes tarefas. Esse conhecimento me acompanha mesmo quando escrevo os programas em Python.

Estes dois livros são excelentes e fundamentais para começar a estudar dados de maneira mais séria.

Julia

Julia é uma linguagem bem mais moderna que as outras, e bastante focada na rapidez de execução. Novamente: ao estudar e praticar Julia, eu posso tanto escrever scripts nessa linguagem como pensar em como acelerar meus programas em Python e R. Se você já tem um sistema que quer otimizar, sugiro fortemente aprender Julia; o ecossistema de bibliotecas está crescendo rapidamente.

Uma boa introdução a Julia é este livro online.


Se você quer aprender mais sobre alguma dessas linguagens, diga aqui nos comentários!