Software Developers Journey Podcast

#83 Reuven Lerner had his career all planned out?


⚠ The following transcript was automatically generated.
❤ Help us out, Submit a pull-request to correct potential mistakes

Reuven Lerner 0:00
The eighth grade school yearbook that we published had a section for each student saying, what do you want to be when you grow up? And in what is definitely my greatest prophecy ever? I said, at the age of, I guess 13. When I grow up, I want to be a computer engineer. I want to write books, and I want to teach. And so I feel in many ways that for the last four years, I've been supporting this goal, whether I knew it or not, we're moving in that direction, combining these different interests of mine in the software world, but also in the writing and also in the teaching.

Tim Bourguignon 0:44
Hello, and welcome to DevJourney, the podcast shining a light on developers lives from all over the world. My name is Tim Bourguignon, and today, I received Reuven Lerner. Reuven is a full time Python trainer. He coaches courses at companies in the US in Europe, Israel, India, China, and of course online. Among other activities. Ruben has been running learner consulting since 1995. He is also the CTO of rent like a champion, and even based home rental company based in Chicago. And on the side, Ruben pushes his newsletter called better developers to more than 10,000 readers every week. And last but not least, Ruben is currently doing the last edits of his book Python workout, which will be published by Manning early next year. Reuben, welcome to deaf journey. Thank

Reuven Lerner 1:41
you, Tim. I'm really happy to be here.

Tim Bourguignon 1:43
It's my pleasure to receive you today. So let's go right in there. What led you to the IT world in the first

