0 00:00:00,000 --> 00:00:30,000 Dear viewer, these subtitles were generated by a machine via the service Trint and therefore are (very) buggy. If you are capable, please help us to create good quality subtitles: https://c3subtitles.de/talk/2200 Thanks! 1 00:00:09,050 --> 00:00:11,179 So welcome back to the cast 2 00:00:11,180 --> 00:00:13,339 on the TV stage, the next talk 3 00:00:13,340 --> 00:00:15,799 is about software architectures 4 00:00:15,800 --> 00:00:18,139 and software. Actually, architectures are 5 00:00:18,140 --> 00:00:19,849 one of the things young programmers 6 00:00:19,850 --> 00:00:21,859 should learn in the early years. 7 00:00:21,860 --> 00:00:22,849 Maybe. 8 00:00:22,850 --> 00:00:24,469 I hope to do so. 9 00:00:24,470 --> 00:00:26,299 They are the solution for problems seen 10 00:00:26,300 --> 00:00:28,489 by more experienced programmers when they 11 00:00:28,490 --> 00:00:30,889 have to fix code, which in some 12 00:00:30,890 --> 00:00:33,019 shady path found its way from 13 00:00:33,020 --> 00:00:35,119 the first visibility prototype by 14 00:00:35,120 --> 00:00:37,009 a tinkerer to a production code in the 15 00:00:37,010 --> 00:00:38,010 field. 16 00:00:38,510 --> 00:00:40,149 I respect this pick, Alex. 17 00:00:40,150 --> 00:00:42,889 He study that Informatics Andreessen 18 00:00:42,890 --> 00:00:45,229 took the usual way of a dissertation 19 00:00:45,230 --> 00:00:47,299 apprenticeship, an industry job, and from 20 00:00:47,300 --> 00:00:49,379 that came to be trained and a 21 00:00:49,380 --> 00:00:50,380 consultant. 22 00:00:51,290 --> 00:00:53,719 He gives seminars for project management 23 00:00:53,720 --> 00:00:56,179 and software architecture, 24 00:00:56,180 --> 00:00:58,329 and he intends to talk about 25 00:00:58,330 --> 00:01:00,499 the when and why software architecture 26 00:01:00,500 --> 00:01:03,019 is important for us as hackers and 27 00:01:03,020 --> 00:01:04,020 make us. 28 00:01:04,730 --> 00:01:06,829 He give you a very, very basic 29 00:01:06,830 --> 00:01:09,709 introduction. And he condensed some weeks 30 00:01:09,710 --> 00:01:11,749 of details in the 40 minutes of video 31 00:01:11,750 --> 00:01:12,750 stream. 32 00:01:13,250 --> 00:01:15,769 He did his very best, and the 33 00:01:15,770 --> 00:01:18,049 software architectures found 34 00:01:18,050 --> 00:01:20,149 in that case may be a commented 35 00:01:20,150 --> 00:01:21,349 the spaghetti code. 36 00:01:21,350 --> 00:01:23,689 I know and went on big 37 00:01:23,690 --> 00:01:24,690 ball of mud. 38 00:01:25,850 --> 00:01:27,919 Maybe the guy can give us 39 00:01:27,920 --> 00:01:30,019 better examples and alternatives 40 00:01:30,020 --> 00:01:32,179 in the next 40 minutes and 41 00:01:32,180 --> 00:01:33,590 the stage is yours. 42 00:01:34,950 --> 00:01:36,689 Nice introduction, and don't get me 43 00:01:36,690 --> 00:01:40,379 started about prototypes and prototypes 44 00:01:40,380 --> 00:01:42,419 coming production software and something 45 00:01:42,420 --> 00:01:44,789 like this, and 46 00:01:44,790 --> 00:01:47,039 I'm still a little bit 47 00:01:47,040 --> 00:01:49,079 scared about the scope and I still don't 48 00:01:49,080 --> 00:01:51,149 know what came over me 49 00:01:51,150 --> 00:01:53,039 to change that. 50 00:01:53,040 --> 00:01:56,039 Anything even remotely 51 00:01:56,040 --> 00:01:58,379 resembling a meaningful introduction 52 00:01:58,380 --> 00:01:59,969 to software I should take to could 53 00:01:59,970 --> 00:02:02,399 somehow be into compressed 54 00:02:02,400 --> 00:02:05,159 into a 40 minute talk. 55 00:02:05,160 --> 00:02:07,349 So but what I try to do 56 00:02:07,350 --> 00:02:09,508 my best to have some meaningful talk 57 00:02:09,509 --> 00:02:12,179 for you and I, 58 00:02:12,180 --> 00:02:14,279 I really, really should 59 00:02:14,280 --> 00:02:16,649 have known better keynotes 60 00:02:16,650 --> 00:02:18,240 already announced me. 61 00:02:19,350 --> 00:02:21,629 I work on a I 62 00:02:21,630 --> 00:02:24,449 talk on a regular basis about 63 00:02:24,450 --> 00:02:26,519 software I should take with others. 64 00:02:26,520 --> 00:02:28,709 And once we decide to dove 65 00:02:28,710 --> 00:02:29,710 into the topics 66 00:02:30,950 --> 00:02:33,779 do, you can spend hours 67 00:02:33,780 --> 00:02:35,879 to cover the basic ideas 68 00:02:35,880 --> 00:02:36,880 and principles. 69 00:02:38,040 --> 00:02:40,619 But what 70 00:02:40,620 --> 00:02:43,559 made me do this talk is that 71 00:02:43,560 --> 00:02:45,779 there are some things that I wish 72 00:02:45,780 --> 00:02:47,399 I would have known. 73 00:02:47,400 --> 00:02:49,919 Then I started taking on 74 00:02:49,920 --> 00:02:52,799 complex projects and 75 00:02:52,800 --> 00:02:55,079 more, more bigger long term 76 00:02:55,080 --> 00:02:57,359 software projects, and I want 77 00:02:57,360 --> 00:03:00,189 to give to you a short introduction. 78 00:03:00,190 --> 00:03:02,309 What software I should talk to really 79 00:03:02,310 --> 00:03:04,649 about what, 80 00:03:04,650 --> 00:03:06,839 what, what you should consider 81 00:03:06,840 --> 00:03:08,069 to be. 82 00:03:08,070 --> 00:03:10,259 The problem I have with this talk 83 00:03:10,260 --> 00:03:11,279 is a bit on 84 00:03:12,720 --> 00:03:14,969 the what what snake makes me even more 85 00:03:14,970 --> 00:03:17,039 scared as the audience of this 86 00:03:17,040 --> 00:03:19,559 talk, because every one of you 87 00:03:19,560 --> 00:03:21,749 for sure has his 88 00:03:21,750 --> 00:03:23,849 or her scar tissue and 89 00:03:23,850 --> 00:03:26,039 campfire horror stories 90 00:03:26,040 --> 00:03:27,869 about software I should take. 91 00:03:27,870 --> 00:03:29,969 And software I should take. 92 00:03:29,970 --> 00:03:32,219 And usually, as hackers or makers, 93 00:03:32,220 --> 00:03:34,799 we have to deal with the results 94 00:03:34,800 --> 00:03:35,759 of bad software. 95 00:03:35,760 --> 00:03:37,949 I should take place in our hands of 96 00:03:37,950 --> 00:03:40,049 it, and some of us 97 00:03:40,050 --> 00:03:42,209 you can consider I should take 98 00:03:42,210 --> 00:03:44,399 this to the people who do not 99 00:03:44,400 --> 00:03:46,709 or cannot code anymore or want 100 00:03:46,710 --> 00:03:48,309 not cold anymore. 101 00:03:48,310 --> 00:03:50,849 And everyone also 102 00:03:50,850 --> 00:03:53,039 had already met in his or 103 00:03:53,040 --> 00:03:54,899 her professional life. 104 00:03:54,900 --> 00:03:56,999 Those people God trolls false. 105 00:03:57,000 --> 00:03:58,079 The cold. 106 00:03:58,080 --> 00:04:00,119 I should take trust humans. 107 00:04:00,120 --> 00:04:02,789 So he says. 108 00:04:02,790 --> 00:04:05,249 So we had a really great rant about 109 00:04:05,250 --> 00:04:07,709 those type of I should ticked 110 00:04:07,710 --> 00:04:09,869 and to say, as they're so high up 111 00:04:09,870 --> 00:04:11,969 in the abstraction and saying on such 112 00:04:11,970 --> 00:04:14,159 a remote level that what 113 00:04:14,160 --> 00:04:17,069 they create is basically useless. 114 00:04:17,070 --> 00:04:19,139 They create high level abstractions, high 115 00:04:19,140 --> 00:04:21,268 level ideas about 116 00:04:21,269 --> 00:04:22,229 our system. 117 00:04:22,230 --> 00:04:24,369 And but they 118 00:04:24,370 --> 00:04:26,789 they're good and timed out well, but they 119 00:04:26,790 --> 00:04:29,039 are not of any use to someone who 120 00:04:29,040 --> 00:04:31,409 wants to implement the system for 121 00:04:31,410 --> 00:04:33,249 you, but you definitely want to avoid 122 00:04:33,250 --> 00:04:34,079 this. 123 00:04:34,080 --> 00:04:36,149 And the other horror stories 124 00:04:36,150 --> 00:04:38,339 are most of us possibly 125 00:04:38,340 --> 00:04:40,979 had. So what 126 00:04:40,980 --> 00:04:43,019 sometimes is called conference? 127 00:04:43,020 --> 00:04:45,359 I should you that there are some 128 00:04:45,360 --> 00:04:47,579 big hype topics in your company 129 00:04:47,580 --> 00:04:49,739 or community where you have 130 00:04:49,740 --> 00:04:52,019 to go. Yes, we have to use 131 00:04:52,020 --> 00:04:54,369 microservices and the customer wants 132 00:04:54,370 --> 00:04:56,699 blockchain. And, you know, it's 133 00:04:56,700 --> 00:04:58,979 a big steaming pile of whatever 134 00:04:58,980 --> 00:04:59,909 garbage. 135 00:04:59,910 --> 00:05:02,039 But this is what a customer 136 00:05:02,040 --> 00:05:04,149 wants or what others see as important 137 00:05:04,150 --> 00:05:06,719 and or what leadership 138 00:05:06,720 --> 00:05:08,909 seem to be important when 139 00:05:08,910 --> 00:05:10,709 it comes to marketing slides. 140 00:05:10,710 --> 00:05:13,169 And it really, really hurts developers 141 00:05:13,170 --> 00:05:15,929 as this is done without 142 00:05:15,930 --> 00:05:17,409 proper reasons and intention. 143 00:05:17,410 --> 00:05:19,559 I don't say that all of 144 00:05:19,560 --> 00:05:21,629 these technologies are bad 145 00:05:21,630 --> 00:05:23,159 or or horrible. 146 00:05:23,160 --> 00:05:25,349 Microservices can totally make sense, but 147 00:05:25,350 --> 00:05:27,779 there has to be a reason for this, and 148 00:05:27,780 --> 00:05:30,149 not just because someone told your 149 00:05:30,150 --> 00:05:32,339 project manager while golfing that 150 00:05:32,340 --> 00:05:33,419 you need to do Michael. 151 00:05:33,420 --> 00:05:35,159 So it was I should take trust on Google 152 00:05:35,160 --> 00:05:37,409 to become the next Netflix, or Google 153 00:05:37,410 --> 00:05:38,309 has to do it. 154 00:05:38,310 --> 00:05:40,199 There has to be a reason for this. 155 00:05:41,640 --> 00:05:43,799 So what I want to do in 156 00:05:43,800 --> 00:05:46,169 this talk, we can only 157 00:05:46,170 --> 00:05:48,449 cover really, really the 158 00:05:48,450 --> 00:05:50,909 absolute basics of software. 159 00:05:50,910 --> 00:05:53,099 I should take trouble at 160 00:05:53,100 --> 00:05:55,649 first. I want to start out, but 161 00:05:55,650 --> 00:05:57,989 then my I should take Charles 162 00:05:57,990 --> 00:05:59,519 offer. I should take to be relevant for 163 00:05:59,520 --> 00:06:01,409 you, be relevant for Hechos American 164 00:06:01,410 --> 00:06:03,689 soldiers community. If I do, I think this 165 00:06:03,690 --> 00:06:06,389 might be important for you. 166 00:06:06,390 --> 00:06:08,609 The next thing is what it is really 167 00:06:08,610 --> 00:06:10,889 about what is meant by software. 168 00:06:10,890 --> 00:06:11,999 So this is the thing that 169 00:06:13,050 --> 00:06:15,209 someone would have told me at the very 170 00:06:15,210 --> 00:06:17,719 beginning before diving 171 00:06:17,720 --> 00:06:19,889 into this topic and then why 172 00:06:19,890 --> 00:06:21,149 it matters. 173 00:06:21,150 --> 00:06:23,339 And then I 174 00:06:23,340 --> 00:06:25,409 will give a very, very brief 175 00:06:25,410 --> 00:06:27,899 introductory what you can do to 176 00:06:27,900 --> 00:06:29,459 come out of the corner. 177 00:06:29,460 --> 00:06:31,529 Good architecture, what can be 178 00:06:31,530 --> 00:06:33,359 a good? I stick to what what I thought is 179 00:06:33,360 --> 00:06:34,499 so sweet. 180 00:06:34,500 --> 00:06:36,720 Talk about this later on. 181 00:06:37,800 --> 00:06:40,049 So let's start for some 182 00:06:40,050 --> 00:06:41,849 assumptions about you. 183 00:06:41,850 --> 00:06:43,949 Why should I should take to be 184 00:06:43,950 --> 00:06:46,439 relevant for you and 185 00:06:46,440 --> 00:06:48,240 why should you care about it? 186 00:06:49,260 --> 00:06:51,889 So what what I have in mind about 187 00:06:51,890 --> 00:06:54,299 the people in my Cale's community 188 00:06:54,300 --> 00:06:57,239 and concern and treat me to 189 00:06:57,240 --> 00:06:59,579 the Hechos. So why should 190 00:06:59,580 --> 00:07:01,089 they care about I should stick to what 191 00:07:01,090 --> 00:07:03,660 they usually do is completely 192 00:07:05,070 --> 00:07:07,229 opposite to I should take to just 193 00:07:07,230 --> 00:07:09,299 want to have fun with technology and 194 00:07:09,300 --> 00:07:11,669 find new creative uses. 195 00:07:11,670 --> 00:07:14,579 But if you really want 196 00:07:14,580 --> 00:07:16,739 to use the system in 197 00:07:16,740 --> 00:07:18,869 another way that it is 198 00:07:18,870 --> 00:07:20,459 intended, you 199 00:07:21,630 --> 00:07:23,819 have so much to know some common 200 00:07:23,820 --> 00:07:26,249 structures or design rules or technical 201 00:07:26,250 --> 00:07:28,319 limitations of the system. 202 00:07:28,320 --> 00:07:30,869 Just put us under scrutiny by you. 203 00:07:30,870 --> 00:07:33,029 So typically every 204 00:07:33,030 --> 00:07:35,219 class of system has its trade 205 00:07:35,220 --> 00:07:37,709 offs. It's oh, it's 206 00:07:37,710 --> 00:07:38,869 it's back. 207 00:07:38,870 --> 00:07:40,949 At least someone did possibly 208 00:07:40,950 --> 00:07:43,559 cut corners to make life easy 209 00:07:43,560 --> 00:07:46,169 for the development team or to bring it 210 00:07:46,170 --> 00:07:48,329 faster to the market on something like 211 00:07:48,330 --> 00:07:50,279 this on software. Actually, texture 212 00:07:50,280 --> 00:07:53,099 possibly could 213 00:07:53,100 --> 00:07:55,429 tell you something about this. 214 00:07:55,430 --> 00:07:58,109 So for me, so to make a community, 215 00:07:58,110 --> 00:08:00,509 this is also not quite that obvious. 216 00:08:00,510 --> 00:08:02,759 Five people, would you want 217 00:08:02,760 --> 00:08:03,659 to use AI? 218 00:08:03,660 --> 00:08:05,429 If you want trust to tinker with 219 00:08:05,430 --> 00:08:07,829 technology and play around and 220 00:08:07,830 --> 00:08:10,079 create new friends and stuff, 221 00:08:10,080 --> 00:08:11,399 that's totally fine. 222 00:08:11,400 --> 00:08:13,559 You might very well this adult 223 00:08:13,560 --> 00:08:14,699 architecture. 224 00:08:14,700 --> 00:08:17,069 But the thing also at the moment, 225 00:08:17,070 --> 00:08:19,289 you want to create some 226 00:08:19,290 --> 00:08:21,389 sustainable software solutions, 227 00:08:21,390 --> 00:08:23,699 something some projects on Lightroom 228 00:08:23,700 --> 00:08:26,679 of framework or some 229 00:08:26,680 --> 00:08:29,579 Arduino application 230 00:08:29,580 --> 00:08:31,659 that you want to use for 231 00:08:31,660 --> 00:08:33,569 a longer amount of time. 232 00:08:33,570 --> 00:08:36,269 Or you want to build a community 233 00:08:36,270 --> 00:08:38,349 of developers or users around 234 00:08:38,350 --> 00:08:40,428 that, then you simply can't lift 235 00:08:40,429 --> 00:08:42,839 that out. Knowledge of software because 236 00:08:42,840 --> 00:08:45,119 it's important 237 00:08:45,120 --> 00:08:47,309 success factor to make the stream 238 00:08:47,310 --> 00:08:49,989 flow without software actually texture, 239 00:08:49,990 --> 00:08:51,269 you might run into trouble, 240 00:08:52,290 --> 00:08:54,689 and the last people 241 00:08:54,690 --> 00:08:56,759 of our community pulls up beside all the 242 00:08:56,760 --> 00:08:58,799 software professionals they have to deal 243 00:08:58,800 --> 00:08:59,009 with. 244 00:08:59,010 --> 00:09:01,469 I should take share every day here 245 00:09:01,470 --> 00:09:03,539 social, political actors, those people 246 00:09:03,540 --> 00:09:05,669 working and mix politics, 247 00:09:05,670 --> 00:09:08,459 those people wanting 248 00:09:08,460 --> 00:09:10,869 to make sure that we get better 249 00:09:10,870 --> 00:09:12,719 software in our daily lives from 250 00:09:12,720 --> 00:09:15,029 government politics and so on. 251 00:09:15,030 --> 00:09:17,159 And the thing 252 00:09:17,160 --> 00:09:19,079 a software actually tech is not only 253 00:09:19,080 --> 00:09:21,659 about technical discussions than poacher 254 00:09:21,660 --> 00:09:24,209 trails of or big government 255 00:09:24,210 --> 00:09:26,309 project one one is 256 00:09:26,310 --> 00:09:28,529 trade. This is not necessarily 257 00:09:28,530 --> 00:09:31,049 cause because there are bad software 258 00:09:31,050 --> 00:09:33,119 developers and bad software architects of 259 00:09:33,120 --> 00:09:34,119 this project. 260 00:09:34,120 --> 00:09:36,809 There are a lot of other drivers 261 00:09:36,810 --> 00:09:39,269 for four projects or for AI 262 00:09:39,270 --> 00:09:42,029 systems that 263 00:09:42,030 --> 00:09:44,099 has sometimes 264 00:09:44,100 --> 00:09:46,349 a much, much bigger impact on technology 265 00:09:46,350 --> 00:09:47,459 on the system. 266 00:09:47,460 --> 00:09:49,349 So there are political reasons to this 267 00:09:49,350 --> 00:09:52,109 context of persistence by two 268 00:09:52,110 --> 00:09:54,239 people what software projects 269 00:09:54,240 --> 00:09:56,849 fail and do nothing and big corporations 270 00:09:56,850 --> 00:09:59,189 or organizations may be the 271 00:09:59,190 --> 00:10:02,009 hat in the industrial. 272 00:10:02,010 --> 00:10:05,369 Some case of big software projects, 273 00:10:05,370 --> 00:10:07,529 which had a great architecture 274 00:10:07,530 --> 00:10:10,709 and they are not that type and successful 275 00:10:10,710 --> 00:10:13,169 like commercial project 276 00:10:13,170 --> 00:10:15,809 works that are 277 00:10:15,810 --> 00:10:17,129 not so good architecture. 278 00:10:17,130 --> 00:10:19,319 So if you are a political 279 00:10:19,320 --> 00:10:21,449 actor, you might want to know 280 00:10:21,450 --> 00:10:22,679 what was behind, of course. 281 00:10:24,240 --> 00:10:26,489 So before we continue, 282 00:10:26,490 --> 00:10:30,179 let's first codify 283 00:10:30,180 --> 00:10:32,879 the term software architecture 284 00:10:32,880 --> 00:10:34,289 because people use it a lot. 285 00:10:34,290 --> 00:10:35,999 Of course, when I talk about software, I 286 00:10:36,000 --> 00:10:37,529 should take to one thing it could mean 287 00:10:37,530 --> 00:10:40,019 it's an engineering sites. 288 00:10:40,020 --> 00:10:42,129 So the other uses of some 289 00:10:42,130 --> 00:10:45,089 of the terms of architecture 290 00:10:45,090 --> 00:10:46,529 are usually you what? 291 00:10:46,530 --> 00:10:48,329 You want to end up the decisive 292 00:10:48,330 --> 00:10:50,669 definition about us, and 293 00:10:50,670 --> 00:10:52,919 this is quite to the point. 294 00:10:52,920 --> 00:10:55,289 This is a software architecture 295 00:10:55,290 --> 00:10:57,449 is about the fundamental concepts or 296 00:10:57,450 --> 00:10:59,549 properties of the system, 297 00:10:59,550 --> 00:11:01,979 which is embodied in its element. 298 00:11:01,980 --> 00:11:05,009 How does how its decomposed 299 00:11:05,010 --> 00:11:07,199 into components and building blocks? 300 00:11:07,200 --> 00:11:09,239 How they relate to each other? 301 00:11:09,240 --> 00:11:11,919 How do you relate to the environment? 302 00:11:11,920 --> 00:11:14,189 So this is a prospective, still 303 00:11:14,190 --> 00:11:16,169 a proximal health also. 304 00:11:16,170 --> 00:11:18,529 But then the second part is important 305 00:11:18,530 --> 00:11:20,729 that the principle of its design 306 00:11:20,730 --> 00:11:22,409 and evolution is what are the rules? 307 00:11:22,410 --> 00:11:24,509 What other constraints do you use 308 00:11:24,510 --> 00:11:26,399 to decompose the building blocks? 309 00:11:26,400 --> 00:11:28,709 But what are the rules you apply 310 00:11:28,710 --> 00:11:30,959 to communication and relationship to 311 00:11:30,960 --> 00:11:31,979 those building blocks? 312 00:11:33,180 --> 00:11:34,209 The other meaning of. 313 00:11:34,210 --> 00:11:36,349 Software architecture 314 00:11:36,350 --> 00:11:38,379 is, of course, what you will, and it 315 00:11:38,380 --> 00:11:40,819 isn't so on the 316 00:11:40,820 --> 00:11:43,269 set of software architecture is 317 00:11:43,270 --> 00:11:45,349 so set of design decisions 318 00:11:45,350 --> 00:11:47,569 which was made incorrectly may cause 319 00:11:47,570 --> 00:11:49,099 your project to be canceled. 320 00:11:49,100 --> 00:11:50,510 So it's of. 321 00:11:51,600 --> 00:11:53,309 At the end of the day, when we 322 00:11:54,420 --> 00:11:56,669 talk about software architecture 323 00:11:56,670 --> 00:11:58,799 of software architecture, it's 324 00:11:58,800 --> 00:12:00,809 just a property of choice. 325 00:12:00,810 --> 00:12:03,119 I choose this system just 326 00:12:03,120 --> 00:12:04,319 hasn't. I should take. 327 00:12:04,320 --> 00:12:07,079 It's not a description of its 328 00:12:07,080 --> 00:12:09,599 intended to sign 329 00:12:09,600 --> 00:12:12,239 on, and it's not 330 00:12:12,240 --> 00:12:14,309 probably should not be some 331 00:12:14,310 --> 00:12:16,619 treated, but it should not be some 332 00:12:16,620 --> 00:12:18,689 upfront signed by some 333 00:12:18,690 --> 00:12:20,969 enterprise. I should take it or someone 334 00:12:20,970 --> 00:12:22,079 will chose to. 335 00:12:22,080 --> 00:12:24,419 How to write code, how to run software. 336 00:12:24,420 --> 00:12:26,039 This is not what I should take truths 337 00:12:26,040 --> 00:12:29,009 about just a property of a system. 338 00:12:29,010 --> 00:12:30,420 So the problem is 339 00:12:31,440 --> 00:12:32,879 you can choose to ignore it, 340 00:12:34,010 --> 00:12:35,519 but that's totally fine. 341 00:12:35,520 --> 00:12:37,709 If you have reasons to ignore us, you 342 00:12:37,710 --> 00:12:39,959 can choose, but you 343 00:12:39,960 --> 00:12:41,909 cannot tell us, nor I should take. 344 00:12:41,910 --> 00:12:43,859 You always have an architecture, and if 345 00:12:43,860 --> 00:12:46,019 you don't care about the architecture 346 00:12:46,020 --> 00:12:48,989 of the system you create, it 347 00:12:48,990 --> 00:12:51,539 takes the pros of it on it. 348 00:12:51,540 --> 00:12:53,609 If you don't actively shape it or 349 00:12:53,610 --> 00:12:56,249 you have to deal with the results 350 00:12:56,250 --> 00:12:58,499 of trust to design decisions, then 351 00:12:58,500 --> 00:13:01,799 it takes just any form and 352 00:13:01,800 --> 00:13:02,999 you have to defend it. 353 00:13:03,000 --> 00:13:06,059 And this can become 354 00:13:06,060 --> 00:13:07,979 very, very nasty at the end. 355 00:13:07,980 --> 00:13:09,719 The longer the project goes through, you 356 00:13:09,720 --> 00:13:11,459 all know those at the beginning of each 357 00:13:11,460 --> 00:13:12,809 project. Everything thing is easy. 358 00:13:12,810 --> 00:13:13,979 Everything is beautiful. 359 00:13:13,980 --> 00:13:15,269 You have a screen for you to build 360 00:13:15,270 --> 00:13:16,199 things. 361 00:13:16,200 --> 00:13:18,509 But the more releases you have, 362 00:13:18,510 --> 00:13:21,019 the more difficult becomes changed. 363 00:13:21,020 --> 00:13:23,619 And this is a real problem. 364 00:13:23,620 --> 00:13:25,469 If you don't care about you, I should 365 00:13:25,470 --> 00:13:27,779 take to you. I should take should help 366 00:13:27,780 --> 00:13:28,780 you with this. 367 00:13:30,000 --> 00:13:31,000 So 368 00:13:32,100 --> 00:13:34,499 let's let's take a super, super 369 00:13:34,500 --> 00:13:36,749 oversimplified examples for this. 370 00:13:36,750 --> 00:13:39,599 You want to make 371 00:13:39,600 --> 00:13:41,549 light up your express who want to have 372 00:13:41,550 --> 00:13:43,709 more things, more shining lights and so 373 00:13:43,710 --> 00:13:45,959 on. So and if this is just 374 00:13:45,960 --> 00:13:48,269 a project of just something cheap 375 00:13:48,270 --> 00:13:50,339 you throw away after several months or 376 00:13:50,340 --> 00:13:52,619 after the party is over you 377 00:13:52,620 --> 00:13:54,799 or if you just want to learn, 378 00:13:54,800 --> 00:13:57,029 do you know and programing 379 00:13:57,030 --> 00:13:59,339 or architecture might 380 00:13:59,340 --> 00:14:01,529 not be that relevant for you, 381 00:14:01,530 --> 00:14:03,719 just go to scrapbooks, 382 00:14:03,720 --> 00:14:05,429 just take away and start your auto, you 383 00:14:05,430 --> 00:14:07,739 know, idea or choose any 384 00:14:07,740 --> 00:14:10,229 of the existing open source projects 385 00:14:10,230 --> 00:14:12,129 that can light up entities and. 386 00:14:13,320 --> 00:14:15,299 You know, you can be totally fine with 387 00:14:15,300 --> 00:14:17,739 this, but what happens of 388 00:14:17,740 --> 00:14:19,889 dissociates escalates into 389 00:14:19,890 --> 00:14:21,009 something bigger? 390 00:14:21,010 --> 00:14:22,979 Let's imagine you want to light up the 391 00:14:22,980 --> 00:14:25,259 whole building or you want to light up 392 00:14:25,260 --> 00:14:27,419 the assembly at the next tempo. 393 00:14:27,420 --> 00:14:29,909 Something like this that you have not 394 00:14:29,910 --> 00:14:32,619 won any stripes, but or 395 00:14:32,620 --> 00:14:34,599 100 or more. 396 00:14:34,600 --> 00:14:36,749 Or if it turns into something 397 00:14:36,750 --> 00:14:38,669 like an open source project that rules 398 00:14:38,670 --> 00:14:40,859 for dealing with those altitudes 399 00:14:40,860 --> 00:14:43,289 Typekit like they learned 400 00:14:43,290 --> 00:14:45,719 from a cookie or something like that, 401 00:14:45,720 --> 00:14:47,819 which is a really, really nice project to 402 00:14:47,820 --> 00:14:49,949 do. If you just want to have lights who 403 00:14:49,950 --> 00:14:52,229 don't have to hack it yourself anymore, 404 00:14:52,230 --> 00:14:54,329 who just can install it on 405 00:14:54,330 --> 00:14:56,369 your year's PGA. 406 00:14:56,370 --> 00:14:57,269 So. 407 00:14:57,270 --> 00:14:59,339 But oh, 408 00:14:59,340 --> 00:15:00,419 isn't it? 409 00:15:00,420 --> 00:15:02,549 If that's what you do that 410 00:15:02,550 --> 00:15:04,709 for to transcend to something 411 00:15:04,710 --> 00:15:06,779 like such a project which 412 00:15:06,780 --> 00:15:09,119 evolves over years, which is 413 00:15:09,120 --> 00:15:12,329 chaired for by a community of developers, 414 00:15:12,330 --> 00:15:14,459 and that 415 00:15:14,460 --> 00:15:16,649 short run that different kind 416 00:15:16,650 --> 00:15:18,929 of leads that different 417 00:15:18,930 --> 00:15:20,579 user extensions and so on. 418 00:15:20,580 --> 00:15:22,679 Then then it's time to think about what I 419 00:15:22,680 --> 00:15:23,999 should do. 420 00:15:24,000 --> 00:15:26,849 So as we have already said, 421 00:15:26,850 --> 00:15:29,009 you just have an architecture. 422 00:15:29,010 --> 00:15:31,289 Your system just exhibits 423 00:15:31,290 --> 00:15:32,219 some architecture. 424 00:15:32,220 --> 00:15:34,199 It is just there. 425 00:15:34,200 --> 00:15:36,369 And what you want to do is 426 00:15:36,370 --> 00:15:38,519 you want to be to you, give 427 00:15:38,520 --> 00:15:40,219 it the form. You want to give the tools 428 00:15:40,220 --> 00:15:42,929 to want it to be a good architecture, 429 00:15:42,930 --> 00:15:44,009 whatever this means 430 00:15:45,090 --> 00:15:47,939 now and also a good architecture 431 00:15:47,940 --> 00:15:50,219 in one idea or introduced it 432 00:15:50,220 --> 00:15:52,859 helps you cope with change comes on 433 00:15:52,860 --> 00:15:55,199 the problem. You have a tent, 434 00:15:55,200 --> 00:15:57,299 each hacking project 435 00:15:57,300 --> 00:15:58,409 transistors. 436 00:15:58,410 --> 00:16:00,419 Right now, when you develop stuff, you 437 00:16:00,420 --> 00:16:02,609 have to make some design decisions, 438 00:16:02,610 --> 00:16:04,859 and those design positions 439 00:16:04,860 --> 00:16:06,749 can be very, very fundamental. 440 00:16:06,750 --> 00:16:09,029 For instance, programing 441 00:16:09,030 --> 00:16:11,519 paradigm or what programing language 442 00:16:11,520 --> 00:16:13,769 to choose to use the inside 443 00:16:13,770 --> 00:16:16,069 or use of platform 444 00:16:16,070 --> 00:16:18,269 I, what technology to 445 00:16:18,270 --> 00:16:20,609 use so that it's run 446 00:16:20,610 --> 00:16:23,129 on the rest of the pie on USPTO, 447 00:16:23,130 --> 00:16:24,360 should it run on an 448 00:16:25,560 --> 00:16:27,689 older Arduino or 449 00:16:27,690 --> 00:16:29,879 something like this and 450 00:16:29,880 --> 00:16:31,599 the next closest, you have to make it 451 00:16:31,600 --> 00:16:34,119 even more difficult and complicated 452 00:16:34,120 --> 00:16:36,299 to have to decompose 453 00:16:36,300 --> 00:16:39,269 your system into manageable, 454 00:16:39,270 --> 00:16:41,429 isolated building blocks, 455 00:16:41,430 --> 00:16:43,409 you have to give it the structure you 456 00:16:43,410 --> 00:16:45,899 have to find in this component. 457 00:16:45,900 --> 00:16:48,129 To divide it and hold those components 458 00:16:48,130 --> 00:16:50,010 should depend on each other. 459 00:16:51,080 --> 00:16:53,539 Of singles flopped 460 00:16:53,540 --> 00:16:54,540 on. 461 00:16:55,330 --> 00:16:57,619 What you work 462 00:16:57,620 --> 00:16:59,979 that right now is 463 00:16:59,980 --> 00:17:02,289 a set of requirements 464 00:17:02,290 --> 00:17:04,358 that is far from complete, you 465 00:17:04,359 --> 00:17:07,689 only know some of the requirements 466 00:17:07,690 --> 00:17:09,789 you, for instance, want to say 467 00:17:09,790 --> 00:17:11,889 yes if you want to have at least 468 00:17:11,890 --> 00:17:14,828 five different ready strikes and 469 00:17:14,829 --> 00:17:17,439 with each one hundred and eddies and 470 00:17:17,440 --> 00:17:19,809 the short term nice fading effects 471 00:17:19,810 --> 00:17:21,969 and you know, some 472 00:17:21,970 --> 00:17:24,309 of the quality requirements, 473 00:17:24,310 --> 00:17:26,709 but not all of the system, this is what 474 00:17:26,710 --> 00:17:29,109 for you to take your own pocket. 475 00:17:29,110 --> 00:17:30,819 Think about your own prejudices for 476 00:17:30,820 --> 00:17:32,859 ethical, ethical of it. 477 00:17:32,860 --> 00:17:35,859 A very, very abstract, very, very 478 00:17:35,860 --> 00:17:37,959 malleable idea of 479 00:17:37,960 --> 00:17:40,059 requirements and constraints. 480 00:17:40,060 --> 00:17:42,039 There are some industries out there that 481 00:17:42,040 --> 00:17:43,809 all the requirements are there at the 482 00:17:43,810 --> 00:17:45,879 beginning, but this is true for most 483 00:17:45,880 --> 00:17:47,799 of our quota, usually not the case, and 484 00:17:47,800 --> 00:17:49,539 it's definitely not the case. 485 00:17:49,540 --> 00:17:51,609 If you do just a hacking 486 00:17:51,610 --> 00:17:54,519 project on making projects 487 00:17:54,520 --> 00:17:55,959 for, the next thing is 488 00:17:57,040 --> 00:17:59,379 to have to work for some assumptions 489 00:17:59,380 --> 00:18:00,939 about the future. 490 00:18:00,940 --> 00:18:03,249 You have to make decisions based 491 00:18:03,250 --> 00:18:05,799 on things you don't know yet 492 00:18:05,800 --> 00:18:08,680 and what it makes even more complicated. 493 00:18:09,700 --> 00:18:12,159 When it is a long term project, 494 00:18:12,160 --> 00:18:14,319 you do not only have to think about 495 00:18:14,320 --> 00:18:16,479 your AI system itself 496 00:18:16,480 --> 00:18:19,179 those requirements, but also about 497 00:18:19,180 --> 00:18:21,429 the process of developing a business 498 00:18:21,430 --> 00:18:23,499 or something that can spend 499 00:18:23,500 --> 00:18:26,319 months or years and usually 500 00:18:26,320 --> 00:18:28,689 large I.T. projects in company 501 00:18:28,690 --> 00:18:30,879 develop over 10 or 15 years 502 00:18:30,880 --> 00:18:33,669 of. And that's just a lot of time. 503 00:18:33,670 --> 00:18:36,639 And this development process 504 00:18:36,640 --> 00:18:38,889 puts additional constraints on 505 00:18:38,890 --> 00:18:41,319 your on the development of your AI 506 00:18:41,320 --> 00:18:43,449 system that 507 00:18:43,450 --> 00:18:46,839 in many, many cases, not technical. 508 00:18:46,840 --> 00:18:49,029 You are not allowed to choose the best 509 00:18:49,030 --> 00:18:50,219 engineering solutions. 510 00:18:50,220 --> 00:18:52,359 So you are a good engineer and you 511 00:18:52,360 --> 00:18:54,519 want to build 512 00:18:54,520 --> 00:18:56,649 the best ready light out there, but you 513 00:18:56,650 --> 00:18:58,839 do not have any time to do it or 514 00:18:58,840 --> 00:19:01,449 you do not have resources to do it, 515 00:19:01,450 --> 00:19:03,729 or you do not have the skills you. 516 00:19:03,730 --> 00:19:05,919 You just have to learn 517 00:19:05,920 --> 00:19:07,809 to just plus or something like this who 518 00:19:07,810 --> 00:19:09,759 just start learning to work for the 519 00:19:09,760 --> 00:19:12,279 original idea and your 520 00:19:12,280 --> 00:19:14,709 development team, the other people 521 00:19:14,710 --> 00:19:16,929 of hackers and Macon's to 522 00:19:16,930 --> 00:19:18,579 contribute to your project. 523 00:19:18,580 --> 00:19:20,739 You don't know what what 524 00:19:20,740 --> 00:19:22,539 they are good at and how they are 525 00:19:22,540 --> 00:19:25,059 available and if they do commit 526 00:19:25,060 --> 00:19:27,159 to recruit trekked for the 527 00:19:27,160 --> 00:19:29,169 next coming months or years, especially 528 00:19:29,170 --> 00:19:32,079 an open source project commitment, 529 00:19:32,080 --> 00:19:34,929 a difficult thing that requires 530 00:19:34,930 --> 00:19:37,419 you to onboard people 531 00:19:37,420 --> 00:19:39,519 just because they like 532 00:19:39,520 --> 00:19:39,999 to do it. 533 00:19:40,000 --> 00:19:42,189 And this this is completely different 534 00:19:42,190 --> 00:19:44,289 from our company works. 535 00:19:44,290 --> 00:19:46,449 And the next problem is this 536 00:19:46,450 --> 00:19:47,439 is a moving target. 537 00:19:47,440 --> 00:19:50,829 All those changes over time in 538 00:19:50,830 --> 00:19:52,929 the time span for your project over 539 00:19:52,930 --> 00:19:55,059 several years, a lot of things can 540 00:19:55,060 --> 00:19:57,129 change. People change old 541 00:19:57,130 --> 00:19:59,769 requirements and constraints, change 542 00:19:59,770 --> 00:20:02,229 the technology's change 543 00:20:02,230 --> 00:20:03,369 over time. 544 00:20:03,370 --> 00:20:05,649 All those changes in the end, 545 00:20:05,650 --> 00:20:08,019 you somehow want to 546 00:20:08,020 --> 00:20:10,179 manage this and still want to 547 00:20:10,180 --> 00:20:12,669 come out with a of good architecture, and 548 00:20:12,670 --> 00:20:14,709 this is the difficult part and such 549 00:20:14,710 --> 00:20:16,179 projects. 550 00:20:16,180 --> 00:20:18,339 So this leads us to 551 00:20:18,340 --> 00:20:20,649 two major question Question one 552 00:20:20,650 --> 00:20:23,199 What really is a good architecture? 553 00:20:23,200 --> 00:20:25,209 Or at least I should make sure that it's 554 00:20:25,210 --> 00:20:27,939 good enough for your needs. 555 00:20:27,940 --> 00:20:30,069 And the second question is 556 00:20:30,070 --> 00:20:32,169 how can we make design the solutions 557 00:20:32,170 --> 00:20:34,269 that can solve them in good 558 00:20:34,270 --> 00:20:36,939 architecture, folks who are coachable 559 00:20:36,940 --> 00:20:39,339 and doing this without big upfront 560 00:20:39,340 --> 00:20:41,379 design because you don't know the future 561 00:20:41,380 --> 00:20:43,029 if you don't know the future and can 562 00:20:43,030 --> 00:20:44,079 foresee it. 563 00:20:44,080 --> 00:20:45,939 You just have to hope that change. 564 00:20:45,940 --> 00:20:48,189 Somehow, you have no major crystal 565 00:20:48,190 --> 00:20:50,919 balls that tells you what to. 566 00:20:50,920 --> 00:20:53,319 Requirements will be several 567 00:20:53,320 --> 00:20:54,320 months or years. 568 00:20:55,270 --> 00:20:57,519 So let's go to the first 569 00:20:57,520 --> 00:20:59,839 question what really is a good idea? 570 00:21:00,910 --> 00:21:03,129 And then you hear the answer 571 00:21:03,130 --> 00:21:04,239 the phone software. 572 00:21:04,240 --> 00:21:06,399 I should take the tell you and 573 00:21:06,400 --> 00:21:08,709 nobody really like it depends. 574 00:21:08,710 --> 00:21:10,629 It depends, is always a good answer to 575 00:21:10,630 --> 00:21:12,819 software architect because it really 576 00:21:12,820 --> 00:21:14,949 depends. And the really good software I 577 00:21:14,950 --> 00:21:17,529 should take will tell you what it depends 578 00:21:17,530 --> 00:21:19,719 on, and it depends on your 579 00:21:19,720 --> 00:21:21,399 goals and objectives. 580 00:21:21,400 --> 00:21:23,589 So is it just a fun project 581 00:21:23,590 --> 00:21:25,779 or do you want to really light 582 00:21:25,780 --> 00:21:27,969 up the next fusion and want to use 583 00:21:27,970 --> 00:21:30,249 it over the next year and 584 00:21:30,250 --> 00:21:32,319 so on? And that is no 585 00:21:32,320 --> 00:21:33,429 good or bad. 586 00:21:33,430 --> 00:21:36,219 She take it out of taking 587 00:21:36,220 --> 00:21:38,409 the context into account 588 00:21:38,410 --> 00:21:40,509 and by context, I do not own 589 00:21:40,510 --> 00:21:41,259 the media. 590 00:21:41,260 --> 00:21:43,659 Requirements on your system by context 591 00:21:43,660 --> 00:21:45,879 also mean your 592 00:21:45,880 --> 00:21:47,109 development process. 593 00:21:47,110 --> 00:21:49,449 What skillset skillset to you have, 594 00:21:49,450 --> 00:21:51,459 how much time do you have, how much money 595 00:21:51,460 --> 00:21:53,739 do you have whole skill to develop versus 596 00:21:53,740 --> 00:21:54,849 what your experience? 597 00:21:54,850 --> 00:21:56,949 That such systems and so on, 598 00:21:56,950 --> 00:21:59,229 and only if you take this context 599 00:21:59,230 --> 00:22:01,569 into account, you can come up with 600 00:22:01,570 --> 00:22:04,619 an architecture that really sets a neat. 601 00:22:04,620 --> 00:22:06,869 So if you talk about 602 00:22:06,870 --> 00:22:08,819 a good architecture in general, 603 00:22:09,960 --> 00:22:12,359 the short one thing, what 604 00:22:12,360 --> 00:22:14,669 it should provide to us to help 605 00:22:14,670 --> 00:22:16,859 you minimize the resources 606 00:22:16,860 --> 00:22:19,049 or to build your 607 00:22:19,050 --> 00:22:21,479 system and to maintain 608 00:22:21,480 --> 00:22:23,459 your system. The second part people often 609 00:22:23,460 --> 00:22:25,169 forget they only think about building the 610 00:22:25,170 --> 00:22:27,989 system as fast as possible. 611 00:22:27,990 --> 00:22:30,419 But if your system developed 612 00:22:30,420 --> 00:22:32,639 over several years, the maintenance of 613 00:22:32,640 --> 00:22:34,469 your system keeping it up to date, 614 00:22:34,470 --> 00:22:36,599 keeping it up to changing requirements 615 00:22:36,600 --> 00:22:38,429 is to be a difficult part. 616 00:22:38,430 --> 00:22:40,649 And this is also the part we don't know 617 00:22:40,650 --> 00:22:42,089 about. This is something that still 618 00:22:42,090 --> 00:22:43,109 happens in the future. 619 00:22:43,110 --> 00:22:44,970 We don't know of the 620 00:22:46,110 --> 00:22:48,329 certain libraries you choose 621 00:22:48,330 --> 00:22:50,339 to vote for. It are still available in 622 00:22:50,340 --> 00:22:52,769 two years or something bad happens 623 00:22:52,770 --> 00:22:54,359 like for block for day. 624 00:22:54,360 --> 00:22:56,939 That turns out to be a major issue 625 00:22:56,940 --> 00:22:59,099 and you have to update your system. 626 00:23:00,240 --> 00:23:02,429 So then the next thing a good I 627 00:23:02,430 --> 00:23:04,859 should take a shot to 628 00:23:04,860 --> 00:23:07,619 Earth and humans 629 00:23:07,620 --> 00:23:09,779 to understand a system that is 630 00:23:09,780 --> 00:23:12,149 probably one of the biggest issue 631 00:23:12,150 --> 00:23:14,339 in systems design and systems 632 00:23:14,340 --> 00:23:16,589 engineering that 633 00:23:16,590 --> 00:23:19,139 our systems became increasingly 634 00:23:19,140 --> 00:23:20,249 complex. 635 00:23:20,250 --> 00:23:22,949 The great phrase Hopper once said 636 00:23:22,950 --> 00:23:25,649 before World War Two, when 637 00:23:25,650 --> 00:23:27,839 everything was easy after that 638 00:23:27,840 --> 00:23:30,449 we had systems, though, and 639 00:23:30,450 --> 00:23:32,609 the complexity of our AI systems 640 00:23:32,610 --> 00:23:35,039 are now so big that it's 641 00:23:35,040 --> 00:23:37,229 really a limiting factor for 642 00:23:37,230 --> 00:23:39,449 humans to understand how they work and 643 00:23:39,450 --> 00:23:41,639 how to change them, or how to 644 00:23:41,640 --> 00:23:43,889 implement new features or how to 645 00:23:43,890 --> 00:23:46,199 adapt to changing 646 00:23:46,200 --> 00:23:47,009 requirements. 647 00:23:47,010 --> 00:23:49,079 This is why your 648 00:23:49,080 --> 00:23:50,909 architecture should help you in this 649 00:23:50,910 --> 00:23:52,829 process. That means at least you have a 650 00:23:52,830 --> 00:23:55,439 meaningful division and separable 651 00:23:55,440 --> 00:23:58,709 components to contain complexity, 652 00:23:58,710 --> 00:24:00,989 and you want to have some means 653 00:24:00,990 --> 00:24:02,219 of abstraction. 654 00:24:02,220 --> 00:24:05,189 You don't want to think about every 655 00:24:05,190 --> 00:24:07,379 detail of every and each subsystem. 656 00:24:07,380 --> 00:24:09,329 If you want to change something, you want 657 00:24:09,330 --> 00:24:10,489 decoupled instance. 658 00:24:12,240 --> 00:24:14,759 And of course, you want to do it because 659 00:24:14,760 --> 00:24:16,859 I should take to help you to cope 660 00:24:16,860 --> 00:24:19,019 with changes which also happen 661 00:24:19,020 --> 00:24:21,449 in the future and provide 662 00:24:21,450 --> 00:24:23,309 new guidelines toward your design 663 00:24:23,310 --> 00:24:24,209 decisions. 664 00:24:24,210 --> 00:24:26,489 And the problem you have with those 665 00:24:26,490 --> 00:24:27,959 to sign decisions is 666 00:24:29,250 --> 00:24:31,469 they are not necessarily 667 00:24:31,470 --> 00:24:33,989 rational design decisions or rational 668 00:24:33,990 --> 00:24:35,629 decision or something. 669 00:24:35,630 --> 00:24:37,769 There you can vary all your 670 00:24:37,770 --> 00:24:40,349 options to find out everything you need 671 00:24:40,350 --> 00:24:42,629 and then choose the best options 672 00:24:42,630 --> 00:24:44,879 you have. And this doesn't 673 00:24:44,880 --> 00:24:47,039 happen very, very often that 674 00:24:47,040 --> 00:24:48,839 I should take to design decisions. 675 00:24:48,840 --> 00:24:51,299 They are so-called bounded rational 676 00:24:51,300 --> 00:24:53,669 decisions because you have limited 677 00:24:53,670 --> 00:24:55,299 information available. 678 00:24:55,300 --> 00:24:57,719 You only know some of the things that 679 00:24:57,720 --> 00:25:00,119 a lot of what you call 680 00:25:00,120 --> 00:25:01,019 each of uses. 681 00:25:01,020 --> 00:25:02,639 I know it when I see it, if you ask 682 00:25:02,640 --> 00:25:04,889 someone how it's how the system should 683 00:25:04,890 --> 00:25:07,139 be. That said, I don't really 684 00:25:07,140 --> 00:25:09,329 know or just build it, and I tell you, 685 00:25:09,330 --> 00:25:11,189 if it's like this, I know it. 686 00:25:11,190 --> 00:25:13,169 When I see it as the usual thing, we have 687 00:25:13,170 --> 00:25:14,279 to give it. 688 00:25:14,280 --> 00:25:16,529 So but you also have limited time 689 00:25:16,530 --> 00:25:18,629 to make the decision because if you 690 00:25:18,630 --> 00:25:21,029 do not make it within the next two 691 00:25:21,030 --> 00:25:23,159 days or so on, you lose a lot of time in 692 00:25:23,160 --> 00:25:25,259 your program and you have 693 00:25:25,260 --> 00:25:27,389 a limited cognitive capability 694 00:25:27,390 --> 00:25:30,179 to do this multidimensional 695 00:25:30,180 --> 00:25:31,529 optimization. 696 00:25:31,530 --> 00:25:33,389 So how do we come up? 697 00:25:33,390 --> 00:25:35,459 What is a good thing to come up with 698 00:25:35,460 --> 00:25:37,649 good design decisions that lead 699 00:25:37,650 --> 00:25:39,959 us to a good I should picture? 700 00:25:39,960 --> 00:25:42,809 So how to come up with a good I picture? 701 00:25:42,810 --> 00:25:45,119 And step number one, 702 00:25:45,120 --> 00:25:47,489 shoot all this or 703 00:25:47,490 --> 00:25:49,709 try to be sure about 704 00:25:49,710 --> 00:25:51,959 your requirements and the system context 705 00:25:51,960 --> 00:25:54,379 if you don't know what 706 00:25:54,380 --> 00:25:56,609 to what drives to what tries 707 00:25:56,610 --> 00:25:58,829 to discussions, what was important to 708 00:25:58,830 --> 00:26:01,199 you, then you cannot do 709 00:26:01,200 --> 00:26:01,859 really good. 710 00:26:01,860 --> 00:26:03,629 Design the system because of design 711 00:26:03,630 --> 00:26:05,639 decisions are always a trade off, so you 712 00:26:05,640 --> 00:26:07,859 have to sacrifice something 713 00:26:07,860 --> 00:26:09,539 for something else. 714 00:26:09,540 --> 00:26:11,669 And if you do not know your goals and 715 00:26:11,670 --> 00:26:13,739 constraints and what is the most 716 00:26:13,740 --> 00:26:15,329 valuable thing for you? 717 00:26:16,590 --> 00:26:18,029 And I'd like should do. 718 00:26:18,030 --> 00:26:20,279 You cannot make a good design 719 00:26:20,280 --> 00:26:21,209 decision. 720 00:26:21,210 --> 00:26:23,459 And the other thing is about 721 00:26:23,460 --> 00:26:25,289 requirements and constraints and 722 00:26:25,290 --> 00:26:27,359 contexts. They often have the best 723 00:26:27,360 --> 00:26:28,709 by date. 724 00:26:28,710 --> 00:26:30,869 If you do not fulfill the requirement 725 00:26:30,870 --> 00:26:32,999 of connecting all the 726 00:26:33,000 --> 00:26:35,489 maps and the acid free vote 727 00:26:35,490 --> 00:26:37,649 at these two day, then 728 00:26:37,650 --> 00:26:39,839 your environment becomes pointless. 729 00:26:39,840 --> 00:26:42,599 So you have to know how your requirements 730 00:26:42,600 --> 00:26:44,159 change and how stable are. 731 00:26:44,160 --> 00:26:46,319 So if you ask someone to see you or she 732 00:26:46,320 --> 00:26:48,449 really needs it, then 733 00:26:48,450 --> 00:26:50,579 it can say, Guess someone told me, 734 00:26:50,580 --> 00:26:52,349 I really need this feature, I want to 735 00:26:52,350 --> 00:26:54,599 have it. But it turns out it's 736 00:26:54,600 --> 00:26:56,789 not the thing or just really interested 737 00:26:56,790 --> 00:26:59,279 in what makes money, but just 738 00:26:59,280 --> 00:27:01,499 because he or she has just been told 739 00:27:01,500 --> 00:27:02,609 that everyone needs to. 740 00:27:02,610 --> 00:27:04,609 So you should know. 741 00:27:04,610 --> 00:27:06,439 What are your goals for Georgia 742 00:27:06,440 --> 00:27:08,599 influencing factors to 743 00:27:08,600 --> 00:27:10,939 show how important they are 744 00:27:10,940 --> 00:27:12,109 until stable? 745 00:27:12,110 --> 00:27:14,599 How they will at least make an assumption 746 00:27:14,600 --> 00:27:16,819 about how did it change over 747 00:27:16,820 --> 00:27:19,289 time? And one, especially 748 00:27:19,290 --> 00:27:21,769 in this kind of requirements or quality 749 00:27:21,770 --> 00:27:23,959 requirements because of 750 00:27:23,960 --> 00:27:25,959 its functional requirements change. 751 00:27:25,960 --> 00:27:28,159 This is something we can cope with 752 00:27:28,160 --> 00:27:30,379 in our everyday life is 753 00:27:30,380 --> 00:27:32,689 normal. Somehow, more or less, 754 00:27:32,690 --> 00:27:34,669 if the quality requirements of your 755 00:27:34,670 --> 00:27:36,919 system changes since you are alleged, you 756 00:27:36,920 --> 00:27:39,109 should not provide on 757 00:27:39,110 --> 00:27:41,279 TV and frequency of 1000 758 00:27:41,280 --> 00:27:43,519 hertz and not only of 200 759 00:27:43,520 --> 00:27:45,829 hertz. For some reason, this can 760 00:27:45,830 --> 00:27:47,959 be a major problem because this 761 00:27:47,960 --> 00:27:50,119 might change the whole system and 762 00:27:50,120 --> 00:27:52,099 you might have to redesign the system 763 00:27:52,100 --> 00:27:53,179 completely. 764 00:27:53,180 --> 00:27:56,239 So you should really watch out 765 00:27:56,240 --> 00:27:58,549 that you have the most important 766 00:27:58,550 --> 00:28:00,559 quality requirements on your radar and 767 00:28:00,560 --> 00:28:02,779 find out how good 768 00:28:02,780 --> 00:28:04,559 your system should do things. 769 00:28:04,560 --> 00:28:06,769 What how stable it should 770 00:28:06,770 --> 00:28:08,779 be. How maintainable, how changeable. 771 00:28:08,780 --> 00:28:10,879 Because all the change in one of those 772 00:28:10,880 --> 00:28:13,009 quality requirements can mean 773 00:28:13,010 --> 00:28:15,079 that your system design becomes 774 00:28:15,080 --> 00:28:17,089 obsolete and will come have to come up 775 00:28:17,090 --> 00:28:19,189 the whole new architecture to cover for 776 00:28:19,190 --> 00:28:21,289 it and 777 00:28:21,290 --> 00:28:22,889 to not let this happen. 778 00:28:22,890 --> 00:28:24,949 One good thing or to 779 00:28:24,950 --> 00:28:27,109 Virg incremental 780 00:28:27,110 --> 00:28:29,539 do not try to 781 00:28:29,540 --> 00:28:31,699 fix everything at once at 782 00:28:31,700 --> 00:28:33,829 the start of your project, but a 783 00:28:33,830 --> 00:28:35,689 big upfront, the scientist usually 784 00:28:35,690 --> 00:28:37,789 doesn't work. You don't know everything 785 00:28:37,790 --> 00:28:39,139 in the beginning. 786 00:28:39,140 --> 00:28:41,539 Use iterations use small 787 00:28:41,540 --> 00:28:43,969 steps to improve your picture, 788 00:28:43,970 --> 00:28:45,439 so it's OK. 789 00:28:45,440 --> 00:28:47,959 You should have some course idea 790 00:28:47,960 --> 00:28:50,089 how your eye should take should look like 791 00:28:50,090 --> 00:28:51,079 some guidance. 792 00:28:51,080 --> 00:28:52,849 If you don't have some guidance, you 793 00:28:52,850 --> 00:28:55,549 cannot do design decisions, 794 00:28:55,550 --> 00:28:57,799 but you have to prepare. 795 00:28:57,800 --> 00:28:59,509 Prepare for it to change. 796 00:28:59,510 --> 00:29:01,699 And what your architecture should 797 00:29:01,700 --> 00:29:03,979 enable you is somehow 798 00:29:03,980 --> 00:29:05,899 to cope with those changes. 799 00:29:05,900 --> 00:29:08,119 And one important thing that 800 00:29:08,120 --> 00:29:10,579 you are able to do is that, you 801 00:29:10,580 --> 00:29:12,169 know your tradeoffs. 802 00:29:12,170 --> 00:29:13,170 This 803 00:29:14,360 --> 00:29:16,729 is a I think 804 00:29:16,730 --> 00:29:18,799 my questions are going to trim 805 00:29:18,800 --> 00:29:21,679 everything and I should take a job 806 00:29:21,680 --> 00:29:22,729 as a tradeoff. 807 00:29:22,730 --> 00:29:23,749 So and 808 00:29:25,430 --> 00:29:28,209 also the corollary to this is, 809 00:29:28,210 --> 00:29:30,299 if you nice, take 810 00:29:30,300 --> 00:29:32,329 on something that is not a trade off, you 811 00:29:32,330 --> 00:29:34,689 just have discovered the tradeoffs 812 00:29:34,690 --> 00:29:35,809 behind that. 813 00:29:35,810 --> 00:29:37,909 So to make good design decisions, 814 00:29:37,910 --> 00:29:40,579 you have to find out which components 815 00:29:40,580 --> 00:29:42,979 of your system are somehow connected, 816 00:29:42,980 --> 00:29:44,839 how they are coupled to each other. 817 00:29:44,840 --> 00:29:46,909 And if I change one 818 00:29:46,910 --> 00:29:49,099 component or the requirements for 819 00:29:49,100 --> 00:29:51,229 one component, how does it 820 00:29:51,230 --> 00:29:53,639 impact the other components? 821 00:29:53,640 --> 00:29:56,299 This component is two, and 822 00:29:56,300 --> 00:29:58,459 even if you take such a simple example, 823 00:29:58,460 --> 00:30:01,069 like our LG lights that, 824 00:30:01,070 --> 00:30:03,149 oh, it is such a lot of tradeoffs and the 825 00:30:03,150 --> 00:30:05,209 real big project is this 826 00:30:05,210 --> 00:30:06,829 even though, for instance, we could 827 00:30:06,830 --> 00:30:08,179 decide. 828 00:30:08,180 --> 00:30:10,669 So you have to design decision to use 829 00:30:10,670 --> 00:30:12,739 software power to support 830 00:30:12,740 --> 00:30:15,179 a lot of these stripes or to use hardware 831 00:30:15,180 --> 00:30:17,989 pavilion, which has a lower load 832 00:30:17,990 --> 00:30:20,809 of defeating us a few. 833 00:30:20,810 --> 00:30:23,059 So, so you cannot have some 834 00:30:23,060 --> 00:30:24,679 features, you have no stripes on, you 835 00:30:24,680 --> 00:30:25,819 want to have a higher 836 00:30:27,200 --> 00:30:29,329 frequency to don't have 837 00:30:29,330 --> 00:30:31,699 to also tell us 838 00:30:31,700 --> 00:30:32,839 those those things. 839 00:30:32,840 --> 00:30:34,459 Then you move your eyes. 840 00:30:34,460 --> 00:30:36,859 But the higher your PBM frequency, 841 00:30:36,860 --> 00:30:39,079 the more electronics problem you get, 842 00:30:39,080 --> 00:30:41,659 and the lower is so dynamic range 843 00:30:41,660 --> 00:30:44,359 you cannot have very, very low 844 00:30:45,440 --> 00:30:47,599 steps between the brightness of 845 00:30:47,600 --> 00:30:49,519 your stripes and don't. 846 00:30:49,520 --> 00:30:51,079 That's considered about such 847 00:30:51,080 --> 00:30:53,029 optimizations between frame rates. 848 00:30:53,030 --> 00:30:54,739 And then you want to have a very high 849 00:30:54,740 --> 00:30:57,409 frame rate to have animations. 850 00:30:57,410 --> 00:30:59,689 You have a very high load on the systems 851 00:30:59,690 --> 00:31:01,339 who might have dropouts. 852 00:31:01,340 --> 00:31:03,649 You might not be able to synchronize 853 00:31:03,650 --> 00:31:05,329 it. For instance, if you want to load the 854 00:31:05,330 --> 00:31:07,459 stage shredders and switch the light and 855 00:31:07,460 --> 00:31:09,949 you want all the lights to switch at one. 856 00:31:09,950 --> 00:31:12,049 And this is sometimes 857 00:31:12,050 --> 00:31:14,119 this is absolutely a tradeoff 858 00:31:14,120 --> 00:31:15,979 to have to have a high frame rate, to 859 00:31:15,980 --> 00:31:18,379 have a really synchronous. 860 00:31:18,380 --> 00:31:20,509 And don't let's get started about 861 00:31:20,510 --> 00:31:22,849 features and about quality attributes. 862 00:31:22,850 --> 00:31:25,009 For instance, do you want to have some 863 00:31:25,010 --> 00:31:27,199 nice the update to have 864 00:31:27,200 --> 00:31:29,629 it maintainable about not having 865 00:31:29,630 --> 00:31:31,959 to go to each of these lights 866 00:31:31,960 --> 00:31:34,129 or to change 867 00:31:34,130 --> 00:31:35,119 or from there? 868 00:31:35,120 --> 00:31:38,149 But this has a lot of security 869 00:31:38,150 --> 00:31:39,079 implications. 870 00:31:39,080 --> 00:31:41,269 Do you want her to have something in 871 00:31:41,270 --> 00:31:42,679 your network like this? 872 00:31:42,680 --> 00:31:44,869 So also to lose a lot 873 00:31:44,870 --> 00:31:47,299 of memory, to enable or update 874 00:31:47,300 --> 00:31:49,669 and so on and everything 875 00:31:49,670 --> 00:31:51,829 in your design position as a trade 876 00:31:51,830 --> 00:31:54,799 off and what you should do is identify 877 00:31:54,800 --> 00:31:56,899 what you trade against, what 878 00:31:56,900 --> 00:31:59,269 are a quality of feature 879 00:31:59,270 --> 00:32:01,399 or or attribute 880 00:32:01,400 --> 00:32:02,299 options system. 881 00:32:02,300 --> 00:32:04,579 This is something you should. 882 00:32:04,580 --> 00:32:06,289 Playing out in the open, make them 883 00:32:06,290 --> 00:32:07,249 visible. 884 00:32:07,250 --> 00:32:09,229 And the good thing to do is, for 885 00:32:09,230 --> 00:32:10,699 instance, choosing I should take the 886 00:32:10,700 --> 00:32:12,769 decision because you should make your 887 00:32:12,770 --> 00:32:15,319 trade offs because these tradeoffs 888 00:32:15,320 --> 00:32:17,449 are not visible in the code you write. 889 00:32:17,450 --> 00:32:19,579 They are just usually just in 890 00:32:19,580 --> 00:32:20,580 your documentation. 891 00:32:21,860 --> 00:32:23,959 So next thing, you 892 00:32:23,960 --> 00:32:26,029 have to cope with change and to be able 893 00:32:26,030 --> 00:32:29,209 to transfer evolve, you have to identify 894 00:32:29,210 --> 00:32:31,549 the things that are really, really 895 00:32:31,550 --> 00:32:33,419 hard to change. 896 00:32:33,420 --> 00:32:35,599 And those what those 897 00:32:35,600 --> 00:32:38,569 are depend on your specific 898 00:32:38,570 --> 00:32:40,969 project or system, but usually 899 00:32:40,970 --> 00:32:43,219 hard to change of things like 900 00:32:43,220 --> 00:32:44,699 programing paradigms. 901 00:32:44,700 --> 00:32:47,329 If you choose functional or imperative 902 00:32:47,330 --> 00:32:49,789 programing or your programing language, 903 00:32:49,790 --> 00:32:52,159 it's difficult to change it later and 904 00:32:52,160 --> 00:32:54,289 you have to rewrite everything or 905 00:32:54,290 --> 00:32:56,069 the platform you choose or the middle 906 00:32:56,070 --> 00:32:57,469 there or some of the library. 907 00:32:57,470 --> 00:32:59,719 Is it true? Sometimes it's very, very 908 00:32:59,720 --> 00:33:01,519 difficult and change them. 909 00:33:01,520 --> 00:33:03,779 Or if your system provides 910 00:33:03,780 --> 00:33:05,989 some public API to understand 911 00:33:05,990 --> 00:33:08,179 a lot of other components, a lot of other 912 00:33:08,180 --> 00:33:10,729 users to use, then 913 00:33:10,730 --> 00:33:13,039 on assistance to you will stand those 914 00:33:13,040 --> 00:33:15,679 things. Transient or sense always 915 00:33:15,680 --> 00:33:17,449 comes quite at a cost. 916 00:33:17,450 --> 00:33:19,759 You can decouple from 917 00:33:19,760 --> 00:33:21,829 those changes just because 918 00:33:21,830 --> 00:33:23,029 it's totally impossible. 919 00:33:23,030 --> 00:33:25,199 But even decoupling brings 920 00:33:25,200 --> 00:33:27,209 to additional complexity in your system, 921 00:33:27,210 --> 00:33:29,329 and complexity is what really 922 00:33:29,330 --> 00:33:31,639 might your project because you must only 923 00:33:31,640 --> 00:33:33,919 have a small amount of cream and can 924 00:33:33,920 --> 00:33:36,319 only have so much complexity. 925 00:33:36,320 --> 00:33:38,489 So how would you 926 00:33:38,490 --> 00:33:40,729 like to it? What do I do 927 00:33:40,730 --> 00:33:43,129 when things start? 928 00:33:43,130 --> 00:33:44,689 How to change change anyway? 929 00:33:44,690 --> 00:33:47,149 Unit sales, or Fightful Strategy 930 00:33:47,150 --> 00:33:49,309 for it, basically 931 00:33:49,310 --> 00:33:51,529 has a set of small tools that do 932 00:33:51,530 --> 00:33:53,629 exactly one thing well, 933 00:33:53,630 --> 00:33:55,639 and they communicate through a standard 934 00:33:55,640 --> 00:33:57,709 protocol. So they are very, 935 00:33:57,710 --> 00:34:00,549 very nice decoupled, which means 936 00:34:00,550 --> 00:34:02,659 if we offer you small 937 00:34:02,660 --> 00:34:05,119 Unix tools can be changed 938 00:34:05,120 --> 00:34:07,369 really bit by bit, no pun intended. 939 00:34:08,719 --> 00:34:11,059 So it's already 940 00:34:11,060 --> 00:34:13,339 talked a bit about cutting the users 941 00:34:13,340 --> 00:34:14,340 a lot, and 942 00:34:15,710 --> 00:34:17,908 that's an important concept to have. 943 00:34:17,909 --> 00:34:20,359 So what does this cutting 944 00:34:20,360 --> 00:34:21,349 company mean? 945 00:34:21,350 --> 00:34:23,509 So there is some kind of 946 00:34:23,510 --> 00:34:25,729 dependency between your components. 947 00:34:25,730 --> 00:34:27,919 When you change one component, it 948 00:34:27,920 --> 00:34:30,649 might probably have implications 949 00:34:30,650 --> 00:34:32,149 to other components. 950 00:34:32,150 --> 00:34:34,249 So as a programmer, you know 951 00:34:35,300 --> 00:34:37,519 about cutting a lot as I asked 952 00:34:37,520 --> 00:34:39,619 and trainings about cutting. 953 00:34:39,620 --> 00:34:41,839 Usually, people come up with Kupperman 954 00:34:41,840 --> 00:34:43,908 by call. If you want to call 955 00:34:43,909 --> 00:34:46,249 not a component or something of 956 00:34:46,250 --> 00:34:48,439 a method of an object, you are coupled 957 00:34:48,440 --> 00:34:49,329 to this. 958 00:34:49,330 --> 00:34:51,529 They are covered by a 959 00:34:51,530 --> 00:34:54,439 data or data structures and methods, 960 00:34:54,440 --> 00:34:55,879 signatures and so on. 961 00:34:55,880 --> 00:34:57,949 If you use a common database, 962 00:34:57,950 --> 00:35:00,199 for instance, all common data type 963 00:35:00,200 --> 00:35:02,389 and one of those is changed. 964 00:35:02,390 --> 00:35:04,639 Then you have to look 965 00:35:04,640 --> 00:35:06,799 out to other components were also used 966 00:35:06,800 --> 00:35:10,039 as a stick and code for the change. 967 00:35:10,040 --> 00:35:12,439 This is something most programing 968 00:35:12,440 --> 00:35:14,509 languages or a lot of modern 969 00:35:14,510 --> 00:35:16,519 programing languages just take care for 970 00:35:16,520 --> 00:35:18,339 you, type, safety and so on. 971 00:35:18,340 --> 00:35:20,629 But not all programing languages, too. 972 00:35:20,630 --> 00:35:22,999 So you might want to watch out for the 973 00:35:23,000 --> 00:35:25,479 content of our data as 974 00:35:25,480 --> 00:35:28,039 text or as dreazen that are 975 00:35:28,040 --> 00:35:30,409 adjacent, but all the JS and schema. 976 00:35:30,410 --> 00:35:33,019 And then one component changes 977 00:35:33,020 --> 00:35:35,299 all of the what in those 978 00:35:35,300 --> 00:35:37,069 days and file and suddenly your 979 00:35:37,070 --> 00:35:37,969 application. 980 00:35:37,970 --> 00:35:39,479 This was a sign that you are a couple of 981 00:35:39,480 --> 00:35:40,909 wired data. 982 00:35:40,910 --> 00:35:43,009 Also, what programmers use it is 983 00:35:43,010 --> 00:35:45,019 no, they are covered by inheritance, 984 00:35:45,020 --> 00:35:46,879 inheritance between classes. 985 00:35:46,880 --> 00:35:49,489 It's a very, very strong kind of coupling 986 00:35:49,490 --> 00:35:51,889 both, but a lot of other 987 00:35:51,890 --> 00:35:54,169 modes of comfort, and this list 988 00:35:54,170 --> 00:35:55,730 is by far completely 989 00:35:57,230 --> 00:35:58,489 not complete. 990 00:35:58,490 --> 00:36:00,649 But of course, we might be covered 991 00:36:00,650 --> 00:36:02,779 by the fact that two components have to 992 00:36:02,780 --> 00:36:04,729 run on the same system on the same 993 00:36:04,730 --> 00:36:05,780 virtual machines 994 00:36:06,830 --> 00:36:09,109 to some components have to create 995 00:36:09,110 --> 00:36:10,109 other components. 996 00:36:10,110 --> 00:36:12,379 It's also some kind of coupling or, you 997 00:36:12,380 --> 00:36:14,749 know, the coupling via a 998 00:36:14,750 --> 00:36:16,939 time that you rely 999 00:36:16,940 --> 00:36:19,009 on something happening before 1000 00:36:19,010 --> 00:36:20,689 you can do something. 1001 00:36:20,690 --> 00:36:22,819 And this is something that is 1002 00:36:22,820 --> 00:36:24,859 usually not visible, visible in your 1003 00:36:24,860 --> 00:36:25,189 code. 1004 00:36:25,190 --> 00:36:27,319 Modern programing languages provide 1005 00:36:27,320 --> 00:36:29,599 constructs for us to make it easier 1006 00:36:29,600 --> 00:36:31,669 to handle. So some of these 1007 00:36:31,670 --> 00:36:33,799 things, but you cannot handle 1008 00:36:33,800 --> 00:36:35,749 all those two things. And that might also 1009 00:36:35,750 --> 00:36:37,819 thinks you're a company by which 1010 00:36:37,820 --> 00:36:40,099 you don't have any representation 1011 00:36:40,100 --> 00:36:41,029 in your code at all. 1012 00:36:41,030 --> 00:36:43,609 Like, for instance, all your components 1013 00:36:43,610 --> 00:36:45,829 need to be deployed at the same time 1014 00:36:45,830 --> 00:36:47,959 because you have you are layered 1015 00:36:47,960 --> 00:36:50,119 monoliths, you have strong dependencies 1016 00:36:50,120 --> 00:36:52,399 and you have to 1017 00:36:52,400 --> 00:36:53,400 have. 1018 00:36:53,980 --> 00:36:56,259 To implement fix, to leave state so 1019 00:36:56,260 --> 00:36:58,329 that everyone can chisel her 1020 00:36:58,330 --> 00:37:00,519 changes onto your project so that 1021 00:37:00,520 --> 00:37:02,709 you can make a new deployment so 1022 00:37:04,330 --> 00:37:06,549 you can decouple or to 1023 00:37:06,550 --> 00:37:08,829 short decouple 1024 00:37:08,830 --> 00:37:10,869 as good as it gets of what what you 1025 00:37:10,870 --> 00:37:13,029 really want is not to have that 1026 00:37:13,030 --> 00:37:15,009 much coupling between your components 1027 00:37:15,010 --> 00:37:17,499 because it makes changing your system 1028 00:37:17,500 --> 00:37:19,449 difficult and that makes thinking about 1029 00:37:19,450 --> 00:37:22,179 your system political and 1030 00:37:22,180 --> 00:37:24,279 you have a lot of ripple effects when you 1031 00:37:24,280 --> 00:37:25,989 change something. 1032 00:37:25,990 --> 00:37:28,059 But even loose coupling 1033 00:37:28,060 --> 00:37:30,129 is a tradeoff. If you couple something, 1034 00:37:30,130 --> 00:37:32,289 Lucy, it usually it's more 1035 00:37:32,290 --> 00:37:33,719 complex to your system. 1036 00:37:33,720 --> 00:37:35,829 It's overhead to a system. 1037 00:37:35,830 --> 00:37:38,019 So and you shouldn't really 1038 00:37:38,020 --> 00:37:40,219 know when to decouple 1039 00:37:40,220 --> 00:37:42,699 the. And you have to 1040 00:37:42,700 --> 00:37:44,529 have coupling in your system you cannot 1041 00:37:44,530 --> 00:37:45,429 get rid of. 1042 00:37:45,430 --> 00:37:48,069 You have to structure it somehow. 1043 00:37:48,070 --> 00:37:50,379 So what you want to do is 1044 00:37:50,380 --> 00:37:52,749 you want to sign to be 1045 00:37:52,750 --> 00:37:54,909 prepared for changes but 1046 00:37:54,910 --> 00:37:56,979 limit the impact of changes, 1047 00:37:56,980 --> 00:37:59,079 limit the ripple effect and 1048 00:37:59,080 --> 00:38:01,539 reduce unwanted complexity. 1049 00:38:01,540 --> 00:38:03,609 And softer architecture 1050 00:38:03,610 --> 00:38:05,559 provides you with a lot of the same 1051 00:38:05,560 --> 00:38:07,899 principles that helped you do this. 1052 00:38:07,900 --> 00:38:10,089 Some of them, most of you already 1053 00:38:10,090 --> 00:38:12,189 know they are so common sense that 1054 00:38:12,190 --> 00:38:13,479 you just grew up with them. 1055 00:38:13,480 --> 00:38:15,669 Like information hiding most modern 1056 00:38:15,670 --> 00:38:17,799 programing languages provide one or 1057 00:38:17,800 --> 00:38:19,389 the other means of information. 1058 00:38:19,390 --> 00:38:22,089 Hiding or separation of concerns 1059 00:38:22,090 --> 00:38:24,459 is something you should definitely choose 1060 00:38:24,460 --> 00:38:26,379 those people from object oriented 1061 00:38:26,380 --> 00:38:27,380 programing 1062 00:38:28,780 --> 00:38:31,179 note a single responsibility 1063 00:38:31,180 --> 00:38:33,549 principle which is not quite 1064 00:38:33,550 --> 00:38:35,679 the same, but basically the same. 1065 00:38:35,680 --> 00:38:38,169 So if you separate your concerns 1066 00:38:38,170 --> 00:38:40,329 of your separate functionality, 1067 00:38:40,330 --> 00:38:42,789 then you have a looser coupling 1068 00:38:42,790 --> 00:38:43,719 between those things. 1069 00:38:43,720 --> 00:38:45,699 You have blessed relationships between 1070 00:38:45,700 --> 00:38:48,009 this component, a lot of other 1071 00:38:48,010 --> 00:38:50,499 things or design principles. 1072 00:38:50,500 --> 00:38:52,659 Software architecture has to see if 1073 00:38:52,660 --> 00:38:54,819 I could make an own talk 1074 00:38:54,820 --> 00:38:56,319 on social Bogdan. 1075 00:38:56,320 --> 00:38:58,419 So, so if you want to 1076 00:38:58,420 --> 00:39:00,219 have a follow up on this talk, the next 1077 00:39:00,220 --> 00:39:02,379 thing for sure only 1078 00:39:02,380 --> 00:39:04,299 be about the same principles. 1079 00:39:04,300 --> 00:39:06,689 You should definitely look into that. 1080 00:39:06,690 --> 00:39:08,769 But one thing 1081 00:39:08,770 --> 00:39:11,709 you should notice us you 1082 00:39:11,710 --> 00:39:14,019 do not or strive for 1083 00:39:14,020 --> 00:39:16,299 the perfect adherence to 1084 00:39:16,300 --> 00:39:17,469 this the sun principle. 1085 00:39:17,470 --> 00:39:20,079 You should strive not if 1086 00:39:20,080 --> 00:39:22,269 you can violate them, because 1087 00:39:22,270 --> 00:39:24,609 the thing is, some of these design 1088 00:39:24,610 --> 00:39:26,739 principles are really the trade 1089 00:39:26,740 --> 00:39:27,819 off in their own. 1090 00:39:27,820 --> 00:39:30,159 For instance, every programmer knows 1091 00:39:30,160 --> 00:39:32,349 the truth a true to the right principle. 1092 00:39:32,350 --> 00:39:34,479 Don't repeat yourself because 1093 00:39:34,480 --> 00:39:36,919 the opposite of Cry was swept based 1094 00:39:36,920 --> 00:39:39,279 everyone's time but not 1095 00:39:39,280 --> 00:39:41,099 adhering to the trite principle. 1096 00:39:41,100 --> 00:39:43,509 Hence, duplicate fraud in this system 1097 00:39:43,510 --> 00:39:44,949 can be very reversed for you. 1098 00:39:44,950 --> 00:39:47,439 Because we can independently develop 1099 00:39:47,440 --> 00:39:49,179 this code, you have decoupled the 1100 00:39:49,180 --> 00:39:50,979 development you can give it to different 1101 00:39:50,980 --> 00:39:53,289 teams. So basically, 1102 00:39:53,290 --> 00:39:54,969 if you think about microservices, 1103 00:39:54,970 --> 00:39:57,219 microservices violate 1104 00:39:57,220 --> 00:39:59,499 right all the time because 1105 00:39:59,500 --> 00:40:01,359 you do not want to have into service 1106 00:40:01,360 --> 00:40:03,789 communication because it's so expensive. 1107 00:40:03,790 --> 00:40:05,349 That's fine. It's a good reason to 1108 00:40:05,350 --> 00:40:07,419 violate trade because if you stick to 1109 00:40:07,420 --> 00:40:09,669 trade, it may increase or accompanying 1110 00:40:09,670 --> 00:40:11,799 the calls. If you do provide 1111 00:40:11,800 --> 00:40:14,169 an abstraction for some form, something 1112 00:40:14,170 --> 00:40:17,109 you had when you use tried 1113 00:40:17,110 --> 00:40:19,269 before and deployed in the sector, 1114 00:40:19,270 --> 00:40:20,829 you are suddenly coupled to this 1115 00:40:20,830 --> 00:40:22,899 abstraction. And so everything else will 1116 00:40:22,900 --> 00:40:23,829 trade off you. 1117 00:40:23,830 --> 00:40:25,719 I think you get it. 1118 00:40:25,720 --> 00:40:27,939 So we are running a bit 1119 00:40:27,940 --> 00:40:29,049 out of time. That's fine. 1120 00:40:29,050 --> 00:40:31,209 I don't want to talk that much about 1121 00:40:31,210 --> 00:40:33,609 pet them pet on a very important 1122 00:40:33,610 --> 00:40:34,599 concept of software. 1123 00:40:34,600 --> 00:40:35,600 I should take to 1124 00:40:37,450 --> 00:40:39,519 say you don't have to invent, 1125 00:40:39,520 --> 00:40:41,799 ask a single cells pet, then provide you. 1126 00:40:41,800 --> 00:40:44,919 But we use of those solutions 1127 00:40:44,920 --> 00:40:46,599 for software, for your problem that 1128 00:40:46,600 --> 00:40:49,149 probably someone else already have. 1129 00:40:49,150 --> 00:40:51,489 So and also they provide something 1130 00:40:51,490 --> 00:40:53,409 to talk about to give you structure and 1131 00:40:53,410 --> 00:40:55,719 terminology are a lot of 1132 00:40:55,720 --> 00:40:57,339 good sources for people. 1133 00:40:57,340 --> 00:40:58,839 Don't invent your own pattern. 1134 00:40:58,840 --> 00:41:00,249 Parents are not inventive. 1135 00:41:00,250 --> 00:41:02,859 Parents are discovered, but 1136 00:41:02,860 --> 00:41:05,169 look out what patterns you might use. 1137 00:41:05,170 --> 00:41:07,539 And there's also a lot more 1138 00:41:07,540 --> 00:41:09,909 than just architectural design, 1139 00:41:09,910 --> 00:41:11,799 which we have covered in all sorts of 1140 00:41:11,800 --> 00:41:13,419 troubleshooting to. The most important 1141 00:41:13,420 --> 00:41:15,369 thing is right stuff. 1142 00:41:17,020 --> 00:41:18,789 Nobody likes documentation. 1143 00:41:18,790 --> 00:41:21,039 Everyone wants documentation, 1144 00:41:21,040 --> 00:41:22,269 saves time later on. 1145 00:41:22,270 --> 00:41:24,159 But it might not be your time that the 1146 00:41:24,160 --> 00:41:25,749 saved. This is a problem. 1147 00:41:25,750 --> 00:41:27,279 The documentation. 1148 00:41:27,280 --> 00:41:29,439 So but make make it easy for 1149 00:41:29,440 --> 00:41:31,029 others to provide documentation. 1150 00:41:31,030 --> 00:41:32,739 For instance, you set the template based 1151 00:41:32,740 --> 00:41:34,869 documentation, and if you do, 1152 00:41:34,870 --> 00:41:36,999 I should take it and you are suddenly in 1153 00:41:37,000 --> 00:41:38,379 marketing and politics. 1154 00:41:38,380 --> 00:41:39,609 You have to train artists. 1155 00:41:39,610 --> 00:41:41,799 You have to convince others 1156 00:41:41,800 --> 00:41:43,419 about your solutions. 1157 00:41:43,420 --> 00:41:45,519 Talk to other stakeholders 1158 00:41:45,520 --> 00:41:48,099 and make it work for them. 1159 00:41:48,100 --> 00:41:50,379 So and if it doesn't work, 1160 00:41:51,400 --> 00:41:52,530 then do my. 1161 00:41:54,080 --> 00:41:56,359 Ida, a serious problem 1162 00:41:56,360 --> 00:41:58,549 that what you designed doesn't 1163 00:41:58,550 --> 00:42:01,159 fit the needs of your stakeholders 1164 00:42:01,160 --> 00:42:03,469 or your team or the people you 1165 00:42:03,470 --> 00:42:05,629 work on this project in this 1166 00:42:05,630 --> 00:42:07,459 case for Headspace. 1167 00:42:07,460 --> 00:42:09,589 Then you should find out what their 1168 00:42:09,590 --> 00:42:12,199 needs are and should find out 1169 00:42:12,200 --> 00:42:14,479 if your design matches two requirement 1170 00:42:14,480 --> 00:42:15,559 and context. 1171 00:42:15,560 --> 00:42:17,539 But also a lot of non-technical things 1172 00:42:17,540 --> 00:42:19,339 can go wrong, for instance, and 1173 00:42:19,340 --> 00:42:21,529 companies, you have to problem that 1174 00:42:21,530 --> 00:42:23,809 compliance that harass you 1175 00:42:23,810 --> 00:42:25,939 very often the big thing you are 1176 00:42:25,940 --> 00:42:27,159 not allowed to do. 1177 00:42:27,160 --> 00:42:28,309 Actually, take two calls. 1178 00:42:28,310 --> 00:42:30,169 You don't have a certificate or something 1179 00:42:30,170 --> 00:42:32,749 like this. This inevitably 1180 00:42:32,750 --> 00:42:34,159 leads to road conflicts. 1181 00:42:34,160 --> 00:42:36,289 All you have someone that's just 1182 00:42:36,290 --> 00:42:38,529 got assigned to to 1183 00:42:38,530 --> 00:42:40,639 to. I should take and the 1184 00:42:40,640 --> 00:42:42,739 most this person becomes a bottleneck 1185 00:42:42,740 --> 00:42:44,119 because you don't do. 1186 00:42:44,120 --> 00:42:45,229 I should take it, and you still 1187 00:42:46,310 --> 00:42:49,189 doesn't care if he doesn't reach 1188 00:42:49,190 --> 00:42:51,259 a high enough level of 1189 00:42:51,260 --> 00:42:53,089 abstraction. It's not that you should 1190 00:42:53,090 --> 00:42:54,889 become an I should take trust note, but 1191 00:42:54,890 --> 00:42:57,379 you need some level of acceptance. 1192 00:42:57,380 --> 00:42:59,239 You do everything yourself you cannot do 1193 00:42:59,240 --> 00:43:01,909 actually teaching anymore. 1194 00:43:01,910 --> 00:43:04,189 So that usually works best. 1195 00:43:04,190 --> 00:43:06,019 If you want to make sure I should take 1196 00:43:06,020 --> 00:43:08,159 flight and accompany 1197 00:43:08,160 --> 00:43:11,089 you on the crew of us or make us, 1198 00:43:11,090 --> 00:43:13,339 you should definitely avoid 1199 00:43:13,340 --> 00:43:16,459 assigning architectural responsibility 1200 00:43:16,460 --> 00:43:17,899 by high ratio to. 1201 00:43:17,900 --> 00:43:19,969 I think this also will not happen in our 1202 00:43:19,970 --> 00:43:20,969 community. 1203 00:43:20,970 --> 00:43:23,299 Our community is quite immune 1204 00:43:23,300 --> 00:43:25,399 to that. So but what you 1205 00:43:25,400 --> 00:43:28,159 should if you watch it in your company, 1206 00:43:28,160 --> 00:43:31,219 look out architectural responsibility 1207 00:43:31,220 --> 00:43:33,379 very often very well 1208 00:43:33,380 --> 00:43:35,899 exist without expensive titles 1209 00:43:35,900 --> 00:43:38,599 of someone being and I should Typekit. 1210 00:43:38,600 --> 00:43:41,059 So let trust people grow into 1211 00:43:41,060 --> 00:43:43,519 the role. Experienced programmers 1212 00:43:43,520 --> 00:43:46,369 usually become architects 1213 00:43:46,370 --> 00:43:48,529 themselves. I don't have to teach 1214 00:43:48,530 --> 00:43:49,729 them anything anymore. 1215 00:43:49,730 --> 00:43:51,859 They do it intuitively, 1216 00:43:51,860 --> 00:43:53,959 right? So this is the same 1217 00:43:53,960 --> 00:43:56,149 thing. That responsibility 1218 00:43:56,150 --> 00:43:58,489 for us to picture comes to those 1219 00:43:58,490 --> 00:44:00,049 people who really care about you. 1220 00:44:00,050 --> 00:44:02,209 I should try not to you assign to 1221 00:44:02,210 --> 00:44:04,519 it. And if you 1222 00:44:04,520 --> 00:44:06,649 don't have and I should take show, 1223 00:44:07,700 --> 00:44:09,889 it can be shared by 1224 00:44:09,890 --> 00:44:10,879 a team. 1225 00:44:10,880 --> 00:44:12,979 So this is usually 1226 00:44:12,980 --> 00:44:15,319 you. This is totally doable 1227 00:44:15,320 --> 00:44:17,659 and development teams that you 1228 00:44:17,660 --> 00:44:19,729 can share the role 1229 00:44:19,730 --> 00:44:21,529 of the architecture between people 1230 00:44:21,530 --> 00:44:23,359 according to their skills. 1231 00:44:23,360 --> 00:44:25,579 Just go into a meeting and ask, 1232 00:44:25,580 --> 00:44:27,889 who can tell me something about 1233 00:44:27,890 --> 00:44:30,109 how the debt, 1234 00:44:30,110 --> 00:44:32,269 for instance, over the air updates on 1235 00:44:32,270 --> 00:44:34,579 all of our Ali describes so 1236 00:44:34,580 --> 00:44:36,649 and who comes up with answers to 1237 00:44:36,650 --> 00:44:38,239 kind of explain it? 1238 00:44:38,240 --> 00:44:40,309 So this is someone who might 1239 00:44:40,310 --> 00:44:41,569 have an I should. 1240 00:44:41,570 --> 00:44:42,570 Well, 1241 00:44:43,790 --> 00:44:45,979 so our times set up. 1242 00:44:45,980 --> 00:44:48,359 I'm sorry and sometimes late, and 1243 00:44:48,360 --> 00:44:51,109 we didn't cover 1244 00:44:51,110 --> 00:44:53,459 everything really well that I want 1245 00:44:53,460 --> 00:44:55,959 to cover. What we covered so far is only 1246 00:44:55,960 --> 00:44:58,069 the tough to stick to why it 1247 00:44:58,070 --> 00:45:00,229 matters a little bit of what 1248 00:45:00,230 --> 00:45:01,879 is good. I should take the and very 1249 00:45:01,880 --> 00:45:04,159 basics of architectural design. 1250 00:45:04,160 --> 00:45:05,779 There are a lot of more things to talk 1251 00:45:05,780 --> 00:45:07,999 about, like how do I 1252 00:45:08,000 --> 00:45:10,519 do a good decomposition and 1253 00:45:10,520 --> 00:45:11,539 components? 1254 00:45:11,540 --> 00:45:13,729 How do I separate concerns 1255 00:45:13,730 --> 00:45:16,369 for you? What do I do with cross-cutting 1256 00:45:16,370 --> 00:45:18,619 concerns? Documentation told you I find 1257 00:45:18,620 --> 00:45:20,809 my influence and practice on Sundays 1258 00:45:20,810 --> 00:45:22,939 is all of things that just didn't 1259 00:45:22,940 --> 00:45:24,589 fit into those formats. 1260 00:45:24,590 --> 00:45:26,899 I'm very, very sorry about this. 1261 00:45:26,900 --> 00:45:29,089 But anyway, we are at 1262 00:45:29,090 --> 00:45:30,800 the end of this talk and 1263 00:45:32,180 --> 00:45:34,459 thank you very, very much for 1264 00:45:34,460 --> 00:45:35,929 your time. 1265 00:45:35,930 --> 00:45:37,999 Big thanks you for your patience, and 1266 00:45:38,000 --> 00:45:39,769 I'm really looking forward for your 1267 00:45:39,770 --> 00:45:41,839 feedback and for your questions. 1268 00:45:41,840 --> 00:45:44,149 And maybe after the talk, we can also 1269 00:45:44,150 --> 00:45:46,909 meet Andy Coulson, 1270 00:45:46,910 --> 00:45:49,219 as he wrote, If you have any questions 1271 00:45:49,220 --> 00:45:51,499 or this council, or if you have 1272 00:45:51,500 --> 00:45:53,869 questions concerning just your project, 1273 00:45:53,870 --> 00:45:55,999 I'm very fond of looking 1274 00:45:56,000 --> 00:45:58,249 in the architectural problems 1275 00:45:58,250 --> 00:46:00,359 you run into to talk about this, 1276 00:46:00,360 --> 00:46:02,569 to find out what you 1277 00:46:02,570 --> 00:46:04,699 did or what your problems were. 1278 00:46:04,700 --> 00:46:06,799 And how do you do you make it work 1279 00:46:06,800 --> 00:46:08,899 because of being a good 1280 00:46:08,900 --> 00:46:10,939 I should. It means always to learn 1281 00:46:10,940 --> 00:46:12,559 something from people who do. 1282 00:46:12,560 --> 00:46:13,969 I should correct. 1283 00:46:13,970 --> 00:46:15,590 Thank you very much, and 1284 00:46:16,760 --> 00:46:18,979 I'm looking forward to 1285 00:46:18,980 --> 00:46:19,980 your questions. 1286 00:46:23,330 --> 00:46:25,189 So they have a little delay here in the 1287 00:46:25,190 --> 00:46:26,479 stream, I think. 1288 00:46:26,480 --> 00:46:29,389 No, I think we're on my 1289 00:46:29,390 --> 00:46:30,399 dear Harold. 1290 00:46:30,400 --> 00:46:31,579 You Shenfield. 1291 00:46:34,300 --> 00:46:35,710 Well, here I am. 1292 00:46:37,870 --> 00:46:39,369 I mean, I know. 1293 00:46:39,370 --> 00:46:40,269 Great. 1294 00:46:40,270 --> 00:46:42,399 So we may not have 1295 00:46:42,400 --> 00:46:44,919 the time for each and every question 1296 00:46:44,920 --> 00:46:47,379 asked, but let's pick out some 1297 00:46:47,380 --> 00:46:48,380 of them. 1298 00:46:48,880 --> 00:46:51,639 Most important, and of those we'll 1299 00:46:51,640 --> 00:46:53,649 get into time, I think goes to the 1300 00:46:53,650 --> 00:46:54,699 internet later on. 1301 00:46:54,700 --> 00:46:56,829 And yes, of course, I will give 1302 00:46:56,830 --> 00:46:59,199 you the I give you all the 1303 00:46:59,200 --> 00:47:00,249 answers. 1304 00:47:00,250 --> 00:47:02,739 And after the talk, 1305 00:47:02,740 --> 00:47:04,959 so softer, our protectors are like 1306 00:47:04,960 --> 00:47:06,069 knots and seafaring. 1307 00:47:06,070 --> 00:47:08,259 They help. The one who is responsible 1308 00:47:08,260 --> 00:47:10,449 for openings are not to 1309 00:47:10,450 --> 00:47:13,229 be able to open it as if they'll 1310 00:47:13,230 --> 00:47:15,369 that if they are, well, not until he 1311 00:47:15,370 --> 00:47:17,439 knows how to hold 1312 00:47:17,440 --> 00:47:19,150 the one who threw the knot did it. 1313 00:47:20,770 --> 00:47:23,289 So our software architecture is known 1314 00:47:23,290 --> 00:47:25,509 and present in the standardization 1315 00:47:25,510 --> 00:47:27,069 like it in the Sun? 1316 00:47:27,070 --> 00:47:29,319 I saw how you see a Triple E, rf 1317 00:47:29,320 --> 00:47:31,329 c and you name it. 1318 00:47:31,330 --> 00:47:33,579 And which one is the 1319 00:47:33,580 --> 00:47:36,039 standardization organization for software 1320 00:47:36,040 --> 00:47:37,040 architecture? 1321 00:47:38,420 --> 00:47:40,210 A standardization? 1322 00:47:42,460 --> 00:47:44,739 I Triple E cares about 1323 00:47:44,740 --> 00:47:47,619 software. I should take truck, but 1324 00:47:47,620 --> 00:47:49,539 I took that. He cares about software. 1325 00:47:49,540 --> 00:47:51,639 I should take in the sense that it 1326 00:47:51,640 --> 00:47:53,559 treats as a subset of system. 1327 00:47:53,560 --> 00:47:55,719 I should picture if you look at how 1328 00:47:55,720 --> 00:47:58,479 the ISO and I Triple E standards 1329 00:47:58,480 --> 00:48:00,549 changed over 1330 00:48:00,550 --> 00:48:03,249 the recent years, Devils 1331 00:48:03,250 --> 00:48:05,229 studio spectacle still a definition of 1332 00:48:05,230 --> 00:48:06,189 software I should take. 1333 00:48:06,190 --> 00:48:08,349 So no, there's only a definition 1334 00:48:08,350 --> 00:48:10,179 of system I should take, which was 1335 00:48:10,180 --> 00:48:12,279 completely OK because of 1336 00:48:12,280 --> 00:48:14,409 software I should take to basically 1337 00:48:14,410 --> 00:48:16,569 this system. I should take training for 1338 00:48:16,570 --> 00:48:18,729 two systems so 1339 00:48:18,730 --> 00:48:21,579 I can't talk about other standardization 1340 00:48:21,580 --> 00:48:22,509 organizations. 1341 00:48:22,510 --> 00:48:24,489 How she takes are involved. 1342 00:48:26,410 --> 00:48:29,229 There are organizations 1343 00:48:29,230 --> 00:48:31,479 that care about the knowledge 1344 00:48:31,480 --> 00:48:33,939 of software architecture. 1345 00:48:33,940 --> 00:48:36,039 I don't want to make any 1346 00:48:36,040 --> 00:48:38,109 recommendations here, but 1347 00:48:38,110 --> 00:48:39,519 out of 1348 00:48:41,350 --> 00:48:43,419 there isn't a very, very 1349 00:48:43,420 --> 00:48:45,969 active software architecture 1350 00:48:45,970 --> 00:48:48,639 community of, um, 1351 00:48:48,640 --> 00:48:50,709 in my opinion, very, very clever and 1352 00:48:50,710 --> 00:48:52,959 very, very excellent people 1353 00:48:52,960 --> 00:48:55,209 here in Germany, Austria and Switzerland 1354 00:48:55,210 --> 00:48:57,489 and Europe. And also there are a lot 1355 00:48:57,490 --> 00:49:00,519 of outstanding individuals 1356 00:49:00,520 --> 00:49:02,949 in other parts of the 1357 00:49:02,950 --> 00:49:05,199 world for good offers and who care about 1358 00:49:05,200 --> 00:49:05,559 software. 1359 00:49:05,560 --> 00:49:07,719 I stick to, but I cannot say 1360 00:49:07,720 --> 00:49:10,539 anything about the involvement 1361 00:49:10,540 --> 00:49:12,879 or evaded work together with standard or 1362 00:49:12,880 --> 00:49:15,459 standardization organizations to trust 1363 00:49:15,460 --> 00:49:16,959 the thing. 1364 00:49:16,960 --> 00:49:19,149 I know things about that 1365 00:49:19,150 --> 00:49:21,729 sponsor somehow or like the grassroots 1366 00:49:21,730 --> 00:49:24,169 standardization ripe and the beginnings 1367 00:49:24,170 --> 00:49:25,929 of the internet, maybe. 1368 00:49:25,930 --> 00:49:27,909 But the problems you have with the 1369 00:49:27,910 --> 00:49:30,379 standardization and stuff for some terms 1370 00:49:30,380 --> 00:49:32,559 which don't even have the standardization 1371 00:49:32,560 --> 00:49:35,049 of people, talk about the interface, 1372 00:49:35,050 --> 00:49:36,999 they can talk about the contact between 1373 00:49:37,000 --> 00:49:38,589 component, they can talk about the 1374 00:49:38,590 --> 00:49:40,659 implementation architecture, can talk 1375 00:49:40,660 --> 00:49:42,939 about the interface of as a kind 1376 00:49:42,940 --> 00:49:43,839 of abstraction. 1377 00:49:43,840 --> 00:49:46,379 So yes, standardization like 1378 00:49:46,380 --> 00:49:48,669 the Facebook 1379 00:49:48,670 --> 00:49:50,259 or something like just for software 1380 00:49:50,260 --> 00:49:51,549 engineering would be good. 1381 00:49:51,550 --> 00:49:54,619 I completely agree with that. 1382 00:49:54,620 --> 00:49:55,620 So that was 1383 00:49:56,830 --> 00:49:58,599 optimal for the next answer. 1384 00:49:58,600 --> 00:50:00,579 How does a software architecture interact 1385 00:50:00,580 --> 00:50:02,109 with the systems architecture you 1386 00:50:02,110 --> 00:50:03,519 mentioned right now? 1387 00:50:03,520 --> 00:50:05,259 And how does a software architecture 1388 00:50:05,260 --> 00:50:07,659 reach into a DSM to Fuze 1389 00:50:07,660 --> 00:50:09,849 like hardware, firmware, licensing and 1390 00:50:09,850 --> 00:50:11,679 so on? And how do they communicate in the 1391 00:50:11,680 --> 00:50:12,680 optimal case? 1392 00:50:13,780 --> 00:50:15,789 So, so those are two questions that I 1393 00:50:15,790 --> 00:50:17,559 told the software I should take to 1394 00:50:17,560 --> 00:50:19,389 interact with systems I should picture. 1395 00:50:20,950 --> 00:50:22,690 Software architecture 1396 00:50:23,800 --> 00:50:26,769 is a part of systems architecture. 1397 00:50:26,770 --> 00:50:29,319 Then your system has substantial 1398 00:50:29,320 --> 00:50:31,509 software parts in it, then your 1399 00:50:31,510 --> 00:50:33,399 software. I should take it as a part of 1400 00:50:33,400 --> 00:50:35,949 the system. I strongly interact 1401 00:50:35,950 --> 00:50:38,259 because you have a lot of dependency, 1402 00:50:38,260 --> 00:50:41,109 because quality and capabilities 1403 00:50:41,110 --> 00:50:43,749 of the system to build inference 1404 00:50:43,750 --> 00:50:46,029 requirements and constraints 1405 00:50:46,030 --> 00:50:48,099 of your architecture. 1406 00:50:48,100 --> 00:50:50,379 So and it's not only our 1407 00:50:50,380 --> 00:50:53,019 entire system I should take to interacts 1408 00:50:53,020 --> 00:50:55,179 with other architectures as 1409 00:50:55,180 --> 00:50:57,339 well, like information I should take to 1410 00:50:57,340 --> 00:50:59,589 all the business architecture 1411 00:50:59,590 --> 00:51:01,809 for enterprise and also into 1412 00:51:01,810 --> 00:51:04,329 the top I should take to certain 1413 00:51:04,330 --> 00:51:06,399 software doesn't work well on 1414 00:51:06,400 --> 00:51:08,589 a single threaded process, for instance, 1415 00:51:08,590 --> 00:51:10,499 that I saw. 1416 00:51:10,500 --> 00:51:11,679 So you want to have some? 1417 00:51:11,680 --> 00:51:14,319 I should take true separation 1418 00:51:14,320 --> 00:51:15,039 here. 1419 00:51:15,040 --> 00:51:16,040 So. 1420 00:51:17,490 --> 00:51:19,859 If you can think about softer 1421 00:51:19,860 --> 00:51:22,019 as you take two, then you probably are. 1422 00:51:22,020 --> 00:51:24,329 We really, really got about can also 1423 00:51:24,330 --> 00:51:25,349 think about system. 1424 00:51:25,350 --> 00:51:27,299 I should take two and vice versa. 1425 00:51:27,300 --> 00:51:29,139 The application domain is a bit different 1426 00:51:29,140 --> 00:51:31,379 to have to have more domain knowledge 1427 00:51:31,380 --> 00:51:33,419 for systems like structure because you 1428 00:51:33,420 --> 00:51:35,829 might have to divert 1429 00:51:35,830 --> 00:51:37,769 a or something like this. 1430 00:51:37,770 --> 00:51:39,569 So that's just the second part of the 1431 00:51:39,570 --> 00:51:42,000 question is how to 1432 00:51:44,250 --> 00:51:46,829 involve people to communicate 1433 00:51:46,830 --> 00:51:48,209 and the optimal case. 1434 00:51:48,210 --> 00:51:50,130 I think that's what the optimum case 1435 00:51:53,070 --> 00:51:55,049 like, maybe in the requirements, 1436 00:51:55,050 --> 00:51:56,130 documents or whatever 1437 00:52:00,090 --> 00:52:01,889 their thing is. What is your optimal 1438 00:52:01,890 --> 00:52:04,109 choice of optimal 1439 00:52:04,110 --> 00:52:06,359 chase us as the framework 1440 00:52:06,360 --> 00:52:07,379 side in the end, 1441 00:52:09,210 --> 00:52:11,909 what what your optimal case depends 1442 00:52:11,910 --> 00:52:14,039 on the resources to 1443 00:52:14,040 --> 00:52:16,109 have the distribution of your team 1444 00:52:16,110 --> 00:52:17,110 and so on. 1445 00:52:18,600 --> 00:52:21,239 It's probably a 1446 00:52:21,240 --> 00:52:23,489 good or in the past we 1447 00:52:23,490 --> 00:52:25,859 had a separation of concerns 1448 00:52:25,860 --> 00:52:26,759 by teams. 1449 00:52:26,760 --> 00:52:29,159 You had teams that were responsible 1450 00:52:29,160 --> 00:52:30,299 for hardware. 1451 00:52:30,300 --> 00:52:32,399 You had teams that were responsible for 1452 00:52:32,400 --> 00:52:34,289 front end and people or something 1453 00:52:34,290 --> 00:52:36,509 developers, backend developers and so 1454 00:52:36,510 --> 00:52:37,529 on. 1455 00:52:37,530 --> 00:52:40,109 This usually doesn't work. 1456 00:52:40,110 --> 00:52:41,280 It can work. But 1457 00:52:42,390 --> 00:52:44,339 what works better is to have 1458 00:52:44,340 --> 00:52:46,649 cross-functional teams to 1459 00:52:46,650 --> 00:52:49,259 involve other stakeholders 1460 00:52:49,260 --> 00:52:51,329 in your decision making to 1461 00:52:51,330 --> 00:52:52,349 a certain point. 1462 00:52:52,350 --> 00:52:54,269 You cannot have them all in your 1463 00:52:54,270 --> 00:52:56,489 decision, but 1464 00:52:56,490 --> 00:52:58,679 it also has to do with 1465 00:52:58,680 --> 00:53:00,779 Congress law because the 1466 00:53:00,780 --> 00:53:03,299 system you the structure of your system, 1467 00:53:03,300 --> 00:53:05,759 of the system, your built, 1468 00:53:05,760 --> 00:53:07,919 but the logic of 1469 00:53:07,920 --> 00:53:09,959 the structure of the system you build. 1470 00:53:11,360 --> 00:53:13,549 This also defined by 1471 00:53:13,550 --> 00:53:16,249 the structure of your development, 1472 00:53:16,250 --> 00:53:18,589 this happens inevitably. 1473 00:53:18,590 --> 00:53:21,529 So if you have a strong separation 1474 00:53:21,530 --> 00:53:23,809 between those teams, then 1475 00:53:23,810 --> 00:53:26,029 through automatically your 1476 00:53:26,030 --> 00:53:28,489 system develops an interface 1477 00:53:28,490 --> 00:53:30,739 on the boundary of your team, which 1478 00:53:30,740 --> 00:53:33,199 is how to change would cause 1479 00:53:33,200 --> 00:53:35,649 a lot of effort to change. 1480 00:53:35,650 --> 00:53:36,650 So 1481 00:53:38,870 --> 00:53:41,749 if you want to have optimal 1482 00:53:41,750 --> 00:53:44,389 communication between, 1483 00:53:44,390 --> 00:53:46,969 let's say, systems architect 1484 00:53:46,970 --> 00:53:49,219 and software actually to 1485 00:53:49,220 --> 00:53:51,799 then point a 1486 00:53:51,800 --> 00:53:54,019 show, right, a lot of documentation, 1487 00:53:54,020 --> 00:53:56,599 but before divide a lot of documentation, 1488 00:53:56,600 --> 00:53:58,819 they should talk with each other and find 1489 00:53:58,820 --> 00:54:00,499 out what information the other 1490 00:54:00,500 --> 00:54:02,689 stakeholders needs and 1491 00:54:02,690 --> 00:54:05,239 what the tradeoffs of explain 1492 00:54:05,240 --> 00:54:06,260 their tradeoffs to the. 1493 00:54:09,020 --> 00:54:11,179 So one big 1494 00:54:12,350 --> 00:54:14,439 elephant in the room, I 1495 00:54:14,440 --> 00:54:16,759 think coming out of the coming 1496 00:54:16,760 --> 00:54:18,829 architectural patterns is that everybody 1497 00:54:18,830 --> 00:54:19,830 should know. 1498 00:54:21,640 --> 00:54:23,949 I'm b we had 1499 00:54:23,950 --> 00:54:24,950 a. 1500 00:54:26,290 --> 00:54:28,449 This is really a big elephant, 1501 00:54:28,450 --> 00:54:30,849 and this is not a new distraction. 1502 00:54:30,850 --> 00:54:32,039 Six minutes for that elephant 1503 00:54:34,090 --> 00:54:36,339 is humongous elephant. 1504 00:54:36,340 --> 00:54:37,340 The thing is, 1505 00:54:39,130 --> 00:54:41,289 what pattern you 1506 00:54:41,290 --> 00:54:43,479 need depends on the system 1507 00:54:43,480 --> 00:54:45,969 you built and on what level 1508 00:54:45,970 --> 00:54:47,019 you operate. 1509 00:54:47,020 --> 00:54:49,389 You should as a developer, 1510 00:54:49,390 --> 00:54:51,699 you should definitely know, 1511 00:54:51,700 --> 00:54:54,189 have the gang of four 1512 00:54:54,190 --> 00:54:56,080 to design patterns laying around 1513 00:54:57,250 --> 00:54:59,439 because it helps who there's 1514 00:54:59,440 --> 00:55:01,539 a lot of implementation 1515 00:55:01,540 --> 00:55:02,920 and the same problems 1516 00:55:03,970 --> 00:55:06,339 and coding deficiencies. 1517 00:55:06,340 --> 00:55:08,529 Architectural patterns really 1518 00:55:08,530 --> 00:55:10,419 depend on what type of system you're 1519 00:55:10,420 --> 00:55:12,489 built in the software 1520 00:55:12,490 --> 00:55:14,169 agitator community. 1521 00:55:14,170 --> 00:55:15,669 You had a lot of discussion that 1522 00:55:15,670 --> 00:55:18,609 threatens to include in our curriculum. 1523 00:55:18,610 --> 00:55:20,979 And what we ended 1524 00:55:20,980 --> 00:55:23,109 up with was taking out most of 1525 00:55:23,110 --> 00:55:25,749 the pet on safety because 1526 00:55:25,750 --> 00:55:27,879 if we want one, we came up with 1527 00:55:27,880 --> 00:55:30,279 a list of 30 patents or something. 1528 00:55:30,280 --> 00:55:32,649 And most of these patents 1529 00:55:32,650 --> 00:55:35,319 didn't work for the other 1530 00:55:35,320 --> 00:55:37,059 people training I should take. 1531 00:55:37,060 --> 00:55:39,249 And so what we 1532 00:55:39,250 --> 00:55:40,839 kept doing what there. 1533 00:55:40,840 --> 00:55:43,509 I think layers, microservices, 1534 00:55:43,510 --> 00:55:45,019 pipes and filters. 1535 00:55:45,020 --> 00:55:47,379 And some folks one 1536 00:55:47,380 --> 00:55:49,479 does this idea of the must have 1537 00:55:49,480 --> 00:55:51,609 done but must know only because 1538 00:55:51,610 --> 00:55:53,889 they are relevant for for 1539 00:55:53,890 --> 00:55:55,899 for for the training, not because they 1540 00:55:55,900 --> 00:55:57,989 are really relevant for the person 1541 00:55:57,990 --> 00:55:59,709 using them in practice. 1542 00:55:59,710 --> 00:56:01,989 So what the what 1543 00:56:01,990 --> 00:56:04,149 I can offer, the person who had this 1544 00:56:04,150 --> 00:56:06,369 question is that you meet up later on and 1545 00:56:06,370 --> 00:56:08,439 find out what kind of systems 1546 00:56:08,440 --> 00:56:10,869 he or she looks on and what patterns 1547 00:56:10,870 --> 00:56:12,849 might be relevant to pose a little 1548 00:56:12,850 --> 00:56:13,850 literature issue. 1549 00:56:14,840 --> 00:56:17,649 So, for instance, distributed 1550 00:56:17,650 --> 00:56:20,019 into different looks 1551 00:56:20,020 --> 00:56:22,299 depending on 1552 00:56:22,300 --> 00:56:24,609 what kind of software you build. 1553 00:56:24,610 --> 00:56:26,319 For instance, if you have a distributed 1554 00:56:26,320 --> 00:56:28,359 system, then you usually have other 1555 00:56:28,360 --> 00:56:30,639 patterns and then you have a monolithic 1556 00:56:30,640 --> 00:56:33,609 system and you have a very, very 1557 00:56:33,610 --> 00:56:35,319 system that's very close to your heart 1558 00:56:35,320 --> 00:56:36,820 that, well, 1559 00:56:39,850 --> 00:56:41,319 maybe we understand that's right now. 1560 00:56:41,320 --> 00:56:44,109 Is there any literature that 1561 00:56:44,110 --> 00:56:46,479 should read? And I think that's almost 1562 00:56:46,480 --> 00:56:48,549 our last question to ask for a 1563 00:56:48,550 --> 00:56:49,839 next part. 1564 00:56:49,840 --> 00:56:51,669 Maybe next time, 1565 00:56:54,280 --> 00:56:57,159 OK, recommending literature 1566 00:56:57,160 --> 00:56:58,389 of it's a bit difficult 1567 00:56:59,530 --> 00:57:03,159 if I should only recommend 1568 00:57:03,160 --> 00:57:04,160 one 1569 00:57:05,440 --> 00:57:06,549 book. 1570 00:57:06,550 --> 00:57:09,639 If you have only a few 1571 00:57:09,640 --> 00:57:11,879 good books on, I should take 1572 00:57:11,880 --> 00:57:14,349 if if it's a German speaking person, 1573 00:57:14,350 --> 00:57:15,430 I would recommend 1574 00:57:16,690 --> 00:57:18,429 one book by going on strike. 1575 00:57:18,430 --> 00:57:19,430 For instance, 1576 00:57:20,680 --> 00:57:22,869 if it's for the English community, 1577 00:57:22,870 --> 00:57:25,959 the most modern and most comprehensive, 1578 00:57:25,960 --> 00:57:28,089 and the latest and most by 1579 00:57:28,090 --> 00:57:30,069 my good trips. And you thought you 1580 00:57:30,070 --> 00:57:32,229 fundamentals of software architecture and 1581 00:57:32,230 --> 00:57:34,509 engineering approach, which is from 1582 00:57:34,510 --> 00:57:36,639 2020, but just fired up to 1583 00:57:36,640 --> 00:57:38,829 date and if 1584 00:57:38,830 --> 00:57:41,409 efficiency talks of Richard and 1585 00:57:41,410 --> 00:57:43,749 Ford. They always were at the time, they 1586 00:57:43,750 --> 00:57:45,579 you do my stuff. 1587 00:57:45,580 --> 00:57:48,399 They also did a new book Just Here 1588 00:57:48,400 --> 00:57:50,829 on modern trade off analysis, 1589 00:57:50,830 --> 00:57:52,899 which I didn't read, 1590 00:57:52,900 --> 00:57:55,149 but I went to the workshop 1591 00:57:55,150 --> 00:57:57,309 they had for this book before it 1592 00:57:57,310 --> 00:57:59,499 went out. And this is more for 1593 00:57:59,500 --> 00:58:01,809 those people, the distributed systems 1594 00:58:01,810 --> 00:58:03,869 for things about service oriented 1595 00:58:03,870 --> 00:58:06,039 architecture. So it might not apply 1596 00:58:06,040 --> 00:58:08,130 to people coming from all 1597 00:58:09,400 --> 00:58:11,349 embedded systems and so on. 1598 00:58:11,350 --> 00:58:13,359 But the fundamentals of software 1599 00:58:13,360 --> 00:58:14,709 structure was quite good. 1600 00:58:14,710 --> 00:58:16,869 Simon Brown has a good folks of 1601 00:58:16,870 --> 00:58:20,229 software architecture for developers. 1602 00:58:20,230 --> 00:58:21,909 There are sensitive. 1603 00:58:21,910 --> 00:58:23,649 Books are good. 1604 00:58:23,650 --> 00:58:26,259 Of course, they are a bit older, like 1605 00:58:26,260 --> 00:58:28,359 Boss Clements and Kazman. 1606 00:58:28,360 --> 00:58:30,699 They are also a bit older, 1607 00:58:30,700 --> 00:58:32,829 those folks. But this should 1608 00:58:32,830 --> 00:58:34,659 get you covered and the most important 1609 00:58:34,660 --> 00:58:35,889 and to any good. 1610 00:58:35,890 --> 00:58:38,289 Also, I didn't mention jokes. 1611 00:58:38,290 --> 00:58:40,759 It's really difficult to comment 1612 00:58:40,760 --> 00:58:42,889 on cookbooks, although 1613 00:58:42,890 --> 00:58:44,290 stepping on anyone's toes.