0
1
00:00:02,520 --> 00:00:03,300
All right, guys.
1

2
00:00:03,360 --> 00:00:09,420
As with all good things, they always have to come to an end. And well done for getting to this part of
2

3
00:00:09,420 --> 00:00:15,660
the tutorial. You've built so many cool things. You've learned so many new concepts, and this is by no means
3

4
00:00:15,750 --> 00:00:16,890
easy stuff.
4

5
00:00:17,230 --> 00:00:21,790
Development is hard and a lot of the concepts that we're trying to teach you are taught
5

6
00:00:21,800 --> 00:00:27,840
over six months in an undergrad computer science degree, and we're trying to condense it into as short
6

7
00:00:27,840 --> 00:00:31,020
a period as possible by using project-based methods.
7

8
00:00:31,020 --> 00:00:33,840
So, now begs the question, where next?
8

9
00:00:33,840 --> 00:00:36,600
The important thing is don't forget.
9

10
00:00:36,750 --> 00:00:38,720
So we've taught you a lot of things.
10

11
00:00:38,760 --> 00:00:44,860
And in order to really put it into practice, you have to experiment and test out your own ideas.
11

12
00:00:45,060 --> 00:00:49,740
So make your own app and start off with something really simple.
12

13
00:00:49,770 --> 00:00:54,270
Don't try and make an app that's Facebook merged with Twitter merged with Instagram.
13

14
00:00:54,270 --> 00:00:56,230
That's really not going to end up well.
14

15
00:00:56,340 --> 00:01:02,490
Instead, try to build a minimum viable product. So have something super simple, and then build on top of
15

16
00:01:02,490 --> 00:01:06,060
it in order to make it more and more complex, more and more interesting.
16

17
00:01:06,060 --> 00:01:10,040
Don't start off with something that's just like a wheel, and then you have two wheels,
17

18
00:01:10,110 --> 00:01:12,440
and by this point, you've already banned in the project.
18

19
00:01:12,480 --> 00:01:13,670
That'll be really sad.
19

20
00:01:13,680 --> 00:01:16,630
So try and build a skateboard instead.
20

21
00:01:16,650 --> 00:01:18,150
So plan out your app,
21

22
00:01:18,150 --> 00:01:24,870
avoid complexity. And to do that, make sure that you prototype your app and set out all the screens, all
22

23
00:01:24,900 --> 00:01:27,090
that layout, how it's going to work.
23

24
00:01:27,240 --> 00:01:33,780
And we've introduced you to some tools in the app design modules including pop and model as well as
24

25
00:01:33,780 --> 00:01:34,590
sketch.
25

26
00:01:34,650 --> 00:01:41,010
So have a look over there for some inspiration and learn a bit more if you haven't already about how
26

27
00:01:41,010 --> 00:01:42,840
to create user flow diagrams.
27

28
00:01:42,840 --> 00:01:43,060
create 
28

29
00:01:43,060 --> 00:01:46,320
wireframes, make mockups and prototypes, et cetera.
29

30
00:01:46,530 --> 00:01:50,790
So that's a really essential step and it's really important that you don't skip it.
30

31
00:01:50,880 --> 00:01:56,070
So code wise, you should always aim to stand on the shoulders of giants.
31

32
00:01:56,070 --> 00:01:57,070
What I mean by that,
32

33
00:01:57,090 --> 00:01:59,610
use open-source code libraries.
33

34
00:01:59,640 --> 00:02:06,190
There are so many great ones out there. And we've introduced you to some of them in some of our app projects.
34

35
00:02:06,240 --> 00:02:13,320
For example, we used SVProgressHUD  to have a loading spinner in FlashChat. And in Clima, we used
35

36
00:02:13,540 --> 00:02:16,310
library such as Alamorefire to network,
36

37
00:02:16,350 --> 00:02:21,570
also, SwiftyJSON to make--working with JSONs a little bit easier,
37

38
00:02:21,570 --> 00:02:22,340
et cetera.
38

