Developing Perspective

#18 - Books and Learning


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

00:00:03   Developing Perspective is a near-daily podcast discussing the news of Note and Apple, iOS,

00:00:07   and the like.

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

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

00:00:12   This is show number 18, and today is Monday, August 29, 2011.

00:00:18   The format of Developing Perspective is that I'll walk through a handful of articles and

00:00:21   links, things I've found interesting since the last show, then move over to a more general

00:00:25   discussion towards the end.

00:00:26   The show will never be more than 15 minutes, so let's get to it.

00:00:30   All right, first, just a little kind of a fun link

00:00:32   that I saw over the weekend, which

00:00:34   is probably the most interesting tribute to Steve Jobs

00:00:37   that I saw in an amount to all the things about him resigning.

00:00:41   Joseph Tame went on a run in Tokyo.

00:00:44   And basically in 21 kilometers, he ran the Apple logo

00:00:50   and reported it back with Runkeeper.

00:00:52   It was just kind of a cool thing to see,

00:00:54   and I just thought it was kind of fun.

00:00:56   Next, I just did something.

00:00:58   I discovered a page on GitHub that is just kind of super cool.

00:01:02   So if you go to github.com/languages/objectivec,

00:01:05   or you'll find the link in the show notes, which is just

00:01:08   if you look at the body of the podcast,

00:01:10   all the links are there, which any good podcasting tool

00:01:13   will be able to get you.

00:01:14   Or you just go to developingperspective.com/ whatever

00:01:17   the show is.

00:01:19   But anyways, if you go there, you'll

00:01:20   find this very interesting list, essentially,

00:01:22   of all what's going on essentially within the iOS

00:01:26   Objective-C Mac developer community.

00:01:30   It shows you what's been watched today, this week, this month,

00:01:33   all time.

00:01:34   And it's just actually kind of interesting.

00:01:36   I found a lot of really cool repositories

00:01:38   there that I hadn't seen.

00:01:40   And you can see some fairly topical things too.

00:01:42   So for example, there's a thing for generating unique device

00:01:45   identifiers in iOS 5.

00:01:47   There's a new change in iOS 5 where the device had

00:01:51   unique ID for each device who's no longer programmatically

00:01:54   going to be accessible at some point.

00:01:56   There's also a really cool framework called Quick Dialog,

00:01:58   which lets you make user entry forms very, very easily

00:02:02   and saves a lot of the hassle and grunt work of that.

00:02:06   There's just a couple of examples of even just poking

00:02:08   through.

00:02:09   I've definitely bookmarked this site,

00:02:10   and I think I'll be checking back on a regular basis

00:02:13   just to see what's going on, what's new,

00:02:15   what's happening right now in the Objective C community.

00:02:20   Next, I just wanted to point out that today, the third part

00:02:24   of the What's New for Developers in macOS Lion,

00:02:27   Ole Bergman's amazing description of change notes

00:02:32   in Lion, was published over the weekend.

00:02:36   And it doesn't disappoint.

00:02:37   It continues to talk about some really cool stuff,

00:02:40   specifically things like Core Data's new concurrency model.

00:02:44   And probably the thing that I saw in it

00:02:45   that I hadn't seen before but is very cool

00:02:48   is the new send asynchronous request queue completion

00:02:52   handler method on an SURL connection.

00:02:55   Which, if you're not a developer,

00:02:56   that's getting a little bit into shop talk.

00:02:58   But basically, it's a really neat way

00:02:59   that they have for wrapping up in a block-based way

00:03:02   sort of network communications, which

00:03:04   I was pretty excited about.

00:03:06   And see, next, over on bjango.com,

00:03:10   they posted a great article on exporting from Photoshop.

00:03:14   So if you do any kind of mock-up work in Photoshop--

00:03:17   We're not even going to do mock-up work.

00:03:19   But if you're building your UI in Photoshop

00:03:21   and then transferring that into iOS,

00:03:23   inevitably at some point you're going

00:03:25   to have to take that interface and split it up

00:03:27   into the different sort of sprites and widgets

00:03:30   and then import that into iOS.

00:03:32   And there's a lot of different ways that you can do that.

00:03:34   He talks about the way that I think most people do,

00:03:36   which is just sort of copy merge.

00:03:38   You select what you want to export,

00:03:41   and essentially you're just copy, pasting it

00:03:42   into your document, save the document.

00:03:44   But he talks about some more advanced ways to do it.

00:03:47   for example, exporting layers as files,

00:03:49   or introduce something that I had never even encountered,

00:03:52   but is actually very cool, which is Photoshop Slice Tool.

00:03:56   And essentially what this does is lets you break out

00:03:59   your whole PSD into sub-PSDs that you can export sort

00:04:04   of in a batch in group fashion, which is just kind of cool.

00:04:08   I mean, I haven't played around with it too much in Photoshop

