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.
These are the notes (and some cat pictures) from the first iteration of this talk, which I’ve now delivered in a few places. There’s a recording of the talk here. You can see details of when I have delivered / will deliver it here.
Making people feel stupid: What does it mean?
People listen to what others say.
They overhear them judging people for not being clever enough or not knowing enough.
They internalise it. They worry that they will be next.
What’s wrong with me?
Maybe you’re quietly judging me already. Maybe you’re thinking, she’s probably not very clever and doesn’t like it when she gets exposed.
Maybe you’re right! I often think that about myself. But I have a maths degree, 18 years experience, I’m a tech lead with a major international consultancy, etc.
So, that was me imagining that you might judge me for being stupid. Maybe you did and maybe you didn’t. But the point is, I imagined that you would. Because I’m so used to people in tech judging each other for being stupid.
I’ve always felt there was something wrong with me because I struggle to understand things unless they’re explained in simple concrete terms.
And yet I can do complexity.
I can build complex systems out of simple parts.
If anything, my flaw is a tendency towards too much complexity.
…which is why I deliberately break things down into simple parts.
…but I also forget complex terminology – I recall easier-to-remember equivalents instead.
I have missed out on jobs because people were bemused by my apparent lack of expertise.
I have been told in interviews that I wasn’t competent because I couldn’t respond to the kind of question that requires you to have memorised stuff.
Impact on the industry
Facts, Figures, Statistics:
There will be an estimated 1 million more computing jobs than applicants who can fill them by 2020. This figure was projected by Code.org, based on estimates from the U.S. Bureau of Labor Statistics on job creation and separately, estimates of college graduation rates by the National Science Foundation.
Only 11% of employers (US) believe higher education is “very effective” in readying graduates to meet skills needed in their organisations.
Some 62% (US) said students were unprepared.
US: There are more than 500,000 open computing jobs nationwide, but less than 43,000 computer science students graduated into the workforce in 2016.
In 2016, the White House claimed the federal government alone needed an additional 10,000 IT and cybersecurity professionals.
Hands up if you feel like other people are cleverer / doing things better than you?
Impostor syndrome: “Somehow everybody has failed to notice how rubbish I am.”
I hate – am almost incapable of – playing the game where everything is obfuscated and translated into a language that only the elite can understand.
Ironically this means that my impostor syndrome is at least partially based around the fact that I don’t seem capable of doing the things that entrench everybody else’s impostor syndrome.
I can hit the ground running, but I keep forgetting.
I have to prove it to myself over and over again.
Scenario A: Meeting where people talk jargon & nobody understands
Me: Hi, sorry I’m late.
Them: It’s fine, we were just talking about the ARM processor.
Me: Ah right, yes of course.
Shit, ARM, I know I’ve heard of that before. ARM, um…
[some stuff I don’t hear cos I’m trying to remember what ARM stands for]
Me: “Look folks, I’m so sorry, but I’ve forgotten what ARM stands for?”
Them: “Articulated retention matriculation.”
Me: I have NO idea what that is. I’ll work it out as I go along.
Somebody else: Actually guys, I think we should be considering AMRM at this point.
Reply: Articulated meta-retention matriculation.
[someone else, not me]
That’s a very good point! We definitely need to get meta at this juncture.
Oh God, I was only just following this, but now they’ve lost me. Meta? What does meta mean in this context? What does meta mean in any context? It’s one of those terms that always confuses me, I know that much.
Oh well, I said juncture. I love saying juncture. It’s the perfect word for situations like this.
[some stuff that Person2 misses cos they’re worrying about what meta means]
Diversity and Inclusion
People want to fit in.
They use jargon to create a shared identity.
They feel bad if they feel like an outsider.
People will leave, or not join in the first place, because they feel excluded.
This disproportionately affects under-represented groups.
“…men in STEM subject areas overestimate their own intelligence and credentials, underestimate the abilities of female colleagues, and that as a result, women themselves doubt their abilities — even when evidence says otherwise.”
Stereotype threat has been shown to reduce the performance of individuals who belong to negatively stereotyped groups.
If negative stereotypes are present regarding a specific group, group members are likely to become anxious about their performance, which may hinder their ability to perform at their maximum level. Importantly, the individual does not need to subscribe to the stereotype for it to be activated.
It is hypothesised that the mechanism through which anxiety (induced by the activation of the stereotype) decreases performance is by depleting working memory (especially the phonological aspects of the working memory system).
Talking in jargon
These insecurities cause people to increase the amount of jargon they use.
They want to prove how clever they are.
Their colleagues struggle to understand them, but they pretend they do, to avoid looking stupid…
Complex impenetrable language is what people deploy as a kind of force field
Weird vicious cycle: everybody obfuscates to protect themselves from potential exposure as somebody who doesn’t fully understand.
In the process they confuse everybody around them, who in turn become terrified that somebody is going to notice that they don’t fully understand what’s going on, so they join in the game, make everything they say sound complicated, and so the cycle continues.
There does come a point where you’ve been immersed in it for long enough that only some of it is confusing, and some/most of it makes sense.
That’s quite a kick!
You have to pay your dues to get to that point, and it feels good. You feel special.
So you pull the ladder up behind you.
You had to go up it, and so should everybody else.
You’re in the club now, and you want to savour that.
So you join with your new comrades in mocking those who still haven’t arrived.
You make no concessions in your language.
You’ve learnt what it means! It was hard! Why would you waste all that hard work and abandon your hard-won vocabulary by explaining things in simple terms?
Explaining things in simple terms takes twice as long anyway.
Giving the answer you think people want to hear:
The hairdresser asked me whether I had straighteners and I answered Yes. Why? Because I felt like it was the “right answer”. I don’t have straighteners. I’m never going to manage this labour-intensive haircut I’ve been given.
Scenario E: When talking jargon feels good
I felt all pleased with myself recently when I worked out how to join in with a hangouts conversation by using words like “discoverability” and “distinguishable”. I felt less insecure, and like I was now a proper grownup, a member of the club. But meanwhile there may well be somebody somewhere hearing nothing but “blah blah blah”…
Is it sometimes ok?
“I can’t spend my whole time teaching people, I need people who can hit the ground running.”
Many people project a sheen of knowledge.
Many limit themselves by seeking to preserve knowledge once they find it.
People focus on their own experience – making themselves look good.
But when they look at someone else, they have a different agenda.
They don’t stop to wonder whether they have ever said anything “stupid” like that themselves – and if they did, WHY?
Or they remember it full well and don’t want anyone else to remember, so distract attention by joining in with the attackers.
We identify the things we CAN remember, then we fetishise them.
We push them over alternatives.
Not necessarily because they are better – just because we feel more comfortable there.
Definition of competent
What really impacts on you and your team?
Is it lack of knowledge?
What does it actually take to be good at your job?
What is the definition of competent?
What is the definition of intelligent?
“Be curious. Read widely. Try new things. What people call intelligence just boils down to curiosity.” – Aaron Schwartz.
People who are not techies are impacted too
Examples of support staff, stakeholders, non-technical people… being made to feel stupid.
My personal experience – the happy story
How I learnt to attack new knowledge outside my comfort zone.
The irony is that my career – and my enjoyment of it – has improved dramatically since I started admitting ignorance.
Why Empathy is so Important
“They only care about making themselves look good.”
This in itself is judgmental.
Think about how it feels like to be them!
You can find yourself alienating others without ever having conscious malicious intentions.
Other people know other stuff.
One: When they know stuff you don’t, you feel insecure.
Two: When you know stuff they don’t, you can get impatient.
Conclusions / Advice
Maybe you see me as an idealist. Or maybe I’m a pragmatist. Over the years I’ve paid attention to what works in life and what doesn’t. What makes people ill, what doesn’t. These are all practical hints for survival.
Does it actually matter how much people know? Industry constantly moving, people forget stuff.
Some of the most important moments in my career have been the times I’ve realised that my colleagues are also confused.
Eternal thanks to those that admitted it.
People are often scared to admit confusion.
I often don’t know what I’m doing.
The range of knowledge in our industry is VERY WIDE.
Don’t expect other people to know what you know, and vice versa.
People forget things they once knew.
If people don’t know enough, WHY is that? What’s deterring them?
What would happen if we changed the rules?
Focus on aptitude – recruitment becomes easier.
Encourage people to explore and experiment and learn WITHOUT RISK.
Stops people pushing less optimal solutions.
Make explicit statements to newcomers to your team, at start of meetings, etc – have a policy towards curiosity – keep repeating that simple questions are ok, that mistakes are ok, that if somebody doesn’t know something it’s in the interests of the whole team to help them learn. Plus, active encouragement to give feedback if these aims are not being met.
Tweet from Tim Post (@TinkerTim) re Stack Overflow:
“You can’t work on problems that you’re unwilling to admit. Wanting help often means being vulnerable enough to ask for it, and that’s where we are. Let’s keep making the internet better, without hurting people in the process.”
WE SHOULD ALL ENCOURAGE PEOPLE TO ASK QUESTIONS.
The Stupid Manifesto
LET’S STOP MAKING EACH OTHER FEEL STUPID. INSTEAD, LET’S…
Have an explicit policy of curiosity towards all things
Encourage each other to shout out if we discourage curiosity
Ask what people NEED to know, not what they know
Never judge someone because their knowledge doesn’t match ours
Give our colleagues every opportunity to learn and explore WITHOUT RISK
Give new people a chance to show us what they can do
ENCOURAGE EVERYONE TO ASK QUESTIONS
Acknowledge the broad range of knowledge in our industry
Remember our industry never stays the same
Remember we all forget stuff
Lead by example: Be honest when we’re confused
Focus on aptitude, not knowledge
Remember what it feels like when we are still learning
I’m currently helping my 15-yr-old son revise for his maths GCSE, and one topic is “finding the nth term of a quadratic sequence”. I’m an ex high school maths teacher, but I had forgotten how to do this. I couldn’t find decent complex examples on either of my favourite GCSE maths revision sites (Maths Genie and BBC Bitesize), and when you’re doing the more complex examples, a step-by-step guide is really useful.
So I’m placing my notes here in case they’re any use to anyone else.
You’re aiming for a result of an2 + bn + c, but easier examples might have a solution of an2 + b, and even easier ones will just be an2.
Simplest Example (an2):
Find the nth term for the following quadratic sequence: 3, 12, 27, 48, …
First calculate the gaps between the numbers – these are 9, 15 and 21.
Then find the gaps between the gaps – these are 6 and 6. Like this:
Take that 6 and divide it by 2 (it’s easy to forget to divide by 2!), to get 3. This tells you that your final result will contain the term 3n2.
I’ve already told you that this is a simple example – we’ve reached our solution: 3n2. But you should always check your results:
Yup, that’s our original sequence.
More Complex Example (an2 + b):
Find the nth term for the following quadratic sequence: 1, 10, 25, 46, …
First calculate the gaps between the numbers – these are 9, 15 and 21.
Then find the gaps between the gaps – these are 6 and 6. Like this:
Take that 6 and divide it by 2 (it’s easy to forget to divide by 2!), to get 3. This tells you that your final result will contain the term 3n2.
Create a grid, which starts with your original sequence. Below that, add whatever rows you need to help you calculate 3n2.
Now, subtract 3n2 from the original sequence. So in the below grid, we subtract the fourth row from the first row, and that gives us a new sequence, which we have placed in the fifth row:
start minus 3n2
We now have a row of constant numbers. This tells us we can reach a solution. It tells us to add -2 to 3n2, and that will be our solution: 3n2 – 2.
We can easily check this by adding up the fourth and fifth rows, which gives us the first row (the original sequence).
Most Complex Example (an2 + bn + c):
Find the nth term for the following quadratic sequence: -8, 2, 16, 34, …
First calculate the gaps between the numbers – these are 10, 14 and 18.
Then find the gaps between the gaps – these are 4 and 4. Like this:
Take that 4 and divide it by 2 (it’s easy to forget to divide by 2!), to get 2. This tells you that your final result will contain the term 2n2.
Create a grid, which starts with your original sequence. Below that, add whatever rows you need to help you calculate 2n2.
Now, subtract 2n2 from the original sequence. So in the below grid, we subtract the fourth row from the first row, and that gives us a new sequence, which we have placed in the fifth row:
start minus 2n2
We don’t have a row of constant numbers yet, so we need to keep working. We need to look at the gaps between the numbers in our new sequence (in the bottom row of the table):
Now we have found a constant difference. This tells us that there will be a 4n in our answer. Note that this is because we have found a linear sequence. Note also that in the case of a linear sequence, we do NOT divide the number by 2.
So now we add some more rows to our grid. First we calculate 4n, and then we calculate 2n2 + 4n. Finally we subtract (2n2 + 4n) from our original sequence (subtract the 7th row from the first row):
start minus 2n2
2n2 + 4n
start minus (2n2 + 4n)
We now have a row of constant numbers. This tells us we can reach a solution. It tells us to add -14 to 2n2 + 4n, and that will be our solution: 2n2 + 4n – 14.
We can easily check this by adding up the seventh and eighth rows, which gives us the first row (the original sequence).
More worked complex examples
Note that in this next one there is a NEGATIVE difference between the terms of the sequence on row 5. This one can easily catch you out. Rather than thinking of the difference between the numbers, it helps to ask yourself, “how do I get from each term to the next one?” The answer in this case is, “subtract one”. This one can also look a little tricky because it contains fractional numbers, but you just follow the same rules as before:
Telling the Difference Between a Linear Sequence (an + b) and a Quadratic Sequence (an2 + bn + c).
When we calculate gaps between the numbers in the sequence, if the first level of gaps is constant, this means it is a linear sequence:
If the second layer of gaps is constant, it is a quadratic sequence:
Up until last week, my ten-year-old couldn’t quite tie a shoelace. These days you can easily get away with it, because apart from walking boots, most kids’ shoes don’t have laces. But his new school shoes have laces. So it’s time for us to get this sorted.
I enjoy teaching, but there is this thing called “Expert-Induced Amnesia“. It’s about that skill you’ve had for so long, you don’t know how you do it. When you try to teach it to other people, you struggle. As a parent, I’ve been starkly reminded of this in two examples: One is riding a bike, and the other is tying your shoelaces.
Teaching a child to ride a bike is extra hard, because you know at some point you’ll have to let go and hope for the best. And have the band-aid ready. But the shoelaces thing… maybe it’s just me, but wow, I found it hard to explain what I do and how I do it. My fingers just know. I don’t think about it. It’s muscle memory. And as soon as I try to slow it down and explain it, I can’t even remember what to do. I can only do it quickly, in a blur.
Also, learners need to practice repeatedly to get it right. Explaining this repeatedly can get wearing, particularly as most of the teaching opportunities come when you’re in a hurry to get out the door, and really you just want the shoes on the feet, with minimal fuss.
One of the hardest parts of teaching is patience. Resisting the urge to do it for them. “Oh, I’ll show you,” you say. You think you’re being helpful, but really you’re just being impatient. They need to do it for themselves.
That was a ridiculously long preamble.
The original version of this post was based on a series of diagrams I drew for my sons, to teach them how to tie their shoelaces the way I learnt. But then people showed me two videos which claim to teach revolutionary new shoelace-tying methods which are super-easy to learn.
A video my son and I failed to follow
The second video was supposedly even better than the first, and therefore my 10-yr-old son and I started there:
We played this video, rewound the crucial bit, played it again, rewound it…
Half an hour later, we were none the wiser. The crucial instruction, “pinch both of them and pull” is accompanied by a blur of activity, and no matter how much we watched it, we couldn’t make head or tail of it. My main problem was that if both hands were holding the bits of lace we were directed to hold, then the fingers got in each other’s way and it wasn’t possibly for both of them to pull. Even if we briefly let go with one hand, we got nowhere. It was frustrating as hell but in the end we gave up and had a look at this video instead:
A video my son and I got our heads around in the end
This one had a similar sticking point – “Feed them through each other’s loops”. Again, we had to rewind a few times and replay. Neither of us could work out which bit went through which bit. One problem is that both of these videos are shot from the point of view of a spectator, NOT from the view of the person tying the knot.
In the end I worked out what was going on and added this one extra instruction for myself and my son, and finally we both got it: After you have created the two loops, when you get to the “pull the loops through each other” part, you will have two loops facing you. At this point, one pair of fingers should grab the front of the other hand’s loop. The other hand should grab the back part of the opposite loop. Then each hand pulls the part it holds, through its own loop.
Oh, and that first video is describing the same technique. If you imagine yourself grabbing the front and the back of each loop and pulling it through, and if you turn the “zigzag” into two loops, you can make it work. That’s the only way I managed to make sense of it, but maybe my brain is just broken.
Some really good diagrams
This set of diagrams here is really good, and shows the knot from the knot-tyer’s perspective: https://www.fieggen.com/shoelace/ianknot.htm
My original diagrams
The original version of this post was based on the diagrams I drew below, and I have to confess I’m rather proud of my lovely diagrams. So I’m going to leave the rest of this post in place, despite the fact that I now think the Ian Knot (above) is a better technique. Oh well.
I forced myself to sit down and work it out, step by step. Then I drew diagrams and stuck them to a piece of card with laces attached. Then I gave it to my eldest son and left him to practice on his own. And now it’s my youngest son’s turn, so I dug the card out again (which is why it looks all tatty and old).
And here it is. Apologies for the tattiness. But just in case you’re teaching somebody to tie shoelaces, or learning to do it yourself… here are some diagrams that just might help.
(Also, apologies if you thought this was going to culminate in some fantastic metaphor, where the laces represent the meaning of life, the universe and everything. It really is a post about shoelaces.)
This was originally the submission for a talk which I’ve now delivered in a few places. There’s a recording of the talk here.
“I know nothing.”
“I know less than nothing.”
“I am an impostor.”
“The more I learn, the more I realise how little I know.”
These are sentences that will be familiar to the vast majority of IT professionals. But how about these?
“They know nothing about X.”
“They have no relevant experience.”
“Wow, I just discovered my colleague doesn’t understand Y. I’m shocked.”
“Can you believe, I just interviewed this dev, and they didn’t even know what a Z was?”
Over my 18-year software career, those last two have been said to me countless times. They are said derisively, scornfully, impatiently. And every time those words are said, we lose both existing and potential members of our profession. We lose them because they feel stupid; because they believe they can’t keep up; because they have given up on ever really knowing what they’re doing; because they’re terrified that people are saying the same things about them.
We work in an industry where knowledge is highly valued, and where every time we look for a new job we have to prove how much we know. We find ways of posturing to one another, of proving how well-informed we are. Sometimes we join in when others’ knowledge is criticised – relieved that we are not the target ourselves.
And yet, we know that everybody has gaps. There are a million different paths through software development, touching a million different combinations of technologies and skills. On a day-to-day level we have to specialise on one task at a time. The skills we don’t need right now are necessarily forgotten, or delegated to someone else. And that’s fine.
If somebody already feels like they don’t “fit in”, then this kind of pressure and insecurity can be the final shove that persuades them to leave the profession or not try and join in the first place. Women and non-binary people, people of colour, older people, LGBT people and many other under-represented groups are strongly impacted by intellectual elitism. But of course, ALL software professionals are impacted.
Let’s stop putting pressure on individuals to know everything, and focus instead on how teams can work together to build and provide the unique combination of skills required to deliver their current project – in the certain knowledge that whatever that combination was today, it will be different tomorrow.
Instead of knowledge, let’s focus on aptitude. Instead of judging people about what they don’t know, let’s help them to feel excited about all the new things they’re going to discover.
Instead of saying “For God’s sake, do you really not know about X?” let’s say “Fantastic, you don’t know about X! Lucky you. That means you get to learn it. What can I do to help?”
(I’m hoping to do talks on this topic at events in 2018 – let me know if you have an event you’d like me to talk at).
I used to be a high school maths teacher. It didn’t go well. I miss the energy and creativity of the young people I worked with, but apart from that I have no regrets about leaving that profession behind me.
A friend of mine has just completed his first term of teacher training, and it’s HARD. You would think that now the Christmas holiday period has started, he’d be able to have a rest. Nuh-uh. Too much work to do.
Coincidentally I’ve also been facing a giant to-do list this week, and with the festive season fast approaching I’ve struggled to stay focused. But I have various coping mechanisms, which I just shared with my teaching friend and I thought were worth preserving for my own benefit too. And if they can help anyone else (particularly teachers), so much the better:
“What you have to remember is that you’ve been working flat out for months without even the option of slowing down. Whether you like it or not, your mind and body need a rest and what’s happening right now is that your subconscious is forcing that rest on you whether you like it or not. Sadly your conscious mind knows that there isn’t really time for that rest, and that’s preventing you from enjoying it – which is a shame.
1) Accept right now that the workload is impossible. Therefore it’s either not all going to get done, or some of it will have to be done to a poor standard. There’s no point lying to yourself about that. You can’t bend time. You and thousands of other teachers are in the same position and you just have to accept it.
2) Given that you’re not going to get all of it done anyway, just pick TWO OR THREE SMALL THINGS and do those. Be unambitious. Don’t tell yourself “today I’m going to do the top 50 things on my to-do list,” because that’s a lie. You’re not going to achieve that, no matter how much you hope. And you already feel shit about that, and the whole thing is so depressing that it’s preventing you from doing anything.
Instead, aim low. Tell yourself you’re going to do a small number of things. Then do them, and feel good about having achieved your goals for the day. If that glow of success gives you the energy to do a little more, fantastic. But don’t plan for that, otherwise you’re back to square one.
Baby steps. You need to get back into a rhythm. If somebody gives you a mountain to climb when you’ve just eaten ten mince pies, you’re going to tell them to sod off. But a flight of stairs? Yeah. That’s a possibility.”
I just did something which I realised I often do, and may also be good advice:
I scrolled down my to-do list until I found something I could easily do. The thing in question is pretty pointless and not at all urgent. It can easily wait til after Xmas and the world wouldn’t end if I never got round to it at all. But it’s a gateway drug. It’s not only easy, it’s vaguely enjoyable. And I know that it represents an “in”, ie once I’ve done that, I’ll be in the swing of Getting Things Done and I’ll find it easier to tackle a more worthwhile item from the list.
I know from experience that if I don’t do this, I’ll just arse around on the internet and do nothing from my to-do list. So it’s better to do something slightly pointless, but knowing I’ll find it much easier to follow it with something pointful… than to do nothing at all.
This list is culled from a thread where people were asking for useful resources when learning Git. A lot of useful recommendations were made, so I’m summarising them here (for my own benefit as much as anything):
Git magic (“Rather than go into details, we provide rough instructions for particular effects. After repeated use, gradually you will understand how each trick works, and how to tailor the recipes for your needs.”): http://www-cs-students.stanford.edu/~blynn/gitmagic/
I ran a git workshop for some devs earlier this year – I created a repo, a bunch of exercises and some top tips. Everything you need to find your way around should be in the readme: https://github.com/claresudbery/Git-Playground
I find it very helpful to understand what the definition of a branch is: it’s just a commit, which defines the current head of the branch …and that allows you to explain the concept of “detached head”.
I would also encourage people to dig a little into the gitconfig folder and understand what diffs and commit IDs are all about.