Reuven Lerner 1:50
place? I've been working with computers since I was really really little. I'm gonna turn 50 next year. shocking is that is for me to say and admit But basically the story is that when I was probably in third or fourth grade, I had double vision, like my eyes weren't quite focusing in the right direction. And so we went to an eye doctor, and he gave me some exercises to do to help point them together. And it wasn't super serious. But it was enough that the doctor wanted me to do these exercises, and I did none of them. So we went back to the doctor, I'm guessing a few months later, and he said to my parents, listen, this kid Reuven, he's just not going to do what we're telling him. But there's this new thing called an Atari. And if you get video games, I promise you, he's going to want to play these things. And he's going to focus his eyes. And sure enough, my parents bought the Atari and sure enough, I was addicted to it. And at some point, my parents got me a basic programming cartridge for it. Which if I remember correctly, you could program something like 64 bytes. I'm not joking. 64 bytes of a program. And this was the most marvelous, miraculous, amazingly fun thing I'd ever done. It was like a whole world opened up to me even though like it's just a joke in terms of anything we would think of as a modern computer, you know, your your cell phone as a billion times more computing capability than that thing did. And it was clear that I was excited. So I was probably Yeah, third, fourth, maybe fifth grade, at the very least, I'm the very most and soon after that, my parents got me a birthday present, because they saw I was getting into it, and I was sort of outgrowing that programming. And they sent me to a local computer company, where they were offering classes and program. I want you to imagine this is like 1978 1979, something like that. Who is going to classes at a computer company like a computer store, to to learn how to program. It was me at the age of eight or nine and a bunch of 40 year olds who wanted to know how They could use this computer revolution to computerize their business and make it modern. And so I was really, really into computers. I was really into programming. And we even got a computer at home. But the computer we got at home was this special one off system made for employees of digital, which was a big computer company back then, they threw together a terminal and a processor and some memory and the CPM operating system, which was like a precursor to dos in many ways. Um, so I had computers around me, and they were great fun to work with. Um, but I really didn't do that much programming. I read a lot about programming, but I really hadn't done it myself. That said, That said, the eighth grade school yearbook that we published had a section for each student saying, what do you want to be when you grow up? And in what is definitely my greatest prophecy ever? I said at the age of, I guess 13 when I grow up, I want to be a computer engineer, I want to write books. And I want to teach. And so I feel in many ways that for the last four years, I've been supporting this goal, whether I knew it or not, we're moving in that direction, combining these different interests of mine, in the software world, but also in the writing and also in the teaching. Now, along the way, there were, of course, many different stops. So after high school, I was fortunate enough to get into MIT and go there. And then I discovered what people who really know programming are like, and are really good at computers are like, it was pretty amazing to see what people did. And I learned a lot from them. But I also learned that maybe I want to do something. It's not just working with software. And so one of the greatest things that happened to me while I was at MIT, was I joined the student newspaper. Now in many American universities, the student newspaper is this ultra competitive organization where in order to get in, you need To prove that you can write really well, and that you're dedicated to the cause. And at MIT, in order to get onto the student newspaper, you basically need a pulse. Because the number of people who actually want to write, and edit is pretty small. So we had a small group, but we were great. We had great fun. We learned a ton about writing, editing, putting on newspaper, we put out a published newspaper twice a week, every Tuesday and Friday throughout the entire school year. And I learned a tremendous number of skills. Now, how did that affect my career? Not only did it improve my writing and editing, that's for sure. But one day, one of my friends from the newspaper, went to a lecture and he came back he said, Listen, I just heard this guy named Tim berners Lee, and he's talking about this thing he just invented called the World Wide Web. This is going to be big, we should get in on it. And we were like, okay, let's, let's try it sure. Sounds good. And we tried a few other systems also. We tried. Go for it. We had had archives, but like, and everyone used the internet at the time. But the web was a brand new use of the Internet. And so we set up a website, we sort of, you know, hodgepodge together some software that we got from someone else and modified it for our needs. We hacked the the typesetting system we were using, so that it would output data that was acceptable to like that was valid HTML. And like, while we were online, we were on the web. And we emailed Tim berners Lee and said, Hey, we put together this website, what do you think? And he wrote back and said, Oh, that is so cool. I will put you on the list of all the websites in the world. Strangely, Tim berners Lee is not in that business anymore. So don't try doing this. And so it turns out, we were one of the first hundred websites in the world and we were the first newspaper to go online. And every time we would publish in print, we would also publish on the web. Now I want to remind you that this was early 1993. So it was like in this hazy area between When I was supposed to graduate, and when I actually did graduate, the newspaper definitely did not help with my academic career there. Nor did it help me with graduating on time. But at the time, no one knew what the web was. So we actually took out full page ads in our own newspaper saying to people, hey, you can now access it online. Here's your you're going to need a browser. Here's what a browser is. Here's where you download it. Here's where you get it. So we started how to bootstrap our community of readers to know, like, what the web wasn't how to read it. That obviously was a huge turning point in my career, because it meant that I was early on one of the experts in doing web stuff, whatever that was. And so when I graduated from college, I started working for HP and I worked there doing medical stuff. So I did some medical and hospital applications for about two years. And I was bored stiff, really like it was for anyone has ever dealt with serial ports and are the pins crossed or they're not cross border ring. Boring, boring. And so when a friend of mine from MIT called me up and said, Listen, Time Warner is interested in getting into this web thing. Are you interested? I said, Absolutely. And so I joined their fledgling web group, doing web application development for Time magazine and all that sister magazines, and for Warner Brothers entertainment. And no one knew what we were doing. Like it was all new. It was all exploring, it was all sort of trying all sorts of stuff, just to see what would work. And of course, no one knew how anyone was ever going to make any money off of this web thing. We just knew we had to do it. Right. There were no ads at the time. There were no subscription services where there were subscription services. And they were in utter failure because there wasn't enough of a following. And so I started working there. Now back when I worked at HP, I also had another sort of pivotal moment where I was working there over the summers and then I was working there, I guess for two years as well. And there was a guy whenever they would have meetings, like company meetings. Two of us were not involved. But I was not invited because I was a student intern. And this other guy was not invited either. And I asked him, Hey, why, why don't you go? And he said, Oh, I'm a contractor. And I said, What's a contractor? He said, Oh, it is the best. You basically do programming. You make a lot more money than any of these other guys. And you work at this company for a few months, that company for a few months, I didn't really understand what he was telling me. The Truth be told, it sounded really good. I didn't quite get it. But this was in the back of my mind. Ha, one day, maybe I can do this sort of thing. And I've always toyed with the idea of having my own business. And so in 1995, after working at Time Warner for about eight months, I moved to Israel, I long plan to move from the US to Israel, I thought about it talked about it for a long time. And people asked me, Well, what are you going to do? And I said, Well, I'm thinking of opening up my own consulting business, and much to my great fortune, my managers at Time Warner said, Great, we will be your first client. And so I basically arrived in Israel. With like a duffel bag, and some other belongings and a computer and a client. And so I quickly had to set up the business and find out how this all worked and what it was going to do. So I found an accountant to help me set up a temp incorporate. And he asked me, have you ever run a business before? And I said, No. And he said, That is great. You will think the way we do it in Israel is totally normal then, because you have no basis for comparison. And so I've had my business since I guess 1995 1996. And it has definitely evolved over the years. When it started off. I was doing web application development. And by the way, even calling it web application development sounded comical in those days. I remember they gave me a business card saying I was a web developer. And I laughed and I said, you can't call this software development. Like Come on, what are you talking about? And of course, nowadays, you know, web development is very serious, multi billion, maybe even trillion dollar industry. And so some companies would call me in to help me with their websites, some companies would call me and help them build websites. I was doing some system administration and Linux stuff for people. And it was a hodgepodge of various things. And I basically had enough going between that work with Time Warner, which lasted for about four years, and other clients that like I could fill my time. And it was really everything. I mean, there was a woman who lived down the street from me, who would bring me over to her house to fix her computer problems and install software on it. But little by little, I started working more and more in the corporate world. And that's how I was doing mostly pro programming. I should add, like, back when I was at MIT, we realized that we had this website, but we wanted to have some feedback from people as well. So I said, Okay, I bet I could write a program to do that. Like I just learned Perl and didn't seem that hard. So I wrote a program that I called formmail, which as the name implies, right, it allows you to take a form and send it via email to someone. So I actually like another claim. Famous I wrote the first as far as I know, program on the web that lets you send email. And then this other guy, somebody, Matt, took my program ripped out the security stuff that I put into it, put it up on his thing they called Matt script archive. And then I get all these bug reports from people saying, Hey, your thing is insecure. I was like, I didn't do it to do it. So if you ever heard of for male, the odds are pretty good. You heard about it from like the other guy enough for me, but oh, well, I shouldn't be griping about this 30 years later, but I have it seems. So So what then started to happen was, as I was finding different projects with different companies, some of them remote, like Time Warner, New York and me and Israel, and some of them local in Israel, because at that point, Israel's high tech industry was starting to take off and there weren't enough people. And so people would call me up and hire me to do a whole variety of things. And here and there, very occasionally, companies would say, we don't want you to do the programming. We want you to To teach our people how to do the programming, I was like, sure, that sounds like fun, I can do that. And so I started doing some training as well. And so my life was this combination of local work, remote work system ministration web development, so whatever I could do, and I felt very good about this, because it meant really, like I felt, okay, I'm helping people with whatever they need. And if I get a phone call from someone saying, Hey, we need help with technology x, do you know technology x? The answer was clearly Oh, absolutely. I know, technology x, and that I put down the phone or to the book on technology x, read the book, get there and hope that I could, like, fake my way through, pretending to be an expert on technology x. And because I've been doing this sort of stuff longer than anyone else, especially in the web in the Linux area. I was usually able to get away with it. I should also have around this time, um, I so I'm a big user of Emacs, which is a long Time like programming editor that I was brainwashed into using back when I started MIT. And by the way, someone I saw someone say a few years ago that Emacs stands for editor used by middle aged computer scientists, and Guilty as charged, but it's really wonderful. And so for a while, I was editing the Emacs FAQ. And so this company that did reference cards, emailed me and said, Hey, we do we're doing a reference card for Emacs. Would you mind looking it over and making sure that it's actually good? So I looked over, I said, Yeah, it looks good to me. Here's some edits. So they wrote back and said, Great, thanks so much. Instead of paying you can we give you 10 things from our catalogue of reference guides, I should say, that sounds like sound fine to me. So this company, basically was the publisher of Linux journal magazine, and they announced they were starting a new web related magazine. So I wrote to them and said because I have a friend who had been a computer columnist for many years, and he kept telling me, this is a great gig. You should get one if you can. So after that said, you know, I've been doing this web stuff for a few years, would you be interested in having me do a web column? So they said yes. And I published two or three columns in what was then called web Smith magazine, was Smith magazine then died a quick death, because you know, the web wasn't really going to go anywhere. And they fortunately folded my column into Linux journal, where it continued monthly for more than 20 years from 1996. Till, well, 2019, when in August, it was very abruptly killed off by the owners by the new owners. And so I was constantly sort of getting exposure through the column to people people knew me, or at the very least, if I got a call from company, they'd say, Well, what sort of experience do you have? I could tell them what I'd done. Tell them which companies I worked with. And I would say, oh, and I'm a columnist at Linux journal, and some combination of these things. Definitely gave me the cachet I needed in order to do stuff. So I tried, as I said, all sorts of different things. And then I hired people To work for me, because you know, that's what happens if you're a consultant, you get popular, you get a lot of work, you start hiring more people and I had these like dreams, these visions of having like the the lunar consulting towers, where we have thousands of people buzzing around doing all sorts of software work. And so I hired a bunch of people work for me first one person at a time. And then when my wife and I got married, and we moved to our new city to move in, I rented a place I hired five or six people to work for me. Can't remember if it was five or six, it was like, either, I think like the five engineers and one secretary, I actually had a secretary for a year. Unfortunately, this was in 2000. And, and right, basically, the bottom dropped out of the market. And so after a few years of everyone calling me non stop the phone ringing off the hook, all my clients basically evaporated. I had one great client, where they called me up and said, We love the guy who is working on site with us. We want to hire him, and you can either give him to us as an employee Or we will no longer work with you. Well talk about an offer I can't refuse. So I downsized from having those, you know, six employees to just me. And that was a lesson that was a very big lesson in terms of running a business and how to do it. And what I really wanted, and became clear to meet, I was not really interested in having a big company, I wanted to do the actual work. I didn't want to just be managing people and schedules and money, which it seems I wasn't that great at anyway, I was very good at getting work for myself. And so so getting worked for the people worked for me. Indeed, that seems to be something about consulting, where a consulting company has a famous person at the top and a lot of people working for them. And everyone wants to work with that famous person. No one wants to work with the underlings. But the famous person is famous because they're running a company, and they don't have time to do the actual development. It also became clear at that point given like that I had to pay people full time salaries, having to pay full time salaries is not a good idea, at least for someone like me. And so since then, I when I've had to It worked for me and I have, it's always been on an hourly basis, where they get a large proportion of whatever I get, I shouldn't say hourly, whatever I get from the client, they get a large proportion of that. But it means that there's no work that I don't have to pay them. And it's not a good way for everyone to work with me. But it's worked out, okay for the people who have. And now I don't have anyone working for me at all. And quite frankly, I don't see ever hiring anyone again. I'm really very happy with that. And so I was doing like, so after I laid people off, I was still doing all sorts of projects, but you know, is going to be a grind is going to be a real annoying grind. Like every project. Here's how it works in consulting, you start a project, everything is great, everyone's happy things are going gangbusters, and then the company shuts down, or the company has a change of heart, or the project just ends or they have someone internal work on instead. It never ends well. Right. It always ends on a bitter note with a bitter taste. And so I talked to a friend, a family friend about this You know, this whole consulting is just going to be a real grind. He said, Why don't you go do a PhD. If you do that, you will learn lots of new skills, you will meet lots of new people, you'll get new directions, your head will be filled with new ideas. And then you can sort of decide where you're gonna go. So I started a PhD in learning sciences, I very specifically did not want to do one in computer science. I want to do something that was using computers, but not directly computer science. And so I went to we all moved to Chicago, my wife and two daughters, I moved to Chicago. While we were there, we had our third child, our son. And I did well basically, I did the coursework, and then we returned to Israel four years later, and I continued working on the research flying back and forth between Israel and Chicago several times per year to be told what a terrible graduate student I was, which was not completely untrue. And on the one hand, it took a really long time I graduate after 11 years. So if anyone out There's interested doing a PhD talk to me first. I did and I'll like, refer you to a therapist. At the same time, I'm really proud of the work that I did. Like I created this collaborative web application for people doing simulation building, where people continue to use it, like hundreds of people continue to use it every week from around the world. So it's like a lot like something that's sitting on a shelf during that period, and I'm wrapping up here, like my history during that period, that I was flying back and forth. I was continued to do consulting and projects and this and that. And I ran into an old colleague slash friend who said, Why don't you try doing training? I was like, Oh, yeah, I've done training in the past. He said, Well, why don't you do it with a training company where they will market you? And so he got me in touch with the training company. And they said, Well, what do you want to train? I said, Well, I'm really doing a lot of Ruby on Rails nowadays. I sort of moved from Perl to Ruby. And they said, Well, no one's interested in Ruby, but send us your resume. So I sent it to them. They said, Oh my God. You know, Python, we need Python training big time. And that was when I started becoming a Python trainer, because there was more and more demand for my training. And there was less less demand for development. And besides which I discovered, training was way more fun, way more interesting. No one calls you in the middle of night with bug reports. And I'm like, and it pays better than development. And so over time, I sort of made my project work less and less, made my training work greater and greater. And when I finished the PhD, I called the training company and said guys has been great, but I'm going back to doing this on my own. And I did. And that was, I guess, I finished a PhD about five years ago, five and a half years ago, as of this recording. And so I've been basically doing full time Python training, let's say called seven, eight years now, when I've been doing it part time for longer than that, and I have never been happier. I'm never like, more satisfied with my work. And I get to travel a lot. In the last year alone. I was in the US I was in India, China, I go to China a bunch of times a year. I work in Israel, I go to Europe, I meet really smart, interesting people. And I feel like I get paid to help them do their jobs better. What can be better than that? Like, I'm loving it. And the only downside is it pennyways there's such demand like there's not enough time for me to service all those people. So I've started taking my courses and little by little recording them putting them online. And that's of course been a whole new thing learning how to sell online and market online. So that's where I was an M. And, okay, that's it for now. Let's move on to the next question or leave me in another direction.

