Developing Perspective

#85: Pragmatism.


00:00:00   Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing

00:00:04   news of note and iOS development, Apple and the like. I'm your host, David Smith. I'm an independent

00:00:08   iOS and Mac developer based in Herne, Virginia. This is show number 85 and today is Thursday,

00:00:13   October 4th. Developing Perspective is never longer than 15 minutes. So let's get started.

00:00:17   All right. So today I'm going to talk about what could best be summarized as pragmatism.

00:00:23   And I have a couple of different examples and things to get into. But ultimately,

00:00:28   Now, it was something that I was struck by recently that I wanted to kind of elaborate on here on the show.

00:00:33   But I think pragmatism is probably one of the most important attributes of being successful as a developer.

00:00:37   And by that I mean, when I say pragmatism, what I'm talking about is the understanding that everything you do

00:00:46   when you make something is a trade-off, is a compromise.

00:00:55   Every time you say yes to something, you're almost always saying no to something else.

00:00:59   And the more you can understand and wrap your hands around the fact that you're making those

00:01:05   tradeoffs, I feel like the better you can be at being practical to being realistic and

00:01:10   being pragmatic about how you approach them.

00:01:14   This is relevant, I find, often, especially when you get to the phase that I'm in right

00:01:18   now with the weather app that I've been talking about for a while that's coming out soon.

00:01:24   And what I say is, you know, you always have this fear, at least I do, that I'm not necessarily

00:01:32   shipping the best app that I possibly could.

00:01:36   So like I talked about in the last episode, I recently shipped version one of Check the

00:01:41   Weather, the weather app I'm working on.

00:01:42   It should hopefully, if Apple is true to form, will likely go into review today or maybe

00:01:48   tomorrow.

00:01:49   And so the first version will be approved then, though I'm still looking at a launch

00:01:52   of October 17th, just in terms of it's base,

00:01:55   and so I can do some of my marketing stuff.

00:01:58   But that version that I shipped is, I think, really good.

00:02:04   But it's not perfect.

00:02:07   It's not sort of the-- I don't know what you call it--

00:02:10   like the Socratic ideal, or that concept of something

00:02:17   that's just perfect.

00:02:19   It's exactly what I wanted it to be.

00:02:21   And I'm okay with that.

00:02:24   There was a period in my time, in my development career where I really would

00:02:27   struggle with that, where I would constantly sort of be beating myself up

00:02:32   with this focus on I need to ship the best I can possibly do.

00:02:36   And the problem is I found is that I never shipped anything.

00:02:40   And that's sort of the direct result of that is it's impossible to ship your best

00:02:47   work, I think.

00:02:52   Because by definition, it'll never be there.

00:02:53   There's always something that you could do to make it better.

00:02:57   And better could mean a lot of different things.

00:03:01   But at some point, being pragmatic about it and saying, "Okay, this is good enough.

00:03:03   This is going to be useful.

00:03:09   This is going to be functional.

00:03:11   This is really going to hit it," is kind of what you're striving at, rather than perfection.

00:03:13   And I think it's important to emphasize that in the Mac and Apple community,

00:03:18   especially for--

00:03:18   I've talked to a lot of newer developers.

00:03:21   And I feel like you come into this community,

00:03:23   and there's this kind of unwritten rules or things people talk about,

00:03:26   how, oh, we sweat the details.

00:03:30   And every pixel's got to be perfect, and all this kind of thing.

00:03:34   And you talk about great companies like Panic, for example, or Tapbots,

00:03:38   or these kind of people.

00:03:39   And it's like, oh, my goodness.

00:03:41   Everything they ship is just absolutely pristine and amazing.

00:03:44   The reality is that isn't true.

00:03:46   These are the great developers shipping great software.

00:03:49   But the reality is they're not-- they

00:03:54   are uncompromising in certain areas, which is great.

00:03:59   And that's something that I certainly strive to myself.

00:04:01   But they're not uncompromising to a point

00:04:05   that they never ship.

00:04:07   If what they shipped was perfect and their best work possible,

00:04:11   the first time, there wouldn't be Coda 2 or Coda 2.1, even moreover.

