Matt Harrison is an author and instructor of Python and Data Science. This episode focuses on his training company, MetaSnake, and corporate training.


Transcript for episode 63 of the Test & Code Podcast

This transcript starts as an auto generated transcript.
PRs welcome if you want to help fix any errors.


Welcome to Test and Code, a podcast about software development and software testing.

Matt Harrison is an author and instructor of Python and data Science. During this episode, we’re going to talk to him about lots of things, including corporate training. Matt’s written several books on Python, mostly self published, so of course we talked about that. But the bulk of the conversation is about corporate training, with me playing the role of someone considering starting a corporate training role and asking Matt, an experienced expert in training, how to start and where to go from there. I think you’ll learn a lot from this. I did. Thank you to Pie Charm for sponsoring this episode. Check them out at testandcode.com, PyCharm and listen to their segment later in the show.

So on today’s testing Code, we have Matt Harrison. Matt, could you introduce yourself?

Sure. I am Matt Harrison, and I run Metasnake. Metasnake is a Python and data science training consulting shop. So I do a bunch of virtual training, a lot of that through O’Reilly. And I do a bunch of live training as well for clients. So these are typically big clients where they have a bunch of people who need to learn Python or data science or some combination of those things. And I do training for them. I also do consulting as well. The consulting sort of lends in good to being able to train because at least it seems in this environment there’s a lot of fast moving parts or technology is changing. So being able to consult allows you to sort of stay on top of what is out there in the real world.

That’s a meta snake. And in addition to that, I guess I’m a creator. And so I’ve written a couple of books on Python and Pandas. My most popular book is Illustrated Guide to Python Three that came out a year or so ago. Jeez, I can’t even remember my name. The name of my book. Yeah. Learning the Pandas Library. My O Straight Guide to Python Three book previously was called Treading on Python, Volume One. So it’s a beginner guide to Python. And then I have volume two of that, which covers intermediate topics like decorators and generators and those sorts of things.

That’s how I discovered you.

Yeah. And so right now I’m actually working on three books and a couple of courses as well, in addition to training and consulting. So that’s I guess me in a nutshell.

We got lots of questions. I’ll just jump off from a lot of these.

Okay.

When you say consulting.

Does that mean like a contract employee sort of thing or does that mean I guess it means that someone has some work that they want done and I don’t want to be a full time employee, but I will do work for them, that sort of thing. Typically, a lot of it is sort of minimum viable product or exploratory type stuff where they want someone to go check out some problem or create minimum solution for them or do some analysis for them.

Okay. You’ve written a lot of books and you also work with O’Reilly. Are the books through O’Reilly or through your medicinal?

Yeah, that’s a great question. So I have worked with O’Reilly for a couple of years. Having said that, all the books so far have not been through O’Reilly. They’ve all been self published.

And I guess my editor, who I was working with O’Reilly, we decided to sort of remedy that. So one of the books I’m working on right now will be through O’Reilly, and that’s a little machine learning book that should be.

But the other one has all been self published, and I have sort of mixed feelings on self publishing or publishing. It certainly empowers people to be able to if you want to write a book or do you think it’s really easy to do these days? And so publishing can be a great way to go. And even if you want the O’Reilly name or whatnot, you could start off with self publishing and that will sort of get you multiple publishing houses have come to me and said they wanted to publish my books after the fact. So even if you like pitched a book and they said, no, you go out and write your book. And if it does, well, you can go out and pitch it to them again and say, hey, do you want this book now? And I think a lot of them would be interested. At least that’s my experience. A lot of publishing houses have pitched me about acquiring my books after the fact.

Interesting. Okay. So I only have the one book, but I had an ebook that was a survey of pytest nose and unit test and did that before I did published with Pragmatic.

That doesn’t count as a book.

