Friday, November 05, 2021
It's true! I helped to write a book! Another book! (Do not ask me what this brings the total to, I truly do not know.) This one is about some of the C++ Core Guidelines.
Opinions vary on when it will be available: maybe the last week of 2021, maybe early 2022. You can pre-order from the publisher if you can't wait. There will be both an ebook and a paper version.
It's Guy Davidson who wrote it really; I have been a sort of editor and suggester and inspirer most of the time. If you liked my CppCon 2017 talk, 10 Core Guidelines You Need to Start Using Now, you will love this book, and not just because it's three times as many guidelines. Guy has included explanations of the 30 guidelines we chose, along with plenty of examples, the occasional diagram, and stories that put them into context and show you why it matters how you write certain constructs and why you should avoid some aspects of the language entirely. We are delighted that both Bjarne Stroustrup and Herb Sutter, who edit
the Core Guidelines, reviewed the book, gave us helpful comments on the
text, and wrote a foreword and an afterword for us as well.
I learned things writing this. You will learn things reading it. It may well change the way you approach code. That is one of our goals. The other is to get you trusting the guidelines and dipping into them when you have decisions to make about how to implement something. If these 30 are useful and good (and they are!) then imagine what else is waiting for you when you're ready!
Please spread the word far and wide.
ps: the full title is quite a mouthful. We're thinking of RainbowFlower as a nickname for the book. What do you think?
Tuesday, August 31, 2021
This summer has featured a lot of personal busy-ness and not a lot of work things to announce. One nice thing that has happened is my renewal as an MVP.
According to various "kate bio.txt" files kicking around my hard drive , I was first awarded in January 2004. So it will be a while yet until the blue 20 year marker arrives. The program has changed a lot over the years, but it's still relevant to me and a great source of information from the Visual C++ team.
Monday, May 17, 2021
In April, I did my Naming is Hard talk at ACCU 2021. I'm getting better at doing talks online and handling interactions, at least I think I am . The recording is now online, so if you weren't at the conference, you can watch the talk. Being there is still better, even when it's digital - being able to chat to other attendees and the presenter is always going to be better than just watching a recording.
I added the talk to my youtube playlist of conference talks, so if you like that one and want some more, take a look!
Monday, March 08, 2021
I’ve been thinking lately about a lesson I saw taught in a martial arts class over a decade ago.
A young student was misbehaving. I knew this kid from field trips and other school activities, and he was doing typical things for him – not paying attention, calling out funny responses from the back row, making faces and showing off, that sort of thing. He was always a little difficult to manage but this particular day he was worse than usual. One of the instructors stopped the class and took the boy aside from the group. He picked up a lightweight rattan sword. They use these for practice – they’re very light, and they are made of several light sticks bundled together. They make a loud clattery noise when they hit, and use up most of the energy doing that, so they don’t hurt. They weigh very little.
The instructor got the student to sit or kneel, and hold his hands out straight in front of him at shoulder height. Then he held out the sword and asked the student to take it with both hands, holding the sword and his arms all parallel to the floor. Simple. You could do the same thing yourself right now with a ruler or a pencil or anything else rigid and lightweight. It’s trivial to hold your arms extended, elbows locked, hands a fixed distance apart (because they’re holding something that doesn’t bend or stretch.) Easy, right? By now everyone was watching to see what the actual punishment was going to be. Would the instructor now hit the student, or demand they do something difficult? (It was common in that class to assign pushups for misbehaviour, and I adopted the habit myself, giving my kids pushups in the grocery store if they were driving me crazy.) But no, the instructor just stepped back and said “just hold that as long as you can.” The kid grinned. Everyone else looked puzzled. It was trivially easy to do.
But if you try this yourself, you’ll soon discover that very quickly it gets harder. It starts to really hurt after just a few minutes. If you’re stubborn and you grit your teeth, you can keep going. This student was very stubborn. After a while though, his arms would occasionally droop down. “Either put it down or keep it up! Shoulder height! Arms straight!” the instructor would call and the student would try again and manage to get back into position. Eventually he was clearly in distress. The instructor told him “you can put it down whenever you want” but it was quite a while before he did. His muscles were clearly very sore.
On that day, the instructor didn’t explicitly close the loop. He seemed content to have found a way to get through to this student that classes were not his to disrupt and there were things the instructors could do that the student didn’t like. But years later, I saw a larger lesson in the choice of that particular exercise. Lifting that light sword (or the pencil or ruler you tried this with) is nothing. It’s really nothing at all. No effort. Anyone can do it. And at first, holding it is nothing also. If you had never lifted a pencil before, and you met someone who was struggling after holding one for many minutes, and you tried lifting a pencil yourself, you would be really puzzled. “Why are you complaining? This is super easy. There’s nothing to it! Anyone can do it!” The student’s misbehaviour was like this. Each little thing – the funny comment, the silly face, doing the move backwards – was in itself nothing. Easy to deal with or ignore. Not a problem. But enough of them add up. Just like the time holding the light weight. It becomes hard. It becomes painful. It becomes unbearable.
I really urge you to try this. How long can you hold the pencil or ruler out before you start to feel an effort? Before it hurts? Before you physically cannot do it any longer? Try predicting these times and then doing it.
The world is full of things that are trivial and nothing if you only experience them once, or once a decade, for a few minutes. It can be nearly impossible to imagine that these trivial things could ever add up to something painful. In 1970 (yes! 50 years ago!) a university professor coined the term microaggression for tiny moments of “you don’t belong” aimed at racial minorities, disabled people, women in male-dominated industries, gay people, and so on. People who haven’t experienced a steady diet of “you don’t belong”, however mild, often literally cannot imagine how it could add up to something painful. Sure, maybe you wince for a moment when someone assumes a group of developers are all male, or all straight, but it’s no big deal, right, and I’m sure the women know that when we say “men” we mean everyone, and the gay people know that when we say “wife” we mean wife, husband, partner, whatever. On its own, one tiny moment of “the only people I have to consider are X” is a little needle for people who aren’t X, but it’s such a tiny needle, who would complain, who would object, there was no nasty intent. Think about holding your arms out for 10 or 15 minutes and then think again about exclusionary language, policies that assume only married people have children, asking people “where are you from”, telling someone “you don’t look like a software developer”, making jokes about people’s weight or appearance, and all those tiny tiny little things that are nothing once, but that truly genuinely add up over time to real pain.
And then ask yourself: if it really doesn’t matter whether you say “men” or “people”, then why is it so important you keep saying “men”? That sounds like it actually does matter after all. If it’s no big deal and of course we all know that there are people who differ from you in some way, why are you not prepared to do the work of talking as though such people exist, instead asking them to do all the work of translating your literal words into what you probably meant, or would have meant if you had thought about it? How can you lessen some of the pain and effort other people have to put in all day, every day, day after day? It will be no big deal to you, right?
Saturday, February 20, 2021
A lot of people say often "if you're comfortable, you're not learning", "the only way to grow is to get out of your comfort zone", "don't expect to enjoy changing yourself" and the like.
And you know what? This is wrong. Sure, sometimes when you're doing a new thing you don't know how to do, it feels weird and scary and you're a little embarrassed and a little lost. But not all learning is like that. Sometimes learning a new thing is joyful and exhilarating and marvelous. Sometimes you have a teacher who is reassuring and supportive, sometimes you're just discovering connections and trying things that work and it's just fantastic. Don't tell those people they're not learning! Learning can be one of the most pleasant and wonderful things we do. I try to live my life that way both while I'm learning and while I'm teaching.
I think it's some sort of leftover Calvinist thing: we're not supposed to like work, we're not supposed to find joy in good things, we're supposed to push ourselves and do them even though they're horrible. Think of sayings like "No pain, no gain", "Feel the burn", or "They call it work for a reason." Sure, some stuff is difficult and you don't really want to do it but you do it anyway because it's important, or you said you would, or someone's paying you, or you know you want the end result of it. But some stuff is fun and joyful and delightful and you do it with happiness and it's still important, still something you said you'd do, you still get paid, and you still get the end result. I remember teaching someone some stretching exercises and they said with complete surprise "I like doing these! I thought exercise was supposed to be horrible!"
How would it change your learning if you let yourself enjoy it? If you let go of the idea that learning only happens in discomfort? If you could feel yourself improving at whatever you're learning and enjoy that?
But that's not the worst of it. Yes, people are missing out on a ton of joy that they could tap by just sitting up and thinking "hey, I really like my work. learning this stuff is super fun. Wow, what a great time I'm having." But on top of that, there are a pile of "teachers" who basically make you feel bad, and if you object they say you're resisting learning. Fitness instructors who literally make the fat people cry while exercising, because "that's the only way they will change what they've been doing." Activists and influencers and everyone who wants to change your opinion starting with upsetting you and keeping you upset. "hey, don't blame me. If you're comfortable, you're not learning." "If you're happy, you're not growing." First, that's not true. And second, it doesn't then follow that if you make me uncomfortable or unhappy I magically grow and learn. You need to focus on teaching, leading, inspiring, educating, showing, demonstrating, and modelling.
Yes, I may feel clumsy as I learn a new technical skill, lost as I try to understand new facts, embarrassed as I realize things I did wrong in the past. When those come as a side effect of learning, I need to embrace them because discomfort can be part of learning and growing. But there isn't some short cut where you tell me I'm horrible, say things to upset me, and claim that upsetting me is proof you're a great teacher. It's not. There is no need for you to actively try to put me in a bad place. Sure, I may need to be ok with feeling bad as part of learning. But yelling at me, telling me I am not good enough, speaking roughly to me -- these aren't teaching skills. They're psychological tricks and I am not ok with them. Perhaps you truly believe it's important to cry in order to learn. Well, you're wrong.
I'm not saying everyone has to centre my happiness to teach me. What I am saying is that some teachers (and I have names) claim they don't care if they upset others, but that's a lie: they do care. Step 1 is to upset the learners. It's their trick to get people to listen, or to let themselves feel important, or to say they have changed a person by making them feel bad. If you meet a teacher like this, whether it's a fitness trainer, a culture improver at your workplace, a twitter influencer, a tech trainer, or a conference speaker, walk away. You can find someone to learn from who won't emotionally manipulate you as part of the process. You can learn in comfort, or in the discomfort that comes from realizing you have a lot to learn; you're not obliged to learn in artificial discomfort imposed by someone who thinks it makes them a better teacher to do that to you.
Wednesday, September 02, 2020
A little while ago, I recorded a chat with Adam Bell for the CoRecursive podcast. My episode is now published, and it's good. There's a transcript, which needs some help (C++ apparently sounds like syphilis to machine transcription), but will give you an idea of the topics we covered so you can decide to listen. It's definitely a conversation to listen to, with tone of voice and laughter and such being more important than in say, how to write generic lambdas or some other technical topic.
We basically elaborated on the 5 tips I covered in a lightning talk at Meeting C++ 2017, while I was still receiving treatment but knew that it was working and I wasn't dying after all. So the focus is on how to do your work and manage your time more than on anything specifically C++-related. We also talked a little about #include <C++> and the culture of this industry, and what I (with some friends) am trying to do about that.
Take a listen, and I hope you enjoy it.
Thursday, August 06, 2020
At the start of the lockdown, Pluralsight made its huge curriculum free to help those who were suddenly needing new skills to find a new job during the pandemic. I saw a huge number of views of my C++ course for those who don't already know how to program. It was ironic, because I was busy updating that course, a process that is finally complete.
Please check it out on Pluralsight. The new course is called Learn to Program with C++. (The similar-but-not-the-same Learn How to Program with C++ is the old one.) Here's what I did to the 6+ year old course:
- redid all the demos in the latest compilers (Visual Studio Community Edition on Windows; Clang on Ubuntu and Mac)
- added more Ubuntu and Mac versions of demos and tested EVERYTHING on all the compilers
- moved content to slides and then just demonstrated it in the demo, instead of trying to explain concepts during long demos where there's no typing or other "demo" action
- took a more "modern C++" approach wherever I could
- improved the names in my sample code, trying not to have a,b,c and the like if I could
- added some explanation of "make" and removed rather a lot of "how to get Visual Studio to be nicer" because it does that itself now
Plus I just generally tweaked samples, slides, and demos throughout the whole course based on comments I've had from new learners since the original publication. It's a better course.
People often say that C++ cannot possibly be taught as a first language, but that's wrong. Modern C++ is not that hard. This course is a little over 5 hours long and covers most of the syntax and punctuation you need, functions, classes, type safety, using templates from the STL like vector and string, and even touches on const and RAII. If you want to learn C++ for whatever reason, don't let someone else tell you that you must go and learn some "scratch" or starter language first before coming back to what you really want to learn.
If you already know one programming language, and concepts like "if" or "loop" then you don't need this course. C++ Fundamentals Including C++ 17 is for you. It covers even more syntax, punctuation, library, and design aspects of the library.
As always, if you don't have a Pluralsight subscription, you can get a ten day trial by clicking the big white square on the blue sidebar of this blog. Enjoy!
Tuesday, June 09, 2020
This year is very strange, but conferences are still happening. And they aren't all free, either. Perhaps there's a conference you'd like to go to, and being online makes it almost feasible for you, but you can't afford the conference fee? If you're a member of an under-represented group in C++, you might win a scholarship to C++ on Sea
in July or CppEurope
in just two weeks. (I'm speaking at C++ on Sea, so if you win, you'll hear my talk.) The scholarships are arranged by #include <C++>
and the application process
is pretty easy. Please let us know a little about your background: perhaps you're part of a gender minority, a racial minority, or in some way you feel that there are less people like you in C++ than there are in the world. If you work somewhere that pays to send you to conferences, this isn't the program for you: this is for people who maybe aren't working, or who are working somewhere that sends other team members to conferences, but not you. Your application should show us that, so we can decide to send you.
More details, including a list of conferences we've sent applicants to in the past, and testimonials from recipients, are on the scholarship page
Want to contribute? We're ok for these two conferences. But when face to face conferences start again, we'll be raising money for admissions, plane tickets, hotel rooms, and all the other costs that keep people away from the life changing and career changing benefits of conferences. Remember our site for when that is necessary.
© Copyright 2022 Kate Gregory
Theme design by Bryan Bell
newtelligence dasBlog 2.3.9074.18820
| Page rendered at Saturday, May 21, 2022 5:30:39 PM (Eastern Daylight Time, UTC-04:00)
On this page....
Pluralsight Free Trial