WEBVTT

00:00:00.001 --> 00:00:04.720
How do you stay up on your Python skills? Many of us are self-starters and good at learning

00:00:04.720 --> 00:00:09.100
on our own or online with video courses like the ones we have over on Talk Python.

00:00:09.100 --> 00:00:14.220
But sometimes having everyone on your team go from zero to ready to work on a project

00:00:14.220 --> 00:00:19.620
is the best path. And usually that means in-person training. This is something I did

00:00:19.620 --> 00:00:24.620
and enjoyed for many years. Our guest on this episode is Reuven Lerner, who does independent

00:00:24.620 --> 00:00:29.500
Python training. He's here to tell us how to make the most out of your in-person training

00:00:29.500 --> 00:00:34.100
for your team and how you might get started in this side of software development yourself.

00:00:34.100 --> 00:00:39.780
This is Talk Python To Me, episode 210, recorded March 19th, 2019.

00:00:39.780 --> 00:00:58.400
Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem,

00:00:58.400 --> 00:01:03.080
and the personalities. This is your host, Michael Kennedy. Follow me on Twitter where I'm at

00:01:03.080 --> 00:01:08.080
mkennedy. Keep up with the show and listen to past episodes at talkpython.fm and follow the

00:01:08.080 --> 00:01:09.720
show on Twitter via at Talk Python.

00:01:09.720 --> 00:01:14.880
Hey everyone, a quick announcement before we get to the interview. A little while ago, we

00:01:14.880 --> 00:01:19.360
released our Android app for Talk Python training where you could take our courses on your device

00:01:19.360 --> 00:01:23.960
and take them with you and all that good stuff. But we left out, you know, one of the minor

00:01:23.960 --> 00:01:30.300
other platforms like iOS. So we are fixing that. Of course, we just built the Android

00:01:30.300 --> 00:01:36.300
first, but now we're ready to release the iOS version as well. So just visit training.talkpython.fm

00:01:36.300 --> 00:01:41.940
slash apps. Click on the link for your various app stores and get the right app for your device.

00:01:41.940 --> 00:01:47.060
You get some online courses that are free that come bundled with the apps, as well as any that

00:01:47.060 --> 00:01:50.520
you've taken from us. Of course, they'll be there for you and they'll be available offline.

00:01:50.520 --> 00:01:54.560
All right. Now let's get to that interview. Reuven, welcome to Talk Python.

00:01:54.560 --> 00:01:56.100
Thanks. It is so great to be here.

00:01:56.100 --> 00:02:00.040
Yeah, it's so great to have you. It's good to catch up with you. It's been a while since we

00:02:00.040 --> 00:02:04.600
were back in Cleveland hanging out together. So I'm looking forward to that. And I'm also looking

00:02:04.600 --> 00:02:09.780
forward to talking about this whole aspect of training, either in-person training, online

00:02:09.780 --> 00:02:13.580
training. We both have a background in this and it's going to be a lot of fun, I think.

00:02:13.580 --> 00:02:17.940
I love talking about training because in so many ways, it's so unknown to so many developers.

00:02:17.940 --> 00:02:21.460
They know there's this training world out there, but I don't think they're aware of what

00:02:21.460 --> 00:02:22.740
goes into it and how big it is.

00:02:22.740 --> 00:02:26.460
Yeah. And how do you get into it? How do you get the most out of it? If you're having some

00:02:26.460 --> 00:02:30.460
trainer come to your company or what are the trade-offs of different types of training,

00:02:30.460 --> 00:02:35.600
all sorts of stuff to explore. Now, before we do though, let's explore a little bit of history

00:02:35.600 --> 00:02:37.920
with you. How did you get into programming in Python?

00:02:38.080 --> 00:02:42.380
I wear glasses and there was not a very strong prescription, but when I was little,

00:02:42.380 --> 00:02:47.200
like I guess about seven or eight, I had double vision and the eye doctor said, well, you should

00:02:47.200 --> 00:02:51.000
do these exercises. And I never wanted to do the exercises. Like there were these red and green

00:02:51.000 --> 00:02:55.140
dots I had to sort of make converge. So I didn't have double vision. And finally the doctor said,

00:02:55.140 --> 00:02:59.220
listen, there's this new thing that just came out recently called an Atari. And he said to my

00:02:59.220 --> 00:03:05.060
parents, buy this. He will be excited by it. And that will sort of train his eyes to focus together.

00:03:05.660 --> 00:03:10.600
So they got an Atari and one of the cartridges you could get was this basic programming cartridge.

00:03:10.600 --> 00:03:15.720
And so we got that. I was like, wow, this is so cool. I can tell the computer what to do.

00:03:15.720 --> 00:03:19.120
How interesting. Was it an Atari 2600 or which one was it? Do you remember?

00:03:19.120 --> 00:03:26.120
Yeah, it was the 2600. And I think it had a total of like 128 or 150 bytes that you could program in.

00:03:26.120 --> 00:03:30.060
And each of the commands was tokenized to take a one byte. Like now I understand sort of what was going

00:03:30.060 --> 00:03:35.480
on there. So you would enter, like I remember very, very often sort of running out of space

00:03:35.480 --> 00:03:38.520
because I was trying to write too much. And each of the characters I was trying to print

00:03:38.520 --> 00:03:41.020
was, of course, taking up one of those precious bytes.

00:03:41.020 --> 00:03:45.360
That's a whole nother level. I mean, my laptop has 32 gigs.

00:03:45.360 --> 00:03:51.620
It's just, it's incomprehensible. Literally, the mind cannot compare these two things.

00:03:51.620 --> 00:03:57.260
My eldest daughter, who's now 18, saw, I have a floppy disk on my desk. I have a few of them.

00:03:57.260 --> 00:04:01.160
She said, what is that? I said, so you know, those USB drives that everyone has? She was like,

00:04:01.160 --> 00:04:07.320
yeah, I said, this has like 100,000 times less storage. And this is what we would use when I was

00:04:07.320 --> 00:04:11.420
your age to move things around. And she just, yeah, she couldn't wrap her mind around that.

00:04:11.420 --> 00:04:17.260
Yeah, yeah. I remember you'd have those apps. Gosh, I can't remember in DOS what they were called,

00:04:17.260 --> 00:04:23.020
but you would, they would allow you to span disks. Like I have a file that is larger than 1.44 megs.

00:04:23.040 --> 00:04:28.180
And so it'll like compress it to disk one, disk two, disk three, straight to the disk. Insert disk three,

00:04:28.180 --> 00:04:32.260
insert disk four. Yeah, that was a wild time. Absolutely. Absolutely. Okay. So you started

00:04:32.260 --> 00:04:39.980
programming on an Atari 2600. Literally nobody in like 207 or eight shows has ever said they started

00:04:39.980 --> 00:04:46.360
programming on an Atari 2600 Commodore, maybe some other old school thing. I didn't even know that

00:04:46.360 --> 00:04:51.320
was possible. That's pretty wild. So then a few years later, we got a home computer and this was

00:04:51.320 --> 00:04:56.040
probably, this was in 1983, but it was not the home computer that you're probably thinking of.

00:04:56.040 --> 00:05:01.140
We had friends who worked for digital, digital electric, digital deck, electric computer. Anyway,

00:05:01.140 --> 00:05:07.900
and they hooked up a VT100 terminal with a processor and some RAM and they called it a computer with CPM

00:05:07.900 --> 00:05:12.700
running as the operating system. So that was like our home computer. And by the way, my parents were not

00:05:12.700 --> 00:05:16.760
computer people at all. Like they were just told by their computer friends, oh, this is a great deal on

00:05:16.760 --> 00:05:21.300
a computer. And so I played with that for a bit. Yeah. And also you might not know what I'm going to do.

00:05:21.300 --> 00:05:25.400
not have so much, the phone might be unavailable some of the time. Oh my God.

00:05:25.400 --> 00:05:26.020
Oh my God.

00:05:26.020 --> 00:05:26.840
Whatever. Right.

00:05:26.920 --> 00:05:30.600
My parents and I were constantly like, what? You're on the modem again. You're dialing into things.

00:05:30.600 --> 00:05:36.760
And I think it was like while I was in high school that we got like a PC with DOS and did we even have

00:05:36.760 --> 00:05:41.980
windows that we must have had windows on it at some point. And so it was really like, I was always doing

00:05:41.980 --> 00:05:46.220
toy programming, but it was only when I got to college that I really started, like I signed up to be at the

00:05:46.220 --> 00:05:50.280
computer science department, but I didn't really understand what programming was and what computer

00:05:50.280 --> 00:05:55.800
science was until I got to college. And then like, I mean, I went to MIT and there they brainwashed you into

00:05:55.800 --> 00:06:00.100
thinking that Lisp is the, like Lisp is the only language you learn in the computer science department.

00:06:00.100 --> 00:06:01.940
If you want to take a C programming course.

00:06:01.940 --> 00:06:07.960
It's so amazing. It doesn't have loops. You don't need any of that stuff. You just redo recursion. It's,

00:06:07.960 --> 00:06:10.700
it's perfect. And you're going to really get good at typing parentheses.

00:06:10.700 --> 00:06:15.060
Yeah. And if you want to take a C course, which I did not, you have to go to the, I think it's the

00:06:15.060 --> 00:06:19.320
civil engineering department. They offer it because CS department like wouldn't be caught dead teaching a C

00:06:19.320 --> 00:06:19.660
course.

00:06:19.800 --> 00:06:24.100
Yeah, of course. You know, my first CS course, I did like a minor and it was in scheme,

00:06:24.100 --> 00:06:27.180
which is not that different. And it was a wild time. It's a wild language.

00:06:27.180 --> 00:06:29.840
What did you think of that as an introduction to programming?

00:06:29.840 --> 00:06:33.660
I thought it was brilliant, amazing, but like I was brainwashed, right? So they told us that this

00:06:33.660 --> 00:06:37.500
was the best program. And we, we use scheme, right? So they told us that Lisp was the best language

00:06:37.500 --> 00:06:42.140
ever. And I was like, Oh, I guess Lisp is the best language ever. And since then, truth be told,

00:06:42.140 --> 00:06:46.560
I've had this comparison of, Oh, I was doing this back in college. I can't believe I've just sort of

00:06:46.560 --> 00:06:50.580
rediscovered it now, whether it's in Python or in other languages, like they really sort of

00:06:50.580 --> 00:06:55.880
helped us to see what we saw way further than we thought we were seeing. And we were doing things

00:06:55.880 --> 00:06:59.920
that were way more advanced than we even thought because it was so simple to do. Yeah. That said,

00:06:59.920 --> 00:07:05.680
you get out in the real world and you discover, Oh, not a lot of companies are actually using scheme.

00:07:05.680 --> 00:07:06.380
What do you know?

00:07:06.380 --> 00:07:09.500
Yeah, that's for sure. Very few.

00:07:09.640 --> 00:07:16.020
I remember going, so my first job after college was at HP and I was using some C and C++ and really,

00:07:16.020 --> 00:07:20.260
really disliked it. Like I never got the whole pointer thing. And I remember going to my boss and

00:07:20.260 --> 00:07:24.520
saying, Hey, do you think we could use maybe like a different language? You know, one that's garbage

00:07:24.520 --> 00:07:32.160
collected. And he was like, that is not realistic. No company ever will use a garbage collected language

00:07:32.160 --> 00:07:36.060
because you really want to have control and you really want to know what's going on.

00:07:36.500 --> 00:07:42.080
those words resonate with me every day as I see like the exponential growth of Python in the enterprise

00:07:42.080 --> 00:07:47.240
and the people who are still stuck using C and C++ suffering and me laughing all the way.

00:07:47.240 --> 00:07:51.520
Yeah. And there's just so many interesting stories like back in the day with Google video

00:07:51.520 --> 00:07:58.140
and YouTube as competing platforms and products and YouTube, of course, being a Python and Google

00:07:58.140 --> 00:08:03.460
video being a C, fewer developers on YouTube. And they just blew the Google team away because,

00:08:03.660 --> 00:08:07.940
Hey, guess what? When you have to write a lot less and worry about a lot less fewer details,

00:08:07.940 --> 00:08:12.660
it doesn't matter if it's, you know, 10% slower, 20% slower, you get way more features done.

00:08:12.660 --> 00:08:13.060
Absolutely.

00:08:13.060 --> 00:08:18.180
I think actually you speak of garbage collected languages. Like the majority of programming these

00:08:18.180 --> 00:08:23.920
days is Java, .NET, Python, and enterprise, right? Like maybe, maybe a little JavaScript.

00:08:23.920 --> 00:08:27.460
I actually don't see it nearly as much there. I don't think, but you probably have a fresher

00:08:27.460 --> 00:08:28.180
view than I do.

00:08:28.180 --> 00:08:33.500
Most of my students are very familiar with, like they studied at some point Java or C#,

00:08:33.500 --> 00:08:38.800
say, in whether it's university courses or using it on the job. And so for them, that's very natural.

00:08:38.800 --> 00:08:43.120
I do a fair amount of work also with some low level hardware companies. So those people are using

00:08:43.120 --> 00:08:48.500
C and C++. They're certainly familiar with the idea of a real language being garbage collected and not

00:08:48.500 --> 00:08:49.960
having pointers and stuff like that.

00:08:49.960 --> 00:08:54.900
Right, right. Do you see them moving towards Python and some of this IoT stuff and MicroPython and things

00:08:54.900 --> 00:08:56.700
like that? Or are they still embedded C?

00:08:56.700 --> 00:09:01.520
No, no. Those places are all embedded C. I don't see that changing very fast. I mean,

00:09:01.520 --> 00:09:07.300
a lot of them are dealing with like low level hardware stuff. So it has to be sort of predictably

00:09:07.300 --> 00:09:11.940
fast and predictable in terms of its memory usage. Maybe. I mean, it'd be great to see at some point,

00:09:11.940 --> 00:09:14.600
but it's going to be, it's going to be a while I'm guessing.

00:09:14.600 --> 00:09:19.940
Pretty interesting. Okay. So that's how you got into programming. You were telling me you work in HP

00:09:19.940 --> 00:09:24.320
and you said, can I please use something other than C? So how did that lead to Python?

00:09:24.320 --> 00:09:30.100
Basically, when I was in college, I was introduced to Python. Like basically when I was there, so I was

00:09:30.100 --> 00:09:36.380
the editor of the student newspaper and we set up a website for the newspaper. And I should add,

00:09:36.380 --> 00:09:40.100
like this is my super big claim to fame. Like it was one of the first 100 websites in the world.

00:09:40.100 --> 00:09:45.560
So we sent email to Tim Berners-Lee and said, hey, we've set this website. He said, oh,

00:09:45.560 --> 00:09:50.400
that is so cool. I'll put you on the list of the websites out there. Strangely, he's not in that

00:09:50.400 --> 00:09:56.700
business anymore. And basically at that time, there was this new thing called CGI, which allowed you to

