Developing Perspective

#20 - Parkinson’s Law


00:00:00   Hello and welcome to Developing Perspective.

00:00:02   Developing Perspective is a near-daily podcast discussing the news of note in iOS, Apple,

00:00:06   and the like.

00:00:07   I'm your host, David Smith.

00:00:08   I'm an independent iOS developer based in Herndon, Virginia.

00:00:11   This is show number 20, and today is Thursday, September 1, 2011.

00:00:16   The format of Developing Perspective is that it'll cover a handful of articles, links,

00:00:20   things I found interesting since the last show, and then move over to a more general

00:00:23   discussion towards the end.

00:00:24   This show will never be no longer than 15 minutes.

00:00:27   Let's get started.

00:00:28   All right.

00:00:29   My first link today is by Brett Terpstra entitled,

00:00:33   "Why Markdown?

00:00:34   A Two-Minute Explanation."

00:00:35   And it's kind of an interesting article that he wrote.

00:00:37   Brett Terpstra is probably one of the most knowledgeable people

00:00:40   about Markdown that I know, behind maybe just

00:00:43   a few other people.

00:00:44   But he definitely knows his stuff.

00:00:46   This is an interesting article because it talks rather

00:00:49   than talking about the what of Markdown,

00:00:51   how the syntax works, how to parse it, tools that use it,

00:00:55   et cetera.

00:00:55   It's more the why.

00:00:57   is sort of like five reasons why Markdown is better

00:01:00   than sort of the alternatives for creating HTML or just

00:01:03   generally rich formatted text.

00:01:06   Definitely worth reading if you have any interest in sort

00:01:09   of doing any amount of writing, whether for a blog

00:01:11   or for a book or whatever it may be.

00:01:14   It's a really interesting article,

00:01:16   but sort of just reinforcing the why that Markdown is so good.

00:01:20   All right, next I wanted to point out

00:01:22   that yesterday the Spotify team released an iOS

00:01:25   SDK for their service.

00:01:28   So Spotify, if you're not familiar with it,

00:01:29   is kind of an online music service that

00:01:33   lets you listen to almost every song you've ever

00:01:36   heard of in a fairly easy, low subscription per month kind

00:01:41   of way.

00:01:42   And essentially what they've done here

00:01:43   is they've opened up an SDK that lets you incorporate

00:01:45   Spotify and their music streaming and things

00:01:47   into your application.

00:01:49   One thing to point out is that it's free and easy

00:01:52   to do for non-commercial applications,

00:01:54   but any application that has any commercial value.

00:01:57   So it's either charged for the app or includes advertising.

00:02:02   There's a special arrangement that you

00:02:03   don't have to do with them.

00:02:04   Who knows exactly what's involved with that.

00:02:06   But if you're just doing it as a side project, a hobby,

00:02:10   something, it's definitely an interesting thing to look into.

00:02:13   It could be kind of fun.

00:02:15   All right, next I was going to talk about-- this

00:02:18   is a very good article talking about--

00:02:22   I think I referenced it a couple of episodes ago,

00:02:25   but there's a thing called GitFlow,

00:02:27   which is kind of a philosophy or a process of managing

00:02:32   a Git repository for a large team.

00:02:36   It's kind of been making the rounds recently

00:02:38   and been doing pretty well.

00:02:39   And specifically, this is Scott Chacon,

00:02:42   who is probably in many ways sort of the godfather of Git.

00:02:46   At least he seems to be always--

00:02:49   he was either one of the founders, one of the very early

00:02:52   employees of GitHub.

00:02:53   And his name and Git are kind of always combined in my mind.

00:02:59   He talks about how they do-- what the Git workflow

00:03:02   at GitHub itself is.

00:03:04   And it walks through a lot of really interesting things

00:03:07   about tools you can use inside of GitHub, which

00:03:09   is my preferred source control system,

00:03:12   and just kind of walks through all of how they do it,

00:03:15   why they do it, and it's just really a good read.

00:03:18   I think it reinforces one thing that

00:03:20   is very different between it and GitFlow,

00:03:22   is that it's very much a lightweight approach, which

00:03:25   fits very well with Git.

00:03:27   Because Git, at its core, is all about lightweight branches.

00:03:29   It's about having a much more free flow thing

00:03:33   without friction.

00:03:35   If I want to create a branch, I can just do it.

00:03:37   There's no cost.

00:03:38   It's not this big time intensive process.

00:03:40   You can just do it, and you've got it.

00:03:41   So definitely worth reading, especially if you

00:03:43   use GitHub for your source control.

00:03:45   There's a lot of good tips and processes in there

00:03:47   that I think a lot of developers could learn from,

00:03:50   especially some of their things around code review and things

00:03:53   like that.

00:03:54   Some tools that I wasn't even aware were in GitHub

00:03:57   that are pretty cool.

00:03:59   All right, next I have an article.

00:04:01   It's really a video.

00:04:02   It's a fascinating little video about watching Steve Jobs talk

00:04:06   to an audience member during WWDC 1997.

00:04:11   So this was quite a few years ago.

