Surviving and thriving in tech

Help and support for women and under-represented genders

Luce Carter, Sal Freudenberg, Cynthia Lee and me in our winning team at Hack Manchester

Do you need support to survive and thrive?

Are you a newcomer to the tech industry? Are you from an under-represented gender, eg a woman or non-binary? Do you worry about how you can find success and fulfilment in a male-dominated industry?

I often meet women and other people who are worried about their futures in this industry, but who have so much to offer, and find it helpful to get advice and support not just from someone like me with years of longevity in the industry, but also from each other.

Based on some conversations I had recently at a Code First Girls event, I’ve decided to offer a group coaching programme for gender minorities in tech.

How will it work?

  • We will meet weekly, online, for five weeks
    • Dates will depend on availability of participants – express an interest and I’ll keep you updated
    • Times will be adjusted to best suit the time zones and preferences of participants
  • There will be no more than ten people in each group
  • The total cost will be £150 per person (working out at £30 per person per session), payable in advance
  • Each session will last for one hour and will consist of a combination of
    • Brief inspirational presentation
    • Group discussion
    • Q&A
    • Conclusions and actions
  • Connections formed will be long-lasting, and I will facilitate the possibility for group members to continue supporting each other for no extra cost
  • For those that wish, they can sign up for another five weeks (group members will probably change in each run)
  • Details will vary according to the needs and desires of each cohort, but I expect the following takeaways as a minimum:
    • How to handle imposter syndrome
    • How to progress in your career
    • How to handle prejudice and the effects of unconscious bias
    • How to get support in the workplace

Who is the coach?

I am a woman with 24 years of software engineering experience. Halfway through my career I was laid off by my employer. I lost heart and gave up altogether, deciding instead to try another career. Actually I tried two separate careers. But four years later I realised that tech is my home, and I returned with renewed determination. That was 12 years ago, and since then I’ve achieved more than I ever believed I would. I now travel all over the world meeting amazing people and speaking at major events, as well as working closely with software engineers in multiple industries, helping them to improve their software development practices.

I used to lead the Made Tech academy, I taught the Coding Black Females Return to Tech programme, I taught for Code First Girls, and I’ve always been passionate about increasing opportunities for under-represented groups in tech.

How do you sign up?

Fill in my contact form and let me know you’re interested in the Surviving and Thriving in Tech Group Coaching. We’ll take it from there.

People Together, Singing

Sale Sings community choir members, all dressed up for our Christmas gig, smiling and waving.

Over here I explained how I was fed up of considering individual solutions to global chaos. I want to be able to imagine collective solutions, and the first step is to celebrate the collaboration I already know about.

I’m going to start with Sale Sings choir, which I joined in the summer of 2023.

It all started when I attended a 2-day singing workshop with my friend Katy, in February. Two days of singing, together with many others, and revelling in the amazing sounds and feelings people can create when they sing together. I was introduced to Rose, a wonderfully charismatic local choir director, and I knew I wanted more, so I joined her Sale Sings choir.

But no, it all started when I joined Accord gospel choir a few years ago. I was having a terrible time, being badly bullied by a member of senior staff in my teaching job. One of my colleagues told me about Accord. This small group of singers lifted me up, sang with me and laughed with me and helped me gain the strength I needed to move on to better things.

But no, it all started when I attended an African singing workshop at York Arts Centre when I was a teenager. What a wonderful way of singing! What amazing sounds we made together!

Or did it start when I was a child and I sang in the school choir? Or the local church choir? Or when my mother and grandmother encouraged me to sing at any opportunity?

It doesn’t matter. It’s really good for you to sing with other people. It makes you feel great. It’s beneficial for mind and body. “Singing in the shower gives you a bit of an uplift, but when doing it communally, there’s something about the synchrony of singing that creates this massive endorphin uplift.” And there’s more in this article about the benefits of singing: “A project for the UK government’s Foresight programme listed five ways to wellbeing – connect, be active, take notice, keep learning, give; singing [in a group] manages all five.” And crucially, it helps you to form connections with people, which is why it’s such a great example for a series about collaboration.

I’m not great in large groups of people I don’t know, and I confess when I first joined Sale Sings, I worried that people would be mean to me, or laugh at me, or leave me out of things. And I kept being delighted, over and over, by how kind and inclusive and friendly everyone was. That thing in this article about how “strangers who sang together for an hour emerged from the sessions with an unusually close bond”? I can tell you it’s true.

