1 00:00:06,600 --> 00:00:09,820 - Welcome to the Ultimate Go Programming live lessons, 2 00:00:09,820 --> 00:00:13,770 second edition, yes it's the second time we're here 3 00:00:13,770 --> 00:00:15,140 and if you've seen the first edition, 4 00:00:15,140 --> 00:00:17,870 there's a lot more going on here. 5 00:00:17,870 --> 00:00:21,460 My name is Bill Kennedy, I am a trainer in the Go space, 6 00:00:21,460 --> 00:00:24,180 I've been training companies for over four years, 7 00:00:24,180 --> 00:00:27,340 hundreds of companies and thousands of developers. 8 00:00:27,340 --> 00:00:30,530 And this class is really about somebody who wants 9 00:00:30,530 --> 00:00:33,270 to learn this language inside and out. 10 00:00:33,270 --> 00:00:36,100 I assume that you're already a software developer, 11 00:00:36,100 --> 00:00:38,490 I'm not gonna be teaching you basic syntax, 12 00:00:38,490 --> 00:00:40,580 I'm gonna be teaching what you need to know, 13 00:00:40,580 --> 00:00:43,340 the history, the mechanics, and the semantics 14 00:00:43,340 --> 00:00:46,470 of this language so you can learn how to read code 15 00:00:46,470 --> 00:00:49,730 and leverage Go's tooling like never before. 16 00:00:49,730 --> 00:00:53,130 So in this video, we've got lots of lessons 17 00:00:53,130 --> 00:00:56,510 and I really, really need you to start from lesson one. 18 00:00:56,510 --> 00:01:00,644 Please don't skip around, I build layers of foundation 19 00:01:00,644 --> 00:01:02,180 that are gonna be very important 20 00:01:02,180 --> 00:01:04,050 for you from beginning to end. 21 00:01:04,050 --> 00:01:06,370 So we're gonna start with like design guidelines, 22 00:01:06,370 --> 00:01:09,900 I've gotta get your mind in place for what Go is, 23 00:01:09,900 --> 00:01:11,820 where Go is trying to take you, 24 00:01:11,820 --> 00:01:13,110 so you can appreciate everything 25 00:01:13,110 --> 00:01:15,060 I'm gonna show you moving forward. 26 00:01:15,060 --> 00:01:17,410 And we are gonna talk about language syntax, 27 00:01:17,410 --> 00:01:19,760 and a lot of the language syntax we talk about 28 00:01:19,760 --> 00:01:22,820 will revolve around, again, the history of the language, 29 00:01:22,820 --> 00:01:25,930 the mechanics, how things work, the semantics, 30 00:01:25,930 --> 00:01:29,300 how things behave, this is so important. 31 00:01:29,300 --> 00:01:31,170 So we're not just gonna be, we're not gonna really be 32 00:01:31,170 --> 00:01:32,940 talking about syntax like you think, 33 00:01:32,940 --> 00:01:35,390 I'm not gonna teach if statements and for statements, 34 00:01:35,390 --> 00:01:37,340 I'm gonna teach you the semantics about these things 35 00:01:37,340 --> 00:01:40,240 that are unique or very important in Go. 36 00:01:40,240 --> 00:01:42,910 Our data structures, our arrays, our slices, and our maps, 37 00:01:42,910 --> 00:01:44,430 our core data structures in Go. 38 00:01:44,430 --> 00:01:45,820 I'm not gonna just teach you how to use em, 39 00:01:45,820 --> 00:01:47,640 I'm gonna teach you why they're there, 40 00:01:47,640 --> 00:01:49,297 why Go only has these data structures, 41 00:01:49,297 --> 00:01:51,370 and the mechanical sympathies, 42 00:01:51,370 --> 00:01:55,240 and the data oriented design aspects behind it. 43 00:01:55,240 --> 00:01:57,120 Now we always gotta learn decoupling, right? 44 00:01:57,120 --> 00:01:58,810 We're gonna learn how to work in the concrete, 45 00:01:58,810 --> 00:02:00,660 our performance comes from the concrete, 46 00:02:00,660 --> 00:02:02,610 so our data structures, our language syntaxes, 47 00:02:02,610 --> 00:02:04,290 but decoupling is key. 48 00:02:04,290 --> 00:02:05,420 Gotta be able to minimize those 49 00:02:05,420 --> 00:02:07,620 cascading changes throughout a code base. 50 00:02:07,620 --> 00:02:09,810 So we're gonna learn the mechanics behind decoupling, 51 00:02:09,810 --> 00:02:11,510 the cost of decoupling, 52 00:02:11,510 --> 00:02:13,290 and a lot of the semantics there as well. 53 00:02:13,290 --> 00:02:15,820 And we're gonna get into design, so we've done that, 54 00:02:15,820 --> 00:02:17,310 we've learned that, now we get into design, 55 00:02:17,310 --> 00:02:21,010 we learn how to leverage the beauty of composition in Go. 56 00:02:21,010 --> 00:02:23,630 We're gonna start to design our software 57 00:02:23,630 --> 00:02:26,780 from the concrete up through the use of composition. 58 00:02:26,780 --> 00:02:28,030 Error handling is everything. 59 00:02:28,030 --> 00:02:30,640 We're gonna learn how important integrity is in Go, 60 00:02:30,640 --> 00:02:32,820 and that error handling piece is gonna teach us 61 00:02:32,820 --> 00:02:35,070 how to write API's that respect 62 00:02:35,070 --> 00:02:38,050 the people who are using our API's, 63 00:02:38,050 --> 00:02:39,890 we're gonna respect and give people 64 00:02:39,890 --> 00:02:42,410 enough context to make informed decisions. 65 00:02:42,410 --> 00:02:45,590 Now I see a lot of companies lacking on the idea 66 00:02:45,590 --> 00:02:47,050 of package during a design. 67 00:02:47,050 --> 00:02:48,840 How do we structure projects in Go? 68 00:02:48,840 --> 00:02:50,120 How do we design packages? 69 00:02:50,120 --> 00:02:52,610 We're gonna talk about that from a design standpoint. 70 00:02:52,610 --> 00:02:53,540 I'm gonna try to give you as much 71 00:02:53,540 --> 00:02:56,300 guidelines as I can around packaging. 72 00:02:56,300 --> 00:02:58,130 Then we're gonna move into the concurrency, 73 00:02:58,130 --> 00:03:00,273 which is where you're probably gonna wanna try to start. 74 00:03:00,273 --> 00:03:02,925 I'm gonna try to hold you off again throughout the class. 75 00:03:02,925 --> 00:03:06,060 Start from the beginning, get to the concurrency sections 76 00:03:06,060 --> 00:03:08,060 when they come up because we're gonna be using 77 00:03:08,060 --> 00:03:10,720 a lot of what we learned as we move in there. 78 00:03:10,720 --> 00:03:12,040 So I'm gonna teach you Goroutines 79 00:03:12,040 --> 00:03:13,440 and how to manage Goroutines 80 00:03:13,440 --> 00:03:16,010 and how to deal with synchronization and orchestration, 81 00:03:16,010 --> 00:03:18,020 especially when we get into data races. 82 00:03:18,020 --> 00:03:21,220 We'll talk a lot about synchronization 83 00:03:21,220 --> 00:03:23,940 in our data race lessons and then channels, 84 00:03:23,940 --> 00:03:27,010 we come back and start talking about orchestration. 85 00:03:27,010 --> 00:03:30,800 So all of this concurrency stuff including special patterns 86 00:03:30,800 --> 00:03:33,740 that are gonna help you really summarize all of this stuff 87 00:03:33,740 --> 00:03:35,750 and show you the real power of Go. 88 00:03:35,750 --> 00:03:37,750 And once we get through all the concurrency stuff, 89 00:03:37,750 --> 00:03:40,100 I'll show you how testing works in Go, 90 00:03:40,100 --> 00:03:42,320 unit tests, sub test, mocking, 91 00:03:42,320 --> 00:03:43,880 I'll show you all of that stuff. 92 00:03:43,880 --> 00:03:46,660 I'll show you how cool benchmarking is in Go 93 00:03:46,660 --> 00:03:48,470 with some basic benchmarking there, 94 00:03:48,470 --> 00:03:51,390 validating what you're doing in terms of benchmarking, 95 00:03:51,390 --> 00:03:53,490 and then we're gonna have a ton of fun 96 00:03:53,490 --> 00:03:56,170 learning how to do profiling and tracing. 97 00:03:56,170 --> 00:03:58,570 Every single lesson there I've just mentioned, 98 00:03:58,570 --> 00:04:01,971 sits on top of the other, so really take the time 99 00:04:01,971 --> 00:04:04,845 from beginning to end to walk through this material, 100 00:04:04,845 --> 00:04:08,040 there's a lot here, a lot here, 101 00:04:08,040 --> 00:04:11,080 I normally teach this material over three days 102 00:04:11,080 --> 00:04:14,580 and you get the opportunity to sit there in your home, 103 00:04:14,580 --> 00:04:17,950 wherever you are, and take your time to learn this stuff. 104 00:04:17,950 --> 00:04:19,460 It's going to be very valuable for you 105 00:04:19,460 --> 00:04:22,260 if you're really looking to be a high-level 106 00:04:22,260 --> 00:04:24,950 performance oriented Go developer. 107 00:04:24,950 --> 00:04:27,400 All right, that's everything, so let's get going.