I guess it does count as a book because it was a self published book. But they don’t exist at the same time because one of the original idea for the Pragmatic book was to be similar, a similar sort of competing with the previous book. So it ended up not I scrapped the unit test and nose portion of that to just focus on my test. Yeah, I guess that’s true. I guess I did. Both the self published and the self published book was all blog content. It was all content that was freely available anyway. Just people could buy it if they wanted to in an ebook form. It is interesting. I follow you a lot because it seems like the self publishing thing is at least sort of working for you. Illustrated Guide to Python Python Three is huge. And I know a lot of the other ones are pretty cool as well and well received. There’s a lot of work that goes into self publishing.

There is a lot of work, I guess I would say there’s a couple of questions we can get into sort of the nuances of self publishing versus published or whatnot. But from my point of view, Amazon is sort of the big elephant. And if you’re on Amazon, then that’s where 90% of your sales are going to be.

Self publishing allows you to get on Amazon relatively easily. If you are published through some other house, they’re going to get you into Barnes and Noble or whatnot, and there can be some good sales from that. But the real question is how much marketing and pushing of the book are they going to do for you if they’re not going to do a lot of that, that’s the trade off, right?

Definitely.

And it seems like most companies don’t want to do a lot of marketing for you, or they do relatively little. Right. They’ll do an email blast every now and then when your book comes out. But that’s about it.

Yeah. I’m going to play Devil’s advocates here and just say that even if they were doing a lot of marketing for books, I wouldn’t be paying attention to it, whereas the authors themselves I might be paying attention to already.

That’s a good point. And most people don’t write books, I guess, to get rich off the books. Now there are some books do very well from them and make a salary from them, but most technical books aren’t full time sort of pay.

And if you want to write a book, you should probably write it for other reasons other than monetary reasons per se.

There’s a ton of questions I have for you about books, but I know that I guess one of the things I’d like to try to tell people listening is I think it’s worthwhile to write about software, either on a blog or I think, trying to do a long form, even for a short book like under 100 page book. I think it’s a decent idea to try to get your head around how much you really understand about something. So I think that’d be a cool thing, but I don’t really think that many people are going to take us up on that.

This episode is sponsored by PyCharm. I have told you that my team has switched to PyCharm to speed up our workflow so far. I’ve talked about the awesome pytest support, Get integration, and in episode 62, the virtual environment support. Today I want to tell you about all of the file types I have to deal with. My Python projects are not just Python files, they also have any files, YAML files, Config files, and documents, and Markdown and Restructured text. Pycharm applies syntax highlighting to all of these. Very cool helps with the visual feedback, but it’s the preview feature for Restructured text and Markdown that I really love. I almost always forget to put blank lines above lists in markdown, so I always double check the preview when making changes to lists. And really, anything you can have live preview on or hide it and just check after you make changes. Super useful in restructured text. Pycharm really saves my butt there. I don’t have hardly any of the restructured text syntax memorized, so I always have live preview on to make sure I don’t look up some documentation when I’m modifying it. If you value your time, you owe it to yourself to try PyCharm. Just for Test And Code listeners. You can try PyCharm Pro for an extended four month trial before deciding which version you want to use by going to testandcode.com pie PyCharm this offers good until April 1, but don’t wait. Save time now with PyCharm.

One of the things I’ve always been interested about is this in person corporate training sort of thing. I did talk with Ruben, learner about that a little bit. He does that as well. You mentioned you do that. So is your corporate training is that in person you show up and do like one or two days of training at a site or something?

What that typically consists of is multiple three or four days at a site and, you know, full day training taking.

I have courses on fundamentals of Python. I have intermediate Python. I have testing Pandas courses, visualization courses, machine learning courses. So talking to a client, seeing what they’re interested in, and then getting them the material that they want. And right now there seems to be a large demand for Python and Python training. And so it’s a great place to be right now.

If I was somebody that wanted to start doing that, that just seems overwhelmingly I wouldn’t know what to do.

Say you are like some guy who wrote the only book on Pi test and you wanted to, like, do training on Pi test. Right. So how would you do that hypothetical?

Say some person exists. Okay. I mean, I think the first thing to do is probably start small. Right. And I guess it depends on sort of what your goal is.

Yeah.

