The Stack Overflow Podcast

From writing code to teaching code

Episode Summary

On this sponsored episode of the podcast, Ben and Ryan talk with Bharath Thippireddy, a VIP instructor at Udemy who has taught more than half a million students. We talk about how he went from a humble Java developer to one of Udemy’s top instructors (and a budding movie star!). Along the way, we discuss whether Java or Python is better for beginners and how to balance theory with syntax.

Episode Notes

Writing code that runs without errors—and without all the bugs that only show up when the program runs—is hard enough. But teaching others to write code and understand the underlying concepts takes a deeper understanding. Now imagine doing that for 37 courses. 

On this sponsored episode of the podcast, Ben and Ryan talk with Bharath Thippireddy, a VIP instructor at Udemy who has taught more than half a million students. We talk about how he went from a humble Java developer to one of Udemy’s top instructors (and a budding movie star!). Along the way, we discuss whether Java or Python is better for beginners and how to balance theory with syntax. 

Episode notes:

Like a lot of today’s content creators, Bharath got his start posting videos on his Youtube channel in 2012.

Today, you can find all of Bharath’s courses on his Udemy page.

You can find out more about Bharath from his website or connect with him on LinkedIn

Udemy is one of our launch partners for our online course recommendations

Congrats to Lifeboat badge winner desertnaut for their answer to 

What is the meaning of exclamation and question marks in Jupyter Notebook?

.

Episode Transcription

[intro music plays]

Ben Popper Hello, everybody. Welcome back to the Stack Overflow Podcast. I'm your host, Ben Popper, Director of Content here at Stack Overflow, joined as I often am by my colleague and collaborator, Ryan Donovan, who edits our blog and manages our newsletter. Hey, Ryan. 

Ryan Donovan Good morning, Ben. How are you? 

BP I'm good. So you and I are no stranger to talking with folks who are learning to code. Today we're going to be talking with someone who teaches coding. And over the last few years, Stack Overflow has increasingly moved into a space where it's experimenting with not just questions and answers, but if we can suggest great content to you through our blog. We did some partnerships with Codecademy there and recently rolled out EdTech partnerships with Udemy, where if you go to a question about Python or JavaScript, it's going to show you some recommended courses that might match your interests in terms of language or technology and hopefully also your level. So that's kind of the whole learning journey. You're coming here for a question but maybe you're in the market to upskill in a bunch of other ways. So we're lucky enough today to have a senior instructor, someone who's been doing this for a while, Bharath Thippireddy from Udemy, here on the show. Bharath, welcome to the program. 

Bharath Thippireddy Thanks, Ben. Hi, Ryan, and hi, everyone.

BP So I guess to get started, tell us just a little bit about yourself. Where are you from? How'd you get into software? How'd you kind of make your way into a career in this industry? 

BT Yeah, so I started my career as a software developer back in 2002, and I have progressed in the world of Java. I have worked with Java for quite some years, Java, Spring, and all the frameworks that are involved for almost 15 years. The initial three years was in India, then I moved to US. I lived in Philly. I worked in Philly for companies like Siemens, Oracle, Primavera, when I was in Philly, mostly in the healthcare domain and in the banking space as well. Then I worked in San Diego for a little bit, then in Austin as well. The last role I took up was a software architect role back in 2015. After that, I got into teaching. I was doing consulting for a little bit. Parallelly, I was also teaching online. I started with YouTube, and then when Udemy came up, I signed up for Udemy and I never looked back for the last six years. It has been an incredible journey with Udemy. I have more than half a million students now across 208 countries. That's where I am right now.

BP Wow, that’s incredible. So when you first started off and you were first posting to YouTube, what were you hoping to achieve? Did you think it would be a side gig? Were you hoping to just build your career network? Were you just experimenting? When you first did that, what was in your mind? 

BT I always love sharing what I learn, not only in the tech space –mostly in the tech space because I'm a techie– but in everything I learn I have been sharing it with others.

BP You've got cooking classes on the side?

BT Yoga. 

BP Yoga. Okay, great. 

BT Yeah, a few other things, but mainly in the tech space. So my friends used to tell me this in college but I never took it seriously. Even when I joined the IT industry, I used to set up meetings and I used to share with my teammates whatever I used to learn. So somehow I love sharing and teaching so that's when I thought I had to expand it, and that's when I went to YouTube to start with, because there was no Udemy, there were no other platforms so I thought YouTube is a great opportunity for me to expand and reach out to more audience. So it's kind of both. One, I wanted to put out what I am interested about, and secondly the money aspect as well. I wanted to develop a passive income stream as well, so this allowed me to do both of those. 

