[MUSIC] All right, I'm joined again by Dr. James [INAUDIBLE] from [FOREIGN] College, and what we're gonna talk about now is the next phase in the project. So, we're really, actually ready to get down to coding now. And so we're gonna talk about what sort of things you need to be thinking about, probably before you start coding, and also as you're working through your project. What kind of things you can expect and how to make sure that all works out properly. So, James, you we're talking about this thing of round and round we go yesterday, what's that all about? >> Right, well, one of the things that I think is most important when you go to implement your website or implement your project is to have a systematic way of going through all of development process. It's very, very important. One of the classical ways of doing that is what we call prototyping, particular in terms of the way rapid prototyping, where we do a small amount of work. We check it, we make sure it's correct, we sign it off and then do another bit of work. So, rather than doing a whole truncture work in one go and then reviewing it, we do small iterative life cycles of work. So, we go round and round and round. Each iterative life cycle will generally consists of three core components. One, a bit of design. Secondly, a bit of implementation. And thirdly, a bit of review. >> Okay, so that's our kind of core development process that we're recommending. The idea that you do a bit of work check it out, review it, and then do a bit more work. You might be adapting what you've already done, you might be adding a new module. So, the idea is that you just keep working through and the thing will grow. And with each step, you can really think about what you're gonna do next and make a decision as to whether you need to implement this or that and so on, right? >> Absolutely, absolutely, and what's very important in this whole process is a word which a lot of people understand, and very few people do, which is backing up. I believe that version control is the key to building a great site. Often work you've done early on in the site you might need later on, you might need to be able to review what you did earlier with some later. So if you keep versions of your site as you're building it that's a great, great source of benefit to you. >> So with each cycle, we'll have multiple different snapshots of the system as it develops. So say we lose something or we remove something and then we wanna put it back in. We can go back and find it and roll back to old versions and all that kinda stuff. >> Absolutely, and there are lots of tools to do that and I think Matthew you're gonna tell them about one of those tools later on in the course. >> Yeah, probably the most popular sort of versioning control system that is being used for web development at the moment is GitHub, and Git, the underlying tool set. And there is a separate video where we're gonna cover a lot of detail about how to use that. >> Great, but the important thing is definitely backup all the time. You can never ever do too many backups I believe, and of course version control. That means that it will allow you to roll back and know which versions people are doing. So that is very, very important. Another thing, when we're building our website or our app, is to take advantage of the excellent API's, or application programming interfaces, that are available out there on the web to help you in your development. >> Okay, so you mean that instead of building everything from scratch. We see if there's something out there already that does it, so that we can get to that next stage faster. >> Absolutely, this is very important. Also, there is another advantage often with APIs is that they've been communally developed. So that they've been tested well by a community of people. So in a way, it not only helps you to build your website quicker but it also helps you to build a more robust and more tested website. So there are great API's for things like being able to interface with databases, being able to validate content coming in, being able to create components for your website. >> And in fact, you'll have seen in the previous courses that we've covered a lot of detail or there's already made components that come with the media. Which is effectively a framework that we're using, or an API, you might call it. In that, we've talked about packages and how you can search all these different packages that are ready made packages of content and functionality that people have made. And we've also talked about how you identify what is a good API to use, or a good package. I mentioned that maybe you look at how many people are using it cuz this idea that you were talking about community developed. >> Sure. >> Packages, you wanna know how big that community is. >> Yeah. >> Cuz that will give you an insight into how useful it is and how robust and so on, right? >> Yes, definitely, another thing of course is they're a wealth of great templates. And so things like Bootstrap, is an amazing templating system but there are others. And so, I would suggest that the modern web developer will use a combination of APIs, templates, packages, as well as the development platform that you've been taught during this course. >> That's right. >> Once we get to that point, another thing that I'd say is very important is the idea of sharing the experience of development. What does that mean? >> Yeah. >> Well, for me, sharing the experience of the development is asking the opinion of others as often as possible during the development process. One of the mistakes that developers often make is developing in isolation. So, they don't sanity check what they're doing as they're going along. So, that means that they miss two things. The potential for help and guidance and also they risk going off course. >> So yeah, so we absolutely encourage you to go into the forums and post your work-in-progress projects and look for feedback. So, feedback from other developers is obviously really useful. What about sort of user feedback? How do we know if we are successfully achieving a good user experience or if we are making something that's accessible. What's a good way to test that as we go? >> Well, there's a couple of ways but really the idea is to do what we call user testing. Here we'll put our system up, we'll create some user test scripts, some path through our system. Very similar to the user journeys that we created earlier on, when we talked about creating our system and when we talked about digitizing it. So now, we actually use those paths to test to see what happens when users actually take those journeys. So we do that, it's very important to test. We want to test both the functionality of the systemaAnd also, the interaction of the different components of the system. Sometimes in software engineering, you might call that black box testing between components and white box testing within components. We also want to do, as you quite write you said, lots and lots of user testing. >> Who might these users be? Could they be our friends or our family? I mean, what- >> Absolutely, very much so. Do you remember at the very beginning we talked about the target audience? >> Yeah. >> Well, I think the target audience is the audience that you want to be able to draw from in order to do your testing. So you want to be able to take as many people as you can from your target audience to have a go, interacting with your system and using it. One of the best ways of getting a system that is usable is through user feedback. So its very important that you get as much of that as possible. Many systems are technically correct but fail because users can't use them well. >> So, we've been teaching software engineering for quite a few years, and we've seen a lot of what you might call engineers interfaces. Which are basically interfaces that have every possible button on them, that allows you to do every possible thing whenever you want. But the problem with those interfaces is when a new user comes to that interface, they don't know what all those buttons are for. And so we really want to avoid that, and that's where these kind of user stories, and user-centered design really comes in. And that's why we do that before we get to the coding. >> Yes, it's very, very important, and I would suggest spending a bit of time learning about user journeys. Learning about testing, so that you can test your website really well. >> Okay, that's great, so that's a bit of an insight into the process of building your app. So this idea of repeated process, making sure you're using versioning control and backup to keep copies of your work as you're going along, not reinventing the wheel. Making sure you're using, sort of community derived packages when necessary to sort of accelerate your development process. And of course, test, test, and test again. So, thanks James, that's given us a really good insight into the process of app development. >> Your work. [MUSIC]