Tim Bourguignon 23:45
Dory, that's been a blast listening to you. I have one comment that goes back all the way to the beginning. It's the first time I hear someone saying that they got a prescription for an entire

Reuven Lerner 23:57
you know, you have these memories of child hood at certain things stick out. And I remember that so so clearly. And I also remember coming home from school. My sister's a year younger than I am. And we came home from school and we hear a blip, blip, blip, blip blip in the other room of my parents playing with it. Because of course, they had to test it out first to make sure it was really acceptable. Um, yeah, it was like one of these now, would I eventually have gotten into computers quite possibly. I was the puzzles I was into games. I was good at math. So it's not like it wasn't like the Atari changed that but definitely bent the curve and meant that I was exposed to this stuff very early on. And just sort of feel comfortable with machines and how they work and and and just like playing with that. I think it

Tim Bourguignon 24:43
fits. What I've heard from you until now. It's it's what I would expect as well. Yes. You said at one point that you would try and wing it. If somebody said, Hey, we need some money to who knows x. Can you do this and you will say absolutely. Do you have an example of some time when it backfired? And how did you handle this?

Reuven Lerner 25:05
Yeah, there's one example of when it backfired big time. So I've been using it. So I think nowadays most computer science students have to learn something about databases and SQL. But back when I was in school, that just like didn't, it wasn't on the radar, because professors didn't see it as an important thing to learn. And so and I had also been very dismissive of databases for years. We need some who needs them until like, I realized, Oh, you know, these are really useful things. So I've been playing with MySQL for a few years already. And I, you know, and I've used it in websites, I use all sorts of things. And then I got a call from a company here in Israel saying, Hey, we're having some MySQL problems, can you help us? And I was like, oh, what kind of problems thinking they don't know how to use select. And they were like, oh, we're having problems with optimization of our database. I said, I said, Oh, okay. I'm sorry. I can help you with that. And so I read everything I could about optimizing it. And I showed up. And I still remember sitting opposite this guy, him asking me questions and saying, ha, let me check. And basically like going through my notes, going through my books trying to figure out like, Oh my god, I have no idea what to tell them. And it was basically like painfully clear to both of us within, I'm guessing a few minutes, I think it lasted half an hour, 45 minutes, that I could not help them in the slightest. Like, I was just way out of my depth. I'd never done optimization of anything like this before. And I would say, I did not learn the lesson then. But it took me many, many years to learn the lesson, that it's better to specialize and be like the big fish in a small pond, the expert in a small set of skills. I think part of it was I was so used to the computer industry being relatively small then, and everyone could master everything, right sort of like you know, scientists in the 1600s 1700s. They knew all of science and math because how much was there to know. And the early days of the web, I sort of knew everything there was to know because Cuz how much was there to know? But then I got caught, I got caught that I was trying to be too much of a generalist and learn too much about too many things. And so when a number of years ago, I decided I was going to training that it felt weird like him, I'm turning off these potential sources of revenue. And then I said, I'm only going to trainee in Python. I got rid of my Postgres courses and got rid of my Ruby courses, because I just felt like I couldn't keep up. And I was worried about people not calling me I was worried about, like, being bored. And those were turns out to be like, completely false. But those were those were actual fears that I had. And if also many years ago, I said, I'm going to specialize in x where x could be anything that I would have been caught so flat footed.

