129: Lightning Round IV
00:00:00
◼
►
- Welcome to Under the Radar,
00:00:02
◼
►
a show about independent iOS app development.
00:00:04
◼
►
I'm Marco Arment.
00:00:05
◼
►
- And I'm David Smith.
00:00:06
◼
►
Under the Radar is never longer than 30 minutes,
00:00:08
◼
►
so let's get started.
00:00:10
◼
►
- So continuing our spring quiet period of developer news,
00:00:13
◼
►
I figured, we figured that we would do a little more Q&A,
00:00:16
◼
►
'cause when we asked for questions a couple weeks ago,
00:00:19
◼
►
we got tons of really good ones.
00:00:22
◼
►
And we have enough now for one or two more episodes,
00:00:24
◼
►
so we're gonna try to knock these out,
00:00:27
◼
►
and some of them are really good questions
00:00:29
◼
►
that I really wanted to address.
00:00:30
◼
►
So, we're gonna start with Boz the Developer, who asks,
00:00:35
◼
►
if you start working on a new app,
00:00:36
◼
►
what do you do before you start writing any code?
00:00:40
◼
►
So for instance, do you write out all the classes
00:00:42
◼
►
and details on paper, or do you just draft
00:00:45
◼
►
a general overview of how all the classes
00:00:48
◼
►
relate to each other?
00:00:49
◼
►
So, what do you do for this, Dave?
00:00:51
◼
►
- Very little, if anything.
00:00:57
◼
►
So I have done the kind of project,
00:01:01
◼
►
I mean, this was, and it's literally academic for me,
00:01:04
◼
►
where in school, I would have to do, build the big,
00:01:07
◼
►
what's it, UML diagrams of your classes
00:01:10
◼
►
and your class hierarchies and all that type of thing
00:01:14
◼
►
beforehand, and I've only ever done it
00:01:16
◼
►
in an academic setting.
00:01:17
◼
►
And in a practical setting, what I find is most useful
00:01:21
◼
►
is to get something working more,
00:01:24
◼
►
as quickly as you possibly can.
00:01:26
◼
►
And for me, that means to just start writing code.
00:01:29
◼
►
And I worry less about having things structured
00:01:33
◼
►
or organized in this most optimized way possible,
00:01:38
◼
►
or anything like that, at the start.
00:01:41
◼
►
Because the reality is, I know the least
00:01:44
◼
►
about the problem I'm trying to solve
00:01:47
◼
►
when I sit down to write for the first time.
00:01:50
◼
►
And so, any decisions or choices or structures
00:01:54
◼
►
that I'm going to create at that point
00:01:56
◼
►
are sort of necessarily the least informed
00:01:59
◼
►
and probably worst versions of that that I could.
00:02:02
◼
►
And so, I'd rather dive into the problem,
00:02:05
◼
►
start trying to solve it as best I can,
00:02:08
◼
►
and from there, as I develop more and more,
00:02:10
◼
►
from understanding of the problem domain,
00:02:12
◼
►
understanding how things are actually gonna work
00:02:14
◼
►
in practice, that's when I start to have a bit,
00:02:18
◼
►
not ever formal in my sort of class hierarchy or structure,
00:02:22
◼
►
but as I go, I will develop and move things
00:02:25
◼
►
to the structure that makes sense for the long term.
00:02:29
◼
►
The initial kind of quick spurt, maybe not necessarily,
00:02:32
◼
►
is even as worried about following good practices
00:02:36
◼
►
and structure around the way I'm relating things
00:02:39
◼
►
or those types of things.
00:02:41
◼
►
I'm just trying to get something working
00:02:42
◼
►
so I can better understand the problem.
00:02:44
◼
►
And once I understand the problem,
00:02:45
◼
►
then I can actually make choices about how to do things.
00:02:48
◼
►
But I never really write it all down.
00:02:50
◼
►
I mean, the only thing I've heard sometimes
00:02:51
◼
►
that I'll write down ahead of time
00:02:53
◼
►
is gonna be like sketching out a UI quickly
00:02:55
◼
►
or something like that, just to play with it.
00:02:57
◼
►
But I never really get into the sense of,
00:02:59
◼
►
writing things down on the code side,
00:03:02
◼
►
I've never really found to be particularly useful.
00:03:05
◼
►
- All this time, I thought I was just lazy and undisciplined,
00:03:09
◼
►
but you've now given me justification
00:03:11
◼
►
for why I also don't do any of these things.
00:03:15
◼
►
I think your point is excellent about how
00:03:18
◼
►
when you design on paper, you know the least
00:03:21
◼
►
about what it's actually going to take, really.
00:03:24
◼
►
To me, software development is a really big field,
00:03:28
◼
►
and there's lots of different ways to do it.
00:03:30
◼
►
There's lots of different situations
00:03:31
◼
►
in which you might want or need to do things
00:03:34
◼
►
in a more formal or planned-ahead way than others.
00:03:37
◼
►
I don't think iOS app development is one of those things.
00:03:41
◼
►
I don't think you need this level of formality I'm planning
00:03:44
◼
►
for what most people listening to the show
00:03:46
◼
►
are actually working on.
00:03:48
◼
►
I think you can build software like you build a bridge,
00:03:53
◼
►
like you design the entire thing first,
00:03:57
◼
►
and people have built lots of bridges before,
00:03:59
◼
►
so they have a really good idea
00:04:00
◼
►
of what it takes to build bridges these days,
00:04:02
◼
►
and you can sketch it all out,
00:04:05
◼
►
and then build it from the ground up,
00:04:06
◼
►
and then you reach the top,
00:04:07
◼
►
and then you can drive a car over it,
00:04:09
◼
►
and you know it'll work, because you plan everything out,
00:04:11
◼
►
and everything is like known problems,
00:04:13
◼
►
known conditions, known requirements.
00:04:17
◼
►
Software is rarely that way,
00:04:19
◼
►
and especially the kind of software that we write.
00:04:21
◼
►
It is rarely that established, that known in advance,
00:04:26
◼
►
or that repetitive.
00:04:29
◼
►
What makes software planning so hard
00:04:31
◼
►
is that most of the time,
00:04:32
◼
►
no one has ever done what you're doing
00:04:34
◼
►
in the exact way you're doing it before,
00:04:36
◼
►
and that's why it's so hard to estimate time,
00:04:39
◼
►
and estimate budget, and everything.
00:04:41
◼
►
And so the way I build software
00:04:44
◼
►
is not the way you build a bridge,
00:04:46
◼
►
where you sketch everything out first.
00:04:48
◼
►
The way I build software is how you would build
00:04:50
◼
►
the most dangerous, worst bridge project in the world,
00:04:52
◼
►
which is like you have somebody hold a board
00:04:55
◼
►
across the water first,
00:04:57
◼
►
and somebody rides a tricycle over it,
00:04:58
◼
►
and sees if it works,
00:05:00
◼
►
and then slowly you replace the temporary parts
00:05:03
◼
►
that you've made with the real thing
00:05:05
◼
►
that could actually be a little bit better,
00:05:07
◼
►
and support things properly.
00:05:09
◼
►
That's kind of how I make my software,
00:05:10
◼
►
is I try to get something working as quickly as possible
00:05:14
◼
►
that's terrible,
00:05:15
◼
►
and then if it's a thing that I think is a good idea,
00:05:18
◼
►
or that has legs, no pun intended,
00:05:20
◼
►
then I will start making it correct,
00:05:24
◼
►
and start building it right,
00:05:26
◼
►
and build out parts of it that were special case
00:05:29
◼
►
just to get the prototype working,
00:05:30
◼
►
and add UI, and polish things,
00:05:32
◼
►
and make it more robust.
00:05:34
◼
►
That's how I build software,
00:05:36
◼
►
and all of that is happening just by doing the code.
00:05:39
◼
►
It's all jumping right in and starting right in the code.
00:05:41
◼
►
There's no planning or anything,
00:05:43
◼
►
and I don't think,
00:05:45
◼
►
I mean, in an academic sense,
00:05:47
◼
►
certainly I would like to be more disciplined,
00:05:50
◼
►
and more planned, and everything like that,
00:05:53
◼
►
but A, I can't do that,
00:05:56
◼
►
and just my personality and my work style is not that,
00:05:59
◼
►
and B, I don't think for the kinds of apps
00:06:01
◼
►
that most of us write,
00:06:02
◼
►
that that level of formality is necessary.
00:06:05
◼
►
To me, that's a lot,
00:06:06
◼
►
it's just a lot of overhead,
00:06:08
◼
►
and you know, for the way I work.
00:06:11
◼
►
If the way that you work is more that way,
00:06:14
◼
►
if you benefit from designing things ahead of time,
00:06:19
◼
►
writing things ahead of time,
00:06:19
◼
►
that's a different story.
00:06:21
◼
►
That's a different work style,
00:06:22
◼
►
but for me, I have never found that useful.
00:06:25
◼
►
- Yeah, and I think what you just said there, though,
00:06:26
◼
►
is a very important point,
00:06:27
◼
►
that I have worked with people back
00:06:29
◼
►
when I used to work in a more,
00:06:31
◼
►
in an actual office environment,
00:06:32
◼
►
and I had a good friend of mine who,
00:06:35
◼
►
the way that I think about a problem
00:06:37
◼
►
is that I write code to explore it.
00:06:40
◼
►
That was the way that I do it.
00:06:42
◼
►
That initial 20, 30% of the work
00:06:45
◼
►
is me in Xcode writing code,
00:06:47
◼
►
and that's how I think a problem through.
00:06:50
◼
►
I had a friend who,
00:06:51
◼
►
he would think a problem through
00:06:53
◼
►
by exploring it on a whiteboard,
00:06:56
◼
►
and he would draw class diagrams,
00:06:57
◼
►
and that was, you know,
00:06:59
◼
►
that initial bit of time,
00:07:02
◼
►
that's how he could think through the problem best
00:07:04
◼
►
and understand it most.
00:07:06
◼
►
He wasn't coming at it from a sense of,
00:07:08
◼
►
he wasn't trying to be academic about it.
00:07:10
◼
►
He wasn't trying to be complete or comprehensive,
00:07:13
◼
►
but there is certainly,
00:07:15
◼
►
finding whatever is that best tool for you
00:07:17
◼
►
to gather as quickly as possible
00:07:19
◼
►
the maximum amount of information about the problem,
00:07:22
◼
►
and you're understanding
00:07:23
◼
►
what you think your solution to it might be.
00:07:26
◼
►
Whatever that form that takes, that's great,
00:07:28
◼
►
but I think it's probably important,
00:07:29
◼
►
moreover, to just remember that
00:07:32
◼
►
that initial work is entirely speculative,
00:07:35
◼
►
and you are trying to understand something better
00:07:39
◼
►
so that you can make better choices down the road,
00:07:41
◼
►
rather than trying to make a lot of choices upfront
00:07:45
◼
►
and then sort of holding yourself to those
00:07:47
◼
►
or expecting those choices to be good down the road.
00:07:51
◼
►
- Lou Brothers asks,
00:07:53
◼
►
"How do you decide which ideas you won't work on?"
00:07:57
◼
►
- In some ways, it's--
00:08:00
◼
►
- I love this question.
00:08:01
◼
►
- It's like, I think,
00:08:04
◼
►
so it's a decision,
00:08:05
◼
►
I think we have to make a lot, is something.
00:08:08
◼
►
I think one of the,
00:08:09
◼
►
as soon as you find yourself in a position
00:08:13
◼
►
where you're self-employed,
00:08:14
◼
►
suddenly you have the blessing and the curse of having,
00:08:18
◼
►
you can work on anything you want, basically.
00:08:21
◼
►
You can be like a little bumblebee,
00:08:22
◼
►
just flitting from flower to flower to flower if you want.
00:08:25
◼
►
You can dive into one thing and only work on that.
00:08:27
◼
►
You're now in a position that you have to make that choice.
00:08:30
◼
►
You have to decide what you're gonna work on,
00:08:33
◼
►
and then I think the harsh reality
00:08:35
◼
►
that you have to come to grips with
00:08:36
◼
►
is the fact that any time you say yes to one project,
00:08:40
◼
►
you are implicitly saying no to 100 other projects,
00:08:45
◼
►
that your time is a finite resource,
00:08:46
◼
►
and so you are going to have to decide,
00:08:50
◼
►
you can't do everything,
00:08:52
◼
►
and every day you're saying no
00:08:55
◼
►
to way more things than you're saying yes to.
00:08:58
◼
►
And so I think primarily the way that I tend to focus
00:09:00
◼
►
in terms of answering the ideas that I won't work on
00:09:04
◼
►
are the ideas, my focus tends to be on
00:09:07
◼
►
what are the ideas that I am excited to work on,
00:09:10
◼
►
and I just keep a running list of the ideas
00:09:13
◼
►
that I have otherwise, and that list will grow,
00:09:17
◼
►
and sometimes things will fall off of it.
00:09:20
◼
►
Sometimes I'll pick things up from that
00:09:21
◼
►
and start working on them,
00:09:23
◼
►
but I find that the most constructive thing I've found
00:09:26
◼
►
is to just focus on what am I excited about?
00:09:29
◼
►
What do I think would have the best impact on my business
00:09:31
◼
►
financially?
00:09:33
◼
►
What do I think is a nice quick win?
00:09:35
◼
►
Those are the things that I tend to decide about,
00:09:37
◼
►
what I want to work on,
00:09:40
◼
►
and then the things that I won't work on
00:09:41
◼
►
are just everything else,
00:09:43
◼
►
which is this gigantic pile of other apps that I have,
00:09:46
◼
►
other ideas that I have to work on things,
00:09:49
◼
►
and it's impossible for me, I find,
00:09:52
◼
►
to manage too much about that.
00:09:53
◼
►
I mean, there's a little bit of maybe,
00:09:55
◼
►
there are some times I have an idea,
00:09:57
◼
►
and then the important exercise of trying to honestly
00:10:01
◼
►
and genuinely think it through,
00:10:03
◼
►
where it's like, "Oh, that's a great idea,"
00:10:04
◼
►
and then sometimes you'll sit down for a little bit
00:10:06
◼
►
and just kind of think about it,
00:10:08
◼
►
or you'll have it on your back burner
00:10:10
◼
►
as you're going about your daily life,
00:10:11
◼
►
and all of a sudden you're like, "Wait a second.
00:10:12
◼
►
Yeah, I know. That's a terrible idea,"
00:10:14
◼
►
and it'll just kind of like, you can discount it,
00:10:16
◼
►
but otherwise I just tend to focus on
00:10:18
◼
►
what am I excited to work on?
00:10:19
◼
►
I'll go work on that,
00:10:21
◼
►
and I'm implicitly saying,
00:10:24
◼
►
anything that isn't that idea,
00:10:25
◼
►
I'm not gonna work on right now.
00:10:28
◼
►
- Yeah, for me, there's a lot of business considerations
00:10:32
◼
►
that go into it, and a lot of this just comes down to,
00:10:35
◼
►
you have a limited amount of time, really, in the day,
00:10:39
◼
►
and you have a limited amount of focus
00:10:40
◼
►
of how many things you can focus on at once
00:10:43
◼
►
and how many things you can maintain at once,
00:10:45
◼
►
and so it's very much a question of business needs
00:10:50
◼
►
and priorities, and then mostly it's a question
00:10:53
◼
►
of time management, and so the things
00:10:57
◼
►
I won't work on are typically things that I think one day,
00:11:02
◼
►
oh, wouldn't it be cool if this,
00:11:04
◼
►
or some opportunity comes up,
00:11:05
◼
►
or like, oh, that would actually be kind of cool to work on,
00:11:08
◼
►
or that might be successful,
00:11:10
◼
►
but where the amount of time it would take
00:11:13
◼
►
is disproportionate to its benefit in my life,
00:11:18
◼
►
and it weighs too much on the cost side, mainly of time,
00:11:23
◼
►
where any new thing I take on
00:11:26
◼
►
is going to have to find time to be done
00:11:30
◼
►
from the things I currently do with my time.
00:11:32
◼
►
You know, time is a zero-sum game.
00:11:35
◼
►
Like, it has to, any time that you invest in something new
00:11:38
◼
►
has to come from something else.
00:11:39
◼
►
This is opportunity cost, you know,
00:11:40
◼
►
so if something sounds really cool
00:11:44
◼
►
and it doesn't have that much business upside,
00:11:47
◼
►
and maybe it doesn't have any kind of like, you know,
00:11:49
◼
►
synergy with anything else I'm doing
00:11:51
◼
►
or doesn't have much to do with anything else I'm doing,
00:11:53
◼
►
but it's only gonna take a little bit of time,
00:11:55
◼
►
then I might do it as a fun side thing.
00:11:57
◼
►
Like, if I wanted to make a game,
00:11:59
◼
►
and which I've had game ideas before, they're terrible,
00:12:02
◼
►
but if I wanted to make a game,
00:12:04
◼
►
and for some reason I had a good idea,
00:12:06
◼
►
and it was only gonna take like a week to make,
00:12:08
◼
►
and by the way, it never takes just a week to do anything,
00:12:10
◼
►
but assume that you had something
00:12:12
◼
►
that had like a really short time commitment,
00:12:14
◼
►
and then you were done.
00:12:16
◼
►
There was no ongoing maintenance, no ongoing support,
00:12:18
◼
►
no ongoing updates.
00:12:20
◼
►
Again, never happens,
00:12:21
◼
►
but suppose you had something like that.
00:12:24
◼
►
I'd be more likely to consider doing that
00:12:27
◼
►
as a fun side thing, or as an experiment to learn
00:12:30
◼
►
new technology or whatever.
00:12:33
◼
►
But if I look at bigger projects,
00:12:35
◼
►
things that require ongoing commitments,
00:12:37
◼
►
so anything that requires updates, support,
00:12:40
◼
►
new podcasts that I do, you know,
00:12:41
◼
►
'cause that's like, oh, you gotta start recording this thing
00:12:43
◼
►
every week or two or three.
00:12:45
◼
►
And so like, you know, new things like that,
00:12:48
◼
►
new commitments, or just new apps
00:12:50
◼
►
that will require ongoing work,
00:12:53
◼
►
I really have to be very harsh with that, with myself,
00:12:57
◼
►
and I have to say like,
00:12:59
◼
►
what happens if this succeeds, first of all?
00:13:03
◼
►
Like, it's easy when you have a cool idea,
00:13:04
◼
►
oh, let's try this.
00:13:06
◼
►
But what happens if it succeeds?
00:13:09
◼
►
Then you have to maintain it.
00:13:10
◼
►
Then you're in the business of X, right?
00:13:13
◼
►
This is how I accidentally became
00:13:15
◼
►
the owner of a magazine or an ad blocker.
00:13:18
◼
►
Like, I wanted to do the cool thing
00:13:20
◼
►
of making the new project
00:13:22
◼
►
that had nothing to do with everything else
00:13:24
◼
►
I was doing at the time,
00:13:25
◼
►
and then it turned out, you know,
00:13:28
◼
►
I had to run that after that, and it became just a job.
00:13:31
◼
►
And I didn't want those jobs, it turns out.
00:13:34
◼
►
Or they weren't what I thought they would be, you know?
00:13:36
◼
►
So now I try to focus a lot more.
00:13:39
◼
►
Anything that's going to be requiring ongoing work for me,
00:13:44
◼
►
I try to make it
00:13:46
◼
►
related to or beneficial to my main businesses,
00:13:51
◼
►
which are Overcast and being a tech podcaster.
00:13:55
◼
►
Like, those are my two main sources of income,
00:13:57
◼
►
those are my two main focus areas.
00:14:00
◼
►
Anything that is not related to those things
00:14:03
◼
►
has to be really, really awesome
00:14:05
◼
►
and also require really little time for me to do it.
00:14:09
◼
►
So, you know, I'm working on multiple audio tools
00:14:13
◼
►
and everything, nothing big, don't worry,
00:14:14
◼
►
but just like small audio tools and stuff,
00:14:18
◼
►
like Forecast and some other stuff like that.
00:14:21
◼
►
'Cause those are all kind of in the service
00:14:22
◼
►
of both Overcast and my job as a podcaster.
00:14:26
◼
►
Other things that come up, like I wanted to,
00:14:29
◼
►
you know, I talked the other day about,
00:14:31
◼
►
oh, if I brought back my ad blocker,
00:14:33
◼
►
then I would do it in this way, right?
00:14:36
◼
►
But I'm not gonna do that
00:14:37
◼
►
because that's a whole different business.
00:14:39
◼
►
It has nothing to do with my main stuff
00:14:41
◼
►
and would require maintenance.
00:14:43
◼
►
So it's not worth it, it's not a good idea.
00:14:45
◼
►
I have had, yeah, this is a game ideas,
00:14:47
◼
►
but I'm not a game developer,
00:14:49
◼
►
and I don't really want to become one.
00:14:52
◼
►
That's a whole different skillset that, first of all,
00:14:54
◼
►
I don't think I'd be very good at,
00:14:56
◼
►
but second of all, it's totally different
00:14:59
◼
►
and it has no overlap really with what I do today.
00:15:01
◼
►
And so it would require, I think, a lot of overhead,
00:15:04
◼
►
a lot of shifting, and I don't think the outcome
00:15:07
◼
►
would be worth it enough for me.
00:15:09
◼
►
So that's kind of how I decide.
00:15:11
◼
►
Just like, you know, big picture,
00:15:14
◼
►
it's a lot about looking forward
00:15:17
◼
►
about what happens if what I'm doing actually succeeds
00:15:22
◼
►
and this has to become a part of every week of my life now
00:15:26
◼
►
for the next indefinite number of years.
00:15:28
◼
►
Is that actually the outcome I want?
00:15:32
◼
►
And if it isn't, I probably shouldn't do that idea.
00:15:35
◼
►
On a smaller scale, on the idea of features
00:15:38
◼
►
or aspects of the apps that I am working on,
00:15:42
◼
►
how do I decide what ideas of the apps that I work on?
00:15:47
◼
►
What features of the apps that I work on?
00:15:50
◼
►
That is a lot of the same logic
00:15:53
◼
►
that would go into the bigger decisions
00:15:55
◼
►
of basically like, do I want to be supporting this forever?
00:15:59
◼
►
And by the way, I don't get this right every time.
00:16:01
◼
►
I mean, that's why I had a magazine and an ad blocker
00:16:03
◼
►
and that's why there's features in my apps
00:16:05
◼
►
that I am dying to remove at all times.
00:16:08
◼
►
Like, any time you ask me, there's always some feature
00:16:11
◼
►
of whatever app I'm primarily working on at that point
00:16:13
◼
►
that I'm like, man, I wish, if I did it over,
00:16:15
◼
►
I would never do this feature.
00:16:16
◼
►
I would never add this thing.
00:16:18
◼
►
For Overcast, that's probably the episode limit.
00:16:20
◼
►
I hate that feature.
00:16:21
◼
►
Oh, and definitely Play Next by Priority.
00:16:24
◼
►
That is a huge pain. (laughs)
00:16:26
◼
►
But other than those two things,
00:16:28
◼
►
for the most part, I decide when I'm adding a feature,
00:16:32
◼
►
is this something I want to support forever?
00:16:35
◼
►
Is this something that I want to, in the future,
00:16:40
◼
►
not have to worry about people withholding
00:16:44
◼
►
their star reviews because I removed it and they were mad?
00:16:47
◼
►
Like, stuff like that.
00:16:48
◼
►
You have to predict this forward.
00:16:50
◼
►
If it's something that has a server side component,
00:16:52
◼
►
what happens if everyone starts using this feature?
00:16:55
◼
►
Like, I did file uploads for premium members.
00:16:58
◼
►
What happens if tons of people sign up for that?
00:17:01
◼
►
Do I want to be in that business?
00:17:03
◼
►
Also think about the needs that these features might have.
00:17:06
◼
►
So, for instance, people have often requested
00:17:09
◼
►
some kind of written review or comment system for podcasts
00:17:13
◼
►
where people could, similar to what iTunes has,
00:17:17
◼
►
where people could review podcasts or add their commentary
00:17:20
◼
►
that's visible to the public or anything like that.
00:17:23
◼
►
Problem with that is once you have users inputting text
00:17:27
◼
►
that's visible to other users,
00:17:29
◼
►
you need to have basically community management
00:17:32
◼
►
and spam control and abuse control
00:17:35
◼
►
and ways people can file complaints
00:17:37
◼
►
and policies around how you deal with that.
00:17:39
◼
►
You have to be able to do that in multiple languages
00:17:41
◼
►
because people will write things that you can't read.
00:17:43
◼
►
So it becomes a much bigger problem
00:17:47
◼
►
than just like, oh, wouldn't it be nice
00:17:49
◼
►
to have a few comments on a podcast?
00:17:52
◼
►
And so stuff like that, you gotta look at
00:17:55
◼
►
what it actually needs to do it right,
00:17:58
◼
►
and if it's too burdensome, then no way, not worth it.
00:18:02
◼
►
- Yeah, and I think too, it's interesting
00:18:05
◼
►
when you take that question and focus it on features
00:18:08
◼
►
that you won't work on rather than just like
00:18:10
◼
►
new opportunities that you'll pursue.
00:18:12
◼
►
'Cause I think something I also think about
00:18:14
◼
►
is how I tend to make sure that an idea or a feature
00:18:19
◼
►
is going to benefit most of my users.
00:18:23
◼
►
Is a filter, I think, more recently
00:18:26
◼
►
that I've started adopting that I won't work on,
00:18:29
◼
►
I try to avoid ideas that only benefit
00:18:33
◼
►
very small audiences or subsets of my app.
00:18:37
◼
►
And that's not universal, sometimes I certainly
00:18:40
◼
►
will have features that are not quite so universal,
00:18:44
◼
►
but I find that it's so easy sometimes
00:18:49
◼
►
to focus in on kind of this really interesting,
00:18:52
◼
►
tricky problem or something kind of really,
00:18:55
◼
►
like it's ostensibly a really cool feature to add.
00:18:59
◼
►
But one of the filters I apply to it now
00:19:01
◼
►
is I always ask myself, is this going to improve
00:19:05
◼
►
the use of the app for 80%, 90% of my users?
00:19:10
◼
►
And if it doesn't, then it has to be a feature
00:19:14
◼
►
that I feel really strongly about otherwise.
00:19:17
◼
►
Or at the very least, it's a feature that I'll push down
00:19:20
◼
►
at the priority of that feature and try and pull up
00:19:24
◼
►
anything where I think this will impact a lot of people.
00:19:27
◼
►
Because I think it's so easy to just want to solve
00:19:28
◼
►
the interesting problem and focus on that side of things
00:19:32
◼
►
rather than viewing it from the user's perspective.
00:19:35
◼
►
'Cause I think you, and it's also probably also important
00:19:37
◼
►
to remember that the users you hear from
00:19:40
◼
►
are such a teeny proportion of your user base typically,
00:19:44
◼
►
that it's so easy to get a distorted view
00:19:47
◼
►
of what people are actually using in practice
00:19:49
◼
►
and trying to keep that mindset that like a lot of ideas
00:19:52
◼
►
you probably shouldn't work on are these ideas
00:19:55
◼
►
that are kind of pet features and would really only affect
00:19:58
◼
►
a few people and then you're spending all this time
00:20:01
◼
►
and getting a relatively small return from it,
00:20:04
◼
►
even just from a purely pragmatic perspective.
00:20:07
◼
►
- We are brought to you this week by Linode.
00:20:09
◼
►
With Linode, you will have access to a suite
00:20:11
◼
►
of powerful hosting options.
00:20:13
◼
►
With prices starting at just $5 a month,
00:20:16
◼
►
you can be up and running with your own virtual server
00:20:18
◼
►
in the Linode cloud in under a minute.
00:20:21
◼
►
Linode offers industry leading performance
00:20:23
◼
►
with native SSD storage, a 40 gigabit network,
00:20:26
◼
►
and Intel E5 Xeon processors.
00:20:29
◼
►
They have 10 data centers now spread across the world
00:20:32
◼
►
so you can serve your customers even quicker than before.
00:20:34
◼
►
There's also an API at Linode that allows you
00:20:36
◼
►
to easily automate tasks or develop custom applications
00:20:39
◼
►
in the cloud and everything is manageable
00:20:41
◼
►
via the command line.
00:20:43
◼
►
All of Linode's pricing tiers feature hourly billing
00:20:45
◼
►
and then they have a monthly cap so that way
00:20:48
◼
►
you don't end up paying more than the monthly rate
00:20:49
◼
►
for any of the services.
00:20:51
◼
►
And Linode offers now additional storage too.
00:20:54
◼
►
They have block storage now out of beta
00:20:56
◼
►
and that's available in Fremont and Newark so far
00:20:58
◼
►
and they will be expanding it to all their data centers
00:21:02
◼
►
Linode is great for things like hosting web apps
00:21:05
◼
►
like what we do.
00:21:06
◼
►
Dave and I are both long time Linode customers.
00:21:09
◼
►
We love them, they're just fantastic.
00:21:12
◼
►
So you can host app back ends like we do,
00:21:14
◼
►
you can host websites, large databases, mail servers,
00:21:16
◼
►
VPNs, Docker containers, private Git servers,
00:21:19
◼
►
and so much more.
00:21:21
◼
►
And Linode is hiring right now.
00:21:23
◼
►
So if that interests you, go to linode.com/careers.
00:21:27
◼
►
So Linode has fantastic pricing options available,
00:21:29
◼
►
plans start at just $5 a month,
00:21:31
◼
►
that gets you one gig of RAM,
00:21:33
◼
►
and they offer lots of plans going up from there
00:21:35
◼
►
for your various needs including high memory plans.
00:21:38
◼
►
As a listener of this show,
00:21:39
◼
►
if you sign up at linode.com/radar,
00:21:42
◼
►
you will be supporting us and you will get $20
00:21:44
◼
►
towards any Linode plan.
00:21:45
◼
►
So if you wanna use that one gig plan,
00:21:47
◼
►
that's four months free.
00:21:49
◼
►
And with a seven day money back guarantee,
00:21:51
◼
►
there's nothing to lose.
00:21:52
◼
►
So go to linode.com/radar to learn more,
00:21:56
◼
►
sign up and take advantage of that $20 credit
00:21:58
◼
►
or use promo code radar2018 at checkout.
00:22:01
◼
►
Thank you so much to Linode for supporting this show.
00:22:04
◼
►
Mark Siri asks, "How would a converged Marzipan world
00:22:10
◼
►
"change your approach to app development?"
00:22:12
◼
►
And this is of course referring to the rumored
00:22:16
◼
►
cross Mac iOS app development framework,
00:22:20
◼
►
code name Marzipan that Apple is allegedly working on
00:22:22
◼
►
according to all the rumor sites right now.
00:22:24
◼
►
So how, if we get that,
00:22:27
◼
►
if you can make iOS apps that also work on the Mac
00:22:30
◼
►
with minimal changes presumably,
00:22:33
◼
►
and of course this is a lot of speculation,
00:22:35
◼
►
but in that world where that happens,
00:22:38
◼
►
how would that change your approach to app development?
00:22:41
◼
►
- I struggle a bit with this question
00:22:43
◼
►
'cause I look at my app portfolio
00:22:46
◼
►
and there's a couple of my apps
00:22:49
◼
►
that could sort of maybe work on the Mac
00:22:54
◼
►
as a, like I have a recipe organizer and that's an app
00:22:57
◼
►
that could certainly benefit from being on a Mac.
00:23:01
◼
►
But by and large, I think that the awkward thing
00:23:04
◼
►
or the tricky thing about this kind of
00:23:07
◼
►
grand unified approach,
00:23:08
◼
►
I think the biggest change it would honestly have
00:23:10
◼
►
is that I think it might be,
00:23:13
◼
►
it isn't so much that it allows me to build Mac apps,
00:23:16
◼
►
but it may indicate what the future of apps in general
00:23:21
◼
►
that Apple is heading towards might be.
00:23:24
◼
►
That if there's a new,
00:23:26
◼
►
in the same way that when size classes became a thing,
00:23:30
◼
►
it started to indicate a year or two ahead
00:23:33
◼
►
of when we finally got things like,
00:23:35
◼
►
so we have the iPad Pro where you can have
00:23:38
◼
►
two side-by-side apps or skinny slide-over apps
00:23:41
◼
►
or multiple-sized iPhones or any of those types of things.
00:23:44
◼
►
I think what I would be most interested to see here
00:23:48
◼
►
is probably not,
00:23:49
◼
►
there's gonna be some opportunities for sure
00:23:51
◼
►
that now it makes it slightly easier for iOS developers
00:23:54
◼
►
to move their apps to the Mac.
00:23:55
◼
►
And that's great.
00:23:56
◼
►
But the reality is I think in the scope of
00:24:00
◼
►
the size of iOS as a user base and as a marketing base,
00:24:04
◼
►
the Mac is vanishingly small.
00:24:09
◼
►
I don't think that is gonna have a material impact
00:24:11
◼
►
on my business in that way.
00:24:13
◼
►
And so I think it is interesting, certainly,
00:24:16
◼
►
and I would explore potentially adopting
00:24:19
◼
►
some of those paradigms and certainly if they do it
00:24:21
◼
►
in a way that is very straightforward.
00:24:24
◼
►
But I think the biggest changes that it might make
00:24:26
◼
►
is it may tweak how I think about
00:24:29
◼
►
the way I should structure my apps
00:24:30
◼
►
in a way that like, for example, now all my apps
00:24:33
◼
►
are flexible in their layout.
00:24:35
◼
►
I don't do any fixed layout apps anymore
00:24:37
◼
►
because Apple has sort of indicated
00:24:39
◼
►
that that's where we should be heading.
00:24:41
◼
►
And I'd be very curious in this world
00:24:43
◼
►
where they're kind of creating this more unified,
00:24:48
◼
►
I don't know, this unified framework
00:24:51
◼
►
for going from the smallest iPhone to a 27-inch iMac.
00:24:56
◼
►
Like, I think they're going to be indicating to us
00:24:59
◼
►
some kind of broad lessons or goals that we should make.
00:25:03
◼
►
And if that's what they do, then I think
00:25:05
◼
►
that's the approach I'd take and just kind of
00:25:06
◼
►
keep that in the back of my mind.
00:25:07
◼
►
But beyond that, probably not too much.
00:25:10
◼
►
- Yeah, I think that pretty much covers it.
00:25:12
◼
►
I mean, on the code side, yeah, I agree.
00:25:15
◼
►
I think layout would be one of the biggest challenges
00:25:18
◼
►
because right now we have size classes
00:25:21
◼
►
that basically tell you whether something
00:25:23
◼
►
is tiny or massive, and that's it.
00:25:25
◼
►
That is not a very granular approach.
00:25:29
◼
►
It's nothing like what you have with CSS media queries
00:25:31
◼
►
and stuff like that.
00:25:32
◼
►
So on a code level, I think it would be challenging
00:25:36
◼
►
to make apps that actually scaled well
00:25:38
◼
►
to all the various sizes and aspect ratios
00:25:41
◼
►
and situations and things like that.
00:25:43
◼
►
From a design side, that really depends
00:25:46
◼
►
on a lot of how it's done.
00:25:49
◼
►
What kind of form does this framework take?
00:25:53
◼
►
How do iOS apps look on the Mac?
00:25:57
◼
►
How do they work?
00:25:58
◼
►
How is navigation done?
00:25:59
◼
►
Stuff like that.
00:26:00
◼
►
From a business side, which I think is the more,
00:26:04
◼
►
probably the only one we can really
00:26:06
◼
►
easily speculate on right now,
00:26:08
◼
►
I think it's very likely that the app store side of it
00:26:13
◼
►
would not be a separate purchase,
00:26:15
◼
►
that they would probably update the Mac app store
00:26:18
◼
►
for the first time ever to probably have
00:26:22
◼
►
iOS apps that could basically opt into being on it,
00:26:25
◼
►
and it would be one unified listing,
00:26:27
◼
►
just like it is between iOS,
00:26:29
◼
►
between the iPhone and the iPad.
00:26:30
◼
►
And even, and the TV app store kind of does this.
00:26:34
◼
►
So I feel like if you're still relying
00:26:38
◼
►
on one time purchase, that's probably not gonna
00:26:42
◼
►
go well in your favor here.
00:26:43
◼
►
It's probably gonna be like one purchase
00:26:45
◼
►
gets you the same app on all the platforms.
00:26:47
◼
►
So be prepared for that.
00:26:49
◼
►
Otherwise, for me, where I currently have
00:26:52
◼
►
no presence on the Mac, so I'd be starting from zero there
00:26:55
◼
►
and wouldn't be cannibalizing anything,
00:26:57
◼
►
it's kind of great because I could have
00:27:01
◼
►
a Mac version of my app which so far
00:27:04
◼
►
has just not been worth the time to make
00:27:06
◼
►
that so different and it would have relatively low usage.
00:27:09
◼
►
So it's not worth it right now,
00:27:11
◼
►
but it would become worth it probably
00:27:14
◼
►
if it's not that much work to basically port my app
00:27:18
◼
►
to the Mac in some kind of reasonable way.
00:27:21
◼
►
That would be awesome, and it would open up
00:27:23
◼
►
new market share, new usage.
00:27:25
◼
►
My app is at least half ad revenue based,
00:27:29
◼
►
so that's more people looking at the ads
00:27:32
◼
►
more of the time so that I get more revenue from that.
00:27:34
◼
►
So I think it could be a really good thing.
00:27:38
◼
►
All right, and finally, if we can do this quickly,
00:27:41
◼
►
any hot tips on accessibility?
00:27:43
◼
►
This is a question from Benjamin Jex.
00:27:45
◼
►
How do you make accessibility part of your workflow
00:27:48
◼
►
and how has it helped improve your projects?
00:27:51
◼
►
- So I think at its simplest, the best way to improve
00:27:55
◼
►
your accessibility workflow is just to keep it
00:27:57
◼
►
in the back of your mind as you're developing.
00:28:00
◼
►
This is just, and I find that it is useful
00:28:03
◼
►
and it helps improve my projects, I think,
00:28:05
◼
►
because when I think about how I would express,
00:28:09
◼
►
and usually when I, accessibility is a very wide
00:28:12
◼
►
and far-reaching topic, and I think it gets into things
00:28:14
◼
►
like use of color, use of white space,
00:28:18
◼
►
how large your fonts are, how flexible your layout is
00:28:20
◼
►
for different size fonts, but often what I find,
00:28:23
◼
►
what I find really useful is even just to think about
00:28:25
◼
►
my UI from a voiceover perspective.
00:28:29
◼
►
And there is something very useful about making sure
00:28:34
◼
►
that your UI would make sense for somebody using voiceover,
00:28:38
◼
►
and if it doesn't, there's a good chance it's also
00:28:41
◼
►
gonna be confusing or cumbersome for somebody
00:28:43
◼
►
who will be using it in a traditional visual medium.
00:28:48
◼
►
Because I think there is something good about,
00:28:51
◼
►
like it forces you to think about,
00:28:55
◼
►
is there a hierarchy to my information?
00:28:57
◼
►
Is there a clear separation between different parts
00:29:01
◼
►
Am I making too many assumptions?
00:29:04
◼
►
And so I think accessibility is something
00:29:06
◼
►
that you just have to, it's just try and keep in your mind
00:29:09
◼
►
and have in the back of your mind
00:29:10
◼
►
as you're working on projects.
00:29:11
◼
►
And then the other thing I'd say too,
00:29:13
◼
►
in terms of the best tip I ever have about accessibility
00:29:16
◼
►
is listen, anytime you get a user who gives you feedback
00:29:21
◼
►
on an accessibility issue, address that, work on that,
00:29:24
◼
►
and that's how best I have learned how to be good
00:29:27
◼
►
at accessibility, is you just, by actually listening
00:29:31
◼
►
to people who use apps in a way that is different than mine,
00:29:34
◼
►
I learned so much, and that's how I've gotten better at it.
00:29:37
◼
►
So anytime you have an opportunity to do that,
00:29:39
◼
►
dive in and do it right away.
00:29:40
◼
►
- Yeah, I think we should probably do a whole episode
00:29:42
◼
►
on some more detailed accessibility work,
00:29:44
◼
►
so we'll do that in the future.
00:29:46
◼
►
But for now, we will talk to you next week.