RD So it seems like you were kind of a natural teacher from the beginning, but with all your experience coding, what's the difference between sitting down and writing code and then teaching other people to learn to write code?

BT Yeah, I learned that a little late once I got into it. Teaching the concepts of theory was not that difficult for me. And one thing I love to do is to present anything I learn in the easiest possible manner. Otherwise, I don't teach it. I share it only if I can put it in the simplest possible manner. And most of the courses I have out there, most of the 35 courses are like that. That's what differentiates them from other courses. But when it comes to hands-on coding, it was a challenge for me to code and parallelly explain it in the initial days. It took me some time to get a hold of it, but then it became natural. So definitely coding is one thing, and then teaching what we code is a completely different ballgame. And also I have to make sure that I'm showing them the best practices– not just coding, but the right way of doing it, the secure way of doing, the standard guidelines in the industry. 

BP You mentioned wanting to have a passive income stream. When you were doing that on YouTube, was that through just advertising revenue? Did you have sponsorships or courses that you were directing people to? How did you monetize in that original form, and then we'll talk a little bit about how that works with Udemy. 

BT Initially it was just the ad revenue that I used to get on YouTube. But as I said, I started with YouTube around 2012. Then for a couple of years I saw a lot of feedback that I used to get that I used to improve my videos, I used to improve my teaching. It helped me when Udemy started. So Udemy started around 2015 so I was ready for it because I know what I should be doing and what I shouldn't be doing, the way I talk, the way I teach. The only revenue was ad revenue. I didn't have any sponsors at that point. Maybe I had around 12,000 subscribers, but that helped me with the very first course I did on Udemy. So YouTube was pushing my subscribers as students on Udemy when I started. They all were ready to take up my courses. That's how it happened. 

RD You talked about coming up with the simplest way to convey a concept. How do you use that to build a whole course? 

BT So I do a lot of research whenever I pick a topic. In the initial days at least I was taking up a topic based on my own experience and what I love to do. That's how I did my initial courses. But then once I had a student base, I usually ask them what they would like to see from me and what would be the next course I should be doing for them. That's a great way of starting up a topic. Once I pick a topic, I do a lot of research on it. I see what is already available, the content that is already out there, what are the pros of it, what are the cons? I look at all the reviews of other courses. I see what is good, what gaps I can fill in, and then I take up the curriculum. The way I always structured my curriculum was dividing the curriculum into logical sections, and each section builds on top of the section prior to it. So as they gain knowledge they'll be able to apply that in the very next section. And I keep my lectures to the point. I'll not be beating around the bush or going away from the topic. Most of my lectures, when it comes to theory or even the practical, are to the point, and I just close it there. So that's what has been helping me over time. And each section or each topic is followed by quizzes. At the end of every section there will be a quiz so that they can evaluate the knowledge that they have gained from the section, and also assignments where they will have to work on an assignment on their own. I'll not be helping them. Along with theory, there will be a lot of hands-on lectures where they'll have to work with me in parallel. They'll have to code with me in parallel. Other than that, there will be assignments where I make sure that they will not get any help, but they'll have to do the assignment and submit it for my review. So I'll be reviewing their assignments every day as well. 

BP How do you manage to keep up with and grade assignments for half a million students? That sounds overwhelming. 

BT Yeah, it happened over time. It's not like every day. I do get a lot of assignments every day. I use some help in my office. I have a couple of other guys who help me out with everything there. 

BP Right, teaching assistants.

BT Teaching assistants, exactly. So they do help me with the assignments and small corrections I have to do.

RD Can you give us an example of some of the logical concepts that you use to build on each other? 

BT There are two types of courses. One is the beginner's course, and then the other is the advanced or the mid-level course. Three types, basically. But if it's a beginner's course, any course for that matter, initially it will be the fundamentals of the topic. So if it's a simple language course like JavaScript or Python, for most of these courses the initial part will be the syntax. Even before we get there, we'll have to tell them why exactly do we need Python? What are the advantages of Python over other programming languages? And then the basics of Python– the language syntax. And once they're familiar with the nuts and bolts of it they can easily hop onto the advanced topics where they can apply their knowledge while working on various programs. And also I take them through the OOPS concepts, which are a little advanced: inheritance, polymorphism. This is how I usually build them. First give them the language basics. Let them enjoy the course, let the fear go away, fear of coding or fear of new language. Then I take them into advanced topics like OOPS or database connectivity, networking, and all that. Even there, I first give them the simple examples and then I show them the real world examples so that it will not be overwhelming for them.