And then there’s the music. It’s so easy to create a massive gorgeous uplifting sound when several people sing together. It doesn’t matter if some people are a bit off key, or some have forgotten the words, or not everyone has quite grasped the rhythm yet. It doesn’t matter if you are the one that feels a bit lost. Together you make the magic (and you can listen to some of the magic from our Sale Sings choir here).

I’m so convinced of its power, I’ve started submitting singing workshop ideas to tech conferences. Fingers crossed someone will bite, and 2024 will see me leading a bunch of joyful geeks in song!

This is part of a series of stories celebrating collaboration in all its forms. I want to hear your stories too! Post in the comments here or on the intro post.

People Together

A boy sits at a table with a pen in his hand, looking frustrated and upset.

Often these days I find myself wondering, “What will I do if everything falls apart?” And by everything, I mean society. The world. The environment. It’s not hard to imagine. We’re surrounded by tales, both real and fictional, of war, environmental catastrophe, pandemic, zombie invasion. The most recent time my mind went off in that direction was while watching the film Leave the World Behind, but I could substitute this example with many others – from the news and from film/TV.

tl;dr It takes me a little while below to get to the point. If you’re in a rush, I’m asking for examples of ways in which people work together and collaborate for the common good. Add yours in the comments! My latest story is here.

I expect our family are not the only one that has had jokey conversations about where we would go to escape an impending apocalypse. One of my best friends jokily suggested a few years ago that I would not be invited to her well-defended self-sufficient stronghold, because I’m only a computer programmer – and the skills I have will be no use for growing veg or fixing leaky roof tiles.

But here’s the thing. Leave the World Behind contains a cynical analysis not unusual in productions of this kind. One of the characters, facing a vaguely-defined end-of-civilisation scenario, tries to encourage cooperation and prevent a violent stand-off with a neighbour. But this character is portrayed as living in a dream world. It’s every family group for themselves. Look after your own and don’t trust anyone else.

I found myself, as I often do, wondering where my family and I might go where we could be safe. What resources do we have in our small family unit that we might make use of if we could no longer trust anyone else to help us? And the film drove home the idea that if the shit hits the fan, we’ll all be alone. And I thought, well that’s it then. Not a unique or original thought, but if that’s what happens when everything falls apart, humanity really is doomed.

Many people think humanity is doomed. Because they don’t think that, as a global group, we have enough capacity to help each other when things go badly wrong. And things do go badly wrong, and they will, even if we can’t predict the scale or the frequency or any future collapse(s).

That was my first thought. That I couldn’t count on other people to help me and my loved ones in times of disaster. This is, of course, why people build bunkers and stockpile weapons and non-perishable goods. And yeah, maybe that’ll last you a while. But what will you do when your neighbours come knocking? Is survival even worth it, if that’s the cost?

But there was a second thought on the heels of the first one. That the only way we can survive large-scale catastrophes is if we focus on how all of us will survive instead of how me and my loved ones will survive. And even if all this is only in my fevered imagination for now (I haven’t started building a bunker), wouldn’t it be better if I directed that imagination towards collective solutions rather than individual ones?

My eldest son steadying my youngest son on the ice rink, when he was about to fall.

Because no, I’m not literally planning for a doomsday scenario. But I’m thinking about it. And I’m not the only one. And the more I feel hopeless about it, and the more I’m convinced that our communities, at global, national, local or small neighbourhood level, have no real capacity or desire to help one another in times of crisis, then the more likely my daily life and mental health will suffer. And the less likely I am to collaborate with other people in small day-to-day ways. And the more likely I am to become atomised, suspicious and lonely. And the less likely I and everyone else are to find collective solutions when the shit really does hit the fan. And therefore the less likely it is that any of us will survive whatever major upheavals we face in the coming years or decades.

Where am I going with all this? Good question.

  • My first thought was, “We’re all doomed. It’s every person for themselves.”
  • My second thought was, “If that’s true, then we really are doomed. But if collaborative collective solutions are possible, they’re the only way we’ll survive.”
  • My third thought was, “Of course they’re bloody possible.”

We might have messed up this planet, we might face corrupt and dysfunctional governments all over the world. We might be killing each other left right and centre, but as well as all that, we are cooperating with each other. We are helping each other, daily, in big ways and small ways. And if we weren’t, we wouldn’t still be here.

I started thinking about all the collaborative initiatives I’ve witnessed and been involved in, that I am witnessing, that I am involved in.

Those who don’t know me well might be surprised to learn that I default towards individual solutions rather than collective ones. Peopling is hard for me. I find most humans unpredictable, and groups of strangers stressful. Social interaction is draining. Any time I spend with other people has to be balanced with time alone.