00:09:56.700 --> 00:10:01.480
run external programs from your website. So you didn't just have static pages and they actually

00:10:01.480 --> 00:10:06.420
expected people to write these CGI programs and see, but people started to do it because that was

00:10:06.420 --> 00:10:10.540
such a pain. People started doing higher level languages. And so people were using Perl, people

00:10:10.540 --> 00:10:15.180
were using Python. And so I sort of used both of them for a while. And then I got really heavy into the

00:10:15.180 --> 00:10:20.900
Perl world. And so for a while I was using Perl at work. And then when I started my own independent

00:10:20.900 --> 00:10:26.660
consulting company in 95, I was still using Perl. And when Perl sort of, for lack of a better term,

00:10:26.660 --> 00:10:34.200
like blew itself up as a community. So I moved back to Python and I've been like pleasantly delighted to

00:10:34.200 --> 00:10:39.900
see it just sort of exponentially growing over time. Yeah. It's a very exciting place to be right now.

00:10:39.900 --> 00:10:45.100
So tell us the story about how Perl blew up. Like I know that it's definitely on the dissenting side

00:10:45.100 --> 00:10:48.640
of the curves of popularity and whatnot, but I don't know the details.

00:10:48.640 --> 00:10:54.860
So look, what happened was there was this very, very strong competition between Perl and Python back in

00:10:54.860 --> 00:11:01.060
the early nineties and even, you know, mid to late nineties where Perl people like me would say, well,

00:11:01.060 --> 00:11:06.180
I can write really, really fast, right? Like I can get done when I need to get done. And I can just like

00:11:06.180 --> 00:11:09.740
think and boom, it comes out and flies out of my fingers through the keyboard into the computer.

00:11:09.740 --> 00:11:13.040
And then it executes really quickly. And the Python people would be like, yeah,

00:11:13.040 --> 00:11:17.680
but it's not maintainable. And the Perl people like me would say, huh, that's only if you're not good.

00:11:17.680 --> 00:11:19.640
If you're good, you write to be maintainable.

00:11:19.640 --> 00:11:22.880
Look, it's not just right only. You can read it sort of.

00:11:22.880 --> 00:11:25.360
You can read it after learning curve 20 years. Exactly.

00:11:25.360 --> 00:11:30.780
Which strangely doesn't apply to most developers. So that was like hit number one against Perl.

00:11:30.780 --> 00:11:35.980
But the real problem was that Larry Wall, who is undoubtedly a really smart guy, he's the inventor of Perl.

00:11:35.980 --> 00:11:44.560
He's the BDFL of Perl. And he said, you know what? Perl 5 is good. We want to make an even better Perl 6.

00:11:44.560 --> 00:11:49.160
And we're going to then do it, not just like making some incremental improvements.

00:11:49.160 --> 00:11:53.840
Like if you thought Python 3 was a breaking change for Python 2, it's like nothing.

00:11:53.840 --> 00:11:58.520
They said, we're going to rewrite the language. And basically Perl 6 is a totally different language from Perl 5.

00:11:58.780 --> 00:12:05.760
And I'm not exaggerating. This is not a joke. 20 years after announcing it, they came out with the first version of Perl 6.

00:12:05.760 --> 00:12:11.380
And, you know, here it's a bit of an exaggeration, you know, and the dozen or so of people who were waiting around for it were delighted.

00:12:11.380 --> 00:12:14.220
And the rest of the programming world had moved on.

00:12:14.220 --> 00:12:14.740
Yeah, that's crazy.

00:12:14.740 --> 00:12:19.220
And so nowadays, whoever's using Perl nowadays is basically doing it as a legacy language.

00:12:19.220 --> 00:12:22.280
I'm sure there are people using it and die hard and excited about it.

00:12:22.280 --> 00:12:25.060
But you really don't hear about it anymore in those terms.

00:12:25.060 --> 00:12:28.540
I hear it mostly in nostalgic terms. Like it was amazing.

00:12:28.740 --> 00:12:31.620
I did learn here. I did get started there. That kind of stuff.

00:12:31.620 --> 00:12:37.240
That's right. But, you know, there was a period also when I was doing a lot of Ruby and I was sure that Ruby was going to sort of pick up the gauntlet from Perl.

00:12:37.240 --> 00:12:38.300
And it did in many ways.

00:12:38.960 --> 00:12:43.860
But Ruby sort of has Perl syntactic quirks, sort of for good and for bad.

00:12:43.860 --> 00:12:49.880
And the bad part is that it requires you to really understand it and be very, very flexible and understand all these exceptions.

00:12:50.520 --> 00:12:55.280
But the other thing with Ruby is you need to, like, eat objects for breakfast and enjoy it.

00:12:55.540 --> 00:13:04.020
It's so the learning curve is like, if you're OK, if you really, really know objects well, and if you're OK with inconsistent syntax, then Ruby is fantastic.

00:13:04.020 --> 00:13:11.280
But it turns out that most people starting off in programming and even most people just switching languages aren't interested in that high of a learning curve.

00:13:11.520 --> 00:13:16.120
And so Python is just like hit the sweet spot of it works well.

00:13:16.120 --> 00:13:17.680
You can learn it. You can grow with it.

00:13:17.900 --> 00:13:22.960
And I always make the analogy like that learning a programming language is sort of like learning a regular human language.

00:13:22.960 --> 00:13:28.300
And the thing that kills people learning a regular human language is all the exceptions, right?

00:13:28.300 --> 00:13:30.660
Verbs work like this, except here and here and here.

00:13:30.660 --> 00:13:32.740
And nouns work like this, except here and here and here.

00:13:32.740 --> 00:13:35.760
And Python, like, the same rules apply everywhere.

00:13:35.760 --> 00:13:40.080
And so you don't have to engage that much of your brain power in that stuff.

00:13:40.080 --> 00:13:42.340
You can engage it in what you really want to do.

00:13:42.340 --> 00:13:45.140
Yeah, it generally works as you would expect it.

00:13:45.500 --> 00:13:51.700
Maybe you got to check the docs or, you know, jump to source on the definition of a function and go, yeah, actually, it's doing what I thought it would do.

00:13:51.700 --> 00:13:52.700
But it's not too bad.

00:13:52.700 --> 00:13:54.600
So, OK, super interesting.

00:13:54.600 --> 00:13:58.240
This first 100 sites, this was in Perl, though, right?

00:13:58.240 --> 00:13:58.920
Yeah, yeah, yeah.

00:13:58.920 --> 00:14:00.080
This was definitely in Perl.

00:14:00.080 --> 00:14:04.260
And it was like, I think, you know, 20 lines, 30 lines of code and expanded over time.

00:14:04.260 --> 00:14:11.320
And I mean, the newspaper site is still going, but I really, really hope and expect that they're using different software than we wrote back then for everyone's sake.

00:14:11.320 --> 00:14:12.900
I would think so.

00:14:12.900 --> 00:14:13.480
I would think so.

00:14:13.740 --> 00:14:15.560
OK, so this is all interesting.

00:14:15.560 --> 00:14:18.400
You had this experience of learning all these cool languages at MIT.

00:14:18.400 --> 00:14:31.720
And these days, you're self-employed, doing your own thing, doing mostly Python training, but also writing, writing magazines, writing online courses and in-person courses, things like that.

00:14:31.720 --> 00:14:33.420
How do you make that transition?

00:14:33.600 --> 00:14:36.640
When I came to Israel in 95, my plan was to be an independent consultant.

00:14:36.640 --> 00:14:39.740
And they were very nice at my previous job.

00:14:39.740 --> 00:14:41.200
I was working at Time Warner at the time.

00:14:41.200 --> 00:14:42.940
And they said, oh, well, we'll be your first client.

00:14:42.940 --> 00:14:45.920
So I sort of had this nice base to start my consulting company.

00:14:45.920 --> 00:14:50.360
And so I was doing a combination of development and consulting.

00:14:51.360 --> 00:14:55.140
And people started to ask me to do some training, like companies where I was helping them with the development.

00:14:55.140 --> 00:14:58.060
And I was saying, can you teach our people to do this, too?

00:14:58.060 --> 00:15:00.420
And that was my first experience at all doing training.

00:15:01.100 --> 00:15:04.620
So it became, I don't know, a quarter or a third of what I was doing.

00:15:04.620 --> 00:15:07.240
And then I did a PhD at Northwestern.

00:15:07.240 --> 00:15:12.580
And when I came back to Israel and was still working on my dissertation, I was connected with a training company here in Israel.

00:15:12.580 --> 00:15:14.080
And I said, OK, great.

00:15:14.080 --> 00:15:16.580
So they'll sort of sell me and sell my time.

00:15:16.580 --> 00:15:18.580
And I told them, well, I can do.

00:15:18.580 --> 00:15:18.840
Right.

00:15:18.840 --> 00:15:26.980
They'll actually solve one of the really hard problems, which is marketing, acquisition, the six-month sales cycle, all that kind of stuff.

00:15:26.980 --> 00:15:29.020
And you just have to show up and be smart.

00:15:29.020 --> 00:15:30.560
And that's kind of easy, right?

00:15:30.860 --> 00:15:31.220
Exactly.

00:15:31.220 --> 00:15:31.840
Exactly.

00:15:31.840 --> 00:15:36.680
And so, I mean, they're sort of the company I was working with was a 900-pound gorilla in the Israeli training market.

00:15:36.680 --> 00:15:40.560
And so they came to me and said, oh, really, you're interested in doing training with us?

00:15:40.560 --> 00:15:41.140
That's fine.

00:15:41.140 --> 00:15:42.020
What do you want to train in?

00:15:42.020 --> 00:15:44.260
At the time, I'd done a lot of training in Perlin and Ruby.

00:15:44.260 --> 00:15:45.140
So I told them that.

00:15:45.140 --> 00:15:47.820
And they said, well, send us your resume.

00:15:47.820 --> 00:15:48.660
So I sent it to them.

00:15:48.660 --> 00:15:50.100
And they called me back like an hour or two later.

00:15:50.100 --> 00:15:51.980
And they said, wait, you know Python also?

00:15:51.980 --> 00:15:52.880
Oh, my God.

00:15:52.880 --> 00:15:53.900
There's such demand for that.

00:15:53.900 --> 00:15:54.260
Yeah.

00:15:54.260 --> 00:15:58.540
And so I started doing it still like a quarter of my time, a third of my time.

00:15:58.540 --> 00:16:00.780
And then they were filling up half my time.

00:16:00.780 --> 00:16:01.980
And then three quarters of my time.

00:16:02.220 --> 00:16:06.560
And at a certain point, like when I finished my dissertation, I decided to go back to doing it on my own.

00:16:06.560 --> 00:16:10.540
I was already scheduled out two, three, four months in advance solid with training.

00:16:10.540 --> 00:16:11.900
I was like, wow.

00:16:11.900 --> 00:16:13.600
I love training.

00:16:13.600 --> 00:16:14.680
It's super fun.

00:16:14.680 --> 00:16:16.980
I get to meet smart people and help them out in their jobs.

00:16:17.120 --> 00:16:20.660
And I can fill my time easily far in advance.

00:16:20.660 --> 00:16:22.860
I am totally doing this full time.

00:16:22.860 --> 00:16:28.680
And so basically, it's been close to 10 years now that I've been more or less a full time Python trainer.

00:16:28.680 --> 00:16:30.900
And I am super, super happy.

00:16:30.900 --> 00:16:31.440
That's awesome.

00:16:31.620 --> 00:16:33.240
Yeah, I think it's such a cool lifestyle.

00:16:33.240 --> 00:16:35.140
I mean, you have a lot of flexibility.

00:16:35.140 --> 00:16:39.820
Of course, you're gone or occupied some of the time this week or that week.

00:16:39.820 --> 00:16:42.040
But you also have other weeks you can just take them off.

00:16:42.040 --> 00:16:43.120
Like you don't have to ask permission.

00:16:43.120 --> 00:16:44.520
You just don't schedule it.

00:16:45.020 --> 00:16:49.900
And you get to spend so much of your time staying on top of technology and learning new things.

00:16:49.900 --> 00:16:53.640
Like, hey, I don't know SQLAlchemy, but the client wants me to teach it.

00:16:53.640 --> 00:16:54.700
So it's in a month.

00:16:54.700 --> 00:16:56.780
I'm going to go learn it and write some materials on it.

00:16:56.780 --> 00:17:03.280
And you just keep going through that iteratively until all of a sudden, you know, quite a bit more than you probably expected when you started out, right?

00:17:03.280 --> 00:17:03.920
Oh, my God.

00:17:03.920 --> 00:17:04.320
Absolutely.

00:17:04.320 --> 00:17:11.980
I mean, easily, easily, I don't know, 60% of what I teach is based on questions I get from students in my class where I say, okay, great.

00:17:11.980 --> 00:17:12.920
I've got homework now.

00:17:12.920 --> 00:17:13.820
I'm going to go back and learn that.

00:17:13.880 --> 00:17:16.680
I'll try to come back to you tomorrow the next day and tell you what the answer is.

00:17:16.680 --> 00:17:18.620
And so people are sometimes a little skeptical.

00:17:18.620 --> 00:17:20.640
They're like, wait, you're not doing day-to-day development anymore.

00:17:20.640 --> 00:17:23.340
And yet, how do you know you're up on things?

00:17:23.340 --> 00:17:27.280
And my answer is basically, first of all, I have the time to do it and I spend time doing it.

00:17:27.280 --> 00:17:29.880
I blog about it and I write about it in my Linux Journal column.

00:17:29.880 --> 00:17:36.840
But also, people are constantly pushing me to learn the newest things so that I can provide the best training and so I can answer their questions.

00:17:36.840 --> 00:17:38.420
So I think it's great.

00:17:38.420 --> 00:17:39.060
I think it's fun.

00:17:39.060 --> 00:17:41.460
And I definitely am forced to keep up on things.

00:17:41.460 --> 00:17:46.820
This portion of Talk Python To Me is brought to you by Linode.

00:17:46.820 --> 00:17:50.560
Are you looking for hosting that's fast, simple, and incredibly affordable?

00:17:50.560 --> 00:17:55.660
Well, look past that bookstore and check out Linode at talkpython.fm/Linode.

00:17:55.660 --> 00:17:57.560
That's L-I-N-O-D-E.

00:17:57.560 --> 00:18:01.980
Plans start at just $5 a month for a dedicated server with a gig of RAM.

00:18:02.320 --> 00:18:04.200
They have 10 data centers across the globe.

00:18:04.200 --> 00:18:08.020
So no matter where you are or where your users are, there's a data center for you.

00:18:08.020 --> 00:18:22.420
Whether you want to run a Python web app, host a private Git server, or just a file server, you'll get native SSDs on all the machines, a newly upgraded 200 gigabit network, 24-7 friendly support, even on holidays, and a seven-day money-back guarantee.

00:18:22.420 --> 00:18:24.060
Need a little help with your infrastructure?