00:04:10   itself, but knowing what I know about these guys

00:04:13   and their prowess with design, that's

00:04:15   is something that I think is pretty cool and worth checking

00:04:18   out.

00:04:20   All right, so that's it for today's links.

00:04:22   And for today's general discussion,

00:04:25   I recently got an email asking me

00:04:28   to talk a little bit about the books

00:04:30   that I found most helpful in learning programming.

00:04:33   And it's kind of an interesting question,

00:04:35   because I could probably spout off a couple of good books.

00:04:38   And by good books, typically what I mean

00:04:40   is by good authors, like the pragmatic books about it

00:04:44   by Bill Dudeney and Chris Adamson.

00:04:51   Anyway, that book is a great book.

00:04:53   I think I've tech reviewed it a little bit.

00:04:56   And I mean, it's a great book.

00:04:58   But honestly, I don't find programming books

00:05:00   to be very helpful.

00:05:01   I've been involved in writing a chapter for one of them.

00:05:04   And I've kind of explored what it

00:05:06   would be to write a larger book before.

00:05:08   I've done a lot of tech reviewing for books.

00:05:11   But the thing that I find is, for me,

00:05:14   developing is about developing a base set of skills.

00:05:19   And for me, I developed those in college.

00:05:21   I had a pretty good CS degree or CS program where I went.

00:05:26   And that develops a base set of understandings

00:05:30   for how to do things.

00:05:32   And it's not so much language-oriented or

00:05:36   platform-oriented, those types of things.

00:05:38   It's just how to structure an efficient algorithm, how

00:05:41   to use recursion, how to use good data structures,

00:05:45   good algorithms, clean code, those types of things,

00:05:49   how testing works, why it's important,

00:05:51   what does test coverage mean.

00:05:53   And those types of things, I think, are important.

00:05:56   And those things are reasonably good to learn from a book,

00:05:58   because they're abstract and theoretical.

00:06:02   But for actually learning to program--

00:06:04   and so, for example, the classic question

00:06:06   that I would say I get is, I'm looking to learn iOS.

00:06:08   I want to write iPhone apps.

00:06:10   How do I get into that?

00:06:11   It's like, well, if you have that basis in programming--

00:06:14   which if you don't, it's a harder thing.

00:06:16   I'm not sure at this point what books to recommend for that.

00:06:19   In many ways, I think the best place for that is to get some

00:06:22   kind of formal education, just because that structure that

00:06:26   that brings is very helpful in kind of making sure you cover

00:06:29   the whole breadth of what you really should know.

00:06:32   But once you have a basic level of understanding,

00:06:36   the next level I find is you just

00:06:38   need to start building things.

00:06:40   And the language shouldn't matter too much,

00:06:41   because if you have a basic understanding,

00:06:44   a lot of the rest of it is just learning how things work.

00:06:48   For example, with iOS, I wrote my first iOS app

00:06:52   while I was on vacation with my family at the beach.

00:06:54   I'm not a big beach person, so I just

00:06:56   stayed in a little bit and wrote my first iPhone app.

00:06:59   And to start with, it was a mess.

00:07:01   I mean, if I look back at that code now, I'm like,

00:07:04   what are you doing?

00:07:05   That's horrible.

00:07:06   But I just kind of started with it.

00:07:07   You kind of just go into Xcode, new project.

00:07:11   That kind of template looks vaguely like what I want.

00:07:15   And it built an app that had a table view in it.

00:07:17   And so I just started kind of extending that

00:07:18   and playing with it and doing a lot of looking for blog posts

00:07:22   and articles on Stack Exchange and all the different places

00:07:25   that I can kind of get hints and tips and kind of piecing it

00:07:28   together.

00:07:28   And after a little while, you kind of start learning.

00:07:31   What I did there, that was wrong.

00:07:33   I should do that better.

00:07:34   What I did wrong over here, and so on.

00:07:37   And for me, that's the only way that I've learned.

00:07:39   I have a lot of programming books on my shelf.

00:07:41   I've bought a lot of programming books.

00:07:43   And recently I've been trying to cut myself off from doing that because inevitably I find

00:07:49   that I don't really read them.

00:07:50   I'll read a chapter here or two maybe.

00:07:52   I have a few little nuggets maybe that are somewhat helpful, but I never get through

00:07:56   them.

00:07:57   I never, and not even just in the sense that I don't cover to cover, read them.

00:07:59   I just-- that doesn't really--

00:08:03   all it does really is I'll get slightly into a topic

00:08:06   and then be like, oh, let me try that.

00:08:08   Let me go build it.

00:08:08   And I'll just go off and build it and forget entirely

00:08:11   about the book.

00:08:12   And so I think that's what I would recommend most.

00:08:14   If you're a developer who's thinking, hey,

00:08:16   I want to get into this.

