Monday, August 31, 2015

Working with a junior developer

When I (a senior developer) have to supervise someone new (a junior developer) - who can be a new employee or an intern - I use the following steps to get the junior up to speed without taking too much of my time:

Note how it starts with an informal discussion of the problem to be solved. I sit down with the junior, tell him what I know about the problem, draw some sketches on a white board. The critical step is to let him write a problem definition document that repeats what we have talked about. When I review the document, I can verify that the junior has understood the problem well. This pattern repeats with design and test documents. It reduces my burden of supervision (I don't have to write anything) and helps the senior to really understand - not just "hear" - the problem. And last but not least, we get good documentation. Win-win...

Monday, August 24, 2015

Strategy pattern for modularization

When your software exceeds a certain size, it's a good idea to separate it into modules that can be compiled and tested independently (for example, it is easier to isolate memory leak causes). Some modules might also have value as standalone components.

Wednesday, August 12, 2015

The International Bank of Bob

The International Bank of Bob explains how the microlending platform Kiva works by visiting the recipients of such lends around the world.

I find Kiva convenient for two reasons: It makes it very easy to find someone who could really use financial help and it is as transparent as it gets.

Before thinking about the details of microlending and Kiva you have to ask yourself "do I really care about the plight of others so much that I can part with my $25?" You have to give an honest "yes" before coming up with questions about how reliable/efficient Kiva is. I suspect most of such questions stem from not being that committed to helping others but being ashamed to admit it and instead formulating more rational sounding questions. After you gave that first "Yes", read this book. In the words of Bob, "Pretty much the only things we do get to choose are how we treat others and conduct ourselves in the world. Are we honest? Are we caring? That’s who we are."

Kiva team: Friends of Bob Harris

Kiva fellows blog

Tuesday, August 11, 2015

Thinking Fast and Slow

Thinking Fast and Slow shows how hard it is to think and how often people avoid it and makes me wonder if anything I know is truly correct. "Considering how little we know, the confidence we have in our beliefs is preposterous".

It is depressing to realize the difficulty of changing our own faulty ideas, let alone changing others. To help myself, I read books like this. When arguing with others, I never aim for really changing them. I don't bother with trying to be fair and give them the benefit of doubt because they never return the favor. I just shut them up with a few simple tactics so that they don't think that what they present is irrefutable brilliance. Schopenhauer's "Die Kunst, Recht zu behalten" has good techniques.

Thinking as correctly as possible is not some academic detail. I recently had to confront two important, life-changing challenges: One was which house to buy and the other was whether my mother should have a risky operation. With rationality and luck, both turned out very well (We bought the best house possible and my mother rejected the operation which in hindsight was a good decision).

Another application of this book might be using it when raising a child (I have a 3 year old son). The hard way is to use rationality and correctness of argument. The easy way would be to appeal to the inherent weaknesses present in every human being [as politicians and marketers do].

The moral of the story is: be aware of your limitations (this book is for that) and think... a lot!

Saturday, August 08, 2015

The Honest Truth About Dishonesty

The Honest Truth About Dishonesty shows how people rationalize their dishonest actions and what factors increase or decrease dishonesty. Why should you read it? In the words of the author "recognizing our shortcomings is a crucial first step on the path to making better decisions, creating better societies, and fixing our institutions."

Wednesday, August 05, 2015

The Making of the Atomic Bomb

The Making of the Atomic Bomb provides the background of scientific progress and WWII thinking that lead to nuclear weapons.

The 1986 edition that I read has a nice epilogue (40 pages long) which is missing in 2012. That's a huge loss in content because the epilogue has interesting content.

The book is
  • Fun: Example: comparing Chadwick's temperament with the properties of the neutron he discovered.
  • Informative: How much thought and hard work is invested into and how many small and large difficulties have to be surmounted before a scientific discovery, how good theory is needed to both design a proper experiment and correctly interpret its results (How the Curies were not able to discover the neutron even though they did the experiment first). How scientific openness in the early 1900s led to rapid progress.
  • Inspiring: Kindled my interest in Chemistry (Otto Hahn, discoverer of nuclear fission was a chemist). How scientific openness could be a model for government of humanity (Niels Bohr's hope). For me, the book shows what good science and engineering is, with nuclear weapon development as a case study. Any technically inclined person would enjoy this book a lot and be motivated to do some science (hopefully for peaceful purposes).
  • Horrifying: Effects of a nuclear weapon on its victims is described in graphic detail. The risk of an accidental or terrorist nuclear war is unacceptably large and the results of a wide scale war would be the end of intelligent life on Earth.

Monday, August 03, 2015

iWoz: Computer Geek to Cult Icon

"iWoz: Computer Geek to Cult Icon", by Steve Wozniak with Gina Smith, is the autobiography of Steve Wozniak. I only knew little about him, like he was the other Steve who got Apple started. After reading this book, I admire him as a person and can relate to him a lot (I myself am a software developer), especially the portions about having an open mind, not trusting authorities and trying to build a better/just world. It also gave me ideas about how to spark interest in my 3 year old son.