PodSearch

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.