Are you looking to do, like, corporate training is like a side gig, or are you looking to do it sort of on a weekend night thing, or are you sort of looking to do it on a more full time basis? Right. Because I think corporate training is probably a little bit more difficult to get into than maybe like consulting or something like that where you can do it in off hours or whatnot. Corporate training is typically during the hours that you typically be at another job or whatnot.

Right.

So unless you have a really flexible job, that makes it a little bit hard, if that makes sense.

Well, then let’s take it out of the hypothetical of me because I can’t be going off during the I’d be taking vacation time, I guess, to go do this. Yeah. If somebody were to start even if I had like, I was doing contract jobs or something and it was relatively easy for me to get some free days to go train somewhere. Still, that is starting small does make sense because you got to make a name for yourself, right?

Yeah.

Does it take a long time to come up with the content? When you started? Did you have a whole three days planned already or did you just jump in and wing it?

I guess I can go over my background a little bit more. So when I was in high school, I have always been sort of involved in tutoring and helping and that sort of thing. My mom is a secondary school teacher.

I guess teaching and that sort of thing is in my blood. So I did tutoring in high school for math. I did tutoring in College, basically paid my way through College through tutoring. And so I’ve always sort of felt like I’m decent at helping people get through something. Right. I mean, if I can take someone who’s getting a C in math and help them get an A in math, maybe I can help them learn how to program or something like that.

And I guess just from that slant, when I would read something or learn something, I would take my slant out. Well, how would I change this or how would I like to learn this?

I think back 2006 or so.

I think it was 2006. I pitched a tutorial to Python for just the beginning Python course, a three hour course, which was in my mind, this is what I would like at that point. I’d been using Python for like six years, and it was like this is what I would want if I was new to Python and I was coming to it. These are the things that I would have liked someone to tell me. I did that tutorial and I was just sort of out of the blue. I thought, no, this would be fun. It’s a good chance to speak and I like to help and teach. And then my book sort of came out of that talk was accepted at another conference and I figured that I would rather than rewrite the slides, I would take the content of that and put it into a book.

Okay.

And so that sort of starts the book thing. And then I basically been doing a lot of tutorial stuff since then. Almost every Python since then I’ve done one or two tutorials or done the kids learn Python day or whatnot about four years ago, I just had enough material and enough time teaching that people were coming to me asking for help with learning Python. I think it was a combination of putting myself out at conferences and also the books. And that combination sort of put me in a place where people would approach me to help them.

Okay. How often?

How often are I doing training? Yeah.

So I could be on the road 24/7 if I wanted to.

Okay.

But I try and limit that. So I’ve got a family and I kind of enjoy being at home with them. And so I try and limit to being on the road a week or so, a month.

Okay. Do you usually have to travel then for these?

Some of my clients are remote and I’ve got a couple of good clients here locally. So I’m based out of Salt Lake City in Utah. And so I’ve got a couple of good clients locally that I work with as well.

Okay.

But yeah, if I wanted to, I could be in New York or California 24/7 teaching Python.

There’s a huge demand out there.

Yeah. What sorts of variety is most of your stuff that people are requesting? Is that a lot of beginning Python?

I have a lot of my own clients, and I’ve also taught for other people, some well known Python trainers that you’ve heard of. I’ve taught courses for them as well.

It seems that right now Python sort of the hot language and everyone wants to or big, traditional Fortune 500 type companies are now migrating saying, oh, we need to use this because IBM is pushing it or big companies are using it now. And so a lot of the training that I do has been for network engineers or system administrators who are sort of adopting Python. There are a lot of nuance that a lot of people I think don’t understand and don’t, out of their own initiative, go and discover. And so some people will. They’ll watch videos or read esoteric blog posts or whatnot. But a lot of people, when they’re at the job, like, okay, well, I need to do a function. This is how I make a function in Python. They don’t ever worry about, like if default variables are mutable or whatnot. And sometimes they run into that issue and they’re not really sure what happens, but after a couple of hours, they figure it out or whatnot. And so typically push and say, like, what do your developers really know? Because typically what I do is I will give a fundamentals of Python course first. And even though people have been quote, using Python for years, it seems that there’s a lot of value in that. Just talking about the object model of Python, what’s going on under the covers and understanding the ethos of Python makes things just sort of click and the other classes seems to flow better after that.

