Variable-Altitude Mountains
Hey everyone! I hope you didn't eat too much for lunch. I didn't, I'm still hungry.
In this talk I'm not gonna talk about myself. I'm gonna use my life as an example because it's only one I have...
...but it's not about me. This talk is for the beginners among you who have just stared at the mountain that it is to become a developer...
...and felt intimidated by the size of the challenge.
And this talk is also for those way up at the summit, looking down at the bottom, at all those scared folk down there, and thinking...
"How can I reach out and help them?"
A quick parenthesis first. I'm gonna talk a lot about diversity, and emotions aside, let's talk about profit.
There are studies (and you can see the slides from Daniela's talk at GopherCon BR last week) showing that a diverse group...
...is gonna be more efficient than a homogeneous group.
And the homogeneous group is gonna think they did better, but the diverse group where there was tons of discussion is gonna have best results.
While the diverse group will assume it didn't do so good, since there'll be lots of arguing there.
What I'll show in this talk is one line of code: mountain--
That is, I'll talk about how the mountain in front of me got smaller...
...and I'll try, with my story, to illustrate how to do so, both for the people looking up, and for the people looking down.
About me. As a child, I was a nerd.
[Reading the tweet.]
I was also a violinist. I played at Camerata [Florianópolis], some of you might have heard of it.
It's a well-regarded orchestra. I played operas, concertos, everything. In various cities and all.
I started studying the violin when I was 18. I knew nothing about music except for playing around with a guitar.
So I started studying in earnest when I was 18. I was studying for 4 or 5 years, and then another 2 playing professionally.
Then I decided I didn't wanna be poor forever—it's hard being a musician in Brazil—and also since I didn't have an early start...
...it was very hard for me to keep up. So I decided I didn't wanna struggle forever with not much in return for it.
After that I started working with data curation. It's really boring.
I don't wanna go into detail since it really is super boring.
But the pay was good, and I really needed the money at the time, so for a while it was okay.
But then it wasn't.
So let's talk about my first step.
[Being clumsy.]
I hit the wrong button and deleted all my notes once, and there was no undo...
So I had this really boring job doing data curation. We did a lot of super boring stuff all day.
All day in Google Sheets...
[Being clumsy.]
We'd be all day in Google Sheets copy & pasting stuff. I was a professional copy & paster.
After like 2 years I told my boss we needed to automate some stuff.
"I'm being overpaid if my job is to copy & paste stuff all day, but seriously I'm so done with this."
So we started automating a buncha stuff in our spreadsheets.
If you've ever seen those huge blocks of regular expressions that look like a black hole...
...there's no way of knowing what it does, you gotta go on faith, copy & paste it and see what happens...
...that's what I was doing for a while. It was scary but it was fun.
And then one day I learned we can use JavaScript within Google Sheets.
You might be thinking, "Okaaaay, is this when you attempted suicide?"
But no, compared to spreadsheets functions JavaScript was great. Now I could really code.
Despite it being JavaScript, there were loops and, y'know, real programming stuff.
Those days were great.
This is an example, unrelated to the content of the talk, just to show you how nerdy you can get with JavaScript in your spreadsheets.
Press 'play' please.
It's about a minute of nothing, please jump to around 50 seconds.
This one empty minute is how long the function takes to run the first time.
Put it on 50s...
Noooooo, no spoilers!
Okay, let's wait. What's next...
Nearing the end of writing all those tools, one day I told my wife...
"I'm so happy with this kinda work. I get up excited in the morning, looking forward to work, then I work the whole 10 hours I'm allowed to per day..."
"...and then I'm doing extra work on it on my own time afterwards."
She said: "Well then maybe this is what you should be doing for a living."
Every pixel is a cell, and JavaScript talks to the Google Sheets API to run the code there.
This is a gopher. It's Go language's mascot.
And this is the result of a person with too much time in their hands.
Close it, please.
So I was happy. I had learned of something I enjoyed and which, it seemed, I had a knack for.
I thought, "Well then, maybe this is what I'll do for a living."
And then I came across a problem called "The Crossroads."
That is, I'm in a world I need to leave because it sucks, and move to a world that is unknown.
It was a time of many questions.
E.g. I was making good money. To start a new career from scratch I'd have to be a junior developer. Or intern developer. Or worse.
Or, who knows. Whenever we think beginnings are hard, we learn it could be worse.
I was already at level 3. That was the top level for what I was doing.
The plus sign there means I had a lot of extras. E.g. I was the only L3 with a small team under me.
So there was a bit of status. That aspect was nice. The job sucked, but some aspects were nice.
And I thought, "again?"
I had been a violinist. I quit. I studied for years then threw it all away.
Now there was this job. I started at the bottom, went up the ladder, got to the top. And now I'm gonna throw it all again and start from scratch again?
Also, like, when you ask a 20-year-old whether they're old, they'll say they are.
"Awww man I'm 20 already there's no time to do such and such!!"
You ask the same question to a 30, 40, or 50-year-old and their answer will be the same.
So I was nearing 30, and that came up. "Aww dang I'm almost 30 and I'll drop everything and start again once more?"
All of this was echoing in my mind.
"The Montain"
But I went forward. Still over the fence, but going forward.
And I met the mountain. (That's a metaphor for becoming a software developer, in case you missed it.)
I started working on it in February. At first with freeCodeCamp, a free online bootcamp where you learn full-stack web development.
I didn't finish it. I did the front-end part and some of the back-end.
I was learning HTML, CSS...
Then I started studying other resources, such as the You Don't Know JS book series.
Great books, despite the subject being JavaScript.
And I was dying because I had a full-time job and studying really every single minute outside of that.
It was like two full time jobs. Stressful.
I wasn't exactly happy.
All of this was introduction. This is the good part.
I met this person and she would eventually totally change my life.
I'm not exaggerating or inflating the fact. She did literally change my life.
Her name is Kris Nova. She used to be a senior developer at Microsoft, now she's at Heptio.
And I just have to show you this.
Kris is really involved with Kubernetes. How many of you know Kubernetes?
Lot's of you. For those who don't, it's container orchestration in the cloud.
Nerdy.
She wrote a book, Cloud Native Infrastructure.
She's a maintainer of the Kubernetes project.
And she's an alpinist. This whole mountain-ish theme is because of her.
If you check out her Twitter feed, it's 80% pictures of her on a mountain, and 20% her complaining about not being on a mountain at that very moment.
Also Kris introduced me to five elements that would be really important in my journey.
One was Twitter. You might laugh, "oh come on, social media?"
But she introduced me to really interesting people that would also change my life. Among them Carlisia and Daniela. We'll talk more about them soon.
And by the way, I believe I met her at Reddit. Some LGBT subreddit or another. She mentioned she was an experienced developer willing to help...
...so I wrote her an e-mail this big.
And that's how we met.
Anyway. During this time I was still unsatisfied. I was studying a lot, and really hard, but I had nothing to show for it.
So a lot of effort but not much to show for it.
Then my wife got a better job. A job that would be able to support both of us.
I had a lot of money saved up, but who knows when I'd finally get a job, so I was a bit paranoid about that.
Anyway, I and my wife talked all night and then this happened.
So I was quitting my job to invest 100% of my time into becoming a developer.
And then, here's "The Climb."
Punch it hard, full time, working towards that goal.
The person I met first was Carlisia. Carlisia Pinto. She's a developer at Fastly. It's not widely known in Brazil but it's a really interesting company.
And she hosts the Go Time podcast, the biggest Go-language podcast. And she gave me, on the first day we met, this bit of advice:
She said, "You're working yourself to death, but take it easy. Work is not everything. There's no point in you being the best programmer on Earth..."
"...if no one knows about it. You need to create connections. You need a community. You need to be active in that community."
"You need to be more than someone who's just in their room, alone, at the computer in the dark."
The lone genius is a myth.
If you're Linus Torvalds or John Carmack maybe that's different. But most of us aren't.
So that's what she told me. "Get out of your comfort zone and be a part of your community. Be human. Not a machine."
I also met Daniela. Kris did the introductions. Daniela is team lead something at Globo.
— Data science. — Very well. Data Science. Do you work with her?
— No. — Were you at GopherCon last week? Cool!
And Daniela is one of the pioneers for Women Who Go in Brazil. WWG is a project to foster diversity and the inclusion of women in the Go world.
It started with Sarah Adams. I think she went to a Go event sometime and she was the only woman there, so she figured she had to do something about it.
So that's how WWG came about. And here in Brazil Daniela is one of the key players.
So I was learning Go. Kris had introduced me to Go. I instantly fell in love with it.
It was like everything I had always hated, and everything I had always wanted... Go was the way I wanted.
You guys all work with Python... sorry.
I know nothing about Python except that someone uses it at NASA and also there's Monty Python.
So I was learning Go with Todd McLeod's courses. Todd is the author of the most watched Go course ever. It has like 50000 students on Udemy.
He probably has 200000 students total. He's a university professor in two institutions in Fresno, California. And he has a project called Greater Commons...
...which is like Udemy, but different. More democratic, accessible, open, a bit different.
And here's a detail that might seem unimportant but I wanna highlight it.
I started to get involved with Kubernetes. In part because of Go—Kubernetes is probably the biggest Go project around. In part because of Kris.
And I met this person, Nikhita. I won't try to pronounce her surname—she's from India.
Nikhita, like... we're not really friends. We barely know each other. We're acquaintances. But one day she took 5 minutes of her time...
...and totally changed my life again, just like everyone else here.
I wanted to emphasize for the experienced among you, you don't need to spend hours, days to change someone's life. I wanted to highlight this.
Someone I barely knew, and I don't know where I'd be without her. More details soon.
About Todd, I was watching his courses, I wasn't working anymore, I was studying full time, and I started messaging him.
"Hey Todd, this one thing on your website looks kinda meh. Udemy does it better. You might wanna change it."
He said, "Oh, yeah, cool, thanks. Got any more feedback?"
"Yeah. On exercise so and so in your course, you might improve the solution by using X instead of Y."
"Ohhh, cool. Any more feedback?" "Yeeeeeeeah..."
And so it went for a while. Eventually he said, "you're so energetic about it, you put a lot of effort into it... do you wanna record a Portuguese version of my course?"
I froze. Then I said yes.
That is, I'd be recording the Portuguese version of the most watched Go course out there.
It's almost done now. I'm almost finished recording—there's always some detail left. And now I'm in the editing phase.
It's a boatload of work. Around 20 hours of programming, and I didn't even know all the materials then.
Every chapter I had to go and learn things. And if you know a thing about Go you know it's full of concepts you won't find in other languages. Channels, goroutines, etc.
So it was a lot of work.
Moving on. Daniela and Carlisia put me in touch with the GopherCon BR organizers. So I'd be a volunteer at GopherCon BR. Not that much work, but...
Now this was a handful. Daniela wanted to have a WWG scholarship to bring women and minorities into GopherCon BR.
We had a campaign, we gathered funds, sponsors and so on, to bring these girls around.
And also there was a workshop. Daniela had either accepted an invitation to, or proposed to teach a workshop at GopherCon BR...
And she had a rope around her neck when it comes to time, super busy and all, and since I was teaching Todd's course I said...
"I got the material you wanna teach almost ready to use here. I can help." So I started helping her with the workshop.
And then, an opportunity came to participate in an internship. It'd be via Outreachy, an institution to foster women and minorities into the OSS development world.
And this opportunity came up to take part in a paid internship to code Kubernetes full time. Awesome stuff.
This internship would be challenging. The application process alone required a contribution to the project I'd be working in.
And if you've ever tried tinkering with Kubernetes... when you git clone it you get 4 Gb of stuff. I don't know what's there besides the source code but...
Just figuring out in which folder the stuff you want is at... takes a lot work.
I had been studying Go proper for about 2 months then. So, just the basics.
And then suddenly I'd have to contribute to a project of this magnitude. And I couldn't just fix some typo and push a PR with a 2-byte diff.
I'd have to find an issue at the repo, talk to the people in charge, discuss a solution... so it was quite involved a process.
When Nikhita told me about this opportunity time was almost up. The application period was one or two months, but I heard about it on the last week.
So the moment she made a huge difference was after she tweeted about the internship...
I told her, "Nikhita, I'm just now learning Go. I have no professional experience with it. I have about a week. I noticed there's more people interested..."
"Should I even waste my time applying to it? Do I stand a chance?"
And she said, "Yes. If it's hard for you, it's hard for everyone. I noticed you put in the work, when there's something you don't know you just learn it..."
And I really had no faith in it, but she kicked my butt and told me to try it anyway.
Even if it didn't work out, the attempt would be a learning experience in itself.
So I did.
And when trying to climb a mountain, sometimes we learn first-hand about gravity.
I was doing a buncha stuff. All of them could be described as "if you've done something like this before, you know what a boatload of work it is."
Helping out with the workshop. The scholarship to bring girls to GopherCon—we needed to manage money, create a crowdfunding campaign, and so on.
This really hard Kubernetes thing. And recording a 20 hours video course about a subject I didn't really know.
I was working non-stop. No Netflix, no videogames, no rest, no fun.
For months and months and months.
So here's a parenthesis. The Navy Seals have an idea that says when you're basically dead, spent, on the limit, with nothing left to give... you're at 40%.
That's their philosophy. And in their math, the way to use the other 60% is by adding discomfort. Take this "I can't take it anymore" feeling and punch it with your face.
Hit it 'til you get to 41, then 42, then 43%.
In a nutshell: get fucked, but don't give up.
And there's another creature that likes to suffer.
If you're a Navy Seal and you're getting shot at, pushing through discomfort is understandable.
If you don't, you're dead.
But there's this little creature that likes to suffer without being shot at, violinists.
Y'know that story about studying 10000 hours? That comes from violinists. Top level violinists usually have studied 10000 hours...
...by age 20.
So at an age when most of us is beginning to start thinking about working, these guys already have like 10 years under their belt.
Nothing to sneeze at.
I started studying when I was 18, so I'd never have 10000 hours by 20. But I was acutely aware of how much effort I'd have to put in...
...not only in the way all violinists do, but more than everyone else since I had started super late.
I didn't start when I was 3 like this girl who sat next to me in the orchestra.
So there I was, for months, doing my maximum, 40% plus all the discomfort, pushing through, and then I started having some flashbacks.
I was working so hard and seeing no results. And it was months, not years... But when you're at your limit all day, every day—no Netflix, no videogames, no rest...
...a few months can feel a lot longer. The dentist's chair effect.
And I started remembering my time as a violinist. I put in so much effort, learned a lot of things, turned pro, but then I quit when I saw it wasn't meant to be.
And that weighed on me.
And I had that stuck in my head. Is it gonna be a lot of effort for nothing... again?
Months and months with no results. Is anything ever gonna change?
And again... I quit the violin. I started college and gave up, twice... What else?
I gave up my previous job.
I gave up so many things I even gave up trying to keep up with the list of things I gave up.
I quit my previous job. It was a good job. My mother went nuts when I told her I had quit.
So is that me? Am I a chronic quitter? Is this what I'm gonna be doing forever? Never getting anywhere?
And then there was this one weekend in which I installed Stardew Valley. It's a silly, girly game. You run a farm, take care of the animals...
Chickens, pigs, cows... and you have to pet them every day so they're happy...
I wrote angsty e-mails to anyone who'd listen to me, then pulled the plug and played Stardew Valley all weekend.
It was a weekend plus a holiday, so quite a few days of doing nothing useful at all. Quite the change of pace from months of non-stop work.
And then I got replies. They said, "if you were a company, I'd buy your stocks." And funny thing, I actually heard this line twice from two different people.
And everyone I messaged showed me a lot of support. They told me I had potential, I was hard-working, that I would reach my goals eventually.
There was also stuff like this.
Kris, talking to her Microsoft, Google, and etc. friends, and saying things like this.
It made me think.
I thought, "I'm tired. I'm fed up. But maybe I'm on the right path. Maybe I'm not a quitter. Maybe my shit self-esteem is just a lie."
So with all of this in mind, I decided to...
...quit.
But I'll gonna quit when my bank statement is zeroed. When my wife kicks me out. When my official address becomes "rock bottom."
That would be the moment I'd quit.
Moving forward.
The internship stuff was frustrating because...
[Technical difficulties.] What was said: "It was frustrating because I had, multiple times, had one of the people in charge tell me to do X. But to me, that was wrong. I wanted to do Y. So I did, and I argued to no end about why I was right. So I submitted the PR and..."
And I didn't hear anything for a few days.
No answer, no one saying anything. And that got me thinking...
I looked at the guy who told me to do X, I looked at his LinkedIn. Something like 20 years experience. Working at Google. Not a junior.
And me, arguing against him. Me, with my 2 months experience with Go. That experience being not even production, but teaching stuff I didn't really know.
So little me had decided to argue with someone of that caliber.
On the day after the application process ended I got this message:
"Hi Ellen. Please disregard my previous statement. I've talked to [PERSON 1] and [PERSON 2] and your approach is far better than the one I suggested. Looks like it's been approved. Congrats :)"
At this moment, I had to take pause.
I was at the hairdresser when I got this message. "Good thing I'm sitting down," I told him.
About 3 hours later, [PERSON 2] messaged me to tell me I had been selected.
I'd be their intern.
What this meant to me was that I'd be getting paid for 3 months to work on an open source project.
My colleagues would be amazing people from Google, Red Hat, etc.
And I would be working with them as an equal. They have this attitude that it doesn't matter whether you're senior or intern.
I was happy.
I thought, "Whoa, I'm dead tired, piss poor, but maybe I'm on the right track." I was so happy I thought I'd never be happier than that.
Obviously I was wrong, because then came GopherCon BR.
Last weekend.
GopherCon BR presented me with results from everything I had been working on.
The diversity campaign got us almost 6 thousand BRL. We wanted to bring 6 people, but airfare costs allowed us to bring 5.
These girls, and these girls.
This guy is not a WWG lady.
And then that's me and that's Daniela.
It may not sound like much but last year GopherCon BR had 5 women total.
We managed to significantly increase diversity at this event.
Once again, if you don't think diversity is important, check out the slides from Daniela's talk last weekend.
It's not a prank, it's not a joke. It's a matter of profits. Diverse teams are more efficient.
So it's something important, and it's something we achieved.
For me personally this was important because it showed me my efforts might or might not have changed these girls lives for the better.
I saw that maybe my attitudes and my actions could have a real impact in the community I'm in.
Next. This is Carlisia. I started to feel recognized for my efforts by people I respect.
People would say things like, "The most watched Go course ever... you're bringing it to Portuguese? Awesome!"
Many people expressed words of support like that.
Daniela's workshop... I meddled so much with it that she eventually invited me to teach it with her.
So I was someone with no Go experience a couple months earlier, and now I was teaching a workshop at a well-regarded conference.
We had Francesc participate at the end. Francesc is a bit of a celebrity in the Go world. He used to work at the Go team at Google...
...and he has a famous Go channel on YouTube. To me his tweeting this meant a lot.
To me it felt like I was hearing, "I'm on top of the mountain, I see you're trying to climb up, and let me tell you: you're on the right track. Keep climbing."
Steve Francia, probably the highest-profile person at GopherCon, Program Manager at Google, talked about various things Go...
...and about efforts to bring Go to non-English-speaking peoples, and on that subject he mentioned my course. To me that was an honor.
The GopherCon BR organizers invited to me speak there next year. And to me that was amazingly encouraging.
And also Talita invited me to talk here, at my first talk ever, this one you're looking at.
When I got home, on Sunday night, after GopherCon, I was extremely happy.
All those months of effort, discipline, dedication, doing stuff I didn't know would work or not... maybe I was on the right track.
On this day I talked to Kris when I got home at night.
This is what she said.
"I think my work here is done."
"You're ready."
"I can take on another, and so can you."
Here's what I want you to take home from this talk.
I don't want you to remember my story. I don't want you to remember these people in particular.
I want the experienced among you, the ones not necessarily at the top of the mountain, but the ones who aren't at the parking lot at the bottom either...
Know that you don't need to put in too much effort to change someone's life.
All these people I mentioned here, I didn't pester them that much. We didn't spend hours and hours on Hangouts. We didn't have endless conversations...
It was more like... e.g. Nikhita talked to me for around 20 minutes. And because of what she told me I did something that I'm sure will be very important.
The internship hasn't started yet, but I'm sure it'll be extremely important to me.
So one conversation, one chat, one e-mail, one pointer, anything.
And, most importantly: if you're available to help, make it known. For people looking from the outside this world is really intimidating.
There's so much to learn, beginners think they'll never get the hang of it, it's all so complicated...
People belonging to minorities, be it race, gender, LGBT, etc., people who are excluded by society in general...
If you're a white, cis, straight dude driving a big car: it is intimidating to talk to you. Seriously.
Yes, I mean you, Clayton.
And beginners: don't climb up the mountain by yourself.
Your success is a team effort. People at the top want you to get there.
It's not a zero sum game. Your success does not make things worse for me.
It's the opposite. Everyone here is familiar with OSS, you know that the more collaborative we are, the better for everyone.
And what Carlisia told me. Hard work is important. If you're lazy... you better be the owner's kid.
But hard work isn't everything. So connect. Movies and TV make it look like the world is horrible and people hate each other, but that's not true.
It's human nature to connect. It's human nature to help one another. So let human nature pull you up the mountain.
People up at the top want more friends around them.
And finally, if you need help, ask for it.
People are busy, they can't pay attention to your life to know whether you need help or not.
So if you need help, ask for it. When I talked to Kris, both things happened. She said she was available, on a reddit group, and I wrote her a giant e-mail message.
Maybe don't write people giant e-mail messages. Normal big is good enough.
So both sides: connect. If you need, ask. If you can give, make it known.
Make it public.
That's what I had to tell you. Thank you.
Bowing? Ohh, that's a violinist's thing. People don't do that at talks, do they?
No comments:
Post a Comment