39
00:02:22,650 --> 00:02:30,180
And it's really easy to just go into Google and search for top 5 iOS libraries or best iOS libraries,
39

40
00:02:30,540 --> 00:02:36,630
and you'll come up with a whole load of lists that you can read through and window shop and keep a note
40

41
00:02:36,690 --> 00:02:40,440
of some of those that you might want to use in a future project.
41

42
00:02:40,440 --> 00:02:45,120
Now, there is a weekly newsletter compiled by some really great guys and they include some of the new
42

43
00:02:45,150 --> 00:02:51,090
open-source libraries that they've discovered, and it can be quite a good way of keeping on top of what's
43

44
00:02:51,090 --> 00:02:56,210
happening in the iOS world, as well as keeping a tab on new libraries that people are developing.
44

45
00:02:56,310 --> 00:03:02,460
So the other thing to mention is have a look at some of these apps services when you're trying to implement
45

46
00:03:02,460 --> 00:03:03,250
your apps.
46

47
00:03:03,330 --> 00:03:05,410
Don't try to build everything by yourself.
47

48
00:03:05,430 --> 00:03:11,610
Instead, try to leverage services that other people have ready built that can make your life so
48

49
00:03:11,610 --> 00:03:12,560
much easier.
49

50
00:03:12,630 --> 00:03:15,590
Not to mention, cut down maybe three or four months of development.
50

51
00:03:15,750 --> 00:03:20,990
So we've already looked at Firebase for implementing a real-time Cloud-based database.
51

52
00:03:21,120 --> 00:03:23,560
But Firebase have a lot of other features, too.
52

53
00:03:23,640 --> 00:03:28,410
For example, they have notifications, they now have server-side implemented code, and they have a whole
53

54
00:03:28,410 --> 00:03:30,430
load of things there. Just go and check it out.
54

55
00:03:30,660 --> 00:03:36,630
The other thing to implement and it's something that I have and most of my projects is an SDK called
55

56
00:03:36,630 --> 00:03:42,840
craslytics, and this is something that shows you when your app is deployed out there on the App Store,
56

57
00:03:42,930 --> 00:03:45,120
how many crashes you're getting,
57

58
00:03:45,150 --> 00:03:51,750
under what conditions, for example, which operating systems, which devices is your app crashing on, so that
58

59
00:03:51,750 --> 00:03:54,960
you can identify bugs and treat and cure them.
59

60
00:03:54,990 --> 00:04:01,800
Now, MapBox deserves a special mention because they are a really easy way of implementing maps or 
60

61
00:04:01,830 --> 00:04:03,900
map-based features in your app.
61

62
00:04:03,900 --> 00:04:09,580
They also have offline mapping abilities and a whole bunch of beautiful, beautiful map layouts,
62

63
00:04:09,720 --> 00:04:11,160
so check out MapBox.
63

64
00:04:11,370 --> 00:04:17,550
And, finally, Sinch is a service that provides APIs to help you implement voice messaging and sending SMS
64

65
00:04:17,550 --> 00:04:20,470
in your app, et cetera, so it's really cool as well.
65

66
00:04:20,640 --> 00:04:25,800
Check out all four of these. And if you sign up to the newsletter, we tend to tell you guys about new
66

67
00:04:25,800 --> 00:04:28,780
discoveries and cool new apps services, too.
67

68
00:04:28,830 --> 00:04:29,990
So keep an eye out for that.
68

69
00:04:30,120 --> 00:04:35,700
Now, finally, we're gonna talk about how to help yourself during development because in your journey of
69

70
00:04:35,700 --> 00:04:43,050
becoming proficient as an iOS developer, you've learnt to use iOS documentation, you've learned to implement
70

71
00:04:43,560 --> 00:04:46,300
some of the features that are available in iOS framework,
71

72
00:04:46,350 --> 00:04:48,640
but, of course, we can't cover everything,
72