00:08:17   I want to write iPhone apps.

00:08:18   It's like, just start writing iPhone apps.

00:08:21   And just start.

00:08:22   Just start.

00:08:23   And look for templates.

00:08:24   Look for examples.

00:08:25   A great example is to go to GitHub.

00:08:28   A lot of applications that have frameworks

00:08:30   have examples with them too.

00:08:32   So if you're looking for-- I'm going

00:08:34   to write a thing with Twitter integration.

00:08:36   If you go to-- I think the best one is the MG Twitter engine.

00:08:39   You look at that library, it also

00:08:42   includes an example that does some basic stuff.

00:08:44   And you can kind of get a sense of how

00:08:45   people who've been doing this for a while do things.

00:08:48   And that's a great way to get at it.

00:08:49   Another thing I'd also recommend is looking up your local chapter

00:08:52   of NS Coder Night, which they typically meet on Tuesdays.

00:08:57   And these are just sort of local groups

00:08:58   where a couple of developers get together and code.

00:09:01   And they're very informal.

00:09:02   It's not typically something like a Cocoa Heads, which

00:09:05   if you're not familiar with is more of a sort

00:09:08   of a presentation style typically,

00:09:10   where someone's going and talking.

00:09:11   And it's much more kind of formal.

00:09:13   NS Coder Night is just a bunch of guys, like my local one,

00:09:15   they get together at a coffee shop.

00:09:17   And they just code and talk.

00:09:20   And almost always, if you show up there with a desire

00:09:23   to learn and you've put in some preparation,

00:09:25   you have some questions, you've, you know, it's not just like showing up and say, "Hey,

00:09:29   can someone teach me how to program?" You're coming up and saying, "Hey, I've been brand

00:09:32   new to this. Here's the five things that I've been trying to do and I can't. Here's the

00:09:37   five places I'm stuck." Almost certainly someone there would be like, "Sure, no problem. You

00:09:41   know, set up your MacBook right next to me and we'll walk through it." Because that's

00:09:44   what they're there for too. I mean, that helps, you know, experienced people stay sharp and

00:09:48   it helps, you know, new people get sharper. And so that's definitely, I think, a far better

00:09:53   I think you'd be far better served putting in that kind of time.

00:09:57   I mean, I think sometimes it's always nice people think, oh, it's like the quick fix.

00:10:02   What can I buy?

00:10:03   It's like that $20 that I can spend that gets all the benefit that I want.

00:10:08   I'm not sure if that really exists.

00:10:10   The best thing is to just start writing apps and write apps that you are excited about,

00:10:15   that interest you, that are fairly simple.

00:10:19   You just kind of go from there.

00:10:20   I mean, I didn't have a sort of a major success with one of my apps for after, till after

00:10:25   I built probably four or five actual apps.

00:10:28   I mean, and that was fine.

00:10:30   That was sort of the learning process and I got better and better.

00:10:33   And now when I look back on those, I'm kind of embarrassed and that's good.

00:10:36   It means that I'm getting better at my craft.

00:10:39   That's kind of the way that I'd recommend learning how to do iOS development.

00:10:42   And then the last thing I'd say about it, which is a little bit sort of off from what

00:10:47   I was talking about is the WWDC videos are an excellent resource. Watching those, you're

00:10:53   very rarely sort of be wasting your time. But I would say it's good for you to have

00:10:59   some kind of basis before you start getting into those or a lot of it will go over your

00:11:03   head and you will kind of miss a lot of what makes those really cool. So definitely check

00:11:08   those out. They're really worthwhile. And then another thing I would say is if you're

00:11:12   looking for a structured way to learn iOS specifically, I can really recommend the Pragmatic

00:11:18   Studios course. It's put on by Mike Clark and a couple of really good instructors. I

00:11:25   think it varies around a little bit. But those guys really know their stuff. And if you want

00:11:30   a structured way to go and spend a week, and at the end of the week, be sort of, if you

00:11:34   imagine the spectrum from beginner to intermediate to advanced, I would say after a week of that

00:11:39   course I took it back when I was starting, you really are sort of solidly in that sort

00:11:44   of early intermediate phase where from there you can, it's like a launchpad, from there

00:11:49   you can really kind of dive into stuff at a higher level.

00:11:52   And again there that's very hands-on practical sort of learning environment.

00:11:56   So definitely recommend checking that out.

00:11:58   That's just PragmaticStudio.com I think.

00:12:02   All right, so that's it for today's show.

00:12:06   that is helpful and interesting. As always, if you have any questions, thoughts, corrections,

00:12:11   complaints, hit me up on Twitter. I am @_DavidSmith. And otherwise, if you enjoy the show, make

00:12:19   sure you tell a friend, tell two, tell three. It definitely helps me and keeps me motivated

00:12:25   in making the show. Alright, otherwise, have a good day and happy coding.