00:04:16   So this is just something that I've been struggling with a little bit, and it's always the hard part at the end of a project.

00:04:23   You're like, "Okay, this is good enough. This is what I'll ship."

00:04:27   And I was struck by it a little bit yesterday.

00:04:31   So yesterday, Tapbot's released Netbot, which is an alpha.net, essentially port of Tweetbot,

00:04:32   which is my favorite Twitter client.

00:04:36   I've been talking about it actually, I think since the first episode of Developing Perspective,

00:04:41   I talked about how much I liked Tweetbot.

00:04:45   So it's been a long time.

00:04:47   And the thing that you look at, and it's like I look at it and it's great.

00:04:50   And I think some people, other people say, "Oh, Felix is better."

00:04:53   Or whatever.

00:04:58   There's other kinds of different alpha.app.net clients.

00:04:58   But the thing that I'm struck by, though, is that they're both--

00:05:02   Netbot isn't perfect.

00:05:04   You know, there are some glaring challenges and problems with it.

00:05:08   But it's a very pragmatic response from an independent developer.

00:05:11   They see an opportunity to make some money,

00:05:14   to leverage something they've already done,

00:05:18   essentially huge amounts of code and design and graphics

00:05:21   that they've already built. They're just porting them over to a new platform.

00:05:24   And they're going to ship that as quickly as they can, especially

00:05:27   given the ambiguity and anxiety I'm sure they have from what Twitter's

00:05:30   doing on Tweetbot, on one of their other main products.

00:05:34   And that's a very pragmatic thing.

00:05:36   And you can see these compromises they made.

00:05:38   It's like you open up the tutorial screen in Netbot

00:05:41   right now, and it shows Tweetbot screens.

00:05:44   There's things in there that just don't exist in App.net

00:05:49   right now.

00:05:50   But that's fine.

00:05:51   As a person who bought their app, I don't really mind that.

00:05:54   The core experience is smooth and works.

00:05:58   is exactly what I'm used to coming from Tweetbot and using it all the time.

00:06:02   So for me, I'm like, that's great.

00:06:03   You know, I can go ahead and use it.

00:06:05   And that was just a pragmatic choice that they made to say, you know, it's

00:06:08   not going to be perfect, but I'd rather ship something that's 99% there or 90%

00:06:13   there now, then try and polish and polish and polish and never quite get there.

00:06:18   And so I also wanted to loop this around to another kind of challenge that I've

00:06:24   been sort of thinking about recently as I start to head towards the marketing

00:06:28   side of this new app that I'm launching.

00:06:33   And there's always this latent anxiety, at least I have, that

00:06:35   the fear that I'm going to ship something that won't live up to its hype.

00:06:41   Now, I'll get to talk in subsequent episodes a little bit about how I'm

00:06:45   going to be trying to build hype for this app.

00:06:51   I'm going to build a marketing push, kind of grab it, hopefully get some

00:06:53   attention for it.

00:06:53   But there's certainly latent in that.

00:06:55   There's part of me that gets really nervous when I do that.

00:06:58   Because you want to--

00:07:00   A, you only have so much sort of marketing capital

00:07:02   that you can spend.

00:07:04   And then two, there's always this thing

00:07:05   that I'm going to be talking about this app

00:07:07   as though it's really good.

00:07:08   That's awesome.

00:07:09   It does a lot of great stuff.

00:07:10   I think all those things are true.

00:07:12   There's always this fear that I spent all this time and effort

00:07:15   hopefully building up a reputation among people

00:07:18   who I respect in the community at large.

00:07:20   And you want to put something out there.

00:07:22   And there's always that fear that they're going to come back and be like,

00:07:24   this is, this is kind of lame.

00:07:27   Like, really?

00:07:28   This is, this is what you've been working on.

00:07:29   Like that's not, that's not very good.

00:07:31   And I suppose if that was the case, you know, that would certainly

00:07:34   be hurtful and hurtful and problematic.

00:07:36   And you certainly mitigate that by doing things like beta testing, by

00:07:39   showing it to friends and by, like I talked about two episodes ago, kind of

00:07:43   working out from, you know, starting with people who love you, people who like you

00:07:46   and then moving out to people you respect.