73
00:04:48,660 --> 00:04:54,420
so, for example, we haven't covered how to use the camera or how to play videos or a whole bunch of other
73

74
00:04:54,420 --> 00:04:57,600
cool things that the iOS SDK is capable of.
74

75
00:04:57,600 --> 00:05:05,230
So how do you help yourself when you need to use a feature that we've not taught you? Well, the iOS Documentation
75

76
00:05:05,260 --> 00:05:11,170
is your first port of call. And in there. in the API Reference and in the Documentation, there's a whole
76

77
00:05:11,170 --> 00:05:16,800
load of explanations about how to do everything that you can possibly want with iOS.
77

78
00:05:16,840 --> 00:05:23,110
And as you go from, you know, intermediate to advanced iOS developer, you're going to be more reliant on
78

79
00:05:23,110 --> 00:05:27,790
the documentation that Apple provides in order to learn how to do some of the things that we haven't
79

80
00:05:27,790 --> 00:05:29,530
taught you.
80

81
00:05:29,560 --> 00:05:35,930
Now, the other thing is have a look at GitHub because GitHub is really gonna become your best friend.
81

82
00:05:36,130 --> 00:05:41,740
There's a whole load of projects that people have uploaded on there and all of which are open source,
82

83
00:05:41,820 --> 00:05:48,520
so you can check out to see how do other people write their code, or what is the best way of structuring
83

84
00:05:48,520 --> 00:05:49,390
my project.
84

85
00:05:49,390 --> 00:05:54,970
And these projects on there that are written by people at Apple, for example, so, you know, really that should be
85

86
00:05:54,970 --> 00:05:59,730
the gold standard of how you should be using Swift and how you should be writing iOS projects.
86

87
00:05:59,830 --> 00:06:05,410
But also there's projects on there from normal developers which you can learn from and, for example, 
87

88
00:06:05,410 --> 00:06:12,970
the link below the video which links to a Flappy Swift repository, and it has all the code that's required
88

89
00:06:13,270 --> 00:06:20,920
to build yourself Flappy Bird using Swift. And you can read these code files to learn more about various
89

90
00:06:20,950 --> 00:06:23,080
aspects of programming as well
90

91
00:06:23,160 --> 00:06:24,400
as IOS development.
91

92
00:06:24,400 --> 00:06:29,770
And you can also find some really cool libraries that you might want to incorporate into some of your
92

93
00:06:29,770 --> 00:06:31,130
future apps.
93

94
00:06:31,330 --> 00:06:38,680
So, for example, there's this really, really cool UI component from the guys at Yalantis. It has this beautiful
94

95
00:06:38,680 --> 00:06:43,460
way of dismissing and fracturing the screen into a thousand pieces.
95

96
00:06:43,480 --> 00:06:45,170
And I just think it's absolutely amazing.
96

97
00:06:45,190 --> 00:06:50,450
And you could implement all of that with just a few lines of code by incorporating that library.
97

98
00:06:50,530 --> 00:06:53,030
So check out some of these cool libraries.
98

99
00:06:53,050 --> 00:06:57,180
Check out cocoapods.org for more awesome pods.
99

100
00:06:57,310 --> 00:07:04,050
And in fact, one of my favorite activities is just browsing through all the new Cocoa Pods that are available
100

101
00:07:04,100 --> 00:07:10,270
because sometimes you really find some new gems, and there have certainly been cases where I've built an app
101

102
00:07:10,360 --> 00:07:14,810
just purely because I found this really nice pod that I wanted to implement.
102

103
00:07:14,920 --> 00:07:15,870
So check it out.
103

104
00:07:15,940 --> 00:07:17,640
And what if you get stuck
104

105
00:07:17,650 --> 00:07:22,470
or what if you get a bug, or what if you get a problem while you're building your own projects?
105

106
00:07:22,540 --> 00:07:27,670
Well, you're going to become very familiar with a website called Stack Overflow. And it's well-known
106

107
00:07:27,700 --> 00:07:34,870
and well-established that when Stack Overflow is down, then the world over developers basically just stop
107

