Meet our #CodeintheCommunity Volunteers – Michael Grey: “Programming is a modern form of literacy, valuable for exercising anywhere”
September 1, 2021
It takes a village to democratise digital literacy. Code in the Community – Singapore’s largest free coding programme for disadvantaged kids – is only possible because of a community of volunteers from all walks of life who give their time and talent to teach kids from under-privileged backgrounds about the world of code.
Get to know some of ’em in this series – we hope their stories inspire you as much as they inspire us.
Hi Grey! Could you introduce yourself?
“My name is Grey and I work as a software engineer at an open-source robotic software company. We develop software that makes robots smarter and easier to use and develop.
We give this software away for free to anyone who wants to take a look at it, see how it works, or even change it, and they don’t need our permission to alter it.”
What is it exactly that you do?
“My company has two products:
One of them is called ROS which stands for Robot Operating System. The goal of ROS is to make it easier to develop very sophisticated robots, specifically on the software side. ROS provides a framework for different components of a robot’s brain equivalent to be developed by different people and tie them all together into one system.
So if you’re an expert in computer vision, you can make a module for object recognition in ROS, then someone else who is an expert in motor control can take your module and put it into their robot so that their robot has the benefits of your computer vision expertise. It’s a way to allow large communities to collaborate on developing all sorts of robot systems.
The other product is a simulation software that allows people to physically simulate robots. For example, if you have an idea for a robot but you don’t want to buy parts right away because you want to test your idea out first, you can build your robot in our simulation software and test out whether it actually works before spending the money and putting in the work to build it.”
How and why did you decide to start programming?
“I actually got into software engineering somewhat late in my career.
In college, I did aerospace engineering and I originally wanted to be an astronaut! But then I learned more about aerospace engineering and decided that I should shift my focus away from human spaceflight to robots and maybe sending robots into outer space, since robots have a much easier time dealing with no oxygen or food in space, unlike humans.
After a year or two, I decided I liked robotics a lot. There’s just so many interesting things to do with robotics. A few years after that, I started getting into the software side of things.
It was in grad school when I was working on my robotics doctorate when I found myself writing a lot of software to try to make the work we were doing a lot easier. In fact, I was writing software for not just my own work, but software meant to help others with their work.
It felt like a calling that I want to write software to help people do and accomplish interesting things.”
What else do you enjoy about programming?
“I find programming to be very empowering because it’s sort of this almost limitless thing where you can make incredibly complex things that are very fast and intelligent.
A few lines of code have the potential to produce an incredible amount of value, and that value can be compounding.
For example, if I do something that has little value for many people, those many people can then add even more value on top of that, and then you have this domino effect where relatively small amounts of effort pile up into something really amazing.
I think software is somewhat unique in that sense where you get these just compounding returns on the effort that’s put into it.
Also, something I try to emphasise as a programmer is that you should try to be an ethical programmer. Try to focus on what it is you can do that makes things better [for others] instead of just benefiting some people at the expense of others.”
How did you decide to volunteer with Code in the Community?
“I’ve always wanted to do educational outreach; I find programming to be very empowering, and I want to see a more ethical industry.
I think it’s important to reach out to the demographics that are underrepresented in the industry and bring that empowerment to people who might not otherwise have the opportunity to experience it.
Code in the Community represented a very obvious opportunity for me to do just that.”
What has your experience volunteering with CITC been like so far?
“It’s been really great! It’s interesting to meet different kinds of kids. In any one class, you’ll come across all sorts of different personalities and levels of motivation or levels of interest. And each student has their own kind of interesting challenges.
For example, for the very motivated kids, it’s a challenge of how you guide them efficiently and effectively. For the less motivated kids, it’s a challenge of how you convince them that these problems that they’re working on are worth working on, and how you convince them to stay focused and apply themselves.
I try as much as possible to keep the students engaged and not just tell them what to do, but challenge them to think on their own and make guesses, even potentially wrong guesses.
It’s important to get through to the students that it’s okay for them to guess wrongly, that it’s better for them to make mistakes and find out that it’s wrong, and then understand why it’s wrong.
It’s much better than just shutting down and not even trying. It’s a very difficult thing to try and convince children that it’s okay to make mistakes.”
Do you have a favourite memory from volunteering with Code in the Community?
“In the first class that I ever taught, there was a very low motivation student who showed her disinterest from the first day and the entire duration of the class.
During lessons, she demanded very specific instructions every step of the way and she had no interest in thinking for herself.
At the end of the class, there was an exercise where the students had to draw shapes using Python, so I told her to go ahead and draw anything she felt like.
She kept refusing, saying, “No! No! You tell me what to draw!”, and I told her that that was her time to be creative.
Eventually, she asked whether she could draw a house, and when I told her that she could, her face lit up because she originally thought she had to draw a triangle or a square. It didn’t occur to her until then that she could really just go ahead and draw anything she felt like. Her entire demeanour flipped and she went about with much brute force at the keyboard, trying to figure out how to draw the lines to make the objects for her house.
It was amazing seeing that kind of transformation — from having absolute disinterest to suddenly realizing that there was actually something fun that she could do there, that the lesson could be interesting and engaging for her.
That was one of my favorite experiences. She wound up sticking with the class all the way to the end and through the remaining sessions for the term. She showed up every single day, and even though her motivation had highs and lows, she committed to being there. For someone who clearly originally had zero interest in being even present, I found [her transformation] just really great to see.”
What is your biggest takeaway from CITC? Any life lessons to share?
“Persistence is key.
Programming is inherently a very frustrating thing for humans to do because we need to speak the language of something that isn’t really human.
Computers are very literal and they will do the exact thing that we instruct them to do, nothing more and nothing less.
Humans aren’t used to being taken so literally so it can be very frustrating, especially because any time something isn’t going the way you intended, it’s your fault since you gave the wrong information, so that can be a difficult thing to cope with.
But I think it’s important to understand that those challenges are very natural; that everyone experiences them, though some struggle with them more than others, but it is still something we all have to deal with it and that we all can deal with.
We just need to exercise patience, be persistent and let ourselves believe that if we work at it enough, we can make the program that we wanted. Even if you don’t quite know what’s wrong with what you’ve been doing, you can still get there.
Programming exists at this intersection of art, science, creativity, engineering and logic. I really encourage everyone to learn programming even if you don’t plan on having a job that will specifically involve programming, because these skills are transferable and it’s a modern form of literacy that is valuable for exercising anywhere.”
Any advice for people looking for volunteer opportunities with CITC?
“Just enjoy it! You’re going to meet a lot of interesting kids, so try to have a good time with them.
Try not to be oppressive in the classroom because the kids are not always there voluntarily, and they don’t necessarily know what they’re getting themselves into, so be patient with them.
If it’s their first lesson and their first impression of coding is that it’s way too difficult or tedious, or just something that they don’t fit into, they’re going to close the door on programming which could have led to a lot of opportunities for them.
So as a volunteer, focus on making it a positive experience for them rather than trying to force the kids to learn everything at the rate that you want them to learn at.”
Finally, what is your dream project?
“Honestly, I really like the project that I’m working on right now for my company.
My project is about allowing robots to be aware of each other and get around other robots. There’s an issue where robots can’t really work with each other because they don’t talk to each other.
For example, in hospitals which use robots, sometimes when the robots go down the hallway in opposite directions, they’ll stop because they don’t know how to get around each other. This will cause traffic jams because they don’t know how to communicate with each other.
I really want to see robots work nicely with each other and be able to benefit society in a way that they can’t right now because of their limitations. I would like to open the robots up, make them more useful and broaden the possibilities.
I think I’m living my dream.”