- Welcome to the Ultimate Go Programming live lessons,
second edition, yes it's the second time we're here
and if you've seen the first edition,
there's a lot more going on here.
My name is Bill Kennedy, I am a trainer in the Go space,
I've been training companies for over four years,
hundreds of companies and thousands of developers.
And this class is really about somebody who wants
to learn this language inside and out.
I assume that you're already a software developer,
I'm not gonna be teaching you basic syntax,
I'm gonna be teaching what you need to know,
the history, the mechanics, and the semantics
of this language so you can learn how to read code
and leverage Go's tooling like never before.
So in this video, we've got lots of lessons
and I really, really need you to start from lesson one.
Please don't skip around, I build layers of foundation
that are gonna be very important
for you from beginning to end.
So we're gonna start with like design guidelines,
I've gotta get your mind in place for what Go is,
where Go is trying to take you,
so you can appreciate everything
I'm gonna show you moving forward.
And we are gonna talk about language syntax,
and a lot of the language syntax we talk about
will revolve around, again, the history of the language,
the mechanics, how things work, the semantics,
how things behave, this is so important.
So we're not just gonna be, we're not gonna really be
talking about syntax like you think,
I'm not gonna teach if statements and for statements,
I'm gonna teach you the semantics about these things
that are unique or very important in Go.
Our data structures, our arrays, our slices, and our maps,
our core data structures in Go.
I'm not gonna just teach you how to use em,
I'm gonna teach you why they're there,
why Go only has these data structures,
and the mechanical sympathies,
and the data oriented design aspects behind it.
Now we always gotta learn decoupling, right?
We're gonna learn how to work in the concrete,
our performance comes from the concrete,
so our data structures, our language syntaxes,
but decoupling is key.
Gotta be able to minimize those
cascading changes throughout a code base.
So we're gonna learn the mechanics behind decoupling,
the cost of decoupling,
and a lot of the semantics there as well.
And we're gonna get into design, so we've done that,
we've learned that, now we get into design,
we learn how to leverage the beauty of composition in Go.
We're gonna start to design our software
from the concrete up through the use of composition.
Error handling is everything.
We're gonna learn how important integrity is in Go,
and that error handling piece is gonna teach us
how to write API's that respect
the people who are using our API's,
we're gonna respect and give people
enough context to make informed decisions.
Now I see a lot of companies lacking on the idea
of package during a design.
How do we structure projects in Go?
How do we design packages?
We're gonna talk about that from a design standpoint.
I'm gonna try to give you as much
guidelines as I can around packaging.
Then we're gonna move into the concurrency,
which is where you're probably gonna wanna try to start.
I'm gonna try to hold you off again throughout the class.
Start from the beginning, get to the concurrency sections
when they come up because we're gonna be using
a lot of what we learned as we move in there.
So I'm gonna teach you Goroutines
and how to manage Goroutines
and how to deal with synchronization and orchestration,
especially when we get into data races.
We'll talk a lot about synchronization
in our data race lessons and then channels,
we come back and start talking about orchestration.
So all of this concurrency stuff including special patterns
that are gonna help you really summarize all of this stuff
and show you the real power of Go.
And once we get through all the concurrency stuff,
I'll show you how testing works in Go,
unit tests, sub test, mocking,
I'll show you all of that stuff.
I'll show you how cool benchmarking is in Go
with some basic benchmarking there,
validating what you're doing in terms of benchmarking,
and then we're gonna have a ton of fun
learning how to do profiling and tracing.
Every single lesson there I've just mentioned,
sits on top of the other, so really take the time
from beginning to end to walk through this material,
there's a lot here, a lot here,
I normally teach this material over three days
and you get the opportunity to sit there in your home,
wherever you are, and take your time to learn this stuff.
It's going to be very valuable for you
if you're really looking to be a high-level
performance oriented Go developer.
All right, that's everything, so let's get going.