00:18:24.280 --> 00:18:28.800
They even offer professional services to help you with architecture, migrations, and more.

00:18:28.800 --> 00:18:31.740
Do you want a dedicated server for free for the next four months?

00:18:31.740 --> 00:18:34.800
Just visit talkpython.fm/Linode.

00:18:34.800 --> 00:18:38.000
I think you can do it as well.

00:18:38.000 --> 00:18:48.320
I mean, there are certain personalities or types of folks, and it sounds certainly like you're one of them, who are just curious, will just dive in and learn all the details.

00:18:48.640 --> 00:18:54.840
And then there's other people who are just, you know, give me some slides, and I'll just put them on the screen and talk about it, and I'll never open up an editor.

00:18:54.840 --> 00:18:59.680
And, you know, like, if that's your path, obviously you're going to, like, decay super quickly, right?

00:18:59.680 --> 00:19:18.160
But if you're really trying to write the code and do examples and build apps for your students in your classes, and then if they hit you with a question you don't know, and you actually go and learn that and research it, like, how often do people who are doing regular work with a, you know, a screen full of JIRA tickets, deadlines, you know, scrum?

00:19:18.380 --> 00:19:26.060
Scrum sprints are ending, and, you know, you don't get the time to dig in and, like, ask the question below the surface.

00:19:26.060 --> 00:19:27.500
That helps you really understand it.

00:19:27.500 --> 00:19:38.360
Yeah, you know, I never even thought about this, but now that you're saying it, I think that my training has improved, like, gotten deeper and more interesting since I stopped splitting my time between development and training.

00:19:38.360 --> 00:19:44.920
And since I was able to concentrate on what are the topics people need to know and what is the best way to explain to them.

00:19:44.920 --> 00:19:51.560
And so that really, not having that pressure, not having to deal with sort of real-world development, as it were, has been a real plus.

00:19:51.560 --> 00:19:53.180
Also, I can ask people, right?

00:19:53.180 --> 00:19:56.120
I always ask my students, so what do you guys do and how does this work?

00:19:56.120 --> 00:19:59.800
And that gives me a decent picture of what's going on out there and what challenges people are facing.

00:19:59.880 --> 00:20:05.180
I think one of the things that blew me away, and just, you know, I know a lot of folks out there listening probably know, but I did for, like, 10 years.

00:20:05.180 --> 00:20:10.560
The story that you're telling, I sort of lived that life as well and traveled around and taught courses.

00:20:10.560 --> 00:20:20.920
And every week, almost every week, that you are actually off somewhere, you're in a different company, probably in a different industry with a different team that works somewhat differently.

00:20:20.920 --> 00:20:25.000
So, you know, imagine what you learn if you have one job and then you move to another job.

00:20:25.000 --> 00:20:26.940
You have now these two experiences, right?

00:20:26.940 --> 00:20:35.680
Like, if you do that every week, every other week, let's say, the amount of different experiences and styles and workflows you get exposed to are just crazy.

00:20:35.960 --> 00:20:43.100
Absolutely. And I also have a secret weapon, which is that I live in Israel, and Israelis don't hold back with questions and criticism.

00:20:43.100 --> 00:20:50.420
So, like, when I'm teaching here, boy, oh boy, people, like, are just pelting me with questions all the time.

00:20:50.420 --> 00:21:04.360
And it's a little exhausting, but it's fantastic because it means I'm sort of pushed to really know how to answer questions and understand different corner cases that they've encountered and they really want to know, and they're not going to let up until they get the answer.

00:21:04.520 --> 00:21:06.780
Yeah, that's pretty interesting. So, you, like, go into the ringer.

00:21:06.780 --> 00:21:12.780
You do battle, but you come out everyone knowing a lot more stuff. That's pretty cool.

00:21:12.780 --> 00:21:17.580
What are the big distinctions I felt like? You talked about consulting and you talked about training.

00:21:17.580 --> 00:21:28.540
One of the big distinctions that I learned pretty quickly when I got into it was, you know, when you're doing consulting and you're trying to solve a problem, you're like, I don't know how to do this.

00:21:28.620 --> 00:21:33.920
So, you research it and you find a way that works. Yeah, good. We're done. This way works. Let's keep going.

00:21:33.920 --> 00:21:38.960
Right? Until, unless it's, like, super performance critical. It's like, you know, real-time trading or something.

00:21:38.960 --> 00:21:42.500
But, like, in general, like, you get it to work. That thing is done. On to the next.

00:21:42.500 --> 00:21:47.040
But when you're doing training, it's not good enough to know this way will work.

00:21:47.140 --> 00:21:54.080
You have to know, well, actually, there's three ways. X, Y, and Z. X is better in this situation. Y is better in that situation.

00:21:54.080 --> 00:21:58.300
And here's why, other than when I said Z or whatever, doesn't even exist. Right?

00:21:58.300 --> 00:22:02.480
So, you need to know not just what are the options, but what are the trade-offs. Like, all this kind of stuff.

00:22:02.480 --> 00:22:06.620
And so, it takes kind of a different way of approaching learning, I think.

00:22:06.760 --> 00:22:11.560
One of my favorite phrases that I use a lot when I'm teaching is, unfortunately, this works.

00:22:11.560 --> 00:22:17.980
And so, I'll show them code. I'll be like, okay, this does the job, but we don't want to do it this way for the following reasons.

00:22:17.980 --> 00:22:20.820
That's right. That's right. You need to understand what's happening here.

00:22:20.820 --> 00:22:22.420
Yeah, pretty cool.

00:22:22.420 --> 00:22:24.900
Let's talk about this from a couple of perspectives.

00:22:24.900 --> 00:22:28.560
If I am a company who is, let's just make it a little concrete.

00:22:28.560 --> 00:22:30.420
I've hired you, but, you know, more in general.

00:22:30.420 --> 00:22:35.080
Like, I've hired someone like you to come teach my team, or I'm a student.

00:22:35.160 --> 00:22:39.140
I'm going to be a student, and you're coming to my company, or I'm a team lead, or something like that.

00:22:39.140 --> 00:22:42.920
You know, maybe let's just start, like, why should they have training at all?

00:22:42.920 --> 00:22:48.460
Like, aren't these grown adults who have been to college, most likely, and they know how to study?

00:22:48.460 --> 00:22:51.080
Like, there's Stack Overflow and Google. Let them go.

00:22:51.080 --> 00:22:56.160
Oh, my God. So, right. So, I get this a lot, both from individuals and from companies.

00:22:56.160 --> 00:23:03.560
And the analogy I use there is Stack Overflow is sort of like a phrasebook when you go to a foreign country.

00:23:03.560 --> 00:23:08.480
So, you can go to a foreign country and, like, say, uh-oh, I want to order, like, bread at the bakery.

00:23:08.480 --> 00:23:12.020
So, you look up how to do that. And then you have to pay. So, you look up how to do that.

00:23:12.020 --> 00:23:21.960
And you can sort of kind of get around, but it's going to be very slow and very limited and very stilted and frustrating when what's in the phrasebook isn't quite what you need.

00:23:21.960 --> 00:23:26.340
Yeah. Every time you'll make that mistake, you thought you asked for something and you got something totally different.

00:23:26.340 --> 00:23:29.920
Like, oh, my gosh, why are they bringing all this meat? I just wanted some bread.

00:23:31.280 --> 00:23:38.480
Exactly. A few weeks after I moved to Israel, I went to the open-air market and I thought I was buying some hangers for my closet at home.

00:23:38.480 --> 00:23:41.620
And actually, what I was asking for was a hangman, like an executioner.

00:23:41.620 --> 00:23:48.320
And the woman doubled over laughing and we realized what I really meant and went on from there.

00:23:48.480 --> 00:23:53.900
But you do that in language, you're not trying to gain fluency in it. You're just going to constantly be at that level of that.

00:23:53.900 --> 00:23:57.980
And everyone who uses Stack Overflow knows, oh, I'll just copy and paste what it is.

00:23:57.980 --> 00:24:01.740
And when it doesn't work, I'll meddle with it and I'll meddle with it again and again.

00:24:01.740 --> 00:24:10.360
And so, that lack of fluency is slowing you down, both sort of conceptually and in actual, like, time terms and what you're doing.

00:24:10.360 --> 00:24:13.060
Yeah. And also probably adds a decent amount of technical debt, right?

00:24:13.160 --> 00:24:16.980
Like, when the thing breaks on Friday morning, go ask Stack Overflow.

00:24:16.980 --> 00:24:24.640
And it's in that area. You're like, what is this work? You're back at Stack Overflow trying to get the fix for the fix, right?

00:24:24.640 --> 00:24:25.580
Like, it's a problem.

00:24:25.580 --> 00:24:26.560
Precisely.

00:24:26.560 --> 00:24:29.320
So, fluency, part of the reason you might look into training.

00:24:29.320 --> 00:24:33.140
You also want, like, people to be sort of have the same basic core knowledge.

00:24:33.140 --> 00:24:38.040
If you've got a team, and I work with a lot of companies where, like, when they do their onboarding, they have to know Python.

00:24:38.040 --> 00:24:40.980
And so, they want everyone to have the same basic knowledge.

00:24:41.120 --> 00:24:44.280
And some people have studied on their own. Some people have taken a class in college or something.

00:24:44.280 --> 00:24:48.080
But you want everyone, like, you want everyone sort of to know the same stuff.

00:24:48.080 --> 00:24:49.700
And so, training is useful for that.

00:24:49.700 --> 00:24:54.340
But then there's the third part, which is the knowledge might be out there.

00:24:54.340 --> 00:24:56.560
There's Stack Overflow, there are blogs, there are online things.

00:24:56.560 --> 00:24:57.780
People won't do it.

00:24:57.860 --> 00:25:03.960
So, I've got a client now where they're moving from doing some frontal training to doing what's called blended learning.

00:25:03.960 --> 00:25:06.860
Like, so, they'll use my video courses along with me coming in.

00:25:06.860 --> 00:25:14.380
And literally every time that I come in to sort of do the follow-up and exercise session, it turns out that most people have not watched any of the videos.

00:25:14.380 --> 00:25:15.300
Why?

00:25:15.520 --> 00:25:18.120
Because their boss, like, they're not going to be happy.

00:25:18.120 --> 00:25:20.860
The bosses are not going to be happy to see people watching videos all day.

00:25:20.860 --> 00:25:22.200
They're going to be happy seeing them do work.

00:25:22.200 --> 00:25:24.120
So, people are like, okay, I'll wait and wait and wait.

00:25:24.120 --> 00:25:25.320
And then they wait until it's too late.

00:25:25.320 --> 00:25:29.640
And so, if you wait for people to study things on their own, they're just not going to do it.

00:25:29.640 --> 00:25:30.660
Not because they're bad people.

00:25:30.660 --> 00:25:31.740
Not because they're stupid people.

00:25:31.740 --> 00:25:33.180
But because they don't have time.

00:25:33.860 --> 00:25:36.240
Plus, they might find sort of the long way around to do it.

00:25:36.240 --> 00:25:44.700
And a good trainer, a good teacher is going to have an efficient way to help you understand that information that you can do even faster than you could on your own.

00:25:44.700 --> 00:25:46.300
Yeah, I think that's a really valid point.

00:25:46.300 --> 00:25:49.580
And, you know, it seems like, you know, I made the joke about everybody being adults.

00:25:49.580 --> 00:25:51.840
And, of course, they generally are.

00:25:51.840 --> 00:25:58.860
But there is real value in saying, all right, everybody, you're not in meetings.

00:25:58.860 --> 00:25:59.980
You're not doing your email.

00:25:59.980 --> 00:26:02.180
We're all going to sit in this room together for four days.

00:26:02.300 --> 00:26:03.440
I want to talk about programming.

00:26:03.440 --> 00:26:07.700
And when you leave, you will have had some experience on the stuff you're supposed to know.

00:26:07.700 --> 00:26:20.220
And just that, like, time boxing, actually, I think it's almost required for a lot of companies because they put so much pressure on their employees to, you know, like, okay, we're doing Scrum.

00:26:20.220 --> 00:26:24.540
So, tell me today, this morning, what you did yesterday afternoon.

00:26:24.540 --> 00:26:25.200
Right?

00:26:25.200 --> 00:26:31.860
And if yesterday afternoon, I was trying to, like, take it a little slow and learn something and understand what I was trying to do.

00:26:31.940 --> 00:26:34.860
Like, that's generally not progress in the Scrum world.

00:26:34.860 --> 00:26:35.720
Right?

00:26:35.720 --> 00:26:36.800
Or, I mean, I'm picking on Scrum.

00:26:36.800 --> 00:26:42.380
Like, any of these sort of, like, really closely monitored, very little slack types of work environments.

00:26:42.380 --> 00:26:42.860
That's right.

00:26:42.860 --> 00:26:47.360
I had a company just, like, two weeks ago call me up and say, hi, we'd like to do some Python training.

00:26:47.360 --> 00:26:48.540
I said, that's great.

00:26:48.540 --> 00:26:49.540
What are your needs?

00:26:49.540 --> 00:26:53.940
And they said, well, we're really very pressed for time at our company here.

00:26:54.160 --> 00:26:56.820
So, really, what we want you to do is come in after work hours.

00:26:56.820 --> 00:26:58.440
So, people will work, like, nine to five.

00:26:58.440 --> 00:27:01.720
And then you'll come in and teach them from, like, five to 8 p.m.

00:27:01.720 --> 00:27:03.900
I said, okay, that's just not going to work.

00:27:03.900 --> 00:27:06.000
That's not going to work in so many different ways.

00:27:06.000 --> 00:27:08.980
Partly because they're just going to be mentally exhausted after the day.

00:27:09.340 --> 00:27:14.220
And learning new things is not going to be efficient or possible, let alone the top thing on their agenda.

00:27:14.220 --> 00:27:14.580
Yeah.

00:27:14.580 --> 00:27:15.740
You know, I've done that as well.

00:27:15.740 --> 00:27:18.300
And I've seen it work and I've seen it not work.

00:27:18.300 --> 00:27:27.500
Where it did work for me is I went and did a introduction to Python, sort of get going with Python course for stock traders.

00:27:27.500 --> 00:27:28.120
Right?

00:27:28.120 --> 00:27:30.140
These are, like, quantitative analysis folks.

00:27:30.140 --> 00:27:35.420
Maybe they know Excel or they know a little, like, some kind of statistical language or something like that.

00:27:35.420 --> 00:27:36.420
But they're not really programmers.

00:27:36.420 --> 00:27:38.920
And they all want to move to, like, the data science stack.

00:27:38.920 --> 00:27:44.700
And they had the class for an hour and a half after the markets closed at, like, 4.30 or whatever.

00:27:44.700 --> 00:27:48.840
So it was, like, you know, 5 to 6.30 or something, which is kind of stressful.

00:27:48.840 --> 00:27:50.500
But it wasn't too long.

