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.