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

Note from Ray: At our recent RWDevCon tutorial conference, in addition to hands-on tutorials, we also had a number of “inspiration talks” – non-technical talks with the goal of giving you a new idea, some battle-won advice, and leaving you excited and energized.

We recorded these talks so that you can enjoy them, even if you didn’t get to attend the conference. Here’s our next talk – Contributing, by Ryan Nystrom – I hope you enjoy!

Transcript

Thank you everybody for coming out here. It’s really exciting for me to be here and to be presenting to you guys.

I think our iOS community is something really special, in particular the raywenderlich.com community, and really I’m happy to be up here and giving back to the community that helped me get started.

Let’s clear something up really quick. You might think that because I’m a speaker and I’m up here, I’m an awesome engineer and I write awesome code. Let me show you just something I wrote like 2 weeks ago:

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))
              }
            }
          }
        }
      }
    }
  }
}

Look at that. That sucks. It’s doing some Core Image stuff. It’s dumb. It’s hacky. It works. Whatever. I’ve written other crappy code and I’ve written code that’s worse than this, and I’m willing to bet you guys probably have too.

But I’ve written better code. I’ve written code that I’m really proud of, and I bet you guys have too.

I bet you’ve written code that if you were to show it to me, I’d be like, “Whoa, that’s awesome. That’s really good.”

Screen Shot 2015-03-23 at 8.59.47 PM

That’s why I’m up here, because I have written things that I’m proud of and I know you have, and I want you to share them.

Like Ray mentioned in his keynote, our community is really special and we should be contributing to it. So I’m going to be up here trying to convince you why you should be doing it, how you can be doing it, and maybe give you some tips on how to get started.

Why Bother?

Is this just to become internet famous and get thousands of Twitter followers or something? Not really.

Take a look at all the leaders in our iOS community. They’re speakers. They contribute to open source. They blog. Maybe they do have thousands of Twitter followers because the things that they tweet are kind of important. :]

NSHipster

This is all about building a better community and strengthening the one that we’ve built so far. Whether it’s writing or giving a talk or building an open source project, there are a ton of benefits.

Personal and Professional Benefits

There are personal benefits:

  • I’ve made a lot of friends.
  • I’ve learned from a bunch of different unique experiences.
  • Whenever I do an open source project or I give a talk, I’m reiterating things that I’ve learned before and I’m strengthening that knowledge of it.

There are also professional benefits:

  • You build a network.
  • You might find other resources with people or companies or tools that’ll help you out.
  • You might actually find a way to get help when you’re stuck somewhere.

Awesome Tools

Tools

Another important reason we should be doing this is just take a look at the tools that we use every single day.

  • FreeBSD, which powers OS X
  • LLVM, which powers tools like Xcode
  • WebKit, which we’ve probably used before
  • Swift, which fingers crossed it’s going to be open source, but this is a tool that we’re going to be using, probably for a long time.

These are all awesome projects that you might be telling yourself, “These are amazing, built by really talented super smart people. How in the world could I ever contribute something and build something like this?”

Your Experience Can Help Someone

Last year I was at a conference called NSNorth and a guy by the name of David Smith, who does a podcast called Developing Perspective and writes a blog with the same name, said something that really struck me. He said:

“No matter how little experience you think you have, someone else has less experience than you.”

Now think about that. Think about when you were 2 days into doing iOS development. You probably thought, “Everything that I could say has been done before. Nothing that I say would really matter.”

But there’s somebody out there that’s been doing iOS for just 1 day.

Think about all the things that you learned on that second day:

  • Those Xcode shortcuts you learned
  • How you got that app to run on a real device
  • And how much of a pain in the a** that actually was!

Think about how you could share that to that person that’s still been doing this for just 1 day – and really teach them something and help them get moving faster.

How I Began Contributing

Jumping in to just contributing to our community might sound a little intimidating, so as an anecdote, I’m going to share how I got started.

Back in 2010, I was still in school. I was interested in learning how to build iOS apps.

I stumbled upon this little known website that had some pretty cool tutorials at the time and decided to start learning. In fact, this is actually a screenshot of the very first tutorial that I read:

Screen Shot 2015-03-23 at 8.38.04 PM

It is burned into my memory because of that freaking ladybug. Ray’s site really helped me get started.

When I got started, a lot of my colleagues and friends would ask me, “Hey, what you’re doing looks pretty cool. I like that animation or I like that you can make your own app to send a tweet.” They started asking, “How can I get started? How can I do this?”

I had enough people interested that I decided to build my own class while I was still in school. It was a little volunteer class.

This is the room that I actually taught it in.

Where I began teaching.

This is the room that I actually taught it in.

I called it iOS 101 and the attendance was awful. Single digits, people rarely showed up multiple times, but I had a core group of students that actually kept showing up.

These students were really interested and really wanted to hear what I had to say, and I really got hooked on that feeling of teaching somebody something.

It really reinforced the basics when I was building these presentations and slides and stuff, like having to remember what the actual difference between an integer and a float was at the time.

On the very last day, I was fortunate enough to email Ray and ask him to Skype in and give everybody a “Where to go from here?” talk.

Screen Shot 2015-03-23 at 9.01.36 PM

Meeting Ray had opened amazing opportunities for me. I soon after started tech editing for him, then I started writing, then I started writing books, and now I’m up here.

Enough about how I got started. Let’s talk about how you can get started and the different ways you can do that.