00:27:50.500 --> 00:27:57.620
And, you know, they were willing to pay the extra travel and all that kind of stuff to have me only work with their team for an hour and a half.

00:27:57.620 --> 00:28:00.520
But these people apparently could not leave the training floor.

00:28:00.520 --> 00:28:02.720
But they needed to learn Python and data science.

00:28:02.720 --> 00:28:04.120
So how do you do that?

00:28:04.120 --> 00:28:04.420
Right?

00:28:04.420 --> 00:28:07.560
I mean, I think for them it worked actually pretty well.

00:28:07.700 --> 00:28:09.540
But I've also seen it just not work.

00:28:09.540 --> 00:28:16.600
Yeah, I also feel like doing it in those small chunks, you just don't get the sort of – it takes time to sort of ramp up during the day.

00:28:16.600 --> 00:28:17.880
And then you get things going.

00:28:17.880 --> 00:28:18.880
You get this nice momentum.

00:28:18.880 --> 00:28:25.480
And I found when I do that, even, like, a half day, I just don't get enough time to build momentum so people can build on what they've learned.

00:28:25.480 --> 00:28:25.960
For sure.

00:28:25.960 --> 00:28:27.380
It's definitely suboptimal.

00:28:27.540 --> 00:28:29.300
Like, you've got to give people space.

00:28:29.300 --> 00:28:33.700
But, you know, I kind of made that comment before about not having enough slack.

00:28:33.700 --> 00:28:42.820
I think there's something really valuable to work environments that will allow you to take that hour and actually learn that thing and not just – well, I found it on Stock Overflow.

00:28:42.820 --> 00:28:44.460
We drop in the fix and we just keep rolling.

00:28:44.460 --> 00:28:45.200
Right?

00:28:45.280 --> 00:28:50.420
Because that adds up to badness in the end as you build more and more and more stuff that you don't deeply understand.

00:28:50.420 --> 00:28:51.740
So, I don't know.

00:28:51.740 --> 00:28:56.540
I mean, I guess that's just maybe a call to all the people out there who are leading teams or companies.

00:28:56.540 --> 00:29:00.660
Like, you know, people who are programmers, they just need this time to go a little deeper.

00:29:00.840 --> 00:29:12.080
Like, even if you have a PhD in computer science, like, they probably didn't teach you Django or pick some package that is really important that is certainly not taught in college, no matter how much college they have.

00:29:12.080 --> 00:29:12.480
That's right.

00:29:12.480 --> 00:29:16.620
And, I mean, if you go to a doctor, right, how is it that the doctor is up on things?

00:29:16.620 --> 00:29:19.520
Because they have to do continuing education.

00:29:19.520 --> 00:29:22.080
They have to keep up on stuff and it's even required for them.

00:29:22.080 --> 00:29:24.460
And we hope that our doctors will do that.

00:29:24.460 --> 00:29:28.860
Well, we should sort of hope that our software engineers will do that too and keep up on things.

00:29:28.920 --> 00:29:33.220
But that means dedicating time to it, not just sort of finding time between other things.

00:29:33.220 --> 00:29:38.160
I think also the environments that make that possible, they keep their good people.

00:29:38.160 --> 00:29:51.140
The ones that squeeze that, even that little bit of time for learning and growth out of their people's workday, like, they lose their best people who are natural learners and naturally curious and stuff like that.

00:29:51.140 --> 00:29:56.760
I mean, it literally costs their business bad in the long term to lose their best developers.

00:29:56.760 --> 00:29:57.700
I absolutely agree.

00:29:57.700 --> 00:29:58.120
Interesting.

00:29:58.660 --> 00:30:07.100
So, I guess the next question I wanted to talk to you about is, so I've decided, you're right, we do need to stick all of our people in a room for four days.

00:30:07.100 --> 00:30:08.860
And I'm not saying that facetiously.

00:30:08.860 --> 00:30:09.640
I really mean it.

00:30:09.640 --> 00:30:19.700
But one of the things that blew me away, I had been on so many sort of business calls trying to arrange a training, figuring out what the right type of training was in my previous life.

00:30:20.200 --> 00:30:27.040
And it was, you know, people would come down and say, well, I don't know, there's this other company that's $1,000 cheaper than you guys.

00:30:27.040 --> 00:30:30.700
And I know it's $12,000 and they're like 11 or 10.

00:30:30.700 --> 00:30:41.200
And the reality is, they're taking 20 people who are, you know, professional developers and paying them a week's worth of work to be in those places.

00:30:41.200 --> 00:30:47.740
So, like, the cost really is the time that they're paying their people to learn, not so much what they're paying you.

00:30:47.740 --> 00:30:51.300
I mean, obviously that's money, but it's not the biggest part by far.

00:30:51.500 --> 00:30:58.840
So, how do you, obviously you want to have the best training, the most effective use of that time of all of your 20 folks or however many there are.

00:30:58.840 --> 00:30:59.740
How do you do that?

00:30:59.740 --> 00:31:03.380
Look, you first of all want to make sure you know what you want them to learn, right?

00:31:03.380 --> 00:31:05.200
You want to set up some sort of learning goals.

00:31:05.200 --> 00:31:08.980
And someone who's good at training or a company that's good at training will be able to work with you on that.

00:31:08.980 --> 00:31:13.180
They're not just going to say, well, you can choose from course A or course B or course C.

00:31:13.180 --> 00:31:18.900
They'll say, oh, well, I see that your people, they already know the following things, so we don't have to really go into that.

00:31:19.100 --> 00:31:22.340
Or they really need to know these following other things, so we should really add for that.

00:31:22.340 --> 00:31:24.380
So, setting up learning goals is super important.

00:31:24.380 --> 00:31:26.720
Telling them they should take it seriously is important.

00:31:26.720 --> 00:31:32.520
Like, you want to tell your staff, look, don't just goof off and don't just do work on your computer while you're sitting in the training room.

00:31:32.520 --> 00:31:37.700
I mean, I had one company once where they told people, you must close your computers while the training is going on.

00:31:37.700 --> 00:31:38.960
That is, I think, bad.

00:31:38.960 --> 00:31:43.880
But telling the managers, don't give your people that much work to these people this week.

00:31:43.880 --> 00:31:47.240
Yeah, they'll be on their computers, but you want them to be paying attention is good.

00:31:47.880 --> 00:31:51.280
And also telling people to participate in the exercises.

00:31:51.280 --> 00:31:55.320
My courses are, I usually estimate, like 30% to 40% hands-on exercises.

00:31:55.320 --> 00:32:00.320
And basically, there are always some people who it's clear they're not doing them.

00:32:00.320 --> 00:32:01.280
They're doing other stuff.

00:32:01.280 --> 00:32:03.080
They're like, yeah, yeah, whatever, I'll look at the answer.

00:32:03.080 --> 00:32:05.740
But that's not the way it works, right?

00:32:05.780 --> 00:32:14.640
Again, to sort of use the analogy of languages, you can't sort of look at the answers in the back to like a quiz in Spanish and say, oh, well, now I know Spanish, right?

00:32:14.640 --> 00:32:20.660
You have to actually go through and trip over your tongue and make mistakes and learn, and then you will actually get better at it.

00:32:21.240 --> 00:32:26.760
And so doing the exercises, and I always tell people they should do the exercises in pairs, doing pair programming.

00:32:26.760 --> 00:32:28.700
And virtually no one actually does it.

00:32:28.700 --> 00:32:31.800
But those who do gain so much more out of it.

00:32:31.880 --> 00:32:38.600
Yeah, you can definitely tell, like, the folks at the end of the week who are like, these are the people that really benefited from this.

00:32:38.600 --> 00:32:40.200
And then there's other people who were present.

00:32:40.200 --> 00:32:40.780
Absolutely.

00:32:40.780 --> 00:32:41.440
Absolutely.

00:32:41.720 --> 00:32:53.360
And so one of my clients actually now has me give a test at the end of the course because they want to push people to really participate and learn and figure out sort of how to test and what to test the whole subject in and of itself.

00:32:53.360 --> 00:33:00.760
But I think that has sort of put the fear of God into them that, oh, my God, my manager is going to know that I didn't really do anything this week.

00:33:00.760 --> 00:33:03.420
And so they're a little more attentive, just a little more.

00:33:03.420 --> 00:33:04.360
But it helps a little.

00:33:04.360 --> 00:33:05.800
Yeah, that definitely can help.

00:33:05.800 --> 00:33:09.400
Although, you know, it's so hard to give tests that are representative, right?

00:33:09.460 --> 00:33:14.400
Like, yeah, I asked you this question and you said quick sort and I wanted bubble sort.

00:33:14.400 --> 00:33:15.760
And it doesn't really matter.

00:33:15.760 --> 00:33:17.760
If you can sort the thing, you're good, right?

00:33:17.760 --> 00:33:22.820
But there's like, it's really hard to write those tests in a way that actually tests skill sets.

00:33:22.820 --> 00:33:24.840
But, yeah, it's still worth doing, I guess.

00:33:24.840 --> 00:33:28.420
If you're listening and you're a manager, don't make your people take tests at the end of the course.

00:33:28.420 --> 00:33:29.560
There are better techniques.

00:33:29.560 --> 00:33:30.680
I'm not trying to encourage it.

00:33:30.680 --> 00:33:33.120
Yeah, because it's also such a pain for the trainer, let me tell you.

00:33:33.120 --> 00:33:39.260
But I can see sort of their worries and why they want to make sure they're spending all this time and money that will actually benefit the company.

00:33:39.260 --> 00:33:39.660
For sure.

00:33:39.660 --> 00:33:39.900
All right.

00:33:39.900 --> 00:33:42.640
So let's stick with this in-person training story for a little bit.

00:33:42.640 --> 00:33:44.420
Then we'll get into some of the other options.

00:33:44.420 --> 00:33:47.100
So you talked about being booked really far out.

00:33:47.100 --> 00:33:50.660
I remember being booked pretty far out when I was doing this kind of stuff as well.

00:33:50.660 --> 00:33:58.900
If I'm a team lead or somebody like that and they're like, I want to have some training for my team, how far out should I start to plan ahead on this?

00:33:58.900 --> 00:34:00.400
For in-person training.

00:34:00.400 --> 00:34:02.280
I mean, online is different than in-person.

00:34:02.280 --> 00:34:03.760
It's different than bootcamps or whatever.

00:34:03.880 --> 00:34:04.740
As far as possible.

00:34:04.740 --> 00:34:07.420
I mean, we're recording this in late March.

00:34:07.420 --> 00:34:11.820
And I've left on purpose a few weeks open in 2019.

00:34:11.820 --> 00:34:14.580
But most of the rest of this year is already booked.

00:34:14.580 --> 00:34:18.300
And I think I've already booked a few things in early 2020, believe it or not.

00:34:18.440 --> 00:34:21.180
Big companies love to do things far in advance.

00:34:21.180 --> 00:34:23.200
And big companies tend to snag a lot of training.

00:34:23.200 --> 00:34:29.060
And so if you're interested in doing it, I've sometimes had companies say, hey, can you come in in two weeks?

00:34:29.060 --> 00:34:33.540
And unless someone else is canceled, the answer is almost always no.

00:34:33.540 --> 00:34:34.860
So people do cancel.

00:34:34.860 --> 00:34:35.160
Right?

00:34:35.160 --> 00:34:35.860
It does happen.

00:34:36.320 --> 00:34:37.740
But it's relatively rare.

00:34:37.740 --> 00:34:44.500
So if you think you're going to need, like I have a bunch of companies where they know they're going to have new people joining every two, three months.

00:34:44.500 --> 00:34:47.380
And so they basically say, okay, let's schedule for October.

00:34:47.380 --> 00:34:50.100
Because by then we'll have enough people who will be able to fill it up.

00:34:50.100 --> 00:34:52.300
And if you can do that, that's even fantastic.

00:34:52.300 --> 00:34:52.900
That's great.

00:34:52.900 --> 00:34:53.160
Yeah.

00:34:53.160 --> 00:35:01.200
Often one of the times I see people getting in-person training is when they're making a transition from one project to another as a team.

00:35:01.700 --> 00:35:08.840
Maybe when I was done, now they're going to start a new project and they're going to use different set of packages or different aspects of the language or something.

00:35:08.840 --> 00:35:10.960
Maybe it was CLI stuff.

00:35:10.960 --> 00:35:13.360
Now they need to learn the web because it's all web services now.

00:35:13.360 --> 00:35:14.180
Right?

00:35:14.180 --> 00:35:21.800
And so I guess, you know, you've got to sort of think ahead and see where that end is going to happen because you want to have that shift happen as quickly as possible.

00:35:21.800 --> 00:35:27.600
This portion of Talk Python To Me is brought to you by Metasnake.

00:35:27.600 --> 00:35:30.820
Video courses and books are a great way to learn on your own.

00:35:31.020 --> 00:35:32.860
However, many of us work in teams.

00:35:32.860 --> 00:35:37.180
Wouldn't it be great to level up your team's Python or data skills in less than a week?

00:35:37.180 --> 00:35:40.280
You could all be on the same page and speak a common language.

00:35:40.280 --> 00:35:46.920
Metasnake provides intensive, hands-on training to teams in some of the largest corporations throughout the world.

00:35:46.920 --> 00:35:53.480
It offers courses in Python fundamentals, intermediate Python, exploratory data analysis, machine learning, and more.

00:35:53.480 --> 00:35:59.640
Live, in-person training is a cost-effective way to boost productivity, retention, and innovation.

00:36:00.280 --> 00:36:07.820
Metasnake's intensive courses can be tailored to your specific needs and include generous amounts of hands-on labs so you and your team can try out your new skills.

00:36:07.820 --> 00:36:15.420
Visit talkpython.fm/team training to get your free consultation for your training needs or just click the link in the show notes.

00:36:17.800 --> 00:36:27.120
But these sorts of things, even in a small company, they can usually predict it, let's say, a few months in advance, making that sort of transition, whether it's a language or packages or versions or new people.

00:36:27.680 --> 00:36:41.820
And so trying to get ahead of that, I'd rather have someone book time with me, say, three months in advance, and then two months in advance say, you know what, we're not going to need it then, then call me again and say, like, next week we need something, can you do it?

00:36:41.820 --> 00:36:44.040
Because that's going to be very hard to do.

00:36:44.040 --> 00:36:45.220
Because the answer is going to be no.

00:36:45.220 --> 00:36:45.920
The answer is going to be no.

00:36:46.040 --> 00:36:47.180
And I feel bad about it.

00:36:47.180 --> 00:36:53.720
Like, I feel bad because I enjoy helping people, but, like, my calendar determines where I am each day, and I can't split myself.

00:36:53.720 --> 00:36:54.100
Right.

00:36:54.100 --> 00:37:01.780
And you definitely can't, not reasonably, cancel on other companies who have already booked that because they have the same pressures and needs and whatnot.

