PodSearch

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.