108
00:07:34,870 --> 00:07:38,200
doing their jobs, because it's impossible to know everything.
108

109
00:07:38,200 --> 00:07:41,360
And that's why we have these websites for knowledge exchange.
109

110
00:07:41,440 --> 00:07:48,340
So I've mentioned Stack Overflow before in the Xylophone tutorial, and it's just a great place where you
110

111
00:07:48,340 --> 00:07:50,200
can ask questions.
111

112
00:07:50,320 --> 00:07:51,240
"I got this error."
112

113
00:07:51,250 --> 00:07:52,420
"This is the error code."
113

114
00:07:52,420 --> 00:07:53,730
"This is what happened."
114

115
00:07:53,830 --> 00:07:59,680
And your question might get upvoted if a lot of other people have the same problems. And then, experts
115

116
00:07:59,770 --> 00:08:05,710
and other developers come along and answer your queries, usually providing code snippets to help you
116

117
00:08:05,710 --> 00:08:09,980
out and give you a solution to some of your woes.
117

118
00:08:10,000 --> 00:08:15,400
So check out Stack Overflow if you haven't already, because it is going to be so important in your life.
118

119
00:08:15,400 --> 00:08:15,700
All right.
119

120
00:08:15,700 --> 00:08:16,970
So almost ready.
120

121
00:08:16,960 --> 00:08:24,010
It's time to test your app. So before releasing your app out there into the world where all criticism
121

122
00:08:24,040 --> 00:08:30,430
is invited, you want to make sure that there's no bugs and there's no obvious things wrong with your
122

123
00:08:30,430 --> 00:08:30,910
app.
123

124
00:08:30,940 --> 00:08:37,150
So make sure that you test it. Ask every single one of your friends all of your family to download it
124

125
00:08:37,140 --> 00:08:39,440
and try it out and give you feedback.
125

126
00:08:39,580 --> 00:08:41,340
Tell you if something's not working,
126

127
00:08:41,350 --> 00:08:47,650
if something is crashing, or if they have anything that they can suggest to improve upon. And this is
127

128
00:08:47,650 --> 00:08:53,380
going to be essential in avoiding one-star reviews on the App Store and getting a lot of hatred,
128

129
00:08:53,440 --> 00:08:56,480
generally. People are not very tolerant on the App Store.
129

130
00:08:56,590 --> 00:09:00,640
So make sure that your app is perfect before you put it out there into the world.
130

131
00:09:00,640 --> 00:09:02,550
Now, what can you do if you have no friends?
131

132
00:09:02,590 --> 00:09:05,340
Well, there is a website called Ubertesters.
132

133
00:09:05,410 --> 00:09:11,300
And here, you can pay to get professionals to test out your app and give you feedback on it.
133

134
00:09:11,380 --> 00:09:13,000
So check that out as well.
134

135
00:09:13,000 --> 00:09:16,020
Now, finally, of course, it's time to publish your app.
135

136
00:09:16,060 --> 00:09:22,630
And in the last module, we spoke about how you can publish using iTunes Connect and the various nuances
136

137
00:09:22,990 --> 00:09:30,610
in terms of publishing your app. And you should keep in mind a quote by Reid Hoffman, who was the founder
137

138
00:09:30,640 --> 00:09:37,340
of LinkedIn, and he said that if your first version isn't embarrassing, then you've shipped too late.
138

139
00:09:37,360 --> 00:09:43,690
So as soon as you've got your co-features down and your app is working and bug-free, then put it out
139

140
00:09:43,690 --> 00:09:43,960
there.
140

141
00:09:43,960 --> 00:09:45,360
Let people try it out.
141

142
00:09:45,430 --> 00:09:52,000
Let people suggest what the next features should be and see generally how much interest there is in
142

143
00:09:52,000 --> 00:09:58,030
your idea or in your app, because it's very easy to get stuck in our own heads thinking that "Oh, I need
143