00:37:01.780 --> 00:37:02.140
That's right.

00:37:02.140 --> 00:37:02.380
All right.

00:37:02.380 --> 00:37:08.600
So once a course is booked, what should the students do to get ready for it, to get the most out of it?

00:37:08.600 --> 00:37:14.340
And also, what should the team lead do for that as well, for him or her and his or her people?

00:37:14.480 --> 00:37:16.920
First of all, they should try to get things installed, right?

00:37:16.920 --> 00:37:20.060
Like, so find out from the trainer what they're going to need to install.

00:37:20.060 --> 00:37:21.920
That, for me, has always been a bit of an issue.

00:37:21.920 --> 00:37:22.720
It sounds easy.

00:37:22.720 --> 00:37:25.680
Like, just install Python 3, and I'll show up, and it'll be fine.

00:37:25.680 --> 00:37:29.820
But, like, oh, but it says permission denied, and I can't install this.

00:37:29.820 --> 00:37:32.120
Oh, and I won't run the unsigned MSI.

00:37:32.120 --> 00:37:33.380
What is happening here?

00:37:33.380 --> 00:37:34.540
Like, why is this so hard?

00:37:34.540 --> 00:37:37.360
How are you developers, and you can't even, like, change your own profile?

00:37:37.360 --> 00:37:38.260
Right?

00:37:38.260 --> 00:37:41.700
I mean, you're laughing because it's, like, so painful.

00:37:41.700 --> 00:37:42.620
Otherwise, you'll cry.

00:37:42.780 --> 00:37:46.540
First of all, like, the notion of people not knowing how to change their path environment

00:37:46.540 --> 00:37:49.680
variable and, right, being professional developers is shocking to me.

00:37:49.680 --> 00:37:51.380
And yet, I encounter it.

00:37:51.380 --> 00:37:51.620
Right?

00:37:51.620 --> 00:37:52.140
Oh, we're talking.

00:37:52.140 --> 00:37:52.820
Oh, my God.

00:37:52.820 --> 00:37:53.480
Don't get me started.

00:37:53.480 --> 00:37:56.660
But, like, also, I'm a Unix guy.

00:37:56.660 --> 00:37:59.060
I use Macs nowadays as my desktop.

00:37:59.060 --> 00:38:01.320
So I don't know a lot about Windows.

00:38:01.320 --> 00:38:05.880
But I know a lot about installing Python on Windows because I have to deal with so many

00:38:05.880 --> 00:38:10.040
of these, as you said, issues of permissions and versions and whatnot on Windows with my

00:38:10.040 --> 00:38:10.400
students.

00:38:10.400 --> 00:38:15.180
And, like, to such a degree that when I teach my, like, Python for non-programmers class,

00:38:15.380 --> 00:38:17.500
I don't even ask them to install things.

00:38:17.500 --> 00:38:19.780
I just set up a Jupyter Notebook on a server.

00:38:19.780 --> 00:38:21.240
Like, I set up a VM.

00:38:21.240 --> 00:38:23.120
And then they don't have to install anything.

00:38:23.120 --> 00:38:26.640
And it makes life way, way, way easier because they really don't know what they're doing.

00:38:26.720 --> 00:38:30.680
You all just connect to the Jupyter Notebook over their web browsers on a LAN or something

00:38:30.680 --> 00:38:31.000
like that?

00:38:31.000 --> 00:38:31.420
That's right.

00:38:31.420 --> 00:38:34.800
I set up a VM on DigitalOcean for, you know, the four days of the course.

00:38:34.800 --> 00:38:37.360
I set up, you know, Jupyter Notebook server.

00:38:37.360 --> 00:38:38.880
Blaze through $2 or something?

00:38:38.880 --> 00:38:40.260
Exactly.

00:38:40.260 --> 00:38:40.980
Exactly.

00:38:40.980 --> 00:38:42.660
Like, it costs me almost nothing.

00:38:42.660 --> 00:38:44.200
I'm not about to charge the client for it.

00:38:44.200 --> 00:38:47.100
And it solves a ton of problems in terms of the installation.

00:38:47.100 --> 00:38:48.900
Definitely getting things installed.

00:38:48.900 --> 00:38:52.740
And I have, like, a document that describes what I want people to install and how.

00:38:52.740 --> 00:38:55.080
And if they encounter problems, they should try this.

00:38:55.160 --> 00:38:56.800
And if they get a real problems, then I'll help them out.

00:38:56.800 --> 00:39:00.700
But that tends to, you know, solve, say, two-thirds, three-quarters of the problems before we actually

00:39:00.700 --> 00:39:01.440
start class.

00:39:01.440 --> 00:39:03.500
And there's nothing worse.

00:39:03.500 --> 00:39:04.480
That's really interesting.

00:39:04.480 --> 00:39:10.900
Have you experienced Windows 10 with the new Python in the Windows Store side of things yet?

00:39:10.900 --> 00:39:11.720
I have not.

00:39:11.720 --> 00:39:13.620
I've heard of this Windows thing that you mentioned.

00:39:13.620 --> 00:39:14.020
Yeah.

00:39:14.020 --> 00:39:19.880
So, apparently, it requires no, any form of admin permissions, no skills whatsoever.

00:39:19.880 --> 00:39:22.020
You got to go to the Windows 10 Store and say install.

00:39:22.020 --> 00:39:23.740
It automatically puts it in your path.

00:39:24.540 --> 00:39:27.460
It gives you Python and Python 3 commands on Windows.

00:39:27.460 --> 00:39:29.240
Apparently, it's pretty slick.

00:39:29.240 --> 00:39:30.400
So, Steve Dower put it together.

00:39:30.400 --> 00:39:31.780
That is amazing.

00:39:31.780 --> 00:39:34.980
Some of my clients, they probably won't be able to do that just because they have, like,

00:39:34.980 --> 00:39:36.100
restrictions on what they can install.

00:39:36.100 --> 00:39:37.440
That's another thing, of course, right?

00:39:37.440 --> 00:39:38.660
Some of these people, they have computers.

00:39:38.660 --> 00:39:41.580
But they're not allowed to actually install things because of the IT department.

00:39:41.580 --> 00:39:46.480
So, you know, enter the minus minus user command or option in pip, right?

00:39:46.480 --> 00:39:46.720
Yeah.

00:39:46.720 --> 00:39:47.920
That sounds really, really good.

00:39:47.920 --> 00:39:48.860
I should totally try that.

00:39:48.860 --> 00:39:49.060
Yeah.

00:39:49.060 --> 00:39:51.840
I think that's actually going to solve a lot of people's problems because the Windows 10

00:39:51.840 --> 00:39:54.480
store does run super sandbox.

00:39:54.480 --> 00:39:56.080
So, I think it'll have fewer restrictions.

00:39:56.080 --> 00:39:57.900
Now, I'm out of the in-person training game.

00:39:57.900 --> 00:40:01.320
So, I haven't had to go look the poor people in the face.

00:40:01.320 --> 00:40:06.120
I don't know why they won't let you install this, but you're going to have to install this

00:40:06.120 --> 00:40:07.200
for us to do this course.

00:40:07.840 --> 00:40:11.600
And you spend an hour awkwardly trying to work through that with people.

00:40:11.600 --> 00:40:14.800
And, of course, you know, you can't help them because you're not an admin either on their

00:40:14.800 --> 00:40:15.100
network.

00:40:15.100 --> 00:40:16.900
And they give you this look of, really?

00:40:16.900 --> 00:40:17.620
You're serious?

00:40:17.620 --> 00:40:21.360
It's so hard to install this programming language that everyone is excited about?

00:40:21.360 --> 00:40:22.500
What the hey?

00:40:22.500 --> 00:40:24.560
Yeah, but in their environment.

00:40:24.560 --> 00:40:25.820
They don't think in those terms.

00:40:25.820 --> 00:40:28.520
They're thinking, boy, it was never this hard to install Java.

00:40:28.520 --> 00:40:30.580
It was never this hard to install .NET.

00:40:30.580 --> 00:40:33.020
So, maybe this Windows 10 store thing will make it that easy.

00:40:33.020 --> 00:40:34.000
It would be nice, right?

00:40:34.000 --> 00:40:34.280
Amazing.

00:40:34.280 --> 00:40:34.560
Yeah.

00:40:34.560 --> 00:40:35.520
So, I'd definitely check it out.

00:40:35.520 --> 00:40:36.780
It's going to make it easier.

00:40:37.220 --> 00:40:38.920
I don't know if it'll fix it, but it'll make it easier.

00:40:38.920 --> 00:40:43.440
So, one of the things you said was to install this kind of stuff.

00:40:43.440 --> 00:40:44.660
Like, do you send them instructions?

00:40:44.660 --> 00:40:46.980
Like, you're going to need to install these seven things.

00:40:46.980 --> 00:40:48.160
This one takes forever.

00:40:48.160 --> 00:40:49.360
This one is always blocked.

00:40:49.360 --> 00:40:50.880
Get on it soon.

00:40:50.880 --> 00:40:52.140
Or how do you tell them?

00:40:52.140 --> 00:40:52.520
Yeah, yeah.

00:40:52.520 --> 00:40:54.980
I mean, I have a document that says you're going to need to install X, Y, and Z.

00:40:54.980 --> 00:40:56.240
Here's how to do it on Windows.

00:40:56.240 --> 00:40:57.280
Here's how to do it on the Mac.

00:40:57.280 --> 00:40:59.880
If you encounter a problem X, try Y.

00:40:59.880 --> 00:41:04.120
And if you're really stuck, and especially, like, I have a bunch of clients where they're still using

00:41:04.120 --> 00:41:04.820
Python 2.

00:41:05.040 --> 00:41:10.780
And installing Python 2 and Jupyter on Windows, that combination trips people up a ton.

00:41:10.780 --> 00:41:15.260
And so, I say to them, if you encounter problems that are not listed here, I'll help you the first day.

00:41:15.260 --> 00:41:16.240
This is not you.

00:41:16.240 --> 00:41:17.420
You know, it's normal.

00:41:17.420 --> 00:41:19.900
And I'll help you out because I've dealt with this before.

00:41:19.900 --> 00:41:24.440
And then, usually, during, like, the morning break or lunch break, I'll help them out for a few minutes.

00:41:24.640 --> 00:41:25.080
Yeah, that's cool.

00:41:25.080 --> 00:41:31.260
Do you use things like Anaconda, Anaconda distribution, or anything like that for the folks on Windows to, like, lower the threshold?

00:41:31.260 --> 00:41:33.020
Or do you just stick to straight Python?

00:41:33.020 --> 00:41:34.100
I stick to straight Python.

00:41:34.100 --> 00:41:40.520
And the reason is, I mean, people always, there's always someone in each class who's like, well, I got it to work fine because I used Anaconda.

00:41:40.520 --> 00:41:45.260
And I'm like, listen, Anaconda is amazing if you're going to stay using Anaconda and only that.

00:41:45.600 --> 00:41:52.880
But my experience is that people who are doing Python development in their work, then they end up with two installations, Anaconda and regular Python.

00:41:52.880 --> 00:41:54.960
And then, they're even more confused.

00:41:54.960 --> 00:41:55.920
What did I install?

00:41:55.920 --> 00:41:56.840
Where did I install it?

00:41:56.840 --> 00:41:57.500
How does it work?

00:41:57.500 --> 00:42:03.420
So, I prefer to sort of go through that brush and deal with it and, like, solve the problem rather than going around it.

00:42:03.420 --> 00:42:03.600
Right.

00:42:03.600 --> 00:42:08.040
I've created Anaconda environment, but then I did something with pip that, like, screwed that up.

00:42:08.040 --> 00:42:10.500
And then, like, yeah, it gets tricky.

00:42:10.500 --> 00:42:11.160
Precisely.

00:42:11.160 --> 00:42:11.400
Yeah.

00:42:11.400 --> 00:42:11.820
Interesting.

00:42:11.820 --> 00:42:12.300
Okay.

00:42:12.300 --> 00:42:14.300
So, that's where the students install stuff.

00:42:14.300 --> 00:42:15.280
Should they study ahead?

00:42:15.280 --> 00:42:16.660
I don't think there's a real need for it.

00:42:16.660 --> 00:42:17.240
It can't hurt.

00:42:17.240 --> 00:42:21.920
It can't hurt to, like, do an intro Python tutorial or something like that just to get ahead a little bit.

00:42:21.920 --> 00:42:23.240
Probably depends on the topic, right?

00:42:23.240 --> 00:42:27.420
If it's an advanced Python course, you need to, like, get some better foundation.

00:42:27.420 --> 00:42:28.460
Maybe that makes more sense.

00:42:28.460 --> 00:42:33.240
Intro Python courses, by definition, we're sort of starting off from zero and we assume people don't know anything.

00:42:33.240 --> 00:42:38.460
The advanced courses are always tricky because everyone has a different definition of advanced.

00:42:38.460 --> 00:42:39.120
Oh, yeah.

00:42:39.120 --> 00:42:45.160
So, I definitely have people take my advanced courses where they're taking it because, well, they took the intro course five years ago.

00:42:45.160 --> 00:42:48.040
And, no, they haven't used Python since, but this is the next logical progression.

00:42:48.040 --> 00:42:51.320
So, for them, yeah, they should totally, like, get up on things a little more.

00:42:51.320 --> 00:42:56.260
But in the advanced course, I find that you always have a few people who have truly advanced questions.

00:42:56.260 --> 00:42:59.940
And so, that's a good opportunity to ask them and try to figure them out.

00:42:59.940 --> 00:43:00.680
Yeah, for sure.

00:43:00.680 --> 00:43:01.780
Okay.

00:43:01.780 --> 00:43:02.820
And how about the team lead?

00:43:02.820 --> 00:43:04.660
Is there anything they should be doing to help their people?

00:43:04.860 --> 00:43:07.900
Maybe identify problems that people are having or the use cases, right?

00:43:07.900 --> 00:43:13.380
I always find it interesting to hear what people are using Python for so that I can, if possible, if necessary, sort of adjust things.

00:43:13.380 --> 00:43:23.720
So, if they can sort of investigate, if they can bring often, like, if I teach my regular expressions course, I like to have log files from the actual team so that we can parse through those and have fun with those.

00:43:23.960 --> 00:43:26.380
So, preparing that kind of thing can be really useful.

00:43:26.380 --> 00:43:26.780
Yeah.

00:43:26.780 --> 00:43:29.000
Because they often have a better high-level view, right?

00:43:29.000 --> 00:43:34.160
Like, maybe you're going to be put onto a project, but you don't have any experience with it until you're done with this course.

00:43:34.160 --> 00:43:36.600
So, you don't really know how it's going to be used or really the details.

00:43:36.600 --> 00:43:39.480
But maybe the team lead's already gotten in there.

00:43:39.480 --> 00:43:44.860
And they understand, like, no, no, we don't care about SQLAlchemy ORM.

