Developing Perspective

#210: Polymaths.


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

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

00:00:08   an independent iOS developer based in Herne, Virginia. This is show number 210. Today is

00:00:14   Friday, January 30. Developing Perspective is never long within 15 minutes. So let's get started.

00:00:19   Okay, so the term I'm going to be using a lot in today's episode, or at least I'm going to start

00:00:24   off by talking about, is a term called polymath, which is not a word I'm a huge fan of. It

00:00:32   kind of sounds a little pretentious. But unfortunately, sometimes the best word to describe something

00:00:38   is kind of pretentious. And so I'm just going to roll with it. So polymath, or probably

00:00:43   polymaths, if you're British, is a term for somebody who has skill and experience in a

00:00:50   variety of areas and subjects. And so it's, you know, someone who can do a lot of all things,

00:00:54   maybe the less pretentious version, which maybe even is better, is jack of all trades. It's

00:00:59   somebody who has a lot of experience and can do a lot of different things at the same time.

00:01:03   And I was struck this week, by the number of different tasks that I had to accomplish,

00:01:09   that one of the core parts of running a business sort of principally by yourself

00:01:15   is the number of tasks and skills that you have to develop.

00:01:18   And while by no means master, by no means become an expert in,

00:01:22   nevertheless be competent and reasonably familiar with.

00:01:27   And so I wanted to on today's episode kind of walk through

00:01:31   what some of these areas are and think about it in terms of,

00:01:35   hopefully, if you're thinking about going out on your own,

00:01:38   or even just want to have a deeper appreciation of the benefits of having like a traditional JOB

00:01:45   job? What, what's going on? Like, what is it for all the different things that all have

00:01:50   to come together to actually have a successful, sustainable business in the long term? And

00:01:56   so that's kind of what I'm going to do. And hopefully, it's useful and interesting. So

00:02:00   first, the thing that we first just initially, there's kind of like general development skills

00:02:05   and tasks. And these are like the fundamental underpinnings of like the software development

00:02:09   lifecycle or process, whatever you want to call it, like, there's basic software engineering

00:02:13   stuff like understanding how to architect software in a reasonable maintainable way.

00:02:19   These are the things that you would typically learn if you did a degree in, say, computer

00:02:23   science or software engineering or computer engineering or something like that. It's the

00:02:26   kind of the basics of understanding object oriented programming, understanding design

00:02:30   patterns and algorithms and things, most of which you don't necessarily specifically apply

00:02:37   in your day to day development. I don't implement a lot of design patterns or algorithms. I'm

00:02:42   I'm not writing quicksort anymore.

00:02:44   But the fundamentals that those kind of things teach you

00:02:48   are tremendously valuable in terms

00:02:50   of allowing you to build quality software that you're

00:02:54   going to be able to maintain in the long run.

00:02:56   So there's this basic underpinning.

00:02:59   Then on top of that, you're going

00:03:01   to have to combine a bunch of skills around product design,

00:03:05   release planning, and bug tracking.

00:03:08   So these are kind of the-- at a high level,

00:03:11   The things that go on around the, okay, I have something I want to build.

00:03:15   How do I take that idea and turn it into an actual product?

00:03:19   And these are the kind of the process that you'll go through.

00:03:22   You kind of have the product design side of it, which is kind of thinking about how would

00:03:25   this benefit a user?

00:03:26   How would I, you know, how would I lay this out?

00:03:28   How would I structure it?

00:03:30   And then doing some release planning kind of stuff around that in terms of like, well,

00:03:33   how would I take the functionality and the feature set that I'm thinking about and turn

00:03:36   it into a releasable product, what would the roadmap be for that, all those kinds of things.

00:03:42   And then obviously once you've released, then you have the sort of the bug tracking issue management

00:03:47   side of that of when the inputs to your software are no longer just your own thoughts, they're

00:03:53   actually inputs coming in from customers and from crash reporting and those types of things,

00:03:57   understanding and managing that process. And all those go into the actual planning of the work to

00:04:02   be done. Of course, there's also the customer support side of that, which in some ways is

00:04:07   an operational thing, but in many ways is integrated into the general development process

00:04:12   too, because it helps you gather and understand how your software is actually performing in