Is the fundamentals like one day of the three, or is it a three day thing?

No, that’s a three day thing.

Yeah, it’s probably good. And then, like you said, you teach different like network engineers or sad Mans or security people. Will you target your examples towards whatever they’re doing, or how does that fit in?

I have done that. It just depends on the client. So I tell the client beforehand, hey, if you’ve got some data or examples that you know that you want me to cover? Give those to me and we can look at that. And so I have done that. And I did that recently with the machine learning and Exploratory data analysis class. And that was really cool just because they were all subject matter experts in the data. Right. And so they enjoyed digging into that.

Did you know, like a data analysis and machine learning on your own or for job, or did you pick that up so that you can do training?

So I have a computer science degree from Stanford and my first job out of College was working for a search startup out in Silicon Valley. From that I picked up some NLP and some basic bi analytics type stuff. And then after that I had the chance to start a small company doing business intelligence in a niche vertical. And then after that I went to work for a storage company doing basically data analysis and statistical process control and predictive models around failure mechanisms and using Python to pull the data and run these models and what not. And so a lot of data science, I mean, the definitions for data science, you ask ten different people, you get ten different answers. But some people say it’s a programmer who knows more statistics than most programmers. Other people say it’s a statistician who knows more programming. So I guess I would fall into the boat of someone who’s a programmer who knows slightly more statistics than normal programmer.

Are these types of classes and courses getting more popular or. I mean, I would guess they’re getting more popular, but am I right?

For me? Yeah, they are getting more popular. I’m seeing more demand. And AI and ML are sort of buzzwords these days. A lot of people want to use them, think they need them or think they need them. And perhaps a lot of people should use them or could have some low hanging fruit where they could leverage us and make sort of a lot of gains, but they’re just not in a place to really take advantage of it, just with maybe their data or the environment, the maturity of the engineers or whatnot.

But there’s also a big spectrum.

That’s a silly thing to say, actually. But there’s everything from facial recognition running on a Raspberry Pi up to, like you’re doing huge models that run over long periods of time on massive numbers of servers. And this is all sort of in the machine learning and data science fields. So that’s where a lot of it gets at least my perspective. Looking in from the outside, I wouldn’t even know if I have the equipment or what kind of data I need or what size to start working with that I can give, like my Anecdota.

Right.

I’m a sample size of one and I consult on probably relatively small projects. Right. What I mostly see is what we call structured data. So structured data would be something that’s in a database or in a spreadsheet or something like that. And a lot of the times people will want to make some prediction so they know that generic examples are like, I want to predict how much a house costs. Right. And so I have a spreadsheet that has all these past sales, and I want to make a model that will predict how much my house will sell for based on square footage, number of bathrooms, acreage, that sort of thing. And so that would be you have a database that describes that, that would be structured data, and we would make a predictive model about that. Also popular these days, or at least there’s a lot of buzz. Deep learning. And deep learning is more dealing with unstructured data. That would be videos or images or text.

We just have a bunch of information, but it’s not necessarily organized in a way that you can pull data apart from it. But using deep learning, deep learning, sort of. If you imagine your data is sort of a crumpled up piece of paper, deep learning can sort of uncrampled that paper and figure out where the interesting points are on it, if that makes sense. The simplified analogy of what’s going on there.

Yeah, cool. So, like, if somebody jumped into that and actually really anything, whether it was testing or some specific or even Python or specific aspect of the language, like maybe Asynchronous or whatever, the buzzword is that they want to beef up on and wanted to share that to help other others in their field, whether it’s, I guess, specifically in person training reasonably, it could be something that somebody could set up for. They would just say, I’ve already got a full time job, but I can do like one or two afternoons a month just to get their feet wet. Is that something that would be reasonable or what do you think?

Yeah, I guess. Let’s take the case of Pi test, right?

Yeah.

If you were to attend a class on Pi test, how long do you think would be like a good length of a class for Pi test?

I guess that’s a good question. It depends on what you want to get done, but it’d be great if I could learn enough to get up to speed in like a half a day.

