RWDevCon 2017 Inspiration Talk: New Tricks by James Dempsey

In this talk, James explores how he thinks about and works through the many major changes encountered along the way – like transitioning to Swift.

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 or 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 one of the inspiration talks from RWDevCon 2017: “New Tricks” by James Dempsey. I hope you enjoy it!

Transcript

We’re gonna talk about some new tricks today. That, obviously, comes from the old adage: you can’t teach an old dog new tricks.

We’ll get to the old dog part in a moment but, just so we’re all clear, what do I mean by a trick?

Really, I’m just talking about any skill, any capability, like: I can hook up a table view, or I can write a generic function in Swift. At this conference, you’ve been pretty much learning new tricks the entire time.

As I was thinking about this talk and looking at the dates, I realized that I’ve been doing this stuff for a while now. It kind of creeps up on you.

And I was thinking: it’s 2017. What was I doing in 1997? 20 years ago. It’s still surprising to me that I’m able to say I was doing anything for 20 years.

Well, I was working at a struggling technology company:

It’s hard to imagine an Apple that’s not like this behemoth. But things were tough at Apple in those days. Apple had just finished the purchase of a smaller struggling technology company, and that technology company had an operating system called OpenStep, which ended up being the underpinnings for Mac OS X and then later iOS.

At the time of that purchase, the first I ever heard about the development environment, and the first I ever heard about Objective-C, was from Steve Jobs. He talked about it—I believe it was part of the merger press conference and I’ve been looking for that footage because I know I’ve seen it, but I wasn’t able to find it. But he described Objective-C as taking this ubiquitous language C and then adding this powerful dynamic object-oriented layer on top of it using a syntax inspired by Smalltalk.

As somebody in the Apple community at that time, I was very excited about that. Couldn’t wait to get rolling. With the advent of Swift, we now know Objective-C has an oddball kind of syntax, but in that reality distortion from Steve Jobs, I was gung-ho about Objective-C and I still enjoy Objective-C.

I was so gung-ho to get rolling … I was in evangelism at the time and we had kind of a comparison lab where we had some Windows machines, and I commandeered one of them and got somebody from Next to install OpenStep so I could start writing for this platform that was going to be the future of the Mac.

This is pretty much the first Objective-C code I ever wrote. It’s from the currency converter and I was thrilled. I was learning lots of new tricks at the time.

And so over the last 20 years, I’ve been working with these frameworks. First in Objective-C doing foundation stuff, target action, these kinds of concepts. Objective-C, now in Swift, even a side trip into Java. Yes, back in the day, there was a bridge to access the frameworks through Java. And I was thinking in the past.

It also got me thinking about the future.

Thinking about my experiences in the last 20 years, I was also reflecting on how to handle the years to come. There’s another story I’d like to tell you. Something that really stuck with me through the years.

We’ll go halfway between. We’ll go back 10 years, to 2007. This is 10 years after the Next acquisition.

Just a little Mac history to set things up; there were two ways to write Mac apps on Mac OS X:

There was Cocoa, which was essentially those OpenStep frameworks brought over to Mac OS X, and there was Carbon, which is the original Mac APIs, modernized and brought over to write apps on Mac OS X.

At this time, the Mac was moving to 64 bit. So writing 64 bit apps was important, and at WWDC 2007, Apple announced that only Cocoa would be 64 bit. Essentially saying that Carbon in the long term was pretty much dead.

And so at this WWDC they had a session: Cocoa for Carbon Developers.

It wasn’t so much the session—I always like seeing the basics of something explained in different ways—it was the Q&A after the presentation that really stuck with me.

It was clear from the questions being asked and the comments being given that even after 10 years of Apple saying things like, “If you’re going to start a new project, we suggest you use Cocoa,” it became very clear that many of these folks had not given Cocoa a single look, even after an entire decade.

It kind of felt like I was in a pond that was shrinking and the fish were in the pond kind of flapping around a little bit and they may have waited too long to get out of the pond somehow.

That session made a very big impression on me; I realized I never want to be in that position. Especially in technology where, even 10 years in, you’re holding onto the past and you’re not looking forward to the future.

A few years ago, for somebody who at that point had been writing Objective-C code for 15 years, it was another moment where I felt a little bit like those Carbon developers. I’d been working in an environment for a while. I’m proficient in it. I’ve been writing apps in it for a while, but now here’s this new thing.

And I don’t need to move immediately. I can keep writing Objective-C, but I thought back to those Carbon developers, and I don’t want to be like that 10 years from now.

Obviously, I jumped on the Swift train and it’s been fun learning it year after year.

Learning New Tricks

What I’d like to talk about is that: can an old dog learn new tricks?

For me, as I’ve reflected back on the last 20 years, there are a couple of what I would call meta tricks.

They’re tricks that you can learn that hopefully make it easier to learn new tricks.

Learn Your Way

The first of those meta tricks I call “learn how you learn” because everybody learns in a different way and you’re certainly going to be learning new stuff in this environment forever.

Some people like books. Some people prefer watching video. Some people just jump into code and look at the documentation and start writing stuff and just do stuff by trial and error. Some people like working with other people to learn stuff. Some people prefer it alone. I’m guessing most of you enjoy tutorials.

Love What You Do, But …

Next thing I would say is love what you do, with a caveat: don’t get too attached.

We put a lot of ourselves into our work, and one thing I’ve learned over time is it’s a little bit dangerous to put way too much into your work, because things are going to change on you.

If you were at the game show last night, there were some WebObjects paraphernalia.

This was one of the technologies I cut my teeth on: doing dynamic web applications. It was always in Java when I wrote it, but we were using Foundation, so NSArrays and all that stuff. And then at a certain point, it kind of stopped being supported and it was time to move on.