00:04:17   the real world. To that you'll also have things like version control, which is a basic skill

00:04:24   or a basic sort of process that you have to have in place in order to be actually to be

00:04:28   be able to reasonably manage developing software, which is nevertheless kind of an important

00:04:33   thing.

00:04:34   And then if you're doing iOS development, understanding the way iTunes Connect works

00:04:38   and that submission lifecycle in terms of creating a new app, entering all the metadata,

00:04:43   a whole lot of metadata, putting all that in and then taking that and doing a build

00:04:49   in Xcode and getting it into there, working through the review process, handling updates

00:04:54   and pricing and those kinds of things.

00:04:56   There's a certain amount of just on the development side,

00:04:59   things, steps that are necessary to get an app into the store.

00:05:03   All right, next, iOS development.

00:05:06   So if you're specifically building an app,

00:05:07   there's a whole bunch of skills and things

00:05:09   you have to think about there.

00:05:10   You have to be somewhat more competent, either Objective-C

00:05:12   or Swift developer, familiar with Xcode and Interface

00:05:15   Builder.

00:05:16   You're probably going to have to have

00:05:17   a pretty good understanding of the various device and iOS

00:05:20   versions over time and how that will impact the development

00:05:23   of your application.

00:05:25   Even if you only support iOS 8, for example, you still have to support the iPhone 4s, 5,

00:05:30   5s, 6, 6 Plus, the 5th gen iPod touch, and say if you're a universal app, then you have

00:05:38   the iPad versions from iPad 2, iPad 3, iPad 4, iPad Air, iPad Air 2, iPad Mini, Retina

00:05:46   Mini, and then Retina Mini 2.

00:05:49   Those are all the devices that you have to kind of understand and understand the differences

00:05:53   between them and how that might impact your actual development.

00:05:56   You have to be somewhat competent in something

00:05:58   on a graphical side, probably, something like Photoshop

00:06:01   or Paint Code or some kind of tool

00:06:04   for creating visual assets.

00:06:05   It's very unlikely that you're going

00:06:07   to be able to build an app with none of that.

00:06:09   The degree to which you have to lean on that

00:06:11   is obviously going to be dependent on the application

00:06:13   you're building.

00:06:14   But nevertheless, it's something you're

00:06:16   going to have to think about.

00:06:17   Then, of course, the testing and QA lifecycle, too,

00:06:20   is an important part of iOS development,

00:06:21   or just any development, but the process of you build something,

00:06:24   you put it onto a phone, you put it onto an iPad,

00:06:26   you run it in the simulator, and finding bugs,

00:06:29   working through that process, how you track those

00:06:31   and think about them.

00:06:32   And it's probably worth saying, I

00:06:34   have all of these kind of areas just listed out

00:06:36   in the show notes for today's episode.

00:06:38   So if you just want to follow along there,

00:06:40   don't feel like you have to be keeping

00:06:42   track of these in your mind.

00:06:43   These are just-- I'm just kind of pushing them all out there,

00:06:46   and then hopefully we'll have a few conclusions at the end.

00:06:49   Next, something that I-- you don't necessarily

00:06:51   have to have this, but you probably

00:06:53   will if you're building any kind of, I would say,

00:06:56   probably most productivity applications or things

00:06:59   along those lines.

00:06:59   There's a good chance you're going

00:07:01   to need some kind of server development.

00:07:03   I say not a requirement, but often the case.

00:07:06   This is going to be something like some kind

00:07:08   of modern-ish web language.

00:07:10   So I do all my stuff in Ruby on Rails.

00:07:12   You could do it in a million other things.

00:07:16   But you're going to need some kind of familiarity

00:07:17   with a server architecture, some kind of database scheme probably.

00:07:22   I use Postgres just because I'm familiar with it.

00:07:25   MySQL or any of the other variety of database systems are fine.

00:07:29   You can probably get into things like understanding how memcached works,

00:07:33   Nginx, Apache, those kinds of web services, Redis, and related key value

00:07:38   store stuff, maybe a queuing system.

00:07:40   I use Sidekiq for mine in a lot of my applications.

00:07:44   And then on top of that, even just getting into Linux system

