My Journey to Go
Liveblog by Kristie Howard (@kristiehow)
In an inspiring and thoughtful close to Friday's opening keynote, Ashley McNamara explained her journey to Go - and what you can do to get involved in the Golang community. A self-proclaimed "accidental gopher", Ashley detailed her path to becoming a Principal Developer Advocate and prescribed concrete steps that developers at any level can take to jumpstart their own contributions.
More than just a great programmer, you may know Ashley as the artist behind your favorite Gopher drawings (some shown below) and the wildly popular gopherize.me, a website where you can create a custom Gopher avatar to represent yourself.
Ashley's Path to Go (Hint: It's not done yet!)
Before becoming a Gopher, Ashley was a professional photographer, which explains her talent and dedication to creating unique Gopher artwork. However, she found that photography wasn't paying the bills and with a family to feed, she turned to programming. Prior to enrolling at Hackbright Academy (a software engineering bootcamp for women), Ashley had done some front-end work building websites for photographers and working on SEO. Bootcamp had promised to teach her all of the things you need to know to be an engineer, but despite having the "official" business card 12 weeks later, she didn't feel like a Software Engineer. Ashley found herself writing Python and working as a Community Manager at Rackspace, which is when she met a Gopher who would completely change her trajectory.
In 2014, Ashley met and became quick friends with Steve Francia @spf13, who made her abandon Python and never look back. Steve had been teaching an introductory course to Go, and urged Ashley to help teach the course, where her fresh perspective on Go was an asset. Ever since then, Ashley has been a valued member and a key contributor in building the Go community.
What follows are Ashley's lessons learned and tips on how you can get involved in the Go community as well.
Nobody Succeeds Alone
We all need people who are invested in our success. Whether it has been through answering "stupid" questions or simply friendship, Ashley has been inspired and directly impacted by a number of key members in the Go community, including @spf13 and @jessfraz (pictured below with Ashley). It's also important to be this person for someone else and pay it forward - see: "Give more than you receive".
Just Say Yes
It's all too easy to say no - but what happens if you say yes? What's the worst that could happen? If Ashley had said "no" to teaching the Go class with Steve because she was new to Go, she likely wouldn't be on stage at Gophercon "giving a keynote in front of all [her] heroes".
Stop Making Excuses - You Don't Have To Be a Wizard to Contribute to a Project
MYTH: You have to be an expert to contribute to a project. Contributing is not just about writing code. Stop making excuses like "I'm not a very good programmer", "I don't have a lot of time", or "I don't know what project to work on".
Here are 3 reasons Ashley shared on why those excuses shouldn't stop you from contributing:
Projects need contributions from people of all skill levels and expertise.
A small contribution > No contribution
The best project to start working on is one that you use already.
Where to Start
What are you good at right now?
Start with something that you are good at right now - for Ashley, that was graphic design. Even though it "felt silly at the time" to her, Gopherize.me is a massive success, signaling that the community had a big desire for what she was good at (note: more than just code!).
Listen, listen, listen
Listening is the best way to know what a project needs. Follow a few different channels so you can be the first to hear about issues, new developments, or other opportunities to jump in and help. Be on the forums where people are talking - for example:
- Sign up for the mailing list
- Follow developer blogs by language experts (ex. Steve or Russ or Jess' blogs)
- IRC, Reddit, etc.
Work with tickets
While it may not be the most glamorous part of any open source project, working with tickets is a great way to start contributing while you're still learning. Here are 2 suggestions from Ashley:
Diagnose a bug. Bugs are often poorly reported. Diagnosing and triaging a bug can save the developers time by helping figure out the specifics of the problem.
Close fixed bugs. Often bugs are fixed in the codebase but tickets reported about them don't get updated in the ticketing system. This is a really easy way to get started!
Work with code
You don't have to be a coding genius to make a real contribution to your favorite project. Ashley suggests the following steps to contribute to the code - no matter what your programming experience level is.
Test a beta or release candidate. Any project that's designed to run on multiple platforms can have all sorts of portability problems. Why don't you start with Go 1.9!
Fix a bug. This is normally where people want to start - just find a ticket!
Write a test. In the words of Ashley, "moar tests, please".
Add a comment. Ashley is a big fan of comments - are you confused? So is someone else! You're not the first and you won't be the last, so go through the code and leave comments that will help future devs ramp up more quickly.
Docs, Docs, Docs
Docs are one of the most important parts of any project. Often, they're written by people who have contributed the most to a project, so they're written as if you already know how to use the package. Your fresh perspective is a huge asset when it comes to docs! (Also see "Add a comment" above).
Work with the Community
Community makes open source work. Here are Ashley's suggestions for ways you can build it up:
Answer questions. Everyone on the list Ashley thanked (see "Nobody succeeds alone") has answered a "silly" question for her. Even if you feel like the answer is "Let me google that for you", taking the time to answer questions makes the person feel important and probably means a lot more to them than you think.
Write a blog post. If you learned something new, write about it! Not all of your blog posts need to be technically challenging.
Improve someone's website. Turns out, not all developers are blessed with design skills. Share what you are good at with others - you'll both end up better off.
- Pay it forward! Give more than you receive
- Don't be too proud to accept help when it's offered
- It's okay to fail, and don't let anyone tell you otherwise
Although this is not her quote, Ashley's message can be summed up in a simple line:
We are a community of coders, but if all we do is code then we've lost the community.
Ashley ended her talk with tears in her eyes, saying "this conference is spectacular" and "I've never felt more welcome in a community - ever". The packed room of engineers agreed, enthusiastically clapping as Ashley thanked the conference for inviting her and the community for putting her gophers up everywhere.
I'm sure I speak for many other community members when I say thank you, Ashley, for sharing your personal story and concrete steps for getting involved with humility and authenticity. In the midst of technical talks, your presentation is a fabulous reminder to give back to and keep developing the very community that brought us all together in the first place.
About the Speaker
Currently a Principal Developer Advocate at Microsoft, Ashley acts as a bridge between third party developers and Microsoft, driving platform adoption through the developer community and driving change into products based on real world customer / developer feedback. This involves traveling the world for conferences, organizing events, helping with developer support, building applications that consume our services, teaching workshops, hackathons, and any other opportunities to interact with developers to understand their needs and deliver solutions.
Prior to joining Microsoft, Ashley worked at Pivotal as a Principal Technologist and studied software development at Hackbright Academy.
Ashley is a frequent tweeter (@ashleymcnamara) and recently wrote a popular piece about why she joined Microsoft.