Tim Bourguignon 27:43
How did you go from from being that broad of a T shaped developer, to really focusing on Python and building your business into Python and data science training?

Reuven Lerner 27:56
It was very fluid and organic, so Like I used to say, I mean, I even remember having on my website, whatever technology you want, we'll work with you on it. And really like, again, that was fine. And then I saw, I think, with the training, especially when the training company started selling my time, and they were so good at it, like, at first, it would be one course a month, it was two a month. And at a certain point, basically, they had booked me solid three, four or five months in advance, where someone would ask for a course, you know, we'd say, Well, you know, it's now January, I can give you time in April. And that's when I realized, okay, I'm enjoying this a lot. And I should just keep doing like lots of training because it pays the bills. It's easier. It's more fun, all those sorts of things. But that point is doing training in many things. So first, I focused more on training. And then it sort of dawned on me, there's so much demand for Python training, and there was very little demand for Ruby training. And keeping up with Ruby was just hard to do is at the level I wanted to to do. The training. And so what was hardest and satis for me was giving up the PostgreSQL training, which I might get back to at some point, just because I love Postgres so much, but you can only learn so many things to the depth that you need. And so little by little I sort of saw, where were the clients where, where the money was where the market was going. And I said, Okay, I'm choosing Python, Python is big, Python is growing very quickly. And the other things might also be big and growing, but either not as quickly or they're not quite as much in my wheelhouse. But I can easily imagine a universe in which I was a specialist in PostgreSQL training, instead of Python training. It would take a different term, but it's equally plausible.