And yet despite all that, I’ve learnt that I need collaboration, I need other people, and when I consider my own needs as well as others, I get a huge amount from working collaboratively. From only the last couple of years, I can list several examples. They were all life-affirming, inspirational, heartwarming. They made me feel better. And thinking about them gives me hope, that maybe we’re not doomed after all. I’m going to list them below and I’m going to come back here to talk about them, one at a time.

Luce, Sal, Cynthia and me - celebrating the fun we had together at Hack Manchester

But given the title of this post is “People Together” and the whole point of this idea is to focus on ways in which we are not atomised and we can and do work together, it seems like a no-brainer that I should somehow open this up and get other people involved. It’s still a half-formed idea. I’m not sure how this works. I know I have a tendency to over-complicate things and the best way to get started on anything is to keep it simple, so for now I’ll just say this:

  • The world is a scary place, and it’s tempting to believe that we’re all fundamentally alone.
  • It’s not true. We aren’t.
  • But it’s easy to forget that and to feel despair, and the more we believe we’re alone, the more we’ll behave as though we are. We won’t look to each other for help, and we won’t consider helping one another when it’s needed.
  • And stories are powerful.
  • So let’s remind each other that we’re not alone. Let’s tell each other stories of all the great things we do together.

In the first instance, and to keep things simple, those stories can be comments on this post. But I’d like, in the near future, to elevate each comment into a post of its own. I’m looking for a way of creating some kind of collaborative site where people can easily post stories. There are many ways I might do that – if you have ideas on how you can help, please let me know.

Below are quick descriptions of my examples. I’ll aim to come back and expand on each one separately, and I might add more as they come to me:

  • The Sale Sings community choir, which I joined in 2023. More here.
  • The intentional farming community I visited last year.
  • The Awamu Together music festival, which I performed at in 2023 and will perform at again in 2024 (although sadly 2024 will be the last such event).
  • The Samman Technical Coaching Society, of which I am a member (“Samman” is Swedish for “together”).
  • The ensemble collaborative working technique which I’ve been privileged to teach many people in 2023, and will continue to teach in 2024 (‘Ensemble” is French for “together”).
  • Small online communities. I have several of these that I contribute to regularly. One of them has been around for over 20 years and they’re all a source of succour, where people care about and support one another through all of life’s travails.
  • The free eight-week Menopause and Mindfulness group I attended this winter in a local community centre
  • The free storytime session I now lead for local children once a month in a local community centre
  • All the many conferences I spend time talking at, but in particular community-focused “open space” / “unconference” events such as SoCraTes UK.
  • Organisations I have taught for such as Code First Girls and Coding Black Females.

Sale Sings community choir members, all dressed up for our Christmas gig, smiling and waving.

PS I deliberately haven’t mentioned any specific politics or religion. Maybe that’s a cop-out, I dunno. For what it’s worth I’m not religious and my politics are left of centre, but that’s not the point. I used to sing in a gospel choir and I know religion can be a powerful positive force. In this context I make no assumptions, positive or negative, about those who share my politics or those who don’t. The point of this is that we tell each other uplifting inspirational stories of all the good things we can do together, to help one another and make things better.

(PPS This is a cross-post. The same post is also on my Medium blog.)

Videos of talks, interviews and live coding

Videos of live coding

Nov 2020 on Twitch: Refactoring — simple live demo using my Reconciliate code base:

Clare speaking during this video — code in background
Twitch refactoring live stream, 2020

Videos of talks

(not all my talks have been filmed — see here for full list of talks)

YOW! Perth, Tue Sept 12th 2023, Continuous Integration — that’s not what they meant.

YOW! Perth, 2023, Continuous integration — that’s not what they meant

Lead Dev London 2023, Wed Jun 28th 2023, The awful agony of the app store: When software delivery goes wrong. That link requires a Lead Dev account, but there is a free — and longer — version of the same talk (as delivered at YOW! London in Nov 2022) here.

Lead Dev London, 2023, The Awful Agony of the App Store

Lead Dev New York 2023, March 15th 2023, Let them learn! How to nurture great software engineers:

Clare speaking during this video — arms spread
Lead Dev NY 2023, Let them learn! How to nurture great software engineers

Lead Dev London 2022, June 8th 2022, Compassionate Refactoring (Join LeadDev.com for free to access this content):

Clare speaking during this video — big stage, including audience
Lead Dev London 2022, Compassionate Refactoring