I spent a lot of time, energy, effort in WebObjects, but … Keeping an eye out for when things seem to be trickling down is also a good time to start emotionally divesting a little bit, so that you’re not terribly disappointed.

Those Carbon developers were very, “it’s not just that we’re writing code. What we do is a very emotional business.” We claim to be very: “Oh, we’re engineers. We’re all logic and reason.” Then we look back at the last tech argument we had, and what percentage was logic and reason, and what percentage was like, “No. I just think this is correct”?

I worked on version one of Aperture and it was surprising to me when, years later, it was end of life, that it kind of hit me a little bit. More than I was expecting. I didn’t touch the code. I hadn’t worked on the team for years. It was this thing I worked on, and now it’s no longer a thing.

I think, for me, what I’ve found is that that is going to happen through your whole career. You’re going to work on a project that before it even sees light of day might get canceled at a company. You’re going to be working maybe at a startup where it goes along fine and then everything falls through and: “Oops. That’s not a product anymore.” Or just features that you work on maybe get cut at the last moment.

We pour a lot of ourselves into these things and that’s great. The one thing I would say is that if you pour yourself in, you can be very vulnerable to becoming angry and bitter.

I say that with little bit of humor, but it’s true. It’s much better to kind of pull back a little, to realize that the part of you that you put into that thing is very important, but also that there are things beyond your control that may cause that thing to disappear.

So, again, love what you do, but don’t get too attached.

To me, it’s this crazy balance where you’re trying to put your full heart and soul into something, but you also need to be a little bit emotionally prepared that it’ll go away. Take a little time to recognize that anything you’re working on might go away. That technology you love, that framework you love, that language you love might be a thing of the past at some point.

Passion

We often see folks say, “Do what you’re passionate about.”

Follow your passion. I think that has a good deal of merit to it, except you can’t always follow your passion, because sometimes other things happen.

Life happens. You have other considerations besides doing exactly that one thing that you’re truly passionate about. One thing I’ve come to observe over time is what might be more important is: be passionate about what you do, whatever that happens to be.

You can almost think of it like having a meta passion. If you have a passion about things like, “I like solving problems that people need solving,” then it doesn’t necessarily matter what thing you’re working on, because you have this meta passion that you’re just into solving these problems.

Or you’re into giving people a good experience, so whether you’re actually working on an app or working on a tutorial or working on a game show or what have you, you’re concerned about this thing that you’re passionate about where the exact details of what you’re doing might not matter so much.

That way, you can always be doing things in a passionate way, but if something gets pulled out from under you, like a project you’re working on or what have you that you have no control over, you can be proud of the passion you put into it, but also apply that passion to the next thing and not beat yourself up or feel really horrible.

For me, I joined the AppKit team and I was responsible for AppKit accessibility. Now, I did not join the AppKit team saying, “I’m very passionate about accessibility. That’s all that I want to work on.” It’s just that was the thing that needed to be done, so I dug in.

Solving problems and learning the accessibility APIs, how everything worked, was incredibly rewarding. I’m very proud of the work I did on accessibility and I’ve become passionate about accessibility, but it’s a case where there wasn’t a passion followed by action. It was more a case where the action and what needed to be done caused me to delve into it and become much more involved and passionate about something.

Know When to Go With the Flow

The next meta trick is: know when to go with the flow.

This was originally just called, “go with the flow,” and then I realized that wasn’t what I meant at all, because that meant everything’s fine at all times. But knowing when to go with the flow can be very helpful.

I’ve always loved this quotation from Thomas Jefferson. “In matters of style, swim with the current; in matters of principle, stand like a rock.”

As I was researching this talk on the Monticello site, it turns out that there’s no evidence that Thomas Jefferson ever said this, which then led me to think about another favorite presidential quote of mine:

Even though Thomas Jefferson may not have said it, I still like the gist. It’s saying that there are some things that are going to change. You might not enjoy the changes, but they’re going to happen. But there are some matters of principle you want to stand firm on.

Moving from iOS 6 to iOS 7, there was a giant change in user interfaces. A lot of work to be done to update your app to use the new human interface guidelines. That is something where you are not going to change that change in style. You’re not going to be the one app that maintains this skeuomorphic look and feel and everybody is so proud of you for holding out.

No. So let’s update our stuff for iOS 7.

Making your app stable and not crash and not be a security risk and behaving well and providing a good experience for your users: those are things where you should be standing on principle.

But every detail in the user interface, in the human interface guidelines … in part, it is matter of style. Clearly, people were able to use iOS devices and apps with the old design, and they’re able to use them with the new design. It is a bit stylistic in that sense.

Know when to let go. Know when to go with the flow.

One More Trick: Positivity

How many folks were at the conference last year? (Show of hands.) Last year I did a talk and I mentioned my dad, who had just had a major medical life event. He was on the road to recovery. A lot of folks have asked me about him and I just want to say: Dad is doing incredibly well. He’s now 91.

Whenever anybody asks him the secret of his longevity, he says, “I think the secret is I keep a positive outlook.”

He never said that in his eighties or in his seventies, though. I don’t know if he’s recently heard it somewhere else, but he is a terribly positive guy.

I think in a lot of ways the way to keep learning new tricks and the way to have the energy to let go of the old and embrace the new, even after you’ve been doing something for a long, long time, is a positive outlook.

It’s this outlook that says: yes, I have this knowledge base and some of it’s going away … but there’s this new thing coming along, and isn’t it exciting that I get to learn it?

I hope that some of those meta tricks will be handy for you. Thank you very much.

Note from Ray: If you enjoyed this talk, you should join us at the next RWDevCon! We’ve sold out in previous years, so don’t miss your chance.

Contributors

Comments