Tim Bourguignon 29:46
What attracted you specifically to the training business?

Reuven Lerner 29:49
It's a whole bunch of different things, partly the fact that you could schedule things far in advance, especially with big companies. I mean, some of the big companies I work with, they are very happy to schedule things. See Say even 12 months in advance, one of them says we will schedule up to 12 months in advance. And and I'll say, Well, what about 10 months from now such and such a place? They'll say, Oh, no, the conference room is actually already scheduled. Yeah, there. It's, it's preposterous. Um, so for a self employed person, for a freelancer to be able to schedule things that far in advance and book days, solid is just like unheard of, you know, if I'm doing development, I'll maybe booked out a month in advance maybe to if it's a big project, or if I'm like, on site somewhere a bunch of months. But to know, I mean, I can look at my calendar, and I'll tell you basically, what city what country what company I'm going to be in four months from now. And that's because I've sort of reined in some of these companies. So that's very attractive. And typically these companies pay right I'm not just saying they pay well, although they do, but they also pay on time. You don't just start yelling at these startups. Please pay me or I will, what, what nonsense, but besides the business part, I get a tremendous sense of satisfaction of helping People do their jobs better helping people to understand in my case, Python and related technologies better that when I'm done with the day, like I'm not shilling for any company, I'm not saying my company's products are amazing what I and I don't even have to say because it's all open source, I don't have to say, and Python is wonderful no matter what I love pointing out where Python does Crazy, Stupid things, or it's confusing, but helping people to understand where those crazy stupid things are, so that they can use it better. And you know, it's incredibly incredibly gratifying just I guess, but a week or two ago, I was at a company where I do a lot of work. And this guy offered me a ride to the train station. He said, Listen, one of the reason I want to give you a ride was to let you know thanks to your introduction to generators, Python technology, thanks that we were able to reduce our code base by 80% on one project. And I mean, the the gratitude that people feel and expressed to me for helping them in their work is is just dramatic and incredible. warm and gratifying, satisfying. So the more I do it, also, I'll tell you, the more I do it, the better I get it. It's like anything else you do. So I can be a better and better developer. And I think I am over time, but I'm also going to be a better and better teacher. Um, the analogy I often make us a stand up comedians, if you see a stand up comedian, and they you laugh at every joke, they tell, that's great, or you're me and you just laugh at everything. But like, basically, it's because not because the joke is great, although it is it's because they've told it 100 200 300 times before, and they've tweaked it, and their intonation and their timing. And the wording has all changed to optimize for your laughter. And so I do try to the same thing with teaching. I try to basically optimize for learning optimized for understanding. So every time I teach, I'm messing with the analogies with the stories with the descriptions until I see that it really hits And works. And so I'm able to fine tune that and then give people sort of an improved learning experience, which so it feels good for me and it feels good for them. And it's very much of a virtuous circle that keeps keeps improving. Mm hmm.