RD You talked a little bit about weaving in the practical and the theoretical topics. How do you balance those out? You said start off with the syntax, but then how do you get them to understand inheritance and OOPS through that? 

BT So as I said earlier, some of the lectures are theoretical. Especially when we are starting off with a course, we'll have to tell them what it is about, why they need to take it up, and what that language or framework is and why they have to do it. And even when we get to the syntax, we do have to show them why exactly we need a conditional statement, or why exactly we need a for loop. And then I show them the syntax and immediately the following lecture will be a complete hands-on lecture where they will have to practice the hands-on lecture in the IDE along with me. So there will be a software setup section for all my courses right at the beginning. I will show them all the required software and how they're going to do their coding in the rest of the course. So as soon as I finish a theory lecture, the next following lecture will be a complete hands-on lecture where they apply the knowledge, work on the program, and get it totally, and then followed by an assignment so that they can ensure that they have really learned not just the theory part of it, but practically. And I increase the intensity. As we progress in the course I'll be giving them more practical examples, more real time examples, instead of just simple inputting the numbers. Or instead of small programs I give them bigger programs and more real time coding challenges. 

BP I guess one of the things that interests me is that you're working with students maybe from all over the world. What language are you focused on, and do you feel like the same approach is universal or do you have approaches that you gear for students based on where they're coming from in the world, what their experiences are, what their goals might be? Maybe they're still in computer science class or maybe they're going into their career. How do you fine tune for different students? 

BT So again, I have seen three categories. Number one is college students or even school students who want to learn a new programming language. I have seen students who are just out of college or in the final year of college who are seeking jobs, who are ready for their career. And I have also seen developers who are experienced and who are switching technologies or they want to ensure that they fill in all the gaps in their technology and apply the knowledge on real time projects. And my courses are structured that way as well. There are completely beginner courses, which are even for a school student. For example, Python for Beginners can be taken by anybody. It can be taken by a data scientist. It can also be taken by a college student or an experienced developer who wants to switch to Python. So yes, each of their expectations are completely different, but at the same time, depending on the topic they're picking, there are certain prerequisites which they need to have, and also a vision of what exactly they're going to do once they learn it. For example, if we pick Python again, Python for Beginners just gives them the barebones nuts and bolts of Python, what exactly Python as a language is and how to use it. But then they can specialize in a particular topic. Django, for example, is another course which requires Python as a prerequisite. They have to have the knowledge of Python to take the Django course. Or even AWS Lambda for Python Developers is another course where they can learn AWS Lambda and how to deploy to AWS Cloud or AWS Lambda environment, but they need to have Python as a prerequisite. So depending on the expectations and depending on where they are in their life and career, they'll have to pick up the right course. So when we put up the course description and the course promo videos, we ensure that they understand that clearly. And in respect of different places, I do see that in most of the IT industry the structure is very similar. Even if they're coming from different parts of the world, the expectations are not that different. Yes, it can slightly change, but most of the time, from the reviews what I see is my courses have been helping and setting the right expectations. 

RD You started with Java. That was the first programming language I saw also, but I think a lot of your courses are in Python, is that right? 

BT Java and Python. I started with Java, so initially for the first three or four years it was mostly Java, Spring, unit testing in Java. Lots of frameworks. Java is an ocean. So I think almost 10 to 12 courses of mine are on Java. And then I've taken up Python, and Python has its own frameworks like Django, Django REST framework, and then some courses on DevOps as well, like Docker, Cube.

RD Do you think one or the other is better for new beginners? 

BT Yeah. From my recent experience at least, I've worked in Java for a long time so I'm a little biased when it comes to Java, maybe since I started my career with Java. I love it. But I would say Python is a lot easier for anybody who is starting up with programming, even if it's a school college kid or just somebody who wants to start their career in software, they have a college degree and they want to get into data science and artificial intelligence but they do want to program, then I think Python is the way to go. 

BP Is there anything in particular over the years that you've been doing this that sticks out? Like a lesson or an experience you had with a student where something really clicked or they were able to go on to get a job or get into the school they wanted? Do you get to hear about the impact your courses have had, and what are some of the things that make you feel proud and that you kind of remember from this journey? 