00:07:48   But the reality is, your app will never live up to its hype, because by definition, that's

00:07:55   what hype is. Hype is taking all the best attributes of something that you've created

00:08:01   and putting them out and showing those to the world and ignoring all of the downsides.

00:08:07   If you're giving a perfectly even and balanced perspective on something, then it's not really

00:08:11   marketing. It's not really hype. I'm not saying that you want to be disingenuous, but it's

00:08:15   unlikely that you're going to have this even imbalance.

00:08:19   It's like, here's this thing, and here's all the things

00:08:22   that I wish it could do better.

00:08:24   I wish it did this.

00:08:24   I wish it could do that.

00:08:26   That's not really marketing.

00:08:28   That's just kind of odd.

00:08:30   And so by definition, you're not ever

00:08:33   going to be able to live up to your hype.

00:08:34   You want to be honest and clear about what your app can

00:08:37   and can't do.

00:08:38   It's not about being deceptive.

00:08:39   But I sometimes have this paralysis.

00:08:43   As I've been getting ready to send it out,

00:08:45   It's kind of to beta test or to send it out to the press.

00:08:48   I have this fear like, Oh gosh, is it really ready?

00:08:50   You know, it's like, do I want to show it to the guys at Mac stories?

00:08:54   Do I want to show it to the guys at Mac world?

00:08:56   Do I want to show it to the guys at the next web?

00:08:59   Like, do I want to show it to these people who, you know, whose opinions I

00:09:04   value and whose tastes I respect?

00:09:07   Do I want to show it to these people if it's not going to be awesome, if it's

00:09:12   not going to be impressive?

00:09:14   And certainly it's like these are things and decisions that I've made earlier in the process that I'm hopefully able to say, yes, this is great.

00:09:22   People are going to really like it. And I think that's the case. I think that it's really good.

00:09:28   And I'm starting to get more and more proud of it in that way of feeling comfortable to show it to people.

00:09:34   But there's definitely an anxiety that you have that it's just not going to live up to it.

00:09:38   And you're kind of going to shoot-- it's going to fall flat,

00:09:40   and you'll kind of feel foolish.

00:09:42   Or you're not really--

00:09:45   it's like all this work wasn't going anywhere.

00:09:47   But looping back to being pragmatic about it,

00:09:50   it's like you just can't--

00:09:51   the reality is you can't think that way,

00:09:54   because you'll never get anywhere then.

00:09:56   You're never going to ship something that's perfect,

00:09:58   and you're never going to ship something that will ever

00:10:01   live up to the best ideals of what's possible for it to do.

00:10:05   And you may get closer and closer.

00:10:07   I mean, this was actually kind of an amusing thing.

00:10:09   I was looking at--for some reason, I ended up on the old pages of the Instapaper blog,

00:10:17   the official Instapaper blog.

00:10:19   And if you look at it, there was something kind of amusing, was there was a demo video

00:10:25   of the original implementation of tilt scrolling, which if you're not familiar with Instapaper,

00:10:28   it's a great app by Marco Orment for time shifting your reading of articles.

00:10:33   And it is a first implementation of tilt scrolling, which is where you tilt your phone and the

00:10:37   the word scroll up and down, which is a nice way to deal with pagination or so you're not

00:10:41   just constantly flipping your finger up and down.

00:10:43   But if you look at the app and you look at it in the context of what the app is today,

00:10:48   it's kind of rough.

00:10:51   And some of that's certainly fashion, but some of them that that's just the process

00:10:54   of iterating on something for so long that you've really gotten rid of all the rough

00:10:59   edges.

00:11:00   And that's kind of cool.

00:11:03   When I see that, that's reassuring, that an app that I respect and I liked today didn't

00:11:08   necessarily start out that way.

00:11:11   It's kind of like, you could even take that same approach and talk about the approach

00:11:15   a lot of people say Apple takes, where you want to ship something that is solid, useful,

00:11:21   and really good at a core set of functionality, and then you want to hone and expand that

00:11:26   incrementally from there, rather than trying to ship something that does all things for

00:11:30   for all people on day one, but wouldn't necessarily do any of them really well.

00:11:35   And so that's kind of what I've been thinking about recently.