Tim Bourguignon 33:13
Is that one of the key skills that you acquired to become a trainer?

Reuven Lerner 33:18
Yes, yes. And I took me a long time to sort of understand that I mean, look, the PhD work that I did in learning sciences, which is like a combination of computer science, cognitive science and design, all for education. So I learned a lot about how people learn and what isn't, is not effective in terms of teaching. But it took a while to sort of take those ideas and put them into practice. And I'm still improving but no doubt. In the education biz, you talk about content knowledge, and pedagogical content, knowledge, and content knowledge is I know, Python, pedagogical content knowledge is I know how to teach Python, others are separate skills, obviously connect with separate skills. And so what I've been doing over The IRS is trying to improve not just my content knowledge of Python, how does the language work? But my pedagogical content knowledge? How can I get these ideas across to people, to me a long time to figure out how to explain hash functions and dictionaries to people in a way that wasn't colossally boring or mathematical. And I, when I finally stumbled upon it, I was like, Oh, I get this, I think people will too. And I don't have to drown them in crazy math ideas just to have it work. And so I'm always looking for that. So that That, to me is the challenge. How can I explain more in less time and be more effective,

Tim Bourguignon 34:32
and to give them another trick to learn this? Other than doing it and and getting better at it by doing it?

Reuven Lerner 34:42
I can't think of one offhand. Although certainly it helps to think like a newcomer right? If, if you're just going based on what you know, you're totally going to miss it. Right? If I just come in saying, well, I've got all this expensive programmer. I let me try to learn this new data structure. Oh, It's such as such as such a paradigm. No, no, you have to say, Okay, what is it doing? How does it relate to other things, you want to tell a story, you want to have a clear mental model. And I feel like if I have a clear mental model, and if I have a clear story for how I'm going to use these things, and why I'm going to use these things and why they're invented, then that'll help my students as well. But there have definitely been bombs, right. Like, I've definitely come in and tried to explain something, and I get glassy eyes staring back at me. I say, okay, that that one we're not doing again. I'm also Oh, actually, I do. I do have a trade secret in that which is living in Israel. So Israelis are famously, um, shall we say, not reticent to express themselves? Ask questions and challenge authority. So if I go into a classroom, and I try to like handwave and explain things not in detail, they will skewer me and so I know That if I teach a class in Israel three, four or five times, that is like the best, you know, bug testing I can get. Because after that, like after I've gone through those three, four or five iterations, based on the feedback I got from people, I can go to another country. And they'll be like, wow, how did you know? I was gonna ask that? How did you anticipate my thoughts and my questions I'd like well, we can thank my previous students for that. So I definitely see like living here and teaching here as a competitive advantage. So don't don't don't come and start teaching here by competitors, because that that won't be fair.

Tim Bourguignon 36:35
This is one of the things that amazes me when when we're doing public speaking or to teaching is just how much you learn about the material you're teaching by just trying to teach it and getting questions and you just think, Oh shit, I have no idea.

Reuven Lerner 36:52
So, so I learned a phrase or like I said, as a to a few years ago, which I love and I even tell my students Which is there are two types of questions. They're good questions and excellent questions. Good questions, the student does not know the answer. And excellent questions. The teacher does not know the answer. And so I encourage them to ask excellent questions. And I'll say, Okay, I didn't know that I'm going to do my homework, like my job is then to go find an answer. And I also tell them 60 70% of what I teach is a direct result of students questions. And for me, that's the fun, right? I'm getting paid not just to teach, but to learn. I'm constantly improving my understanding of Python and related technologies for myself, and it's always just like this constant positive feedback loop. So I see myself as learning just as much as they are. And I think that that sort of attitude also encourages them not to feel dumb for not knowing these things. We're all always learning. And that's an attitude you just got to have in the computer industry, you're always going to be learning no matter where you are. So embrace it, and embrace the fact that it's it should be fun to learn and interesting.

Tim Bourguignon 37:59
Did you say I'm That you teach your students to ask excellent questions.