00:04:14   But it's just a fascinating thing

00:04:15   where essentially one of the audience members in internet

00:04:19   parlance was trolling.

00:04:21   He was kind of asking a question that

00:04:22   isn't so much a question as sort of an insult

00:04:25   wrapped up in a observation.

00:04:28   And it's just really-- it's just a really good video

00:04:32   because you kind of get this insight into how he works

00:04:35   and how he thinks, where he's like, you know,

00:04:37   no matter what you do, people are going to not like it.

00:04:41   And that's unfortunate.

00:04:44   It would be great if you could please everybody,

00:04:46   but you can't.

00:04:47   And all that really means is some people

00:04:50   are going to be sad, but we're going to try and make

00:04:53   the vast majority of people very happy.

00:04:55   And it's just really worrying.

00:04:57   He obviously says it much more eloquently than that.

00:05:00   It's just worth thinking about more generally.

00:05:02   It's a great little video in terms of it's a nice way

00:05:04   to see Steve back in his heyday.

00:05:06   But I definitely recommend just getting a sense of that

00:05:10   And being like, you know, that's true.

00:05:11   No matter what you do, you're going to be--

00:05:14   you can't be all things to all people

00:05:19   when you're making a product.

00:05:21   No matter what you do, someone's going

00:05:22   to mind it some other way.

00:05:24   And you just need to accept that and then sort of adjust

00:05:26   accordingly.

00:05:28   And lastly, I have a link to an article

00:05:31   that I wrote yesterday entitled 5% Off Everything.

00:05:35   And it was a realization, basically,

00:05:36   that. So Apple has an affiliate program. In the US, it's through link share, it's through

00:05:41   other people in other countries, which basically means that if you have a link, I got it because

00:05:46   I can link to one of my products. Say for example, I link to SimpleCasts or my recipe

00:05:52   book or one of my other apps. And I have a link on my website, I have a link cross-promotionally

00:05:57   or however I do it. And that link takes them to my app in the App Store. That infrastructure,

00:06:06   an affiliate link lets me get a little kickback from that purchase.

00:06:10   And you can essentially use it as a way to get an extra 5% off, so sort of back on that

00:06:16   purchase.

00:06:17   But what I realized is you can also create affiliate links to just stores.

00:06:22   So to the iBook store, the Mac App Store, the regular App Store, and the iTunes store.

00:06:27   And if you go to, and if you click on one of those links yourself, buy whatever it is

00:06:33   you're going to buy.

00:06:34   I was buying an app and a book, you can then fairly

00:06:39   straightforwardly get 5% back on that purchase.

00:06:43   We did 5% off.

00:06:44   So if you buy a $10 app, you get $0.50 off, which is great.

00:06:48   It's just sort of free money, and it's nice to kind of have

00:06:51   that benefit.

00:06:51   And I think in aggregate, it's something

00:06:53   that's going to sort of save me a lot of money overall.

00:06:57   But one thing that I did and what this article walks

00:06:59   through that I wrote is what I did

00:07:02   is I created a little single purpose website, which

00:07:06   is just a file on this web server I host somewhere.

00:07:09   But basically, I can open up any time I want to buy anything.

00:07:11   I can open up my iPad, my iPhone, my Mac,

00:07:14   and it has just a list of those store links.

00:07:16   I can click on one.

00:07:17   It takes me to the store.

00:07:18   I finish whatever I'm going to buy.

00:07:19   So now every time I want to buy something,

00:07:21   I open up that website.

00:07:23   I click the link, and then I buy it.

00:07:25   It takes a lot of the hassle out of doing it.

00:07:27   If you're trying to do it via link share, where you could

00:07:30   find the product that you want inside of their deep link

00:07:32   maker and so on.

00:07:33   It's just a really low friction, easy to use thing

00:07:37   that I think will overall save you

00:07:39   a little bit of money, which is always nice.

00:07:42   All right, I'm going to move over to our general discussion

00:07:45   today.

00:07:45   And originally I'd said yesterday

00:07:47   that I was going to be continuing my process

00:07:49   on my article, the arc about how to submit apps,

00:07:54   what that process is like.

00:07:56   But after listening to yesterday's show,

00:07:57   I realized that it was kind of an interesting lesson

00:08:00   in and of itself about the software development process

00:08:03   and about some of the things that can go wrong.

00:08:06   So if you listened to yesterday's show,

00:08:07   or if you haven't, and if you want to just go back,

00:08:09   so that was show 19, setting up for the App Store,

00:08:14   the interesting thing that I found is it was a very good

00:08:16   example of Parkinson's Law.

00:08:19   And Parkinson's Law, if you're not familiar,

00:08:21   which I have linked to the Wikipedia page in the show

00:08:23   notes, is basically that work expands so as to fill

00:08:27   the time available for its completion, which

00:08:30   is a fancy way of saying that if you assign

00:08:33   a task a certain amount of time, it'll

00:08:35   take roughly that amount of time to do.

00:08:37   And the crazy thing is you can expand and contract

00:08:40   the amount of time, and it will still roughly fit.

