Category: BookReview

  • Book Summary – Leprechauns of Software Engineering by Laurent Bossavit

    Book Summary – Leprechauns of Software Engineering by Laurent Bossavit

    “Everything everyone knows about anything indicates that this is untrue,” – Laurent Bossavit

    The words science and engineering are often used when discussing computers and software. These terms are not well-earned. The terms accidental technology, computer alchemy, or software by listening to unqualified influencers are just as useful. Don’t believe me? Read Laurent Bossavit, and then give me a call.

    Imagine you are at a serious software conference, full of serious people. A presenter confidently states that 75% of software is never used. The year is 1995, and that presenter is from the US Department of Defence. He explains that his department spent $35.7 billion on a software program (yes, that’s billion with a b). 75% of that software was never used. That’s $26 billion wasted.

    This is an extraordinary fact. To double-check its veracity, I would expect a very detailed study of the $35 billion dollar program from the team’s output. That wasn’t done? Ok, that’s a lot of work. Surely they did significant analysis at another level, say a comprehensive survey of users of the software? No? Ok, well maybe a small sample of some users. Didn’t do this either? Sure, I get it; they are busy. We are all busy. They must have gotten a breakdown from the finance department. No. Ok. So I’m lost now. How did they get the figures of $34 and $26 again? A different team, in a different department, who worked on a different $6.8 million dollar project 15 years later wrote a paper. They found that only 2% of the software was fit for purpose, and 75% was wasted. The Department of Defence took this 75% of 6.8 million and simply applied it to their $35 billion dollar program. 15 years later. They used 75% as if it were a law in physics.

    Estimating software use is hardly rocket science, which the DOD should know something about. How did they make such an unfounded claim? The author of this book shows that these types of unscientific claims are common. In fact, the whole industry is filled with examples of bad science, poor reasoning and misuse of numbers. It’s an industry where some basic foundations do not exist.

    Ignore the title. This is an important book. One of those rare and special books, where the underlying concepts can upend how we see the world. For this review, I will use a technique I’ve used previously. I explain the what, why, how, so what, and for whom. I will then describe how I found the book and give you some valuable takeaways from the text.

    What

    In technology, we adopt flawed claims too quickly because we lack training in how to interpret research. This book deals with various ‘established truths’ about software and debunks many of these claims by investigating their origins. These stories are entertaining and give great insight into how various organisations make fundamental errors. However, for me the real value is in the methods that the author uses to expose the claims. This book borrows techniques from serious scientific enquiry to think critically about software. If we realise the 10x programmer doesn’t exist, then we have only gleaned a surface understanding. If we understand how the author came to this conclusion, we are now armed with a new technique to help us analyse every new claim. In a world where critical thinking is increasingly rare, this is a high-value skill.

    Why?

    Why was this book written? It feels like the author simply became so frustrated about how bad things were getting with software development that he started writing about it, and ended up with a book. There is a lack of critical thinking, and training in critical thinking in software. The author is trying to help right this wrong.

    It is impossible to research every single thing we believe. We could spend our whole lives researching and only get to a tiny sliver of knowledge. Instead, we need to satisfice — we need to do a little research and decide on certain ‘established truths’ to build our knowledge on. In software, we often find those truths by sifting through the output of tech influencers. Understanding which popularisers are trustworthy — and therefore which truths are valid — is a murky area. Software professionals have little training in this.

    We have all seen the hype cycles around new technologies – it appears – a few blog posts, then articles and podcasts. Books appear, consultancies recommend it. Suddenly everyone wants to use it, typically without considering why, what it offers, and what the consequences are. ‘Everyone does this’ becomes the mantra. Execs expect to see it, engineers leave and move to companies who use the latest tools so that they ‘stay current’. This lasts until something newer comes along, and the cycle begins again. The author wants to break this cycle, and show how many established truths are misleading, flawed or just plain wrong. He aims to give us tools to help us figure out how to judge these truths for ourselves.

    How

    The author uses a case study method and evaluates some popular claims in software. Through this, he teaches us several techniques from academia so that we can evaluate claims made about software. This was appealing to me, having spent a couple of years in a PhD program learning some of these techniques for the first time. Unfortunately, I’d already spent 20 years in the industry, so I had a lot of unlearning to do. I believe everyone should have access to these techniques. A grounding in the type of critical thinking that this book is based on can change how you view your work, but also how you live your life. In a world where wild claims are thrown about with abandon, the techniques in this book are vital tools to improve your own work, and your life.

    So What

    So what? Really? You might live your life without some basic critical thinking skills. You are likely to say things in meetings that are plain wrong. You are justifying what you do with ‘perceived wisdom’ that makes no sense. You might base your life’s work on mistakes. You are living a lie. You are an embarrassment.

    So that.

    For Whom

    For anyone interested in learning how to research any scientific claims, or anyone working in software, whether as an engineer, tester, manager, executive, or end user.

    How I found it

    I found it from reading an article by Hillel Wayne called Is Software Engineering Real Engineering? This is a self-published book, and I purchased it here.

    Valuable takeaways.

    Be constantly vigilant about how you think. Humans are not logical machines, we are bags of emotion. Few of us read the research that is coming out of academia. Instead, we rely on peers, colleagues and tech popularisers on the internet. Software conferences, books, articles, and the like are a helpful addition, but they often lack the critical rigour of academic research.

    We have become detached from scientific methods of enquiry. We must use the knowledge and tools from academia to allow us to become better thinkers. Academia needs to share some blame for this chasm. Academics don’t do a good enough job of communicating their research to the software community.

    We suffer from several critical thinking issues.

    Information cascade. If everyone else believes a claim, we frequently assume it’s true, without questioning the original claim.

    Discipline envy. We borrow our experimental design from medicine and call it evidence based. The author cautions against this, as it seems to be an attempt to sound impressive, but frequently hides conceptual or methodological flaws. The author points out that medical research has a raft of problems. There is a large body of research methods from social science that software largely ignores to its discredit.

    Citation blindness. Essentially, we don’t do a good job at checking citations. If cited research supports a hypothesis, we assume the research actually backs it up. Unfortunately, some research papers are not really empirical, or they may support a weaker version of the claim. Occasionally, they don’t support the claim, but cite research that does. Far from being balanced, some research is opinionated, reflecting the authors’ biases.

    Anyone who thinks issues with critical thinking are a recent phenomenon, needs to improve their critical thinking!

    Myths we mistakenly believe – (for more info, read the book)

    10x programmer
    TDD is better than not TDD
    Waterfall is not Agile
    Bugs cost more the later you find them

    Flaws:

    The title. It’s a terrible title for a significant book, and it almost put me off before I began. A book for people who are serious about software, about thinking, deserves a better title. There is a second reason it bothered me. I am Irish, after all. So I traipse over to the wall and add this book to the list of Irish cultural gems bastardised and commercialised out of all recognition (leprechauns are currently in fourth place, just below Halloween, St. Patrick’s Day and Count Dracula).

    I hope the author re-publishes under a new title.

    This is a self-published book. The author is on the cover (Laurent Bossavit), but no editor is mentioned. I wonder if an editor could have turned this into an even better one. The writing can be a little jumpy. Some arguments go on loo long, and then fade out. Some chapters are separated without an obvious reason. These are minor flaws, but it’s a shame because the content and thesis behind the book are fascinating.

    Interlude

    There is a fantastic interlude — a cartoon, and it’s called “How to lie”. I won’t spoil it here, but it contains a line that we should all use more liberally:

    “Everything everyone knows about anything indicates that this is untrue.”

    What we need to do

    Become scientists. The author believes we all need to both practice and study software development. This means becoming familiar with cognitive social science to understand how people work, the mathematical properties of computation to understand how computing works, and observing and measuring both laboratory conditions and real-world practice to gain a more in-depth understanding.

    We need to ask better questions. For a new article/book, does it quote sources? Have the authors read the sources? For the most important ‘truths’, can I read the original sources and make up my own mind?

    We must get above our work and think.

  • Book Summary – How to know everything by Elke Wiss

    Book Summary – How to know everything by Elke Wiss

    “The object of a question is to obtain information that matters only to us”

    Sean Connery – Finding Forester.

    The author (a Dutch Philosopher who i dont know) has her say on this summary here

    I enjoyed reading How To Know Everything by Elke Wiss so much, I’ve written a book summary. I’ll use a five-stage technique that Prof. Dave Sammon taught us on a recent research course at Cork University Business School. I explain the what, why, how, so what, and for whom (thanks Dave). I will then describe how I found the book, and give you some valuable takeaways from the text.

    What is the book about? — At its simplest, this book deals with the art of asking questions. In reality, it’s about Socratic philosophy. It’s about our willingness to open our minds, close our mouths and listen. The concept is almost comically simple, but I found it genuinely profound.

    Why read it? — We never learn how to ask good questions, we never learn how to listen to good answers. Have you ever asked someone’s name, and forgotten it a minute later? Ever asked a question that offended somebody without meaning to? Or waited for another person to stop talking so that you can speak? If so, this is for you, my friend.

    How is the book structured? — There are five sections (with a summary of topics in brackets):

    1. Why we don’t ask good questions (we are more interested in scoring points, we are afraid to ask, we don’t know how to do it well)
    2. The Socratic attitude (show courage, become curious, embrace not-knowing)
    3. Conditions for questioning (be a good listener, ask permission, slow down)
    4. Questioning skills (question up and down, beware of using why, category errors)
    5. Moving from questions to conversations (following through, opening yourself up)

    So what — we can choose to become smarter or dumber with each conversation – we often choose dumber. So that. I know people who are proud to choose dumber. What drives this mindset? Arrogance covering up a fear? An attempt to mask a feeling of inadequacy? Maybe they believe that every thought that pops into their head is so special, they need to show it off. They remind me of a cat dragging a dead mouse in to its horrified owner, looking for affirmation.

    Every interaction should give us the opportunity to learn something, unless our mindset and habits block us. We can fix this – if we choose to. The book helps adjust us on three levels, each with increasing impact:

    • Technically – developing your understanding and sharpening your technique for asking questions.
    • Socially – helping you get more from interactions with others.
    • Internally – the most philosophical level. Reflecting on your internal attitude toward knowing and fostering the space for curiosity.

    For whom? — this is for anyone interested in getting smarter, learning more, and not being a closed-minded oaf.

    How I discovered this book. I’ve recently got my first set of reading glasses, and I feel like Superman (the eyesight, not the Clark Kent look). Everything is so vivid and colourful and incredible. The glasses have improved every situation except one (they don’t work well in the mirror). Anyway, over the years I’ve migrated to reading ebooks on either the Kindle store or O’Reilly (for work). Ebooks were convenient for me. I’d evolved past the need for a physical book made from a tree. I’m a digital guy now, a true modern man, leaving antiquity in my wake.

    Actually, I’m none of those – it turns out I was half blind, so the tree fetishisation is back. Now that I can see the numbers on my credit card again, I’m lashing them out online and in person. Filling the house with paper books, I feel glorious. I go from room to room, randomly opening books smelling them, like a bisto kid. Or a dog. I don’t care if I’m becoming canine. I crave the new book smell.

    In Hodges Figgis bookshop in Dublin (my favourite place in the city), I spotted the book I’m discussing. The bold title caught my eye as I came in the door. How to know everything, indeed! I picked it up and warily washed my eye across the table of contents. The title felt a cheap ploy. It’s in the same bracket as ‘improve your IQ by 20 points’, or ‘make every girl fall in love with you instantly’ or ‘get respect from your parents’. Impossible to learn from a single book. Or anywhere else. But, the more I leafed through the book, the more fascinated I became. I added it to the growing pile and brought it home. I told my mother I was reading this book. Her response was , “Mark, what do you need that for? I thought you knew everything already”.

    No book for that.

    Nine highlights/questions worth thinking about.

    1. What is a good question?

    The author is a practical philosopher and uses techniques from philosophy to help. She begins by defining her terms.

    What is a Good Question?

    • A question is an invitation. An invitation to think, explain, sharpen, dig deeper, provide information, investigate, connect.
    • A good question is clear and born of an open, curious attitude.
    • A good question remains focused on the other person and their story.
    • A good question gets someone thinking.
    • A good question can lead to clarification, new insights or a new perspective.
    • A good question doesn’t give advice, check hypotheses, impose a perspective, share an opinion, make a suggestion or leave the other person feeling judged or cornered.

    2. Six reasons we are bad at asking questions.

    1. HUMAN NATURE: Talking about yourself feels so much nicer than asking questions. We are too selfish and self-obsessed. Our ego makes us want to give advice as if we are a genius, rather than listen. We should stay away from the “I had the same experience“ story. We may intend to create a shared experience, but it often irritates and alienates the person telling the original story.
    2. FEAR OF ASKING: Posing a question can be a scary proposition. We are afraid of making other people uncomfortable. We are afraid that we will feel uneasy and are worried about clashes and unpleasantness.
    3. SCORING POINTS: An opinion makes more of an impression than a question. An answer makes a good impression, a question makes little impression. An opinion stops thinking, a question is where thinking begins.
    4. LACK OF OBJECTIVITY: Our ability to reason objectively is declining. Gut instinct dominates reason too often. There is an idea that freedom of expression means that we are unreservedly entitled to our opinion. It’s more than this. Freedom of expression includes a willingness to question our beliefs and accept criticism from others.
    5. IMPATIENCE: We think asking good questions is a waste of time. We think we lack time, instead we frequently lack the discipline and effort it requires to understand positions fully.
    6. LACK OF COMPETENCE: Nobody teaches us how.

    Before you interrupt someone, ask yourself:

    • Does anyone need to know what my stance on an issue is?
    • Am I interrupting their story to tell my story?

    3. The difference between ideas and opinions

    Try to question ideas, and not opinions. If we question an opinion, the owner of the opinion can feel threatened. When something is an idea without an owner, we can boot it around, hurting no one, and learning more.

    4. Separate observing and interpreting.

    Observing and interpreting are very different. We regularly apply judgement to observation. We can start with a simple observation, ‘Evan needs to iron his shirt’. This can lead to another thought, ‘Evan is an untidy person’. And ‘in fact he is rather lazy and disorganised’. Instead, we should realise we have made one observation – ‘Evan has a creased shirt’. We must try to suspend judgement where possible, and if not, be aware of our judgement. This is not a new concept. Quite a few years ago, Epictetus said:

    If a man wash quickly, do not say that he washes badly, but that he washes quickly. If a man drink much wine, do not say that he drinks badly, but that he drinks much. For till you have decided what judgement prompts him, how do you know that he acts badly? If you do as I say you will assent to your apprehensive impressions and to none other.

    5 Empathy is a two-edged sword.

    Showing empathy when asking questions feels like a human reaction. However, empathy is a complex topic. In the book ‘against empathy’ Paul Bloom argues that empathy is a force for good, but is biased towards people in our social group. It often helps used for those who look like us, the good-looking or children.

    Cognitive empathy can be useful. This involves using reasoning to put yourself in another’s mental state. An example here is a doctor assessing the impact of a negative diagnosis before delivering it to the patient. Emotional empathy is different. We need to distance ourselves from another’s feelings so that we can function effectively. If a doctor uses emotional empathy, they may be so overcome with empathy for a patient suffering that they cannot treat them. Bloom argues that we should use non-empathic compassion (creating the desire to help) rather than empathy. Feeling another’s pain affects your ability to judge objectively. Compassion allows you to dig more deeply and ask questions about the other person rather than about you, which will allow you to help.

    6. Good conditions for questioning

    I found this part of the book most useful. I should print this part up and create t-shirts for everyone I meet.

    Good listening is the key to getting the most out of good questions. Listening begins with setting your intention for a conversation. There are three primary intentions, which you can switch between in conversations:

    • The ‘I’ intention – what do I make of this? This is where you engage with the situation by considering what you would have felt or done in a similar situation. This type of position often triggers a fix, or advice.
    • The ‘You’ intention – what exactly do you mean? Listening with this intention reminds you that there is a lot you don’t know (the other person’s experiences or perceptions). You really try to understand the other person’s way of thinking. You never give advice or explain how you would have dealt with the situation. Your questions focus on getting deeper.
    • The ‘We’ intention – how are we doing? This is a meta position, observing you and the other person as if from above. You are conscious of how you are feeling and how the other person is doing. Is the conversation going in circles, how is the body language (relaxed, fidgety, tightening)?

    Caution: if you decide to adopt the ‘you’ intention, make sure you don’t end up like a detective. Don’t cross-examine every person you meet – this can obviously get uncomfortable for the recipient. You may also find yourself in a position where something sensitive or uncomfortable comes up. A traumatic experience, or a divisive political stance, for example. Asking permission is a great way to ease into a conversation. The author recommends using the following question:

    Do you mind if I ask you a few questions about that?

    This makes sure that the other person knows what’s coming. They can change the subject or say no if they are uncomfortable.

    7. How to improve your questioning skills.

    This gets into the more technical skills of how to ask questions. The author proposes a fascinating technique, which she calls questioning up and down. Questioning up refers to abstract concepts and downwards refers to concrete facts and reality. This technique should allow a person to move downwards until they establish the facts, and the ‘critical moment’, a key point/statement/fact/attitude around which the entire conversation revolves. Then the questioner can repeat the data they have heard and move upward to establish the underlying beliefs.

    Upward questions (towards concepts and underlying beliefs):

    • Why is that?
    • What do you mean by x?
    • What does x have to do with y?

    Downward questions (towards facts, events, statements)

    • When did this happen?
    • What exactly did z say?
    • What happened from there?

    The idea is to ask downward questions to establish the facts of a situation. Then move upwards to understand the beliefs and concepts that influence the person’s thinking.

    8. Beware the ‘why’ question.

    Many authors recommend using why as a starting point for a meaningful conversation. However, the book advises caution here. A why question can seem like a direct assault, like a detective shining a light into the face of a suspect. “Why did you vote for X party”? “Why do you associate with Y”? Instead, try to soften this effect by using what. “What is it about party X that causes you to vote for them”. “What makes Y a good person to hang out with”?

    9. Six categories of questions to avoid.

    1. Loser questions – these imply that the other party is a loser. These are not questions, they are comments aimed at reducing the other person.
      • “Are you late again?” (loser)
      • “Have you finished that assignment yet?” (Loser)
      • “Did you forget to bring your coat?” (Loser)
    2. But questions – ‘but’ is an innocent word which can slip into a question. ‘But’ says I already have an opinion about this, but I’m not saying it directly. “But don’t you think you should have intervened in the situation”, “but don’t you think this piece of work needs re-doing?” “But don’t you think Mark is a bore”. Even without a negative, it can totally change a question. “But why did you include John” differs from “why did you include John”?
    3. Cocktail questions – where we ask a question, and keep adding more questions until it becomes a question cocktail. It’s difficult to get an in-depth answer because the question is so obtuse. “Why did you do that, and why then? Oh, and you added Mary, didn’t she work on this before? Did that end up well for her? What are you going to do next?”
    4. Vague questions – where it’s unclear what the questioner is looking for. This is often because they use a concept which is personal to them, like good, or high, or appealing. It’s difficult to know what the questioner means by those words. For example, “was the concert good?” may get a different answer from ten random participants. Instead of asking “Is that tower high”, ask “how high is that tower”, or instead of “was the meal tasty”, ask “how did the meal taste”?
    5. Unwarranted either/or question – giving only two options when there are more on offer. “Do you want to meet today or tomorrow?” (you may want next week or never!). “Are you a vegetarian or do you eat meat?” (you may be a vegan or pescatarian).
    6. The half-baked question – “Coley was up to his old tricks again.” “What do you mean? ” The question isn’t specific enough. Is it asking about Coley, or his tricks, or the word again? A more detailed starry can get complex. “Felice had a meeting with the team to discuss a new software architecture. First, Cormac disagreed with Johanna on the overall direction. Then Robert presented a whole new design, which nobody else has seen. He used a new library which has never been in production. I didn’t know how to react.” React to what? The design? The disagreement? The alternative design? That no-one had seen it before? The new library?

    In summary, should you read this book? Well, it’s up to you. But I have a question for you. Are you willing to go through life missing the opportunity to learn more from every person you meet, or would you prefer to live in splendid ignorance?