Joy of Coding, June 17 2022, Let’s stop making each other feel stupid:

Joy of Coding, Let’s stop making each other feel stupid

YOW! London, Nov 2022, When Software Delivery Goes Wrong (Why App Stores Could Make You Sad):

YOW! London 2022, Why app stores could make you sad

GOTO Copenhagen, Tue 4th Oct 2022, How to stop testing and break your code base:

Clare speaking during this video — big screen in background
GOTO Copenhagen 2022, How to stop testing and break your code base

Thurs 9th Sept 2021, Devbreak21 — “Let’s stop making each other feel stupid”:

Clare speaking during this video — big screen and slides dominate the image
DevBreak21, Let’s stop making each other feel stupid

June 2019: Time Travel — How to Live Outside the Clock (at Lead Dev London 2019 with Sal Freudenberg):

Clare and Sal on stage
Lead Dev London 2019, Time travel — how to live outside the clock

Making learning conscious — how to build a learning culture, Made Tech Talks webinar, Wed 3rd February 2021:

Clare speaking during this video — big screen with slide dominates
Made Tech Talks 2021, Making learning conscious — how to build a learning culture

June 2018: Teaching New Tricks — How to Enhance the Skills of Experienced Developers (at Lead Developer London 2018):

Clare speaking during this video — big screen with slide with picture of dog dominates
Lead Dev London 2018, Teaching New Tricks — How to Enhance the Skills of Experienced Developers

Yves Hanoulle, June 2022: Who Is Agile series: “Asking questions is a good way of teaching

Mob Mentality, April 2022: Learning through the ensemble

How to build a successful engineer academy, Made Tech Talks webinar, Thurs 25th February 2020 1pm — 2pm GMT

Interview with Alex Bolboacă from MozaicWorks, May 2021. About TDD, maths, writing novels and lots more!

Interview with Chris Walker about my IT career, July 2020

July 2020: #MadeTechTalks webinar: Myself and @dreas1 were talking on the topic “How to spin up a digital project during lockdown: challenges, tips and tools”

April 2020: Podcast / Interview about refactoring with Robby Russell on the Maintainable podcast (not actually a talk or even a video, but it seemed to make sense to link to it here)

Feb 2019: Teaching experienced developers — Interview with the .Net Rocks podcast (not actually a talk or even a video, but it seemed to make sense to link to it here)

Jan 2019: NDC London, Jan 28th — Feb 1st 2019: “Teaching New Tricks — How to enhance the skills of experienced developers

Sept 2018: Let’s Stop Making Each Other Feel Stupid (at GoCardless)

August 2018: Podcast / interview on “Let’s Stop Making People Feel Stupid” with @AgileAmped and @ChrisMurman at Agile 2018 in San Diego.

October 2017, ThoughtWorks Manchester: We’re Going on a Bear Hunt — How to Banish Fear in the Workplace.

7th April, 2017: Graphics and circles

27th March, 2017: Lightning talk on “Be Bold for Change” for International Women’s Day at Thoughtworks Manchester

2nd Feb, 2017: Test Driven Novel Writing — pecha kucha talk from OOP Munich.

21st Jan, 2016: Mob Programming

9th July, 2015: Lightning Talk on Collaboration

Inclusive Design ID24, Sept 22nd 2022, Let’s stop making each other feel stupid

The Legacy of Socrates, Nov 24th 2021, Let’s stop making each other feel stupid

NE Bytes, online, Wed 20th Oct 2021: “How to stop testing and break your code base

Fri 3rd Sept 2021, Agile on the Beach — “How to stop testing and break your code base

Wed 19th May 2021 — io.net virtual meetup — “How to stop testing and break your code base” (my bit starts at 1:04)

June 2017: Teaching New Tricks — How to Teach good software development practices to both experienced and inexperienced team members.

27th Oct, 2016: How do you know what you’re doing? at Women of Silicon Roundabout

28th Jan, 2016: Women Can do That Too at Women of Silicon Roundabout

The Stupidity Manifesto

The Stupidity Manifesto

[Photo: @FelixFoggCircus, by @Karol_Jurga]

I’ve been delivering the talk “Let’s stop making each other feel stupid” for a few years now. It’s a popular talk, and a topic that’s close to my heart. Here’s a video of the talk from DevBreak 2021, and here’s a blog post which summarises the talk.

At the end of that talk and blog post I present the “Stupidity Manifesto”, which I’m reproducing below so that you can sign it and encourage others to sign it too!

The Stupidity Manifesto