Reuven Lerner 38:04
I encourage them to I tell, I say like, please ask me questions. You know, I want to be challenged if something doesn't make sense to you let me know. And probably once a week, twice a week, I say, wow, I really don't know the answer to that. I'm going to research it. And sometimes I can research it right there in class while they're doing an exercise or something. And sometimes, you'll have to come back they'll say, okay, that's my homework. I'll try to come back the next day, and tell them what I found. And sometimes it really changes my understanding of language, right? Sometimes it really is. Profound, profoundly interesting insight that they've provided me with

Tim Bourguignon 38:42
those switching gears. What led you to writing this book that you're finishing right now?

Reuven Lerner 38:49
Um, so it starts off as with many tales with hubris. So, um, my students were asking me Late after class, okay, we've taken your class, this was great. Where do we go for more practice? Because they knew, as everyone does, like, the only way to get better programming is to practice. Where do we go for more practice? And so I was like, Huh, I should come out with a book of Python practice exercises. No one has ever done that before. So I did that was my first online product, which I came out with, I think about five years ago, I called it practice makes Python, the only title I'm ever actually proud of, in my professional life, that like, is actually creative. And I was debating whether I should talk to a publisher or not. And I was in touch with enough online entrepreneurs. And they all encouraged me to sell it myself. And I said, Yes, I am going to self publish this book. And I'm gonna make a mint of money because self publishing is the way to go. And Manning contacted me at the time and said, Listen, we we see what you're doing, and we really like it. Would you like to publish it through us? I said, No, that would be ridiculous. I am going to make a ton of money selling the book myself and they said, Okay, let's Let's know if you're ever interested again. I was colossally wrong. It turns out that book publishers know a lot about publishing and marketing books. So about a year and a half ago, I emailed them email the editor I talked to and I said, Listen, remember how we use it? Oh, yes, I remember you. Absolutely. You want to publish through us done great. And, um, and so Python workout is the new vastly improved version of practice makes Python. It's the same original 50 exercises, but with a lot of improvements and tweaks, a lot of editing that they've done diagrams, and additional exercises and thoughts about each exercise. So like after each exercise, you get three bonus exercises without answers to sort of consider, and you can buy it online already, even though it's not complete. And I'm, in the five months it's been out, they've already sold five times as many books as I sold in five years. That's all fives but like, basically, they're way better this time. I am and nice and good. And their editing help is stupendous. And I will not be making that foolish mistake here.

Tim Bourguignon 41:08
See about the the content of the book? Should I picture it as a as a repertoire of exercises and then you dissecting the exercises and then going through a solution? Or how would the day look like?

Reuven Lerner 41:24
So the way it works in my courses my in person courses is I'll talk for a bit about a topic, sometimes 10 minutes, sometimes half an hour, demonstrate it, I don't use slides, really. It's all live coding. And then I'll say, Okay, here's an exercise, and they'll go do it. And then we'll go over together and the process of solving is as important as the solution itself, in my opinion. So the the book Python workout is the giving exercise and the chewy and the process of solving it. So you're given a question, and then I present you with the answer and I present With how I got to that answer. Now, in some of the reviews of the book that was the original vision for the book, it's just going to be exercises, the reviews the book like that we got from people and again, Manny is great at this said, you know, you might want to have some more introductory material, like what are you talking about here telling people where to look what to go, where to go, what the basic ideas are. So there's a lot there are a lot of sidebars now in the new edition, that are really introductions to the material into the ideas or related to it to give you some more insights. So it's not purely exercises now, but that is definitely the main focus. And I'm talking to Manny about publishing many, many books along these lines on other subjects, either me writing them myself, or me sort of, you know, editing, helping, inspiring as it were, this is definitely a new direction for them, and the kind of exciting one for me, but the basic idea is I tell people this is not this, this is should not be your first Python book. This should be your second Python book, or your first book after you take a course. To reinforce the knowledge that you got in the course.

Tim Bourguignon 43:03
Gotcha, gotcha. So what's next?

Reuven Lerner 43:06
What is next? Well, first of all, so I'm I'm actually I mentioned earlier, I go to China a few times a year. So I'm actually setting up a Chinese company to try to distribute my online courses there. And maybe the my in person courses, and whether it's b2c or b2b, we have to see where b is. So I'm setting that up. And I've got some help from an incubator that helps startups go there. And even though not a startup, they'd be give me a lot of good advice. So that is like a wild, new, exciting, totally unknown thing. I'm, I'm getting into more and more companies, which is sort of exciting for me, but again, like my time is limited. So I'm actually trying to spend more and more time with my online courses, especially weekly Python exercise, which is also one of these exercise driven things. So it's like an email version of the Python workout book, just different exercises. Each cohort of Weekly Private exercises 15 weeks long Tuesdays you Get the problem with Mondays the following Monday you get the answer in between, you can compare notes with other people on a forum. And so I now have three introductory level ones, three advanced level ones, I'm going to try to roll out some more on specific topics, whether it's web development, or data science or design patterns or system ministration really have like a large family of these 15 week courses that will help to reinforce knowledge and learn through doing. And I foresee myself over the coming years doing more and more production of online courses, maybe traveling a little bit less, maybe going on site a little less, just because I can reach more people. But at the end of the day, it's the interactions that really drive the learning. And I love being in the classroom. So I don't think I'll ever give that up completely. But I can easily imagine a situation in which I'm teaching, let's say, two weeks out of the month, and the other two weeks I'm researching developing new courses on a whole variety of subjects.