00:43:44.860 --> 00:43:45.560
We're using core.

00:43:45.560 --> 00:43:46.280
Here's why.

00:43:46.280 --> 00:43:47.400
Let's just focus on that.

00:43:47.400 --> 00:43:49.360
Things like that maybe keep it more relevant.

00:43:49.360 --> 00:43:49.740
That's right.

00:43:49.740 --> 00:43:54.200
I do find, though, when you would go through those experiences, like, we don't use ORMs because they're evil.

00:43:54.200 --> 00:43:57.260
And then if you actually, I mean, that's just an example.

00:43:57.260 --> 00:43:58.840
Maybe consider them to actually be evil.

00:43:58.840 --> 00:44:01.100
But, you know, we don't use this because.

00:44:01.100 --> 00:44:09.620
And that because actually meant the person who made that decision never gave it a shot, never tried it, or that was 10 years ago when they sucked, but now they're great.

00:44:09.620 --> 00:44:10.840
Something like that.

00:44:10.840 --> 00:44:17.960
And you're like, oh, well, the thing that you asked that took me half an hour, like two minutes, and this thing that you're not going to use, boom, solved.

00:44:17.960 --> 00:44:19.620
And you might consider using that, right?

00:44:19.660 --> 00:44:25.720
Like, I think there's interesting opportunities to question assumptions and sort of revisit stuff like that as well.

00:44:25.720 --> 00:44:30.700
So I don't necessarily want to encourage people to completely just go only do the stuff that we're doing.

00:44:30.700 --> 00:44:36.040
I actually started doing Git training because I happened to mention Git when I was doing Python training somewhere.

00:44:36.040 --> 00:44:39.620
And people's faces, like, started to get really angry.

00:44:39.620 --> 00:44:42.060
And if they had things to throw at me, they would have thrown them at me.

00:44:42.060 --> 00:44:46.960
They're like, Git, that thing that makes us lose all of our files, that thing that they're forcing upon us.

00:44:46.960 --> 00:44:48.940
And, of course, like a normal person.

00:44:48.940 --> 00:44:49.480
It's so horrible.

00:44:49.580 --> 00:44:50.560
I want CVS back.

00:44:50.560 --> 00:44:55.580
It's like a normal person would have said, oh, these people are really upset.

00:44:55.580 --> 00:44:58.000
And I was like, business opportunity.

00:44:58.000 --> 00:44:59.740
So I started doing Git courses.

00:44:59.740 --> 00:45:04.400
And people were like, and I remember teaching those very people a few months later, Git.

00:45:04.400 --> 00:45:08.140
And it was about like halfway through the course where I described them how merges work.

00:45:08.320 --> 00:45:12.520
And all of them said, oh, that's what we've been doing wrong.

00:45:12.840 --> 00:45:16.740
And suddenly, like, they realized that they had been doing it the hard way.

00:45:17.260 --> 00:45:21.560
And, oh, well, maybe if we'd done it the right way, it wouldn't have been so horrible and painful.

00:45:21.720 --> 00:45:23.000
Yeah, that's a perfect example.

00:45:23.000 --> 00:45:24.240
Yeah, very interesting.

00:45:24.700 --> 00:45:26.600
We're actually burning through our time really quick.

00:45:26.600 --> 00:45:27.400
This is a problem.

00:45:27.740 --> 00:45:29.200
Because we have so much stuff to talk about.

00:45:29.200 --> 00:45:30.160
And, you know, that's okay.

00:45:30.160 --> 00:45:34.960
So let's switch things around and look at it from the opposite perspective.

00:45:34.960 --> 00:45:38.480
So we've been talking about, like, I'm a company, a person, a team lead, whatever.

00:45:38.480 --> 00:45:39.300
And I want to have training.

00:45:39.300 --> 00:45:40.500
I want to get the most out of it.

00:45:40.500 --> 00:45:41.220
So on.

00:45:41.220 --> 00:45:46.400
I suspect a lot of folks out there are listening going, you know, the training, when that person

00:45:46.400 --> 00:45:48.400
comes in, they talk about all the cool stuff they do.

00:45:48.400 --> 00:45:49.360
They're really knowledgeable.

00:45:49.360 --> 00:45:51.580
And then they take off to somewhere cool and maybe sunny.

00:45:51.580 --> 00:45:53.300
And I go back to my cubicle.

00:45:53.300 --> 00:45:59.880
Wouldn't it be better if my job was more like that and less like JIRA tickets in a cubicle?

00:45:59.880 --> 00:46:01.220
Nothing wrong with that.

00:46:01.220 --> 00:46:02.720
But maybe you're looking for a change.

00:46:02.720 --> 00:46:08.200
Like, for folks who are considering getting into training, maybe what's the story there?

00:46:08.200 --> 00:46:10.060
Like, how should they go about it?

00:46:10.060 --> 00:46:12.320
Is it a good idea still these days?

00:46:12.320 --> 00:46:12.940
Things like that.

00:46:12.940 --> 00:46:14.060
So I think it's fantastic.

00:46:14.060 --> 00:46:15.000
I love my work.

00:46:15.000 --> 00:46:15.780
I find it interesting.

00:46:15.780 --> 00:46:18.580
I find it sort of inspiring that I can help people.

00:46:18.580 --> 00:46:20.920
And so I definitely encourage people to look at it.

00:46:20.920 --> 00:46:22.300
But you have to remember, it's a business.

00:46:22.300 --> 00:46:24.320
And so you need to do three things.

00:46:24.320 --> 00:46:27.720
One is you have to really know, like, the Python stuff if you're doing Python training.

00:46:27.720 --> 00:46:32.080
Number two is, like, in the education biz, we talk about pedagogical knowledge.

00:46:32.440 --> 00:46:35.640
And pedagogical, I'm sorry, content knowledge and pedagogical content knowledge.

00:46:35.640 --> 00:46:38.340
So there's, like, knowing the thing, knowing Python.

00:46:38.340 --> 00:46:42.120
And there's the knowing how to teach Python, which is a skill in and of itself.

00:46:42.120 --> 00:46:48.580
Every listener probably had university professors who were clearly brilliant and couldn't explain anything they were doing.

00:46:48.900 --> 00:46:51.400
They were lacking that pedagogical content knowledge.

00:46:51.400 --> 00:46:55.640
And so if you're going to train, you need to think about, how do I explain things?

00:46:55.640 --> 00:46:56.780
How do I make this clear?

00:46:56.780 --> 00:47:02.440
Either through examples or through demos or through exercises or through analogies or through stories.

00:47:02.440 --> 00:47:07.400
I tend to use a ton of stories, both because I think it breaks up the day and because I just like to tell stories.

00:47:07.580 --> 00:47:10.160
And because it helps people sort of be primed for the ideas.

00:47:10.160 --> 00:47:12.240
But then there's the business side, right?

00:47:12.240 --> 00:47:13.520
There's finding clients.

00:47:13.520 --> 00:47:14.420
There's booking them.

00:47:14.420 --> 00:47:16.400
There's convincing them that you're worth working with.

00:47:16.400 --> 00:47:18.500
There's the whole billing thing.

00:47:19.060 --> 00:47:25.440
And so I would say a good place to start, to sort of stick your toes in the water, is give talks at conferences and meetups.

00:47:25.440 --> 00:47:27.600
See how happy you are doing that.

00:47:27.600 --> 00:47:29.160
See how comfortable you are doing that.

00:47:29.160 --> 00:47:30.140
And see how people respond.

00:47:30.140 --> 00:47:35.440
And if people come up to you and say, oh, my God, this was the best thing ever consistently, then great.

00:47:35.440 --> 00:47:36.620
That's a good direction for you.

00:47:36.620 --> 00:47:39.100
If they don't, then just improve, right?

00:47:39.100 --> 00:47:42.320
Everyone starts off being bad at public speaking and explaining things.

00:47:42.320 --> 00:47:45.200
And if I look back to what I tried to teach, like my first year was teaching Python.

00:47:45.200 --> 00:47:46.380
Oh, my God, it's so embarrassing.

00:47:46.920 --> 00:47:50.420
Like I tried to stuff like a thousand topics into two days.

00:47:50.420 --> 00:47:53.760
And if I gave each one more than three sentences, I'd be surprised.

00:47:53.760 --> 00:47:54.620
That's not training.

00:47:54.620 --> 00:47:56.740
But they invited me back for some reason.

00:47:56.740 --> 00:47:58.080
And so I got to improve.

00:47:58.080 --> 00:48:01.100
And so over time, you'll find like topics you're good at.

00:48:01.100 --> 00:48:04.080
And then you can say, oh, well, maybe I can offer this to people.

00:48:04.080 --> 00:48:05.160
You don't have to do it full time.

00:48:05.160 --> 00:48:06.200
You can do a little bit here and there.

00:48:06.200 --> 00:48:07.220
Yeah, that's really interesting.

00:48:07.220 --> 00:48:16.800
And it sounds like, if I'm remembering this correctly, the way you started and also the way I started was started working for another training.

00:48:16.840 --> 00:48:19.160
An established existing training company.

00:48:19.160 --> 00:48:25.180
So I started working at Developmentor way, way long ago, like 2006 or something like that for quite a while.

00:48:25.180 --> 00:48:28.400
And they had the sales team.

00:48:28.400 --> 00:48:29.260
They had the logistics.

00:48:29.260 --> 00:48:30.540
They even had the courses written.

00:48:30.540 --> 00:48:31.700
I had to make it my own.

00:48:31.700 --> 00:48:34.100
But, you know, I could just show up and teach that thing.

00:48:34.180 --> 00:48:38.000
They say, hey, you've got to be in Roseville, California in two weeks.

00:48:38.000 --> 00:48:39.320
And they want to know this.

00:48:39.320 --> 00:48:42.520
You know, and it was they handled a whole lot of it.

00:48:42.520 --> 00:48:42.720
Right.

00:48:42.720 --> 00:48:52.720
Like you as an independent person, you have to deal with accounting, with taxes, with finding clients, with retaining clients, with billing them, with invoices and POs and vendors.

00:48:52.720 --> 00:48:57.240
And just, you know, like a whole host of things that people don't have to.

00:48:57.500 --> 00:49:01.880
So do you recommend maybe starting out by working with some existing training company?

00:49:01.880 --> 00:49:06.840
Or do you think, you know, you just do the dive headfirst in the deep end and, you know, make your way?

00:49:06.960 --> 00:49:09.280
You've said all the advantages of working with a training company.

00:49:09.280 --> 00:49:17.000
And if you're not interested in dealing with all the business stuff or if you need sort of a shorter timeline, then that's probably the way to go.

00:49:17.000 --> 00:49:19.420
Because they will find you stuff pretty quickly.

00:49:19.420 --> 00:49:24.400
And doing it on your own is a way longer game to play playing because you've got to put your name out there.

00:49:24.400 --> 00:49:25.480
You have to make sure people know who you are.

00:49:25.480 --> 00:49:26.420
You have to improve your courses.

00:49:26.420 --> 00:49:32.560
You have to like you're dealing with marketing and business development with large companies, even medium, small companies can be hard.

00:49:32.560 --> 00:49:34.840
And it's a long, long term thing.

00:49:34.840 --> 00:49:36.520
You said you have to get out there.

00:49:36.660 --> 00:49:39.600
You have to have a long runway for this to develop.

00:49:39.600 --> 00:49:40.840
You've got to start blogging.

00:49:40.840 --> 00:49:43.200
You've got to start writing or speaking.

00:49:43.200 --> 00:49:50.080
You've got to let that percolate up into the awareness and then the sales cycle, the enterprise side of like a couple months out.

00:49:50.080 --> 00:49:53.600
And like it's not something you could just quit your job and then start.

00:49:53.600 --> 00:49:54.920
No, no, no, no, not at all.

00:49:54.920 --> 00:50:01.280
And so that's why a lot of people start when they're consulting because they can sort of slowly but surely add to the training and remove from the consulting stuff.

00:50:01.280 --> 00:50:04.380
And they're still going to be able to, you know, eat and pay the mortgage.

00:50:05.640 --> 00:50:07.780
Necessary conditions for continued work.

00:50:09.100 --> 00:50:11.060
The disadvantage of working with a training company.

00:50:11.060 --> 00:50:15.220
And so like I did it first on my own and then I was with a training company and I went back to do it on my own.

00:50:15.220 --> 00:50:21.200
The disadvantage of the training company is basically that they take a huge bite out of whatever you could be earning.

00:50:21.200 --> 00:50:22.840
Like 70% or something, right?

00:50:22.840 --> 00:50:23.960
Like a really significant.

00:50:24.100 --> 00:50:26.160
I taught once in Tel Aviv this like open enrollment course.

00:50:26.160 --> 00:50:29.860
And someone came up to me and said, do you know how much we're paying to be here?

00:50:29.860 --> 00:50:31.720
I said, no, I don't know.

00:50:31.720 --> 00:50:35.160
And he told me, I realized I was getting 10% of the income from the course.

00:50:35.160 --> 00:50:39.340
And I marched into the CTO's office and I said, this is ridiculous.

00:50:39.340 --> 00:50:40.660
You're paying me only 10%.

00:50:40.660 --> 00:50:44.060
And she said, well, you know, we have a very expensive building to run.

00:50:44.060 --> 00:50:48.080
And that's when I realized, okay, like that's not my problem.

00:50:48.080 --> 00:50:48.600
Yeah.

00:50:48.600 --> 00:50:49.000
Yeah.

00:50:49.000 --> 00:50:49.120
Yeah.

00:50:49.120 --> 00:50:59.160
The minimum amount of revenue we have to have just to keep the lights on and pay the accountants and the secretaries and the rent and all that is, you know, hundreds of thousands of dollars.

00:50:59.160 --> 00:51:02.600
You're like, well, you know, if I did this on my own, I don't have that problem.

00:51:02.600 --> 00:51:03.260
That's right.

00:51:03.300 --> 00:51:04.180
My margins are way better.

00:51:04.180 --> 00:51:09.240
However, however, these training companies will typically sign you on to a non-compete.

00:51:09.240 --> 00:51:21.800
And those can range in length of time and level of draconianness where basically they'll say you like, because everyone thinks, oh, I'll start teaching for company X and then I'll leave company X and I'll keep all the clients.

00:51:21.800 --> 00:51:24.680
And they are not so stupid and they will sign you on a contract.

00:51:24.680 --> 00:51:24.960
Yeah.

00:51:24.960 --> 00:51:26.660
Which might or might not be enforceable to do.

00:51:26.660 --> 00:51:29.000
I've never checked saying that you can't compete with them.

00:51:29.000 --> 00:51:29.340
Absolutely.

00:51:29.340 --> 00:51:33.280
The places I've seen this as certainly with the clients, like, you know, I've never checked.

00:51:33.280 --> 00:51:38.220
You don't go into the client and say, I know you're paying them, but I'll do it for half what you're paying them.