LET’S STOP MAKING EACH OTHER FEEL STUPID. Instead, let’s…

  • ENCOURAGE EVERYONE TO ASK QUESTIONS
  • Lead by example: Be honest when we’re confused
  • Value curiosity over knowledge
  • Prioritise clarity over jargon
  • Remember we all forget stuff
  • Get excited about teaching and learning
  • Acknowledge the broad range of knowledge in our industry, and avoid judging someone if their knowledge doesn’t match ours
  • LET’S STOP MAKING EACH OTHER FEEL STUPID.

To sign the manifesto, simply add your support as a comment on this post. Each comment will be counted as another signature in favour of the manifesto.

The lucky 10,000: https://xkcd.com/1053/

To sign the manifesto, simply add your support as a comment on this post. Each comment will be counted as another signature in favour of the manifesto.

Need help rediscovering your geek joy?

Let’s stop making each other feel stupid

I’ve been delivering a talk with the same title as this blog post for a few years now. It’s a popular talk, and a topic that’s close to my heart.

Here’s a video of the talk from DevBreak 2021, and the following blog post was originally written for Agile Meets Architecture, Berlin 2023.

Note: At the end of this post I present the “Stupidity Manifesto”, which you can sign here.

Ginger cat covering its eyes, as though embarrassed or ashamed
This cat looks ashamed

Once upon a time, there was a female software engineer. When she studied mathematics at university, she was one of a tiny minority of female students. That was the first time she internalised the idea that women can’t do the same things that men can do. The evidence was in front of her eyes. And it was there again when she switched to software engineering. In her first job, she was the only female developer. And compared to her colleagues, she was a late developer. It seemed they had all taught themselves to code as children and teenagers. But this was the mid 90s. She attended university in the early 90s, where she never owned a computer and barely used one until after she graduated.

A few years later, in her second software job, she kept asking to work on the more difficult, more interesting, code bases… but she was always denied. When she interviewed for a more senior position elsewhere, she was told she didn’t know enough. She wasn’t surprised. It confirmed all her worst suspicions about herself.

Twelve years into her career, she was laid off and it was a relief. She had never felt like she belonged. She didn’t want to work in IT any more.

Here’s a question for you: Do you ever have to Google anything related to your sphere of expertise? When you do, do you shame yourself for it? Do you feel as though you’re supposed to know everything, and there’s something wrong with you if you don’t?

If you feel this way, you’re not alone. The woman described above is me. But now I’ve been doing this for over 23 years, and I make a living out of teaching software engineering skills. Does this mean I’ve finally reached the “comfortably confident that I know all the things” stage of my career? Nope. Quite the opposite.

The more I learn, the better I understand how little I know.

Text reads “Being an effective IT professional is not about what you know!” next to an image of a cat looking surprised.
Being an effective IT professional is not about what you know!

These days, when I find myself beating myself up for my ignorance (and I’m sorry to tell you that I do still beat myself up), I remind myself that learning is a fundamental part of this profession. Rather than worrying because you still have stuff to learn, you should instead be concerned if you don’t.

But even when we know on some level that this is true, it’s not always what we tell each other. And as a result, we do untold damage by making each other feel stupid.

What if we didn’t do this? Imagine a world where you arrive at your desk each day excited about learning new things. Where you never worry that you don’t know enough. Where there is no such thing as imposter syndrome. Because it turns out that being an effective IT professional is not about what you know. But we think it is — and that causes problems.

Problematic behaviours

I left the industry because I felt inadequate and stupid. It seemed that everyone else knew more than me. But I do a lot of teaching these days, which means I’m now very aware of how common this feeling is, and I’ve noticed some behaviours that I believe make it worse for all of us. I run through all of them in my talk, and I’ll present the following key ones in this article:

  • Laughing at others for gaps in their knowledge
  • Talking in jargon
  • Hiding a lack of knowledge
  • Gatekeeping

Laughing at others for gaps in their knowledge

I’ve lost count of the number of times I’ve witnessed colleagues emerge from interviewing a prospective employee and saying things like “Can you believe, I just interviewed someone who didn’t even know what a Z was?” followed by incredulous laughter. Haha, what a doofus, fancy thinking they could get a job here if they don’t even know that.

A cat peeking out from a box, looking as though it might be scared to come out
Don’t make people want to hide away!

For Z, you can substitute your favourite surely everyone knows about this item, and I guarantee I can find you somebody amazing, experienced and successful who knows nothing about it.