Tim Bourguignon 44:53
So when you're when you have a new new cohort of students, if you had to give them one advice, just one was Which one would that be?

Reuven Lerner 45:01
Ooh, um, piece of advice for for new students. So first of all, pair programming, pair programming, I tell people in every class, and it's very hard to do online. But two people on one computer is a marvelous way to learn. Because you are forced to talk to other people talking requires, it's like you mentioned earlier, teaching is the best way to learn something, talking about something concretizing your thoughts is the best way to learn something. And so if you work with someone else, you're forced to make those thoughts concrete. And I've seen the learning dramatically improve. And even if you can do the same things, you'll remember way better. And you'll remember why way better. So pair programming, big, big win, and also trying to do things in the way that the language of the community encourage. So many people come into my classes like my Python classes with a background in Java or C sharp or c++. And without disparaging those languages. I mean, you'll have to attend my mind. classes for me do that. But without dispatching the languages too much like people come in, and they say, okay, I've been doing it this way for years. That's the right way. And I'm going to sort of force Python to do it in my way. And you know, every language, every culture, every civilization, every technology has its own idioms, its own way of doing things. And by swimming upstream by like, you know, pushing against the, you know, the tide, all these metaphors that I'm mixing up now, you're just sort of making these harder for yourself. There is an ecosystem, there are tools, there's a way to think about it. Try to learn how those work, because the odds are pretty good, you'll succeed more working with them rather than working against them.

Tim Bourguignon 46:39
Go the pythonic way. I've seen this a lot of time I come from the from a c++ background and then tried Java and C sharp and I've tried my words at Python and it's a it's a painful learning experience to try and forget how you did program and learn the new way. It's a it's something you have to go through.

Reuven Lerner 46:57
So my 16 year old I was in an entrepreneurship program entrepreneurship technology program for three summers. And then during the year as well, over the last few years, she just finished it. And there they learned Python. So like I always like to say, so I had someone to talk to in the house. And and then in school, I know about other countries, but Israel has majors in high school. So she's majoring in computer science. And so she's learning C sharp, and she keeps saying things like that. What a stupid language we have to declare variables in advance. And I've tried to explain to her like, first of all, okay, it's stupid, but let's let's not make those people feel too bad. But second of all, it's actually useful to see how a different language works. It gives you more insight into the advantages and disadvantages. And every language has advantages and disadvantages and places where it's going to be better and worse. No tool is appropriate in all situations. And so getting that sort of insight is I think, useful, even though it's painful. And believe me, I see it from from what you just described, like, I described it as writing Python with a heavy secret Plus Plus accent. I see it all the time all the time. Um, but you know, that's like, you know, that's all that's speaking foreign languages or working in new technologies until we become fluent an accent with, shall we say?

Tim Bourguignon 48:13
Absolutely. Okay, um, Ruben, Where can the listeners continued discussion with you.

Reuven Lerner 48:19
So, um, first of all, on my [email protected], I have a whole bunch of free email courses, I have my students like, you know, you get, like five to 10 different emails sent to you automatically one at a time, teach you a bunch of different things having to do with Python. So that's like a good way to sort of learn things. And I have my better developers list, which you could sign up for on my website as well. And I always invite people to email me, I tend to be a little slow in responding to email just because I'm inundated with so much. So if you really want to get my attention, it's probably better to get me on Twitter. I don't use Twitter that much. But I log into it a few times a day. And I see if I've messages references from people. And it's always sort of exciting to me, since I'm not so active on Twitter. It's like, you know, when you first started getting email when you got your first account, and now you're like, Oh my god, so much email. So for now, it's still new and exciting for me on Twitter. But I'm always really, really happy to hear from people. And I'm curious to hear what people what people are struggling with how I can help them and where the market is going so that I can try to help people with those problems in the future and not just in the present.

Tim Bourguignon 49:22
Thank you very much for sharing your whole story with us and help the listeners will pick you up and and start the discussion with you. I

Reuven Lerner 49:29
hope so too. Thanks so much, Tim for being here.

Tim Bourguignon 49:32
Thank you. And this has been another episode of developer's journey. We will see each other next week, bye. All right, this is Tim from a different time and space with a few comments to make. First, get the most of these developer's journey by subscribing to the podcast with the app of your choice, and get the new episodes automagically, right when the air. The podcast is available on all major platforms. Then, visit our website to find the show notes with all the links mentioned by our guests, the advices they gave us, their book, references and so on. And while you're there, use the comments to continue the discussion with our guests or with me, or reach out on Twitter or LinkedIn. Then a big big THANK YOU to the generous Patreon donors that help me pay the hosting bills. If you have a few coins to spare, please consider a small monthly donation. Every pledge, however small counts. Finally, please do someone a favor, tell them about the show today and help them on their journey.