00:51:38.220 --> 00:51:44.980
If we do this on the side, like that is a super recipe for some kind of big issue probably involving lawyers.

00:51:44.980 --> 00:51:45.860
You don't want to go near.

00:51:45.860 --> 00:51:49.900
The other one is around the actual course content, right?

00:51:49.900 --> 00:51:55.720
Like if you create course content for them, like that's kind of theirs now a lot of times.

00:51:55.720 --> 00:51:55.980
Right.

00:51:55.980 --> 00:51:56.820
So is it?

00:51:56.820 --> 00:51:57.400
Oh my God.

00:51:57.400 --> 00:51:58.140
It can be.

00:51:58.140 --> 00:51:59.280
Oh, it definitely can be.

00:51:59.460 --> 00:52:05.100
If the training company is paying you to write a course for them that they're going to sell like through you, but also through other trainers.

00:52:05.100 --> 00:52:09.120
A lot of times those contracts will have a, and this is our content.

00:52:09.120 --> 00:52:16.060
Not like you're barred forever from talking about the web or something, you know, but you've got to restart from scratch, not using that material.

00:52:16.060 --> 00:52:16.320
Right.

00:52:16.360 --> 00:52:19.120
So you might feel like, oh, I'm going to build up all those libraries and I can leave.

00:52:19.120 --> 00:52:23.820
And yeah, there's a lot of danger or precariousness to that plan.

00:52:23.820 --> 00:52:24.080
Right.

00:52:24.080 --> 00:52:35.780
But I would say a ton of people do it anyway, because you get experience, you get exposure, you get your name out and better to sort of try out your training to do when someone else is dealing with the marketing.

00:52:36.040 --> 00:52:39.300
And then after a while, like there are tons of companies as we know using Python nowadays.

00:52:39.300 --> 00:52:40.300
So, okay.

00:52:40.300 --> 00:52:47.860
So you won't deal with any of the clients you dealt with before, but now that your reputation is good, people will call you and ask you to do it and you can do it freely.

00:52:47.860 --> 00:52:54.460
And there's probably some part of the non-compete where if they reach out to you directly, it wasn't the same department.

00:52:54.460 --> 00:53:00.900
There's, there's probably ways in which you could actually get back into the same situation, but you know, it's, that's lawyers and, and trouble.

00:53:01.320 --> 00:53:06.060
I certainly see the benefit of doing this on independent, but I feel like it's, it's quite tricky.

00:53:06.060 --> 00:53:08.980
I kind of want to go back to what you said about getting into it.

00:53:08.980 --> 00:53:12.560
I want to second this public speaking side of things.

00:53:12.560 --> 00:53:18.420
Like it's pretty clear that most developers are pretty good and certainly have some area where they're really good at, right?

00:53:18.420 --> 00:53:22.320
They've been working a long time or whatever, and they could train in that area for sure.

00:53:22.760 --> 00:53:33.280
But the ability to stand up in front of 20 people and have a clear, coherent conversation and like lead that group, answer the questions, you know, do all that kind of stuff.

00:53:33.280 --> 00:53:35.920
Like that's not natural for a lot of folks.

00:53:35.920 --> 00:53:40.280
And so this, this public speaking experiences, meetups are really good.

00:53:40.280 --> 00:53:41.700
Conferences are good.

00:53:41.700 --> 00:53:45.700
User groups, code camps, all these things are a lot of them.

00:53:46.200 --> 00:53:48.600
Basically, if you apply, you can get in there, right?

00:53:48.600 --> 00:53:51.140
A lot of the larger multi-track things.

00:53:51.140 --> 00:53:53.160
And that's just super experienced, right?

00:53:53.160 --> 00:53:54.480
It's super stressful at the beginning.

00:53:54.480 --> 00:53:57.160
It takes a long time to get even just an hour presentation.

00:53:57.160 --> 00:54:00.240
And you think, well, how am I going to do eight hours a day for four days?

00:54:00.240 --> 00:54:02.480
If it took me a month to do an hour, like that's insane.

00:54:02.480 --> 00:54:05.080
I'm never going to get this done, but you know, you get faster, you get better.

00:54:05.500 --> 00:54:11.000
But I think you really have to go through that sort of growth curve if you don't have public speaking experience somewhere else.

00:54:11.000 --> 00:54:18.820
It's sort of like, I often make the analogy to like stand up comedians where they'll try a bunch of jokes and they'll see which ones work and which ones don't.

00:54:18.820 --> 00:54:23.260
And so as you teach some, and then they'll sort of like, you know, go through this iterative process.

00:54:23.420 --> 00:54:30.360
So as you teach a topic, and if you give the same talk at multiple conferences and meetups, you'll see which of your explanations work and which don't.

00:54:30.360 --> 00:54:35.920
And so you're going to end up with some stuff that's really good and that you can call your own as well.

00:54:35.920 --> 00:54:38.440
That you're not, it's not derivative material from anyone else.

00:54:38.440 --> 00:54:40.120
But you got to go through the process.

00:54:40.120 --> 00:54:40.780
Yeah, you do.

00:54:40.780 --> 00:54:43.600
You know, and you, it's funny you mentioned the stand up comedians.

00:54:43.600 --> 00:54:48.160
Like it sounds like theoretical or maybe they go back afterwards and they think back on how it went.

00:54:48.160 --> 00:54:52.060
I lived in New Jersey for a little while where my wife was teaching at Rutgers.

00:54:52.400 --> 00:54:56.680
And Chris Rock, the comedian, also lived not far away from there.

00:54:56.680 --> 00:55:01.720
And so there's this little tiny comedy club, you know, maybe it holds a hundred people or something.

00:55:01.720 --> 00:55:05.820
And he did not one show, but he did a show every night for like a week.

00:55:05.820 --> 00:55:11.900
And he would come up and he had a legal pad and he would look at it and he'd study it.

00:55:11.900 --> 00:55:15.080
Then he would tell a joke and then he would take notes on it and they would do it again.

00:55:15.080 --> 00:55:19.860
And the bargain was, yeah, you can see Chris Rock like almost front row for like 20 bucks or 10 bucks.

00:55:20.460 --> 00:55:25.820
The trade-off is he's practicing for his big event in Vegas and he's going to do that live with you.

00:55:25.820 --> 00:55:28.300
So it was pretty interesting to see it in action.

00:55:28.300 --> 00:55:30.100
That is so fantastic.

00:55:30.100 --> 00:55:30.540
Yeah.

00:55:30.540 --> 00:55:36.020
If you follow comedians, like they are very serious about their work and figuring out what does and doesn't work.

00:55:36.020 --> 00:55:41.240
I actually saw like the online course with Steve Martin about how to do like stand up comedy.

00:55:41.240 --> 00:55:44.200
And I found a lot of the things he said really resonated with me.

00:55:44.320 --> 00:55:45.060
Yeah, it's super interesting.

00:55:45.060 --> 00:55:50.300
I think, you know, one of my friends who did training with me, he was a stand up comedian as well.

00:55:50.300 --> 00:55:58.220
And I think, you know, they're not that, I mean, they're obviously different, but they're more similar than people would think who are, you know, not familiar with it all.

00:55:58.220 --> 00:55:59.300
My family hates my jokes.

00:55:59.300 --> 00:56:01.220
So it's good that I have my students to inflict them on.

00:56:02.220 --> 00:56:02.760
That's right.

00:56:02.760 --> 00:56:04.520
They're stuck there for four days.

00:56:04.520 --> 00:56:05.100
I'm going to admit it.

00:56:05.100 --> 00:56:06.080
All right.

00:56:06.080 --> 00:56:07.040
We're getting short on time.

00:56:07.040 --> 00:56:09.520
So let's talk about a couple of other things that you have going on.

00:56:09.520 --> 00:56:11.760
So, you know, you talked about some of the courses that you have.

00:56:11.760 --> 00:56:14.160
You have a couple of online courses, a couple of in-person courses.

00:56:14.160 --> 00:56:20.200
Maybe just quickly tell people like some of the stuff that you have out there so they have a sense of where you're coming from with this perspective.

00:56:20.440 --> 00:56:20.760
Sure.

00:56:20.760 --> 00:56:24.880
So like my in-person courses, I've got a bunch of different levels of like Python.

00:56:24.880 --> 00:56:29.820
So I've got Python for non-programmers and intro and advanced and intro to data science, machine learning.

00:56:29.820 --> 00:56:33.600
And then a few other things I guess mentioned, like a Git course, regular expressions.

00:56:33.600 --> 00:56:39.100
Some of those, I'm sort of moving those online more and more just because, as I said, like my time is limited.

00:56:39.100 --> 00:56:40.240
I can't reach everyone I want.

00:56:40.240 --> 00:56:41.740
And there are individuals who might want it too.

00:56:41.740 --> 00:56:47.080
So like I've got my online store and those are sort of traditional online courses where you have the videos.

00:56:47.400 --> 00:56:51.820
I've tried to include a ton of exercises because from my perspective, like the practice is where it's at.

00:56:51.820 --> 00:56:55.340
And so in my online courses, I'll say, okay, here's your exercise.

00:56:55.340 --> 00:56:56.560
Like go do it.

00:56:56.560 --> 00:56:59.140
And then the next video, I go through the process of how to solve it.

00:56:59.140 --> 00:57:02.860
And so I have another set of online courses, which are very, very different.

00:57:02.860 --> 00:57:09.280
Weekly Python exercise, which strangely enough, as you might not be able to guess from the name, it is a weekly Python exercise.

00:57:09.280 --> 00:57:15.220
And the idea is basically that every Tuesday you get an exercise in the email and then you have a week to solve it.

00:57:15.220 --> 00:57:16.960
And the following Monday, you get the solution.

00:57:16.960 --> 00:57:22.260
And there's a forum where people can exchange ideas, suggestions, solutions.

00:57:22.260 --> 00:57:25.480
And the idea is, and each version of Weekly Python exercise.

00:57:25.480 --> 00:57:28.140
So they're like six different courses, three intro and three advanced.

00:57:28.140 --> 00:57:29.800
Each one is 15 weeks long.

00:57:30.000 --> 00:57:38.700
And the idea is that you are going to be forced to go through exercises that are close enough to the real world that they'll get you to understand some skills.

00:57:38.920 --> 00:57:41.740
But they're different enough that you don't feel the stress of work.

00:57:41.740 --> 00:57:44.460
And that it's what I call controlled frustration.

00:57:44.460 --> 00:57:50.280
Like you might be frustrated, but it's in like, it's time boxed and it's not connected to your work.

00:57:50.600 --> 00:57:57.260
And so that's like the thing that I'm building up mostly and that I'm really excited about because people are always asking me, okay, we finished the course.

00:57:57.260 --> 00:57:58.760
Where can we get more practice?

00:57:59.080 --> 00:57:59.920
Yeah, that's really cool.

00:57:59.920 --> 00:58:00.840
I like that idea.

00:58:00.840 --> 00:58:04.460
You know, Will Smith, I think, he actually said this.

00:58:04.460 --> 00:58:07.140
I don't know if he actually created this idea.

00:58:07.140 --> 00:58:08.960
This was his original idea or he's just repeating it.

00:58:08.960 --> 00:58:11.800
But that practice is controlled failure.

00:58:12.640 --> 00:58:15.420
Yeah, it sounds like this is that for programming.

00:58:15.420 --> 00:58:22.000
Like, yeah, you might not get it right all the time, but it's not so far out of touch that you have no hope or whatever, right?

00:58:22.000 --> 00:58:23.220
You'll be brought along.

00:58:23.220 --> 00:58:23.660
It's cool.

00:58:23.660 --> 00:58:24.100
That's right.

00:58:24.100 --> 00:58:24.540
That's right.

00:58:24.540 --> 00:58:25.060
Yeah, absolutely.

00:58:25.060 --> 00:58:26.360
In addition to that stuff.

00:58:26.360 --> 00:58:29.720
So, I mean, I have a newsletter that I send out once a week.

00:58:29.720 --> 00:58:30.420
Well, two newsletters.

00:58:30.420 --> 00:58:35.800
One for Python programmers, which are called Better Developers, and the other one for trainers called Trainer Weekly.

00:58:36.080 --> 00:58:45.560
And basically, with the Python newsletter, I just sort of get lots of ideas from my students for things that they are confused about or they want to know about and things that I want to learn about.

00:58:45.560 --> 00:58:46.880
And so I can write that up.

00:58:46.880 --> 00:58:53.960
And Trainer Weekly, I'm basically writing about all the things we've discussed here and more, like the business side of training, the logistics of it.

00:58:53.960 --> 00:58:55.320
How do you put together a syllabus?

00:58:55.320 --> 00:58:56.500
How do you approach clients?

00:58:56.500 --> 00:58:57.280
How do you get clients?

00:58:57.280 --> 00:58:59.980
Including a whole bunch of my failures, like you mentioned failures just now.

00:58:59.980 --> 00:59:04.840
I tried to put together an open enrollment course in Tel Aviv, and it was an abject failure.

00:59:04.840 --> 00:59:08.000
So I describe what I did wrong and what I'm going to try to do better next time around.

00:59:08.000 --> 00:59:08.680
That's pretty cool.

00:59:08.680 --> 00:59:11.140
The training one sounds super interesting to me.

00:59:11.140 --> 00:59:13.720
You know, if I was still doing that, I would definitely sign up for that.

00:59:13.720 --> 00:59:15.040
That's pretty cool.

00:59:15.040 --> 00:59:17.140
You also do a podcast, right?

00:59:17.140 --> 00:59:23.280
I have, like, the main podcast I do is called The Freelancer Show, which is for, strangely enough, freelancers and consultants.

00:59:23.280 --> 00:59:25.480
And I'm one of the panelists there.

00:59:25.480 --> 00:59:27.220
I've been on for like four or five years now, I guess.

00:59:27.220 --> 00:59:30.420
And there we talk about everything having to do with freelancing.

00:59:30.420 --> 00:59:34.060
Obviously, my perspective is one of training, but we talk about pricing.

00:59:34.260 --> 00:59:35.340
We talk about finding clients.

00:59:35.340 --> 00:59:37.700
We talk about what to do when things go wrong.

00:59:37.700 --> 00:59:40.500
A lot of pricing stuff, but also a lot of marketing.

00:59:40.500 --> 00:59:45.720
But also sort of how do people who are freelancers need to understand, yeah, they're good at what they do, say programming.

00:59:45.720 --> 00:59:48.860
But when you're freelancing, you have to be good at the business side, too.

00:59:48.860 --> 00:59:50.500
And that's where a lot of people are lacking.

00:59:50.500 --> 00:59:50.840
Yeah.

00:59:50.840 --> 00:59:52.900
Is it almost like a mastermind group?

00:59:52.900 --> 00:59:53.560
Sort of.

00:59:53.560 --> 00:59:53.940
Sort of.

00:59:53.940 --> 00:59:55.920
I mean, usually every week we'll have a topic.