But it helps us bond with each other, right? If we can have a bit of a laugh about how stupid those other people are? And it doesn’t do any harm, because they’re not in the room. They don’t know we’re laughing at them. No, they don’t. But you do. I do. Everyone else in the room does. I’m certainly not the only person thinking, I must make sure I don’t become the next butt of the jokes. Instantly feeling stupid, as I consider all the things I don’t know enough about.

The worst thing about this is, I’m likely to handle this problem by taking steps to hide my ignorance. I’ll join in the next round of laughter extra loud, to prove I’m one of you clever people and not one of those stupid ones. I won’t ask questions to clarify crucial details. And I will find myself increasingly…

Talking in jargon

This is another one that can help us to bond with each other and feel clever, but it comes at the cost of making others feel stupid. Every time you make assumptions about what jargon others will understand, or even worse, judge them for not knowing the same jargon as you, you make it less likely they’ll ask for clarification. It becomes more likely that gaps in communication will widen, and your product will not behave the way people expect or need it to behave.

And of course, not only do people avoid asking for clarification, they take active steps towards…

Hiding a lack of knowledge

Of course we all do this. We avoid “asking stupid questions.” We exaggerate what we know in job interviews and on CVs. We don’t admit it when we find ourselves in meetings where we have little or no idea what anyone is talking about. It’s just self preservation, right?

The more we work in environments where knowledge is considered to be a good indicator of our colleagues’ proficiency, the more likely we’re not being honest with each other about what we know. The last time I was in the market for a new job, I reached a point where if I saw companies imply that they possessed advanced techniques for filtering out only the very best and rejecting the rest, I automatically rejected them. Because in those kinds of environments, people will go to advanced lengths to prove they are indeed the best… which means never admitting any weakness and therefore covering up the unavoidable fact that they don’t know everything.

Are these people happy and confident? No. They are likely peddling furiously underwater and permanently paranoid that someone will find them out… for what? For being stupid? Well yes, that’s what it feels like. But what they’re really in danger of revealing is their own basic humanity.

And of course, the kind of culture I’ve described above, the kind I came to deliberately avoid when looking for good companies to work for, is that of…

Gatekeeping

This is where we decide that we are special, and large swathes of the rest of the profession are not, and all we need is to perfect our formulas for identifying the pearls and rejecting the swine. And what does it do? Yep. It makes us all feel stupid, terrified as we are that we will come up against these standards and fall short.

Solutions

So, what can we do to address these problematic behaviours?

The Lucky 10,000

The Lucky 10,000 - comic by xkcd
https://xkcd.com/1053/

As described in xkcd’s excellent cartoon above, today’s lucky 10,000 will learn something exciting and new. And the rest of us have a choice: Embrace that journey and travel with them, or stand on the sidelines laughing at them for not having learnt it yet.

Making that decision to get excited about the learning our colleagues have yet to do, is about a lot more than individual choices in single moments. It’s about recognising that the range of knowledge in our industry is very wide. It’s wide, and it’s widening exponentially all the time. You could take two respected professionals with long successful careers, and find no overlap in their knowledge. Hell, you could find a busload of them with no overlap. It’s pointless to wring our hands over what people don’t know, and much more enlightening to embrace the learning of our colleagues and ourselves.

They don’t know as much as you think they do

Four circles, all with the same faces, but each rotated with a different one at the bottom. The following topics appear under the faces: Hadoop, iOS Native, AWS, AIOps, Recursion, Encryption, PySpark, SonarQube, Golang, Terraform, CentOS 7. The faces always look happy / confident, apart from the bottom one, which looks confused / distressed. The person at the bottom is feeling intimidated by the knowledge of all the others. But everyone has a turn at being confused.
The wheel of confusion

I use this series of graphics a lot in my talks. Here I show only four of the images, but it’s enough to illustrate the point: When you look at an internal message board where your colleagues are discussing a range of subjects, it’s tempting to think to yourself, “Oh my, all these people are so knowledgeable and confident on all of these subjects, and I don’t know about any of them.”

But of course each one of those people is only posting confidently about some of those topics, maybe only one each, and chances are you have posted knowledgeably yourself on at least one of them. And they are likely suffering the same worries and insecurities as you are, looking at each other — and you — and thinking how much less knowledgeable they are than everyone else.

You’re not doing anyone any favours — least of all yourself — when you assume people know more than they do. We can all benefit from being realistic about each other’s capabilities.

Be confident in your own ignorance

At the start of this piece, I talked about how I ran away from this industry in relief, glad to be laid off and determined never to return. But a few years later I found myself in need of a new job, and recognising that despite having not previously valued them, those twelve years of engineering experience were worth something to me.