00:08:44   And what I found interesting is obviously

00:08:46   with developing perspective, I kind of

00:08:47   have a policy that I say the show will never

00:08:50   be longer than 15 minutes.

00:08:52   So every time I'm recording-- so like right now,

00:08:54   I'm about to hit nine minutes.

00:08:56   So I have six minutes left in the show.

00:08:58   And what I found yesterday is, as I'm

00:09:00   talking through this process, it's

00:09:01   a big topic for setting up for the App Store,

00:09:03   provisioning profiles, certificates, all this stuff.

00:09:06   And I could talk to a large extent.

00:09:10   I could talk to a short extent.

00:09:12   And this will cover the same topic.

00:09:14   The problem that I found-- and this has happened to me many,

00:09:17   many times when developing software--

00:09:19   is I started off kind of going through things

00:09:22   that are at a good pace, a moderate pace.

00:09:24   And I got to a good stopping point,

00:09:26   where essentially my discussion was fairly complete,

00:09:29   but I was in about 12 minutes.

00:09:31   And so now I've got three minutes left.

00:09:32   Maybe I can jump into another topic,

00:09:35   embellish this a little bit more, add a little bit more depth.

00:09:38   And then towards the end, all of a sudden I look up,

00:09:41   and I'm at 14 minutes and 10 seconds.

00:09:43   Oh, goodness, I've only got 50 seconds left.

00:09:46   And so I start rushing, and I'm kind of throwing it together.

00:09:49   And the end of the show is kind of bad.

00:09:51   And I have to apologize to my audience about that.

00:09:54   But it was an interesting lesson, I think, in terms of what's happened to me many times

00:09:59   with software, where I say, "Okay, I'm going to have this feature done by next Friday,

00:10:07   next month, whatever it is.

00:10:09   And it'll take roughly that amount of time, irrespective of how long it actually should

00:10:16   have taken."

00:10:17   And so I just thought that was kind of an interesting lesson, because what I really

00:10:22   should have done, and this is what I've sort of tried to learn and do in software, is say,

00:10:27   you know, at 12 minutes it was done.

00:10:29   That was a good discussion.

00:10:30   I'm just going to leave it there and pick it up the next day.

00:10:33   Or in the software world, the equivalent is to try and not be too bound to timelines and

00:10:39   milestones and say, you know, this feature's done.

00:10:43   It's good enough.

00:10:44   It's, you know, it's very, it's exactly, you know, it's sufficient.

00:10:47   Is maybe a better word for it in a more succinct way.

00:10:51   And rather than be saying, well, I gave myself a week.

00:10:58   Maybe I should just keep trying at it.

00:11:00   And then the problem is, then you end up taking it to this other place where you can't finish

00:11:05   it or you have to rush to finish it.

00:11:07   And it ends up being very messy or very awkward and those types of things.

00:11:12   And so it's just kind of a lesson to learn that it's typically best to let things organically

00:11:17   take as much time as they need.

00:11:20   And that could be either longer or shorter.

00:11:21   But rather than putting sort of artificial milestones on it,

00:11:24   I've definitely run into this many times

00:11:26   with consulting projects, where a client says,

00:11:28   I need it done by this date.

00:11:31   And I find work to do to fill that time,

00:11:35   because that's the nature of the project.

00:11:37   That's what they're paying me to do.

00:11:38   Or this just happened a lot when I was a 9 to 5 employee.

00:11:41   So we need this thing done by this time.

00:11:43   Whereas there's a certain mindfulness

00:11:45   and a certain consciousness that's important to be

00:11:48   able to say, you know, where it is now is good enough.

00:11:51   And you draw a line.

00:11:53   And then often what I find will happen is you'll end up with,

00:11:55   A, a better product because you've stopped it

00:11:58   at a place that is much more typically elegant

00:12:01   and streamlined.

00:12:02   And then you also have time to improve it or other features

00:12:06   as you go forward.

00:12:07   You're not spending time creating work for yourself.

00:12:10   You're spending time just on really

00:12:13   essential, important things.

00:12:15   Maybe you could throw in the 80/20 here.

00:12:17   It's like you're, rather than spending all your time

00:12:20   on that last 20%, you're just knocking out

00:12:22   80% of the application, of the functionality,

00:12:27   of the feature set in a way that is very efficient.

00:12:30   And then you're allowing yourself to be very retrospective,

00:12:34   introspective about what to do with the rest of the time.

00:12:37   And that's going to be it for today's show.

00:12:39   Let's see, I've got two minutes to spare.

00:12:42   And I'm not going to keep going to fill out that time.

00:12:44   I'm just going to say, as always,

00:12:46   If you want to contact me, I'm @_davidsmith on Twitter, or there's now a contact form

00:12:51   on the website, which is developingperspective.com/contact.

00:12:54   Otherwise, if you like the show, please make sure you tell a friend, tell two, tell three.

00:13:00   Spreading the word is the best thing you can do to thank me for putting the show if you

00:13:04   like it.

00:13:05   Otherwise, have a good day, happy coding, and I will talk to you tomorrow.