144
00:09:58,180 --> 00:10:01,520
all of these 200 features before I can release it out there."
144

145
00:10:01,720 --> 00:10:06,900
And that's just not going to help you in the long run because you might have spent two years and it might
145

146
00:10:06,900 --> 00:10:12,460
be completely perfect for you. And you launch it and it lands with a thud.
146

147
00:10:12,480 --> 00:10:13,370
Nobody wants it.
147

148
00:10:13,440 --> 00:10:15,540
Nobody's interested in those features.
148

149
00:10:15,540 --> 00:10:20,140
So always, always let your users dictate the direction of your apps.
149

150
00:10:20,280 --> 00:10:22,330
And if you are like some of my past students
150

151
00:10:22,410 --> 00:10:29,280
and you've successfully built your own apps and uploaded them to the App Store, then please let us know
151

152
00:10:29,310 --> 00:10:34,490
because we want to tell the world about your app and we'll help you spread the word.
152

153
00:10:34,500 --> 00:10:41,610
So this is an app by a former student of us called Mai Le, and she builds an app that allows her to speak
153

154
00:10:41,640 --> 00:10:43,940
to her diary, instead of typing in it.
154

155
00:10:43,980 --> 00:10:48,780
So the app is called NextSpeech and it turns your voice diary into a written entry.
155

156
00:10:48,900 --> 00:10:55,020
And another really cool project by a former student of us is called EARLIER and this is for those people who
156

157
00:10:55,080 --> 00:10:57,840
are bad--who are not morning people.
157

158
00:10:57,840 --> 00:11:02,610
So Russ wanted to wake up earlier in the day like around 6 o'clock,
158

159
00:11:02,610 --> 00:11:05,510
but just setting the alarm at 6:00 o'clock was pretty painful.
159

160
00:11:05,700 --> 00:11:10,680
So he built this app that wakes you up one minute earlier every day until your target time.
160

161
00:11:10,680 --> 00:11:12,310
So that's also really cool.
161

162
00:11:12,420 --> 00:11:14,900
So if you've built your own project, do let us know,
162

163
00:11:14,970 --> 00:11:20,390
and we will include you in the newsletters, will tell all our students, and will try and get you to product
163

164
00:11:20,390 --> 00:11:21,190
turn as well.
164

165
00:11:21,300 --> 00:11:27,990
So let us know once you've succeeded. And we do more than just app development, we have a huge lively
165

166
00:11:27,990 --> 00:11:31,940
community, and we do a lot of events based in London.
166

167
00:11:31,950 --> 00:11:38,160
So, for example, we have the Firebase team come down to our offices to teach our students about using
167

168
00:11:38,160 --> 00:11:42,570
Firebase and what are all of its great features.
168

169
00:11:42,600 --> 00:11:48,780
And we also took some of our students to the Twitter headquarters to learn about Twitter APIs and implementing
169

170
00:11:48,780 --> 00:11:50,210
those as well.
170

171
00:11:50,370 --> 00:11:51,980
So stay in touch.
171

172
00:11:52,170 --> 00:11:53,670
Check us out on Meetup
172

173
00:11:53,700 --> 00:12:00,920
if you are around in London, and, of course, tweet at us, or give us a shout on Facebook or Slack.
173

174
00:12:01,080 --> 00:12:05,860
But we're here for you every step of the way and I sincerely wish you all the best luck.
174

175
00:12:05,940 --> 00:12:07,280
So thank you so much.
175

176
00:12:07,290 --> 00:12:12,480
That's all from me, Angela at the London App Brewery, and I hope I'll get to meet you in person at some point.
176

177
00:12:12,570 --> 00:12:13,730
If you're ever around in London,
177

178
00:12:13,770 --> 00:12:18,370
don't hesitate to pop into our offices and give us a shout.
178

179
00:12:18,370 --> 00:12:19,720
So thank you so much, everybody.
179

180
00:12:19,740 --> 00:12:21,150
And see you soon.