I returned to this industry, but this time with a different approach. In the intervening years I’d been working for a lower salary as a high school maths teacher, so it wasn’t hard to return to technology at entry level, joining all the new computer science graduates and behaving as though as I was brand new. This gave me a new lease of life. I wasn’t pretending to know anything I didn’t, but I was excited and eager to learn. I let go of any shame and made a point of asking simple questions.

Of course those previous twelve years did count for something, and it wasn’t long before I found myself in senior leadership positions. And it was something of a revelation to me that the more open and confident I was about what I didn’t know, the more people respected me.

Not only did it help me to progress and learn quickly, it also helped those around me to do the same. When senior figures ask simple questions and show no shame about what they don’t know, everyone around them is empowered to do the same. Everyone feels less stupid, and their knowledge and competence increase more quickly as a result.

Happy cat, curled up on a rug and smiling.
Happy cat!

I’ll leave you with what I call…

The Stupidity Manifesto

[If you’d like to sign the manifesto, you can do that here.]

LET’S STOP MAKING EACH OTHER FEEL STUPID. Instead, let’s…

  • ENCOURAGE EVERYONE TO ASK QUESTIONS
  • Lead by example: Be honest when we’re confused
  • Value curiosity over knowledge
  • Prioritise clarity over jargon
  • Remember we all forget stuff
  • Get excited about teaching and learning
  • Acknowledge the broad range of knowledge in our industry, and avoid judging someone if their knowledge doesn’t match ours
  • LET’S STOP MAKING EACH OTHER FEEL STUPID.

If you’d like to sign the manifesto, you can do that here.

Need help rediscovering your geek joy?

Sudbery Software Engineering Ltd

Sudbery Software Engineering Ltd

I’m an independent technical coach, with 23 years of software engineering experience, offering a variety of services.

I’m most effective at the things I love the best, and these are detailed below. I’ve worked with a variety of groups and individuals, and you can see many recommendations on my LinkedIn profile. Please do contact me if you’d like to start a conversation about how I can help you and/or your organisation.

Things I love to do:

1. Help teams improve their software engineering practices, particularly in areas such as Test Driven Development, refactoring, continuous integration and collaborative working practices. For instance, the Samman Technical Coaching technique developed by @EmilyBache.

2. Keynote / speak at public and private events, on a wide variety of topics relating broadly to (a) good engineering practices, and (b) how we can look after each other. For instance, my talks at @SDDConf@JoyOfCoding@GOTOCon and @TheLeadDev.
For topics past and upcoming, see my events page. You can also see videos here.

3. Run workshops, coding retreats and online training on practices such as TDD, refactoring and collaborative working. For instance, my ensemble working workshop at @GOTOCon Amsterdam 2023, my coding retreat in Nov 2023 with @KevlinHenney for @SWCornwall, or my online quality code bootcamp and refactoring trainings for O’Reilly.
See my events page for more details.

4. Writing. My report on trunk-based development and continuous integration was published by @OReillyMedia in June 2023, my article on refactoring is published on Martin Fowler’s site, and there will be more to come.

5. Podcast hosting. For 12 months in 2021/2022, I hosted the Making Tech Better podcast, where I published fortnightly interviews with industry experts on the topic of improving software delivery. I am interested in finding a new podcast to work with!

Tips on Organising Hack Days / Hackathons

Caroline on Twitter asked “Currently researching “how to put on a data hack day” Any tips?”

Here is my very notey response, mostly based on my experience as (a) participant at Hack  Manchester (RIP) and (b) being a judge myself at various different events over the years.

  • Think about the comfort of the participants – both physical and emotional.
  • How can you be welcoming and supportive?
  • Give them the opportunity to solve real-world problems but with a lot of scope for creativity.
  • Give them a choice of different challenges.
  • Don’t expect judges to do full code reviews (too time consuming) – judge by presented results instead.
  • Ask participants to present their results in an easy to digest format (to streamline the judges’ job).
  • Let people present vision as well as working results (it’s hard to get things fully functional in a short space of time).
  • Recruit helpers to give a hand when participants are stuck.
  • When recruiting helpers, emphasise they do NOT have to know all the answers. Their job is to help people seek solutions, not provide solutions themselves.
  • Have a v strict time limit for final presentations. How many teams do you have? How long will presentations take overall if (eg) you give them 2 mins each and allow extra for changeovers? Is that too much?
  • You’ll be surprised how much people can present in even 1 min. Let them know in advance that time limits will be strict. Cut them off if they overrun.
  • One great approach if you have a v big event is to get them to create a 1-min video each, to be watched separately by judges.