00:59:55.920 --> 00:59:59.140
This week we're going to talk about how to raise prices on clients.

00:59:59.240 --> 01:00:02.700
And the next week we're going to talk about how can you approach big companies.

01:00:02.980 --> 01:00:04.640
And so, yeah, you could argue it's a mastermind.

01:00:04.640 --> 01:00:11.540
We have guests probably like once every month or so now who are successful freelancers who come in and share their ideas and topics with us.

01:00:11.540 --> 01:00:11.860
Super.

01:00:11.860 --> 01:00:12.680
It sounds interesting.

01:00:12.680 --> 01:00:14.380
People should check it out.

01:00:14.380 --> 01:00:15.700
PyCon.

01:00:15.700 --> 01:00:18.560
Last time we talked in person was in Cleveland.

01:00:18.840 --> 01:00:20.540
And we're both going to be back there.

01:00:20.540 --> 01:00:23.860
We both are going big and having booths and all sorts of fun stuff, right?

01:00:23.860 --> 01:00:26.560
I am super, super excited about PyCon.

01:00:26.560 --> 01:00:29.760
It was the best when I went there last year and when we met.

01:00:29.760 --> 01:00:32.880
So, yeah, so I'm going to have a booth under the weekly Python exercise name.

01:00:32.880 --> 01:00:37.680
I'm going to be talking about, like, my courses and my books and online stuff.

01:00:37.680 --> 01:00:41.460
I'm also giving a talk about decorators on Friday morning.

01:00:41.940 --> 01:00:47.140
So, I will be a bit of a zombie afterwards, but I am so, so, so excited about this.

01:00:47.140 --> 01:00:47.780
That's super cool.

01:00:47.780 --> 01:00:49.140
I'm super excited as well.

01:00:49.140 --> 01:00:52.200
Like, PyCon, it's like my geek holiday.

01:00:52.200 --> 01:00:57.680
I get away, hang out with my friends and just fully embrace the whole programming world.

01:00:57.680 --> 01:00:59.160
I love it, every bit of it.

01:00:59.160 --> 01:01:00.660
So, looking forward to it.

01:01:00.660 --> 01:01:05.560
My 16-year-old is learning Python as part of, like, an entrepreneurship and programming thing she's in here in Israel.

01:01:05.560 --> 01:01:07.420
And she is devastated.

01:01:07.420 --> 01:01:10.720
She can't come to PyCon with me because it interferes with end of high school exams.

01:01:10.940 --> 01:01:13.260
Like, we were planning on this and we keep going through the calendar.

01:01:13.260 --> 01:01:16.280
So, like, we keep saying, okay, maybe next year.

01:01:16.280 --> 01:01:18.480
Because she, even without having been there, is super excited.

01:01:18.480 --> 01:01:20.840
So, if she's excited, you out there should be excited.

01:01:20.840 --> 01:01:21.560
Yeah, absolutely.

01:01:21.560 --> 01:01:25.440
I think it would be a really cool experience as a high schooler just getting into programming.

01:01:25.440 --> 01:01:31.400
It took quite a while for me to kind of program alone reading books before I actually got out into the crowd.

01:01:31.400 --> 01:01:32.060
So, it was nice.

01:01:32.060 --> 01:01:32.660
All right.

01:01:32.660 --> 01:01:34.100
Well, PyCon is going to be great fun.

01:01:34.100 --> 01:01:37.640
I think you've shared a lot of interesting stuff around training,

01:01:38.060 --> 01:01:41.880
both for people consuming training or those who want to get into training.

01:01:41.880 --> 01:01:43.280
A lot to think about there.

01:01:43.280 --> 01:01:46.180
Before I let you go, though, Ruben, two questions for you.

01:01:46.180 --> 01:01:48.000
If you're going to write some Python code.

01:01:48.000 --> 01:01:48.680
And let me ask this.

01:01:48.680 --> 01:01:50.900
I'm going to give you a double first question.

01:01:50.900 --> 01:01:56.760
If you're at home working on a project for yourself, what Python editor do you use?

01:01:56.900 --> 01:02:03.180
And if you're up in front of a whole bunch of people doing a presentation, a training class, what editor would you use there?

01:02:03.180 --> 01:02:03.800
Is that the same?

01:02:03.800 --> 01:02:04.200
It's different?

01:02:04.200 --> 01:02:04.800
What's the story?

01:02:04.800 --> 01:02:10.920
So, I was brainwashed at the age of 18 to believe that Emacs is the only editor out there.

01:02:10.920 --> 01:02:11.320
Of course.

01:02:11.320 --> 01:02:12.840
It's built on Lisp, right?

01:02:12.840 --> 01:02:15.700
So, end of discussion.

01:02:16.680 --> 01:02:19.520
I mean, look, when I was at MIT, even the secretaries used Emacs.

01:02:19.520 --> 01:02:20.240
So, like...

01:02:20.240 --> 01:02:21.200
Wow.

01:02:21.200 --> 01:02:27.760
And I think I met my first non-Emacs user after I graduated.

01:02:27.760 --> 01:02:28.600
I was like, really?

01:02:28.600 --> 01:02:30.560
There's this thing called VI that people can use?

01:02:30.560 --> 01:02:31.400
How odd?

01:02:31.400 --> 01:02:32.500
And you take yourself seriously.

01:02:32.500 --> 01:02:36.580
And now I've learned to, like, muffle my laughter because it's considered impolite.

01:02:36.680 --> 01:02:42.580
But I tell my students that they should use PyCharm because, like, the learning curve is, shall we say, slightly lower.

01:02:42.580 --> 01:02:44.780
But in front of them, I'll definitely use Emacs.

01:02:44.780 --> 01:02:48.120
That said, most of my presentations, like, I barely use slides.

01:02:48.120 --> 01:02:49.820
Like, I'll send people the PDFs of the slides.

01:02:49.820 --> 01:02:52.820
And almost everything I do is live coding while talking.

01:02:52.820 --> 01:02:54.060
And I use Jupyter for that.

01:02:54.060 --> 01:02:57.760
And it's not quite Emacs, but it's perfect for presentations.

01:02:57.760 --> 01:03:00.160
And I can send people the notebook at the end of the day.

01:03:00.160 --> 01:03:00.720
Yeah, it's cool.

01:03:00.720 --> 01:03:03.200
And you can have better notes and links and stuff in there.

01:03:03.200 --> 01:03:07.000
It's not just, like, a weird comment that, you know, you stick in some part, right?

01:03:07.000 --> 01:03:08.140
It's got this flow.

01:03:08.140 --> 01:03:08.860
That's cool.

01:03:08.860 --> 01:03:10.640
I certainly think those are good ideas.

01:03:10.640 --> 01:03:13.860
I was thinking maybe Jupyter might make an appearance in your answer there somehow.

01:03:13.860 --> 01:03:17.000
Yeah, since you had the Jupyter notebook set up for the students as well.

01:03:17.000 --> 01:03:19.720
Okay, so notable PyPI package.

01:03:19.720 --> 01:03:21.980
Maybe not the most popular, but something you heard of.

01:03:21.980 --> 01:03:23.720
You're like, oh, you should learn about X.

01:03:23.720 --> 01:03:25.840
I wish I had something super clever to say.

01:03:25.840 --> 01:03:29.940
And I'm just going to stick with, like, Jupyter and, you know, pandas.

01:03:29.940 --> 01:03:31.940
I continue to be impressed by pandas.

01:03:31.940 --> 01:03:32.860
Boy, oh, boy.

01:03:33.300 --> 01:03:34.620
They just stick a lot of stuff in there.

01:03:34.620 --> 01:03:38.100
And, I mean, I only use it in my data science courses.

01:03:38.100 --> 01:03:43.620
But people's jaws just drop when they see what they can do with it in so little code.

01:03:43.620 --> 01:03:44.880
Yeah, those are both super good.

01:03:44.880 --> 01:03:48.520
One that I ran across that you might find interesting is something called Bullet.

01:03:48.520 --> 01:03:50.860
Like, the gun type of bullet.

01:03:51.340 --> 01:03:58.200
But it's for building command line interfaces that instead of, like, printing out option one, option two, option three, which do you want?

01:03:58.200 --> 01:03:58.860
Enter one, two, three.

01:03:58.860 --> 01:04:03.320
It's like a combo box with a select drop-down type thing in the CLI.

01:04:03.320 --> 01:04:05.780
It even has a scroll bar if they exceed too long.

01:04:06.020 --> 01:04:08.040
And it's all, like, terminal-based.

01:04:08.040 --> 01:04:08.700
It's beautiful.

01:04:08.700 --> 01:04:09.220
Whoa.

01:04:09.220 --> 01:04:09.560
Okay.

01:04:09.560 --> 01:04:10.300
I got to look that up.

01:04:10.300 --> 01:04:10.880
That sounds amazing.

01:04:10.880 --> 01:04:11.260
Yeah.

01:04:11.980 --> 01:04:14.660
It's pretty simple but also pretty cool.

01:04:14.660 --> 01:04:16.700
So, anyway, yeah, a bunch of cool packages.

01:04:16.700 --> 01:04:20.000
Jupyter and Pandas are definitely changing the world.

01:04:20.000 --> 01:04:21.720
Well, final call to action.

01:04:21.720 --> 01:04:25.880
Let's say people are interested in getting into training, getting started with that.

01:04:25.980 --> 01:04:27.000
Like, what would you tell those folks?

01:04:27.000 --> 01:04:29.180
As I said before, go try to give talks.

01:04:29.180 --> 01:04:33.840
Find something that you find really interesting because if you find it interesting, other people will probably find it interesting.

01:04:33.840 --> 01:04:35.400
And propose it as a talk.

01:04:35.400 --> 01:04:38.760
And that will force you to really understand it because you're going to be explaining to other people.

01:04:38.760 --> 01:04:40.900
That will force you to think about how you're going to present it.

01:04:40.900 --> 01:04:44.220
And it probably won't go great the first time, but that's to be expected.

01:04:44.220 --> 01:04:46.740
And so just sort of try.

01:04:46.740 --> 01:04:51.420
If you, like, my trainer weekly newsletter has lots of tips about that.

01:04:51.420 --> 01:04:52.700
And if you want, you can also reach out.

01:04:52.700 --> 01:04:53.900
I'm happy to talk to people about this.

01:04:53.900 --> 01:04:55.820
I love, love, love talking about training with people.

01:04:55.820 --> 01:04:56.140
Super.

01:04:56.140 --> 01:04:59.160
And if people want to have training at their company, what do you tell them?

01:04:59.160 --> 01:05:01.660
I tell them, call me, email me.

01:05:01.660 --> 01:05:03.840
Like, you can email me at my email address, my info.

01:05:03.840 --> 01:05:06.240
And the list of the courses I offer is on my website.

01:05:06.240 --> 01:05:08.020
That's at learner.co.il.

01:05:08.020 --> 01:05:12.480
Ironic, the last name I know, but it's L-E-R-N-E-R, not L-E-A-R.

01:05:12.480 --> 01:05:13.880
Learner.co.il.

01:05:13.880 --> 01:05:15.780
And people can see that there.

01:05:15.780 --> 01:05:15.980
Cool.

01:05:15.980 --> 01:05:17.120
Yeah, we'll put a link in the show notes.

01:05:17.120 --> 01:05:18.020
All right.

01:05:18.020 --> 01:05:21.300
Well, Reuben, it's been great to talk to you about this stuff.

01:05:21.300 --> 01:05:25.700
And yeah, I didn't even get to ask you about the confessions of a public speaker.

01:05:25.700 --> 01:05:28.040
But I think we're out of time.

01:05:28.040 --> 01:05:32.420
I'll put a link to this book that has a whole bunch of crazy stories that people who do training

01:05:32.420 --> 01:05:34.020
and public speaking have run into.

01:05:34.020 --> 01:05:36.820
And maybe next time you're on, we'll talk some about that.

01:05:36.820 --> 01:05:37.340
I'd be delighted.

01:05:37.340 --> 01:05:41.360
And we can do a PyCon chatting it up and exchanging horror stories with one another.

01:05:41.360 --> 01:05:43.860
That sounds like it'll go well over a beer in Cleveland.

01:05:43.860 --> 01:05:44.440
I'll see you there.

01:05:44.440 --> 01:05:45.380
Excellent.

01:05:45.380 --> 01:05:46.120
See you there, Michael.

01:05:46.120 --> 01:05:46.380
Yeah.

01:05:46.380 --> 01:05:46.800
Talk to you later.

01:05:47.640 --> 01:05:50.420
This has been another episode of Talk Python To Me.

01:05:50.420 --> 01:05:56.260
Our guest on this episode was Reuben Lerner, and it's been brought to you by Linode and Metasnake.

01:05:56.260 --> 01:06:00.500
Linode is your go-to hosting for whatever you're building with Python.

01:06:00.500 --> 01:06:04.040
Get four months free at talkpython.fm/linode.

01:06:04.040 --> 01:06:05.940
That's L-I-N-O-D-E.

01:06:05.940 --> 01:06:10.820
Metasnake is the place to go for your in-person team training needs.

01:06:10.880 --> 01:06:16.120
Get a free consultation for your team at talkpython.fm/team training.

01:06:16.120 --> 01:06:18.360
Want to level up your Python?

01:06:18.360 --> 01:06:23.180
If you're just getting started, try my Python Jumpstart by Building 10 Apps course.

01:06:23.180 --> 01:06:28.260
Or if you're looking for something more advanced, check out our new async course that digs into

01:06:28.260 --> 01:06:31.340
all the different types of async programming you can do in Python.

01:06:31.340 --> 01:06:35.280
And of course, if you're interested in more than one of these, be sure to check out our

01:06:35.280 --> 01:06:36.000
Everything Bundle.

01:06:36.000 --> 01:06:37.880
It's like a subscription that never expires.

01:06:37.880 --> 01:06:40.180
Be sure to subscribe to the show.

01:06:40.180 --> 01:06:42.680
Open your favorite podcatcher and search for Python.

01:06:42.680 --> 01:06:43.820
We should be right at the top.

01:06:43.820 --> 01:06:48.640
You can also find the iTunes feed at /itunes, the Google Play feed at /play,

01:06:48.640 --> 01:06:52.820
and the direct RSS feed at /rss on talkpython.fm.

01:06:52.820 --> 01:06:54.900
This is your host, Michael Kennedy.

01:06:54.900 --> 01:06:56.400
Thanks so much for listening.

01:06:56.400 --> 01:06:57.460
I really appreciate it.

01:06:57.460 --> 01:06:59.220
Now get out there and write some Python code.

01:07:09.480 --> 01:07:17.940
I'll see you next time.

01:07:17.940 --> 01:07:18.620
Bye.

01:07:18.620 --> 01:07:19.000
Bye.

01:07:19.000 --> 01:07:19.020
Bye.

01:07:19.020 --> 01:07:19.940
Bye.

