 So, as a last topic in this human factors module, we will look at the topic of productivity. Productivity of development, productivity of individual developers or of teams. And as I already mentioned, this is a topic that originally has been quite technical, so it has been looking into what kind of tools, what kind of practices can we have that make people more productive. But the awareness is slowly increasing and this has a lot to do with other factors such as how does the group work together actually. And that's why it's in the human factors module. I will keep a very high level here, so I'll just give you a number of bullet points on what affects productivity in a positive or negative way. And in the slides, there are a couple of more points. There's also a link to an entire book, which is open, which you can just read if you're interested in the topic. So this might be relevant to you. It's, of course, recently in the pandemic, it has become quite a topic because a lot of people are working from home, for example, having their kids at home are being interrupted. And there are the discussions of what actually affects us here. So first of all, I've mentioned that originally there were many technical things about it, so there have been discussions about how does the programming language influence productivity? So maybe if you have a very complicated language and you need to deal with memory allocation, you might work, you might write less code than if you are in a language that takes care of these things. So the programming language actually affects this. Then you have a certain amount of documentation in your project, from maybe nothing, some code comments to really highly sophisticated thousands of pages of different documentation. And basically, how well this documentation fits your needs will affect how productive you are. So of course, if the documentation is, for example, structured in exactly the way that you get all the things you need in exactly the right length, you will be more efficient, you will end up writing more code in the end. So that's the productivity part of documentation. Then, of course, you have tools. You have certain tools, for example, syntax completion, arrow highlighting, but also linting that might help you identify arrows. So basic software tools that help you increase the speed at which you can write code and which you can debug code. So debuggers, of course, also belong into here. Essentially, the entire tool set you have in your chain. If you develop embedded systems, it also goes into are you having simulators or do you always have to run to the hardware and upload it and nothing works? So the whole set of tools to develop your program plays an important role. Then we are, of course, discussing practices. So no matter what process we use, we have certain practices that we do. And there are certain practices that help productivity. If you, for example, are using automated testing, tests run automatically, you get feedback all the time in a very quick and efficient way, this will help productivity. It will speed up things, essentially. These things are probably not very surprising, but they are, of course, heavily affecting how productive you are. Then on the process level a bit more, the use of agile development is associated with higher productivity. And we can only speculate as to why there are probably some studies that go into depth, but I guess one part is just in time planning that you don't plan very long ahead and then things change. So agile development supposedly increases productivity. But now it's getting interesting because now we get into the first couple of things that actually contradict each other because another factor that affects how productive we are is the completeness of our design. So if you have an architecture that is fixed, we're using a client-server architecture, it looks exactly like this, these are the design patterns, go ahead and program it, then we are more productive. But of course, if you look at these two points, in agile development, very often you do not have this complete design. So there is a clear contradiction here and I don't have a definite answer of what is better. So is it better to have a waterfall process where the design is complete or is it better to just ignore this and do everything agile? Or maybe the combination is best. So we don't know, but at least these definitely affect them. The maturity of the process that you are using in the organization affects how productive you are. That's essentially the point of how we use our people to the different steps. Do they know what to do or is this a process you're just trying out? Everyone is just sort of doing steps in the dark and they don't really know what they're doing. How mature is the process? And then finally, another point that somewhat contradicts the agility is the stability of the requirements. So are the requirements stable or are they changing all the time? And of course, this is again a somewhat obvious point because if you do one sprint and then the next sprint you have to change everything again and the next sprint you have to do it again, that might be an issue. But then if you remember the process lectures, even if you follow a very waterfall-ish, a very plan-driven process, there is no guarantee that the requirements will actually be stable. So it's at least it's not a direct contradiction here. But you already see that these things are not always clear cut. There is no clear solution here that says this is how you do it to be maximum productive. Now, this is fairly much still on the, I would say, management slash tool level. But this lecture is in human factors. So what else do we have? And there are some kind of individual factors, workplace factors, which I think already should belong into human factors. And that's, for example, talking about the pandemic, time fragmentation. So there's a difference whether you spend four hours in a row programming or you spend one hour and take a break, you take one hour, you do something else, you take an hour again. So if you have long uninterrupted time, this will help you. Then a popular one in management discussions, the office layout plays a role. So open space offices are known to not be as effective as single individual offices, for example, because of, for example, the background noise that is going on, people interrupting you because they walk past. So it's more effective to have your own office or to be at home rather than being in an open space office. Now it's getting much more on a human level. The personality of an individual affects how productive that person is. And if you're in a team, the mix of personalities makes a big difference. And this is also where we get into the topic of diversity a little bit that you typically aim to have a diverse set of personalities that actually complements each other rather of everyone being exactly the same. So personality and a mix of personality and teams generally improves productivity. And finally, and this might sound a bit esoteric to you, but happiness actually affects productivity. So if you are happy, if the team is happy, if your employer is happy, you might be more productive. So there's also work into that direction and this should not be underestimated. So if you look at the old traditional company where everyone is forced to work in the factory, this might not have been a very good factor. But you see there's nowadays in all the hip companies where people want to work, there's a very much a focus on these things that people should be happy, the employees should be happy. It's not about telling them exactly what to do when focused that they are free to decide because they will be happier. They will actually be more productive. And there are, of course, other side effects there. If they're happier, they might not get sick as much. If they're happier, they might be more creative, for example. So obviously, there could be other positive effects. Now, again, a popular pandemic topic, communication. So of course, the better the communication, the more productive people are. And this is an issue, for example, in outsourcing that is hard to communicate. It's generally an issue with home office or with remote work. So this is a tricky thing that we might have to look more into. Then there is what is called camaraderie. So basically the social coherence, how well does the team work together? Is there a good atmosphere? Is everyone happy together? So are they kind of sticking together? It's a good team that's, in a way, encompassed here. Now, the last two I'm mentioning here is psychological safety. And what this means is that there is an atmosphere that allows you to make mistakes. So in very many companies, and especially when it's pressed for time when there is maybe, when there are economic problems, this might not be given. So people are afraid of making mistakes because they know if they make a mistake they might lose their job or the product might not get out on time. And that typically further reduces the productivity. On the contrast in the companies where it's known that it's okay to make mistakes, you try out things, you fail, that's all right, productivity goes up. And then, similar to camaraderie, we have respect for each other. So there's a mutual respect and trust among people, among team members, for example, and that, together with all the other things, basically make it possible to make mistakes, there's a good atmosphere, there's good communication, and the overall productivity in the team goes up. So the right-hand side here, my right-hand side, is really to show you how important these aspects are, these human aspects. You can have the best tools, you can have the best practices, you can be agile, you might still not be productive if you don't get the human side right. So please, please, don't underestimate this and take this together with the other parts that we have discussed in this module. Remember that you are biased unconsciously, you make certain decisions based on what your brain tells you that might, for example, go against these things. You should think about the ethical aspects of developing software, not only the product itself, but also, for example, when it comes to management or working in a team. And all of this together will then also affect on how productive you are. So this concludes module 8, the human factors. As I said, there is a diversity part, which is not in this video, but it's nevertheless, as I might have indicated here, is a very important aspect. So thank you for watching and see you in the next module.