- Hello, everyone.
Today we are at Azure OpenDev.
This program's totally not going to suck.
It's completely live, which means you get to see me mess up in real time.
I am starting out with my journey to go,
which is really interesting because I get to drone on a lot about myself and open source.
So a little bit about me.
I spent most of my life outside of the United States,
and I also come from a long line of ninjas, apparently.
My dad was a network engineer for Nintendo which means that computers were always a part of my life,
and I always had the best gaming computer.
No really. I really did.
Fight me.
Dune was always at my house.
I used to build it with my dad's spare parts,
because my dad always had to have the latest and greatest.
So that was cool for me.
But sadly I was a girl in the 90s, which means that I had to play with Barbies,
because girls didn't do computers in the 90s.
It just didn't happen.
My parents said actually you have an artistic brain.
Computers are fun but you should do something else.
So I grew up and I became a photographer.
I did that for about 10 years.
And during that process, I realized a couple of things.
You can't just go out and take pictures.
You need a website.
So I learned HTML and CSS and built a website.
I needed a blog, so I built a blog.
I needed a rank on Google so I learned SEO.
Everything was self-taught and it was really hard but it was also a lot of fun.
What happened though is that I learned that photography clients were not my target market.
Photographers and other businesses were.
Turns out, nobody knew how to build a website.
And just like that, I was a consultant, because everyone needed a website.
Because building websites for photographers, for hair salons
and then eventually I found myself
doing a consulting job at Cisco.
So I quit photography, because what's the difference between art and pizza?
A pizza can feed a family of four, and art can't, just so you know.
So I made a decision to code.
While front end development is still development, I wanted to do more.
I was 32 years old when I learned to code.
That is old AF as the kids say.
During that time at Cisco, I found a couple of small open source projects,
Open Stack and Open Shift
and I was contributing doing documentation for Open Stack
and some front end work for Open Shift.
I found that I really like the tech community, it was really inclusive at the time.
And so I started contributing, but I wanted to make even more meaningful contributions.
But I didn't know where to start.
How was I going to learn?
Everything in Open Stack was in Python.
How was I going to do that?
So you know like when you go to a boot camp and you super regret it?
So I am going to bag on boot camps a little bit, sorry you people who went to boot camps, it's not your fault.
In 12 weeks, 12 weeks of boot camp says they will teach you the following things.
I'm not going to read it all to you because it's a very long list,
but I'm just going to scroll through these really quick.
Week one, two and three, this is an incredible list here guys.
Four, five, six and seven?
In 12 weeks you are learning all of these things.
It's not possible, it's impossible.
And just like that, you're a software engineer.
They give you a card and it says actually you are a software engineer.
And I said, I am not a software engineer.
I've been in this long enough to know what a software engineer is.
So I made it my mission to teach the new developers
how to get into developing on their own.
I created this introduction to programming resources.
It's really great.
A lot of it's free.
Turns out these boot camps just teach you what's in these books for free.
But I do understand that a lot of people feel like they need the accountability of a class.
So there's lots of people out there who are willing to mentor you or sponsor you.
There was a really great blog post by Laura Hagen.
Just Google it, mentorship versus sponsorship
and you should find it.
It's great.
So now we get to Go.
I'm an accidental gopher.
I was writing Python and I found myself at OzCon
in 2015-ish and I met Steve Francia.
Steve Francia is well known in the Docker and Go communities, he is now on the Go team at Google.
And he said actually I have known you for five minutes, will you teach a Go workshop with me?
And I was like, that is the dumbest thing I've ever heard Steve.
Why on earth would I do that?
I've not even written a hello world in Go.
And he explained to me that he has a hard time relating to the new developer.
He's been doing it for a really long time.
So it's my job to ask all of the stupid questions,
and I did a really great job of asking stupid questions.
So we decided to do this workshop at OzCon and as you could see, it was pretty decently rated.
Which is strange, because I had no idea what I was doing.
In fact, I didn't know what I was doing the second time we did it or the third time we did it
and since then we've given the workshop five times in three different countries
and I finally understand it and I know what I'm doing.
It took a long time.
Lesson here, sometimes, I want to caveat sometimes, is just say yes.
What's the worst that could happen?
You could end up in front of 200 people
talking about something you've no idea what you're talking about.
But at the end, you might learn something.
And also, nobody succeeds alone.
None of you have.
I am lucky enough to have a lot of people invested in my success.
This is just a short list of those people.
So thank you all of the people on this list for helping me and answering my dumb questions.
So now we're going to get to contributing and eliminating excuses, see live.
I'm not a very good programmer.
These are all my excuses, but I'd actually heard some of these from you to.
I don't have a lot of time.
My favorite one, I don't know what project to work on.
This one I hear a lot.
Myth, you have to be a programming wizard to contribute to open source.
This is a really damaging thing to say,
especially to newbies.
There are lots of things that you can contribute to in open source.
Open source is a community of people just doing what needs to get done.
It's not always code.
There are lots of things that you can do.
So a couple of things.
One, we need people of all skill levels.
The wizards are great, but we also need the people like me asking the silly questions,
because if you don't understand it,
it's likely somebody else doesn't either.
A small contribution is better than no contribution.
Fix a doc, like fix some grammar.
Somebody needs to do that.
The best project to start with is the one that you're working with right now.
So here are some other things that I can talk about.
Strengths.
Start with what you're good at right now.
I don't suck at graphic design.
Go has a really cute mascot, it's a gopher.
That's why we're called gophers, made by Rene French.
So I made lots and lots of gophers
for lots of small projects in the Go community.
Eventually it got so overwhelming that I decided to make a website
called Gopherize.me with my friend Matt Rire,
shout out Matt Rire.
It's an avatar generator, and it turns out that silly contribution
had a lot more impact than I expected.
Influx DB uses it as their class photo.
It's crazy.
Not only that, people are using the API in new and interesting ways, and also making cakes.
Somebody made a cake.
That's crazy.
This repo is just full of gopher images.
That's all it is.
It has 772 stars.
That's not insignificant.
At least I don't think it is.
I don't have that many followers on GitHub.
So how did I know that gophers, these little gopher images, were needed?
I didn't, I didn't really.
I'm going to be honest.
But the best way that you can know what to do with your community is to start by listening.
Everything in open source involves other people.
You're looking to join a team.
So shhh, we're listening.
Mailing lists.
This is a big one.
So for many projects, a mailing list is the main conduit of communication.
You're going to find out lots of things that the project needs.
Start there.
IRC and Reddit, that's where the people
who are contributing to the project complain about things.
Figure out what they're complaining about
and see what you can fix.
Blogs.
Most of your heroes and core contributors have a blog.
Read it.
Working with tickets.
Please work with tickets, please do that.
There's lots of bugs in open source.
Diagnose a bug.
Let's do that.
They're often poorly reported.
Please diagnose a bug.
Close fixed bugs.
Sometimes fixed bugs just sit there, they just sit there.
Clean it up.
It saves developers time, please do that.
That would be cool.
And working with code.
We all know that code is what makes open source happen, right?
So let's talk about that really quick.
Test, beta test. Please do that.
Projects run on many, many platforms.
Test it out. See what happens.
If it breaks, report it.
I can't emphasize this enough to fix a bug.
This is where lots of people get started in open source,
fixing small things.
Eventually that adds up.
Write a test, more tests, please.
You can't have too many tests, in my opinion.
Some might argue.
Don't do that.
Add a comment.
As I said earlier, if you are confused, somebody else is too.
Docs.
Please, please, please help with the docs.
Oftentimes documentation is written from the point of view of somebody
who's actually writing that project.
It can seem like a manual, so somebody new coming in has a different perspective.
So help with that. It's important.
It might seem tedious because it is, but it's important.
Work with the community.
Open source is all about the community.
Answer a question.
That's the best way to build people up.
Answer my dumb questions, please.
Write a blog post.
If you find a bug and you fix a bug,
or you're using the project in an interesting way, blog about it.
Tell people what you're doing with it.
Improve a website.
Sorry most programmers don't have a lot of design talent,
and that's OK.
But more than anything, pay it forward.
If you're using a project and you're not contributing, shame on you.
I feel like a hypocrite with this quote.
Don't be too proud to accept help when it's offered.
I often am too proud to accept help when it's offered.
However I never regret it when I do.
Also, it's OK to fail.
I do literally all the time.
If anyone says that they don't, they're liars.
Lying, lying liars.
And more than anything, we are a community of coders.
But if all we do is code, then we've lost the community.
Thank you I am Ashley Macnamara.