BT Since this is online training, it's very important for me to really see what exactly the students are feeling or how exactly I have impacted their lives. Having reviews on the courses helps me because I get hundreds of reviews every day on my courses, and most of them write directly in the review that they have cracked a job interview or it has helped someone build a project on their job, and college students could finish their projects. For most of the reviews I can see the feedback in the reviews and some of them post it on LinkedIn as well. So when they finish a course and it helped them, they do write up a long post on LinkedIn, they send me messages on Udemy. So I get a lot of feedback that keeps me going. For the last six years if there is one thing that kept me going and motivating me it’s that great feeling, and I think that's something we get when we teach or share whatever we learn.

RD Do you have a favorite course that you've put together? 

BT One of my very first courses is a topic that I loved for years. I think that's why I went for the topic. It's Java Web Services which covers both SOAP and REST web services. I've loved working on APIs and web services. So that's one of the first courses. And within the first one month, I could see the minimum revenue I really targeted for and also a lot of students joining it. So that's a dream come true when I switched from YouTube to Udemy. I would say that's one of my first favorite courses. And two years back I did another course which is DevOps tools which involves a lot of DevOps tools right from Maven, the build tools, all the way to Docker and Kubernetes all in one course. That's one course I have enjoyed. And last but not the least, the AWS Lambda for Python Developers course, which I did last year. That's also one of my favorite courses because I knew nothing about AWS Lambda when I started that course, but I took that as a challenge. And that's a great way of learning, because if you want to teach now, you'll have to ensure that you get everything right, otherwise your students are going to question you. They're going to write reviews. So you have to ensure that you got all grounds covered. So, yeah.

BP Right. What do you enjoy about this as a full-time career versus working in-house as a software engineer? Is it the flexibility? Is it just that you've always been drawn to teaching? For folks who are listening who are considering this, what do you like about it and what would you recommend to people who might be interested in following in your path?

BT I still love coding. I take up consulting once in a while. I love doing it, but I love teaching. I love sharing whatever I've been doing. And having passive income especially gives you a lot of time. And also you can do a lot of other things which you really love to do. I have been traveling a lot for the last few years. 

BP The yoga. 

BT Not just yoga. You're going to see me in a film that is coming out in a couple of months. I'm acting in a South Indian film as well. 

BP Oh, amazing. That's exciting. Are you playing the role of a programmer or something completely different? 

BT No, no, it's completely different. I'm playing a role of an ayurvedic doctor. It's a crime comedy. 

BP Okay. Is there a link to a trailer we can put in the show notes? 

BT The trailer will be out in April, but I can share a few pictures from the making if you want to check them out. 

BP Okay, very cool. And when you say passive income, are you still generating nice income off those old YouTube videos or those early courses, like they just continue to generate in the background in the long tail? 

BT Yes, the YouTube is very minimum because I haven't been spending a lot of time there since I have taken up Udemy for the last six years. But all the courses I have on Udemy, all the 35 courses, they do generate income even now, even the very first course. Because I keep updating the courses to the latest versions as the versions are released. So yeah, if there is anyone who is interested in taking up teaching, then you shouldn't wait. You should just start it right away. On YouTube or Udemy or any other platform, just get started. Start sharing in whatever space you want to and definitely it will kick off. Just give it some time.

BP Okay, terrific.

[music plays]

BP All right, everybody. Thank you so much for listening. It is that time of the show. We want to shout out someone who came on Stack Overflow and helped to save some knowledge from the dustbin of history. A lifeboat badge was awarded seven hours ago to desertnaut, who came on and gave a question an answer. The question had a score of -3 or less, but now it's got a score of 3 or more and that answer has a score of 20 or more. “What is the meaning of exclamation and question marks in Jupyter Notebook?” All right, I won't quiz you now, Bharath, but we will put the answer in the show notes, and thanks again to desertnaut for coming on Stack Overflow and congrats on your lifeboat badge. I'm Ben Popper. I'm the Director of Content here. You can always find me on Twitter @BenPopper. If you have questions or suggestions for the program, email us, podcast@stackoverflow.com. And most importantly, if you like what you hear, why don't you leave us a rating or a review. It really helps. 

RD I'm Ryan Donovan. I edit the blog here at Stack Overflow. You can find the blog at stackoverflow.blog. And if you want to reach out to me, you can find me on Twitter @RThorDonovan.

BT And this is Bharath Thippireddy. You can add me on LinkedIn. You'll find me on Udemy. If you just Google for Bharath Thippireddy you'll find my website as well, which is bharaththippireddy.com, which has a ton of links to my courses, my YouTube videos, and all that. 

BP Awesome. All right, everybody. Be sure to check that out, and we will talk to you soon.

[outro music plays]