I do training on pytest through O’Reilly, so I have some courses on Pi test, row O’Reilly and with like hands on examples and whatnot you can basically cover. Here’s how to lay out your project, here’s how to write a simple test, here’s how a Cert sort of works, and here’s how to run them. But you can’t get into really fixtures or parameterization or marks or any of that in that amount of time.

Okay.

At least that seems to be my experience. Right. With a class and then sort of pushing them through examples. And my training tends to be very hands on. Okay, here’s some lecture, and then here I’m going to let you try it out on your own machine. I take the approach that I think most people learn.

Well, there’s a quote by Confucius, so it goes something like this, I hear and I forget. I see. And I remember. I do. And I understand. I’m very much of that. If I do something, I understand it. And so I feel that a lot of lab time and trying stuff out is good.

All right. So actually, there’s probably less content than I would have expected to fill up, like a couple of days.

If you haven’t done corporate training, you’re probably overestimating. Not that there isn’t a lot of work there, but you’re probably overestimating the content that would go into it. For a three hour class, you’re basically going to be able to talk about the basics of a unit test or the unit test paradigm, laying out your project and writing a simple test and maybe catching exceptions.

We’re seeing this a lot, not necessarily pytest, but like, for instance, Python understanding. And what I’m saying is I’m seeing people that they have, like, somebody else in control decided on some tool, and the way they use it is through Python. So they’ve got to learn enough Python to get that part of their job done.

I see a lot of people like that. I would call them like the begrudging Python attendees. Right. They’re in the class, but they’re not necessarily happy about being in the class, but their manager is sort of forcing them to be in the class.

And I understand, like, if you’ve been doing whatever C plus plus or Java for 20 or 30 years, and then your boss comes and says, oh, you need to learn Python and you’re a newbie again, that can be sort of humiliating or big blow to your pride. Right. To have to sit into a class and be a newbie again.

I get that. I hope people don’t have that attitude, because what I end up seeing is people that occasionally have to hire people. And what I end up seeing a lot of is I see a lot of examples of people that have lots of experience in coding, but only a little bit of experience in Python, but they think they know enough. They know the syntax. So then I see Python programs that look like C programs. They’re just written in Python. I see Python programs that look like Java. Those are a hard pass for me as far as hiring goes, partly because of that, because I know that that person hasn’t embraced the I’m new. It’s something I’m going to learn. How they do it. Part of it is just difficult. I mean, like you said, it’s easy to get the job done in Python. Even if you do it in an extremely inefficient manner.

It can be difficult. I mean, like I said, I do train a lot of these types of people who are coming to Python with a lot of experience.

But I think if you take the right attitude and sort of take a step back and don’t try and make Python VC or Java and you understand sort of the fundamentals, which I think a lot of people don’t, because not a lot of people are writing blog posts about that. They sort of just skip over these things.

There’s a surprising number of people. It’s surprising to me, at least the number of people that are not learning things on their free time just for the heck of it, they do what they need to for their job.

For those people, I think corporate training is awesome because those are the people who they like their job, but they’re not going to go out of their way to learn something sort of at night or on the weekends. And so I think that’s when you want to say, hey, let’s bring in a trainer in here and he’s going to level up or he or she is going to level up everyone.

So they all have the same basic understanding and foundational skills and then they can move together. And then you’re not sort of fighting about why are you writing this? Like it’s C or C, those sorts of issues. And those people who are writing the code that way will understand why or how they should be using the tool the correct way.

So you’re doing corporate training, like about one week a month. What do you do in the other three weeks? You got three weeks off taking vacations.

Like I said, I do a bunch of online training. So I do that for O’Reilly, a lot of online training. So I have, I think ten or so classes that I do for them. So I have a pretty cool course on just hands on intro to Python. And it’s basically an experiment in massive pair programming, group programming. So just finished one of them last night, 200 people and walk through creating what’s called a Markov chain. The idea is again, it’s an introduction to Python. So it’s assuming you’ve had some programming practice. But the course is a little bit different from most courses. There aren’t any slides and we just basically you open a terminal or command prompt, we ensure that you have Python installed. We launch idle and we start coding and we make this Markov change generator that eventually we go to Project Gutenberg and download some files. And then we train the Markov change generator, and then we write a reple and a command line client for it. And along the way talk about sort of the ethos of Python and Python and best practices and how Python may be unlike other languages. So that’s one of the classes I teach there. Like I said, I also have pytest classes there. Visualization Pandas machine learning.