SDDConf May 2022 – Compassionate Refactoring

Part 1 – Refactor Tennis1

git clone https://github.com/emilybache/Tennis-Refactoring-Kata.git

Choose your language

Refactor TennisGame1

Part 2 – Example of unit tests retrofitted

Either… git clone git@github.com:claresudbery/gilded-rose-kata.git

or… git clone https://github.com/claresudbery/gilded-rose-kata.git

(if in doubt choose the second)

cd gilded-rose-kata

git checkout csharp-test-start

Look at this file for description of problem (GildedRoseRequirements.md in root of repo)

Look at this file to see tests (/csharp/GildedRoseTests.cs)

Part 4 – Easier to understand / cheaper to modify

Demo 1 – Easier to understand / cheaper to modify

Part 6 – Extract Method

Demo 2 – Extract method

Refactoring catalog

Part 7 – Refactoring tools

Demo 3 – Refactoring tools

All Parts – Sticky notes from Walls

All visible here

Part 8 – Further resources and ideas

Recursion / Recursive Functions

Recursion / Recursive Functions

[Image by Maurits Cornelis Escher]

A recursive function is a function which calls itself.

It sounds like a simple concept, but in practice it can be hard to get your head around.

Here’s a lovely example of a recursive function:

void ExplainRecursion () {  
    var explained = GetInput(“Do you understand recursion yet?”);  
    if (!explained) {    
        ExplainRecursion();  
    }
}

It’s particularly nice because it uses recursion to explain recursion. It calls itself – it’s a recursive function. Every time it calls itself, it asks the question “Has recursion been explained yet?” and if the answer is No it calls itself again. It keeps calling itself repeatedly until recursion is finally understood, at which point it quits. What might not be immediately obvious is that when it quits, it will still be inside the previous call, and will keep returning until it reaches the first time it was called. Like this:

ExplainRecursion()

—–>Do you understand recursion yet?

—–>No => ExplainRecursion()

———->Do you understand recursion yet?

———->No => ExplainRecursion()

—————>Do you understand recursion yet?

—————>No => ExplainRecursion()

——————–>Do you understand recursion yet?

——————–>Yes! => Exit function

—————>Exit function

———->Exit function

—–>Exit function

Exit function

It’s true that this is a slightly jokey example. It works if you see the source code, but if you only ever saw the output you wouldn’t learn much about recursion. You’d just be asked the same question repeatedly and probably get a bit angry.

Here’s another simple example:

void Factorial(int n) {
    if (n == 1) {
        return 1;
    } else {
        return n * Factorial(n-1);
    }
}

This function is calculating “n factorial”, which is written as “n!” in mathematical notation. In case you’ve forgotten or haven’t come across this concept before, it’s easiest to explain with a concrete example: 5! (“five factorial”) is a quick way of writing 5 x 4 x 3 x 2 x 1. So n! means take the number n and multiply it by all the whole positive numbers that lie between itself and zero.

The above function calls itself, which means that unless n is 1 (because 1 factorial just equals 1), it will return a result… to itself.

Don’t worry if you’re feeling lost already. It took me a long time to be able to look at recursive functions without getting an instant headache. I found it helpful to draw little diagrams. For instance, if we use the above function to calculate 5 factorial.

Remember, the answer we expect is 5 x 4 x 3 x 2 x 1.

The first time we enter the function, we call Factorial(5), so n = 5. The function returns 5 x Factorial(4), so it gets called again and this time n = 4. That returns 4 x Factorial(3), which returns 3 x Factorial(2), which returns 2 x Factorial(1). Factorial(1) just returns 1. Here’s a diagram to help:

Factorial(5) = 5 x Factorial(4)

—–>Factorial(4) = 4 x Factorial(3)

———->Factorial(3) = 3 x Factorial(2)

—————>Factorial(2) = 2 x Factorial(1)

——————–>Factorial(1) = 1

—————>= 2 x 1

———->= 3 x (2 x 1)

—–>= 4 x (3 x (2 x 1))

= 5 x (4 x (3 x (2 x 1)))

Normally when a function returns a value, it’s over. We can move on. But with a recursive function, we might just land back inside ourselves again, and then we might return a value to yet another version of ourselves. With complex functions, this can be hard to trace through in your head without losing track. It’s also horribly easy to get stuck in an infinite loop.

Hopefully this helped. If not, don’t worry. It’s not just you! It’s a notoriously head-twisty concept.