00:07:47   administration, backup, security updates,

00:07:50   there's a lot going on if you want to just set up a server

00:07:52   and deploy it.

00:07:53   And obviously, you can kind of get away

00:07:55   with avoiding some of that.

00:07:56   If you offset it into something else,

00:07:59   you say you use Parse or you use Heroku,

00:08:01   so you don't have to worry about the system administration

00:08:03   or whatever.

00:08:03   Like, there's always trade-offs and things

00:08:05   that you can do there.

00:08:06   But it's something you may have to have some understanding of.

00:08:09   Next is the operational side of a business.

00:08:12   This is the actual business part of the business.

00:08:15   So in terms of understanding the accounting and taxes

00:08:18   and banking side of it.

00:08:19   Like, ultimately, a business is just a business.

00:08:21   It's only a business, really, if it's income and its expenses

00:08:25   balance out in a good way, hopefully in a positive way.

00:08:28   But there's a lot of accounting and stuff

00:08:30   that you have to manage there, as well as a separate set

00:08:33   of taxes to file, or at the very least,

00:08:35   a separate schedule on your normal taxes to file.

00:08:38   Something else to keep track of.

00:08:39   a set of books separate from your own personal financing.

00:08:43   And obviously, same thing with banking

00:08:44   and all these other kind of things that go into that.

00:08:47   You're obviously going to have to deal

00:08:49   with the budgeting of your business,

00:08:50   understanding how much money do I have,

00:08:52   how much money do I think I'll have,

00:08:53   what can I reasonably spend, what can I afford.

00:08:56   Oh, look, the new retina for the 5K iMac came out.

00:08:58   Can I afford one?

00:08:59   Those kinds of questions are things

00:09:01   you're going to have to be able to wrestle with and manage

00:09:04   if you run your own business.

00:09:06   Compliance-- and this is the thing that can sometimes

00:09:09   drive me crazy. And, you know, there are tremendous, you don't really understand until you start your own business, the sheer volume of requirements that are probably placed upon you. So at the local level, at the state level, at the federal level, obviously, this is from a US bent, but I'm sure anywhere in the world, they probably have similar kind of things where at different levels, everyone needs different forms and different licensing and different requirements for in order to just be a business and exist. You know, I have to file things with the state, I have to file things with my county, I file things with the federal

00:09:39   government, just to do my in order for the business to exist as an entity. And all of

00:09:45   that takes time, energy and kind of an understanding of what's involved. I manage my own benefits.

00:09:51   So you know, things like short term disability, long term disability, medical insurance, dental

00:09:56   insurance, all these kinds of things that would often typically be managed by your employer

00:10:01   now you're responsible for. And obviously, if you're living in a lot of Western European

00:10:05   countries or places this might be taken care of might not be that different, but in the

00:10:10   US especially, it is a wildly different thing to have to manage all this yourself.

00:10:15   You also have to manage some of the kind of the contracts and payments and stuff like

00:10:20   do a lot of work, like understanding what's going on in iTunes Connect, how and when you're

00:10:23   going to get paid.

00:10:24   That's very, very vital in terms of your operational effectiveness and being able to actually, you

00:10:29   know, be a viable business with positive cash flow and that kind of thing.

00:10:34   And lastly, on the operational side,

00:10:36   there's a lot of just general kind of stuff,

00:10:38   like hosting and email and registering domains

00:10:42   and these kinds of things that are just

00:10:44   part of running a business.

00:10:45   You have to work out where you're going to put your email.

00:10:47   Are you going to have email?

00:10:49   What is your company name going to look like?

00:10:51   Those kinds of things.

00:10:52   And just kind of the day-to-day management

00:10:54   of the kind of basic logistics, like all the things

00:10:57   that your IT department at a bigger company

00:10:59   would be responsible for, now you're responsible for.

00:11:02   You are the system administrator.

00:11:04   are the IT department.

00:11:05   And then lastly-- and this list is by all means not expected

00:11:08   to be exhaustive.

00:11:09   These are just the things that I sat down for 20 minutes,

00:11:11   and this is what I came up with.

00:11:14   There's the marketing side of things.

00:11:15   So in order for a business to typically succeed,

00:11:18   your people are going to have to know about it.