00:11:37   And so I guess that the sort of the summary of that is just be pragmatic

00:11:42   about what you're building and don't worry so much about trying to live up

00:11:47   to some impossible ideal, maybe that you would like you want to work hard.

00:11:52   Do you want to do awesome things, but you don't want to get too wrapped up

00:11:55   in somehow reaching this impossible ideal that you never end up getting anywhere.

00:12:00   or you end up feeling really bad about what you've done

00:12:03   and not being proud of it and excited about it.

00:12:05   Because ultimately, that's what's going to be contagious.

00:12:08   That's what's going to-- if you're excited about something you made,

00:12:10   people are going to understand and respond to that in a way

00:12:13   that if you're just kind of like-- it's like the classic thing if you're

00:12:16   demoing your app to somebody and you're like, here it is, what do you think?

00:12:19   And then you start immediately making excuses.

00:12:22   That's not cool.

00:12:23   It's like, oh, I'm sorry it doesn't do this.

00:12:24   One day I'd like it for it to do that.

00:12:26   That's not cool.

00:12:27   embrace what it is and just go with it.

00:12:31   And I think that's really the reality of,

00:12:33   in order to be a successful developer, especially

00:12:35   an independent one, you just have to be able to let go.

00:12:37   You have to make good compromises.

00:12:40   And ultimately, it's just going to come down

00:12:42   to if you're making good choices and you're building solid code,

00:12:45   I think it will work out.

00:12:47   All right, that's it for the topic of today's show.

00:12:50   A couple of things I wanted to loop back on.

00:12:52   So first, I've had a couple of people ask--

00:12:54   or I got a lot of feedback back from the discussion--

00:12:57   the question I asked, and I think it was the last show,

00:13:00   maybe the show before, about direction for the show

00:13:02   to head as I'm starting to wrap up this--

00:13:05   the arc of the weather app.

00:13:07   And so I was going to talk about briefly the response I got

00:13:10   from that.

00:13:11   And basically, it seems most people

00:13:12   wanted to stay largely developer focused,

00:13:15   and I'm definitely cool with that.

00:13:17   There'll be a few little, obviously, topical things

00:13:19   that come up, as they relate to developers.

00:13:22   I have a few ideas and concepts for a more--

00:13:26   maybe a slightly less developer-oriented show or topics.

00:13:30   And what I may end up doing is just moving those

00:13:32   into either another show, into another feed,

00:13:35   that kind of thing.

00:13:36   Just in terms of the form of the formative development

00:13:38   perspective is so short and focused, a single topic,

00:13:41   and being developer-focused I think makes sense.

00:13:45   But that's just something I wanted to respond.

00:13:47   I thank you all for all your feedback.

00:13:48   I really do appreciate it in all the various places.

00:13:52   that you sent it back.

00:13:53   And two, I've had a couple people just

00:13:55   be asking me about the weather app, when can I get it.

00:13:57   And I really appreciate that support.

00:13:59   Like I said, October 17 is my expected launch day.

00:14:03   So when it gets approved, hopefully it'll

00:14:05   get first approval tomorrow or Friday.

00:14:09   And then I have a point release bug fix

00:14:12   that I'm going to resubmit then.

00:14:14   And this is something that I think I talked about before.

00:14:16   But essentially, I'm trying to take this two submission

00:14:19   before launch approach.

00:14:22   because I feel like it gives me a much more certainty about when I can actually launch it,

00:14:25   so I can coordinate my activities a little bit better.

00:14:27   So that's what I'm doing.

00:14:28   So Wednesday, October 17th is the day that I'm targeting.

00:14:31   And I really appreciate all the people who've said,

00:14:33   "You're definitely going to buy it," because that's just reassuring

00:14:36   and very validating for the work I do here.

00:14:39   So anyway, that's it.

00:14:40   If you have any questions, comments, concerns,

00:14:42   I'm on Twitter @_davidsmith.

00:14:44   I'm on thealpha.app.net @davidsmith.

00:14:47   I'm on tent.io @davidsmith.tent.is.

00:14:51   and I'm on the web at developingperspective.com and David-Smith.org.

00:14:57   So those are all the places you can get ahold of me. Thanks.