RWDevCon Inspiration Talk – Contributing by Ryan Nystrom

The iOS community is something really special, and we should all be contributing to it. Find out why and how in this speech by Ryan Nystrom! By Ryan Nystrom.

Leave a rating/review
Save for later
Share
You are currently viewing page 3 of 3 of this article. Click here to view the first page.

You Can Do It! – Open Source

One last thing that you could be doing is open source.

Now open source to me is kind of a personal subject. I think that my contribution to open source has led to me getting better as an engineer and it’s really contributed to some of the opportunities that I’ve been presented with.

At Facebook, working on AsyncDisplayKit, I learned so much in the past 2 months. I’ve actually been able to apply computer science skills that during university, I would have never imagined I’d ever use any of this theory stuff again.

I’ve learned about collaborating with other engineers and I’ve actually learned a bit about public relations, communicating publicly with other people external to your organization.

Open source, just like speaking, was not something that just came naturally. It’s super intimidating.

Screen Shot 2015-03-25 at 8.37.11 PM

When I write a line of code, I write that line my way. I name my variables my way, my methods.

Other people out there could write that same line of code. They’ll do the exact same thing thousands of other ways, but I wrote it like that because that’s how my brain works.

Then I publish that work, I’m publishing my brain. It’s like a window into how I think. That makes me super vulnerable, especially when people are going to throw criticism.

But it’s a healthy exercise. You get better at it. You learn to take feedback and criticism and you learn from other people.

Honestly, right now is probably one of the best times to be contributing to open source, especially in iOS. These guys, CocoaPods, have set the iOS open source world on fire.

Screen Shot 2015-03-25 at 8.07.53 PM

It’s so easy to build something and let somebody else install it, try it out, and integrate it with their project. Just think about how many working hours AFNetworking has saved the world.

Whenever I do an open source project, for me personally, I’m an interface guy. I like shiny things.

Here’s what I’ll do:

  • Get Inspired. I’ll find something on this designer social network called Dribbble, some sort of animation or something.
  • Build it. I’ll pull it down, I’ll build the project in a weekend or 2, and then I’ll publish it.
  • Release it. I’ll write a readme and make some fancy gifs that catch people’s eyes or something, and then release it.
  • Maintain it? Sometimes I’ll come back and maintain it, or sometimes I won’t.

One of my recent projects.

One of my recent projects.

I really love doing this. I love doing interface work, because that gets me excited.

That’s really important about whatever you decide to do, is that you should love it. You don’t want to be releasing mediocre work, because if you release mediocre work, that could be harmful and that’s not what we want to be doing.

Especially when anybody in our industry asks, “What should I be doing to boost my portfolio and get better,” because maybe they’re going out to interview or something, I always say,

“Try and do something open source. Just get used to it. Put something out there that you really care about.”

Tips and Tricks

Enough about all the different things that you could be doing. Let’s talk about some tips.

Do the simple thing first

Specifically at Facebook, I work on Instagram. One of Instagram’s values is to do the simple thing first. I think that’s really important.

If you’re going to be writing, don’t edit for weeks on end. If you’re going to be building an open source project, don’t write unit tests into the ground.

Just get it out there and think of it, your project or your blog post or whatever, as a minimal viable product. Focus on shipping.

Set goals

It’s really important to be setting goals for yourself, setting dates.

Screen Shot 2015-03-25 at 8.16.58 PM

My wife would be able to tell you that if I don’t set a date on something, I will never do it.

Don’t burn out

Don’t be aggressive on this. If you’re going to be building an open source project, just limit it to 2 weekends. If you’re going to be going to meetups, just go once a month.

You’ve got priorities. You’ve got a job. You’ve got a family. Don’t burn yourself out.

Be authentic

Be your authentic self. Phonies suck. I’m sure we’ve met them. It’s not fun. It feels like an impostor. Don’t be that guy. Really care about what you’re doing and release good work.

Have humility

Lastly, remember to always have humility in whatever you do. It’s really, really important that our community remains humble. Remember that there’s always somebody out there that’s going to have less experience than you do, and there’s also always going to be somebody that’s smarter than you.

Just keep that in mind whenever you’re releasing work. Don’t put too much stress on it. Don’t burn yourself out. Be patient, and remember what they say when you teach a man to fish.

Jeff Atwood has a pretty nice quote. “No matter how much ‘karate’ you know, someone else will always know more.” Paul Graham has another great quote:

“If you want to build great things, it helps to be driven by a spirit of benevolence.”

I’m really excited to be here and I’m really appreciative that you all came to hear my talk. I’m really happy to be giving back to this community that helped me get started.

Start Contributing

No matter what you do, if it’s tweeting or speaking or open sourcing, just remember that your experiences are uniquely valuable.

Remember I wrote this:

var photos = [PhotoModel]()

let options = [(kCGImageSourceShouldCache as String) : false]

if let imageURLs = fm.contentOfDirectoryAtPath(path, error: &error) as? [String] {
  for fileName in imageURLs {
    if let URL = NSURL(fileURLWithPath: path)?.URLByAppendingPathComponent(fileName) {
      if let imageSource = CGImageSourceCreateWithURL(url, nil) {
        if let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, options) as? PropDictionary {
          if let exif = imageProperties[kCGImageProperityExifDictionary] as? PropDictionary {
            if let OriginalDateString = exif[kCGImagePropertyExifDateTimeOriginal] as? String {
              if let date = df.dateFromString(originalDateString) {
                photos.append(PhotoModel(title: fileName, imagePath: url, dateTaken: date))
              }
            }
          }
        }
      }
    }
  }
}

…but I’m up here. Writing that doesn’t stop me from getting up here and it shouldn’t stop you either. I want you to get out there and start sharing your ideas.

I can’t wait to hear what you have to say.

Note from Ray: Did you enjoy this inspiration talk? If so, sign up to our RWDevCon newsletter to be notified when RWDevCon 2016 tickets go on sale!