00:11:19   So at least you're going to have to give some thought

00:11:22   to marketing.

00:11:22   And the degree to which you do this will vary wildly.

00:11:24   It's not something I'm a tremendous expert at,

00:11:26   but it's something that I do somewhat.

00:11:29   And so you're going to have to think about building websites

00:11:31   for your business, for your products, things like that.

00:11:34   You're going to have to think about your brand,

00:11:36   both your personal brand and otherwise,

00:11:38   and the relationship and interplay between them.

00:11:41   What do you want people to know about you?

00:11:42   How many people do you want to know about you?

00:11:44   Who should know about you?

00:11:45   How much of the things that you do--

00:11:48   is your life online personally, part of your company,

00:11:52   or is it the two separate?

00:11:54   All these are things you have to think about.

00:11:56   Marketing is also probably going to get

00:11:57   into a little bit of graphic and visual design stuff,

00:11:59   Photoshop, understanding how do I make things visually appealing, CSS, HTML, like for your

00:12:05   website potentially, that kind of stuff.

00:12:07   Understanding just basic marketing concepts and ideas, understanding different aspects

00:12:12   and life cycles of marketing, how do you build buzz for something, how do you reach out to

00:12:16   the press, all these kinds of things.

00:12:19   And then in a weird way, you even have to sort of understand things like microeconomics

00:12:23   in terms of understanding pricing and understanding

00:12:26   competitiveness and marginal utility

00:12:30   and all these kind of crazy terms that are things

00:12:32   that I vaguely remember studying in school

00:12:34   and never really thought would be particularly

00:12:36   applicable to my life.

00:12:37   But when I started a business and I started selling products

00:12:42   and started competing with other people,

00:12:43   all of these kind of very sort of at the time

00:12:47   felt theoretical terms in microeconomics

00:12:50   started to become very tangible and very important for me

00:12:53   to understand how it is that I can compete in a marketplace.

00:12:59   And so that's quite a long list.

00:13:00   Like I said, it's not exhaustive.

00:13:01   I'm sure if I sat down, I could come up

00:13:03   with a bunch more things.

00:13:04   But those are all the kind of things that I do probably--

00:13:08   in a given month, I probably do at least one

00:13:11   of all of those things.

00:13:12   And some of them I get help with.

00:13:16   I have someone who helps me with Help Desk.

00:13:18   I have someone who does my bookkeeping and compliance

00:13:20   stuff who helps me a bit with that.

00:13:22   I try and focus on the things that I'm uniquely

00:13:25   valuable in, in terms of the programming and the product

00:13:28   design and those types of things.

00:13:30   But it's a lot to do, and it's a lot to manage.

00:13:33   And if you're somebody who is thinking about starting out,

00:13:37   so start going out on your own or heading down this path,

00:13:40   I would strongly encourage you to make sure

00:13:42   that you are thinking in these terms,

00:13:44   that you're not just focused on the part of the business that

00:13:47   is perhaps the most easy and obvious to focus on,

00:13:49   like building an app or designing an app.

00:13:53   That is the easy part in terms of you're

00:13:56   trying to build this as a business

00:13:57   that you're going to run in the long term.

00:14:00   The building the app part is probably--

00:14:02   there's only a very small fraction

00:14:04   of what actually goes into building a bigger, broader,

00:14:07   sustainable business.

00:14:08   And if you don't come into it with that in mind,

00:14:10   that you have to think about operations and marketing,

00:14:13   perhaps server development and just general software lifecycle

00:14:16   It's going to be very hard for you to probably build a sustainable business.

00:14:20   So keep that in mind. And if you don't, if you want to just keep working at a big company,

00:14:24   hopefully thinking about all these different things that that company is likely doing for you

00:14:28   maybe gives you a bigger, better appreciation of what your IT department is doing,

00:14:32   what your HR department is doing, what your managers are doing, things that allow you to do your job.

00:14:36   Alright, that's it for today's show. As always, if you have questions, comments, concerns, or complaints,

00:14:40   I'm on Twitter @_DavidSmith, David@DevelopingPerspective.com.

00:14:44   Otherwise, I hope you have a great week, happy coding, and I'll talk to you later.