These are not recorded courses.

Safari has what they call Live training. And so they are recorded. But the intent there is to have a live instructor there to be able to help you with the issues you might have or come across.

Do you get to see people how they submit their code or something?

There’s a chat interface where I can interact with them.

Okay.

So it’s sort of weird.

I mean, my family will see me, like, sitting in my office talking to my computer for 6 hours on end. Right. But that seems to be my life. And so, yeah, the other three weeks I do that a bit. And then like I said, I do some consulting, and I’m also in the middle of three books right now.

Well, you keep this place up in another year, you’ll have like 20 books or something.

I don’t know about that.

And then we get to see each other at Python because we’re going to chill out in the same booth for a while.

Pycharm people are going to have a little booth there.

Neat.

Cool.

We did meet in person a couple of times, at least ran into you at the last two Pycons, and that’s been fun. Yeah. What’s really exciting to you about Python or consulting or anything you got anything that you’re really excited about lately?

I get quite a bit of people who email me on LinkedIn or directly, and I want help. I want some sort of mentoring type system.

I’m trying to think about how to crack is how to assist those sorts of people. Right. Typically, corporate training makes broad generalizations, like good corporate training is with a large company that has a training budget and has a bunch of people they need to train. Right. So that’s sort of a good gig. Right. Maybe a less good gig is a smaller company that has one training that they need or sort of has one employee that they need to train.

And so I’m trying to figure out how to sort of crack that nut or if there’s a way to scale out to not just provide video, but be able to provide mentoring and feedback to multiple sort of individuals, but maybe in a mass effort. And that’s something I’ve been thinking about. I’m not quite sure how to do that, but it seems like there’s a demand for that or people keep asking me for that, and I haven’t quite figured out how to do that.

That’s an interesting thing to keep in touch with you. If you figured that out. I’d love to hear about it. Yeah. There’s a bunch of other stuff that I think I could ask you about, and we could get into deep into a lot of these things, but I think I want to wrap it up. We haven’t mentioned where people can find all of these. Goodies. Do you have a central place that you advertise or blog at or anything?

My company is called Metasnake. And so Metasnake.com, you can go there and that is my company. I typically tell people like the best way to get in touch with me if they want to is probably via Twitter. So Dunder M. Harrison. M. Harrison.

That’s a good initial point. And then if we need to do exchange emails or whatnot can pass it on from there.

Okay. I am getting more and more into some data science stuff.

Well, that’s awesome. Yeah. And I was sort of half joking but in my Pi test class I push your book. I recommend it. And if you are interested in doing Pi test training or want some help in doing that, maybe like on the side or whatnot or weekend type thing, then we should talk about it. And I’m sure given your background and experience writing a book, that would be something that you should be able to leverage.

That might be fun. Anyway, cool. I’m glad I have you as a friend and I’ll tap that shoulder when I need to.

Okay. Awesome.

Well, thanks a lot for talking with us today. There’s a lot of great info and we’ll check in with you later. Thanks.

Okay. Sounds good.

Thanks again to PyCharm for sponsoring the show. Remember to try out PyCharm pro for four months before picking a license by going to testandcode.com PyCharm. That link is also in the show notes at testandcode.com. 63 also in the show notes are the links we discussed about in the show. Thank you Matt for talking with us, for helping teach people Python and for helping to promote my bytes to book. That’s awesome.

Thanks also to Patreon supporters. You keep me going and thank you the listener. Thank you for helping to grow the show by spreading the word to friends and colleagues on social media and on giving ratings on itunes or wherever you listen. That’s all for now. Go out and test something. We’ll maybe start a training practice with all this great advice from Matt.