We all know that a solid education is crucial to get a push up in life, but it is not always necessary for software development. In fact, few go further than a Bachelor’s or Master’s degree. If you’ve ever wondered what the future holds for a higher degree, this podcast is for you. Arsalan will explore the opportunities and reasons behind Reuven’s decision to do just that.
Reuven Lerner’s Bio:
Reuven created one of the first 100 Web sites in the world just after graduating from MIT’s computer science department. Today, Reuven spends most of his time training programmers at companies such as Apple, Autodesk, Cisco, EMC, HP, SANDisk, and VMWare in four open-source technologies: Python, PostgreSQL, Git, and Ruby. Reuven teaches in Israel, China, Europe, and North America, as well as online.
His monthly column in Linux Journal has appeared monthly since early 1996. His latest ebook, “Practice Makes Python,” is aimed at Python programmers who want to improve their fluency in the language. Two new ebooks, about regular expressions and technical training, should be ready in the coming months.
Reuven curates DailyTechVideo.com (offering a new conference talk about programming each day), and is a permanent panelist on the Freelancers Show, a weekly podcast for independent consultants. He also edits MandarinWeekly.com, a weekly collection of links and resources for anyone learning Chinese.
Reuven has a Bachelor’s degree in Computer Science and Engineering from MIT, and a PhD from the Learning Sciences program at Northwestern University, where he created and studied collaborative online learning communities as the developer of the Modeling Commons.
Reuven lives in Modi’in, Israel with his wife and three children.
Please say hi to Reuven on Twitter.
Episode Highlights and Show Notes:
Reuven: From the time I was in high school I was really interested in programming. We had a computer at home and I would play around with programming, but nothing very serious. I was fortunate enough to go to MIT where I studied computer science. So, I have been doing software engineering for the last to 25 years. First, I worked for big companies like HP and Time Warner. Moved to Israel in 1995 and began consulting. Consulting business has morphed over time to include: Lennox system admin, helping people with configurations, and Pearl programming. From there I moved more and more into web stuff as the web became increasingly popular. That has shifted again over the last 2-3 years as I’ve moved away from doing more day to day developing work and moving more into doing technical training.
Reuven: I do some development work on my own and help people with development work here and there. Probably about 80% of my time is spent going to large companies: Cisco, VMware, EMC, SanDisk and training their developers to the technologies that I know best and like, which is most often Python, Postgres, GIT, and Ruby, with other things as well like Regular Expressions.
Arsalan: One of the favorite topics of any new developer, as you know, is Regular Expressions. They love it.
Reuven: The course that I teach in Regular Expressions basically came from my other programming courses. For years, I taught courses in Pearl, Ruby, and Python, and I would try to stick in about two hours of Regular Expressions. But because no one knew what I was talking about, I decided to make it its own course and give it two full days. It has been surprisingly successful. I really feel that giving it the time has been really worth the syntax and the effort.
Arsalan: I love Regular Expressions. I’ve been using them since I was in college. But, I can imagine many of the people listening to the podcast might be thinking what this Regular Expression thing is? Can you quickly describe in one line what it is and why we should care about it?
Reuven: Regular Expressions are a way to describe patterns of text. So, if you’re looking for all of the capitalized words in a document, all the words that contain the letter ‘x’ in a document. If you’re looking for a configuration file, name-value pairs that fit a certain pattern, you can describe those with regular Expressions. The good news is, once you get over the hump of the syntax, describing things in that way is really easy. Regular Expressions are really powerful. The bad news is that the learning curve is very steep, and once you write a Regular Expression, even the person who wrote it has a very difficult time understanding it and debugging it very often.
Arsalan: That is true, and so you need good debugging tools. You also need to be aware that implementations can be slightly different.
Reuven: Yes, first you tell people “here you need a backslash unless you’re using a different version, and then you don’t need a backslash.” That trips me up all the time. I’m a die-hard eMax user and I also use the Unix Shell for things. I use Regular Expressions for things in programming languages, and in eMax, and the Shell and I never remember which requires backslashes and which does not. I’ll just try it the way I want and if it doesn’t work, I will try it another way. It might not be the smartest approach, but it’s served me well for a number of years already.
Arsalan: One of the ways you could potentially overcome that would be to keep a cheat sheet, but then that’s work. What I do is I go to a website called Regular-Expressions.info.
Reuven: That’s a great site. It’s very dry, but it’s also very useful.
Arsalan: It’s very precise and it gives you implementations and that’s where I learn a lot of the advanced features. With Regular Expressions, you could teach a class on it or a college course on it if you wanted to.
Reuven: Just last week when I was teaching a Python class, I had mentioned that I am writing a book now on Regular Expressions because of the advanced features.
Arsalan: You went to school and got your Ph.D. degree. Did you get a Master’s degree?
Reuven: No, actually I did not get my Master’s degree. One of the weird perks. I got my Bachelor’s at MIT, but I did not get into the Master’s program. Luckily, I worked for the student newspaper where we put up one of the first websites in the world, so that sort of jumpstarted my career. Then when I went my Ph.D. at Northwestern, the program was unusual. The way it worked was, if you fail out, then you get the Master’s, but if you finish, then you get the Ph.D. without the Master’s.
Arsalan: So, if you get the Ph.D., then you don’t need to worry about the Master’s. Some schools will give you a Master’s degree anyway as you’re working towards a Ph.D. In my mind I am thinking that maybe they don’t want you to get the Master’s because they want you to finish and get the Ph.D. That may be because you would have tons of incentive to drop out and get a job in Silicon Valley and make a lot of money, but they want you to stick with it.
Reuven: Back when I was at MIT in my computer sciences program, it wasn’t called Computer Science. It was called Learning Science. It was computer science and cognitive science and design for educational purposes. Anyone not going into academic research was an outlier. My advisor came to me and asked if I was going into academia, and I said no. This was a bit unusual and a shock to the system. The assumption is that you will go into academia. One of my friends said that going into academia is your ‘card of entry’. The only way to even apply to a job is to have a Ph.D.
Arsalan: That is true. I have a wife who just got her Ph.D. a few years ago and she started teaching as a professor. So, I’ve been through her process of getting a Ph.D. and all that wonderful stuff that goes with it. I know that it’s hard for someone that is obviously smart and motivated to get a Ph.D., but then have very limited options. I think that in computer science, also, it limits your options. If you have a Ph.D. degree and you want to be a junior developer, it’s kind of hard to do.
Reuven: Right. I don’t think that would really happen. If someone with a Ph.D. were to be hired, I don’t think they would be hired as a junior developer. They’d probably get another title like data scientist, which is morphed enough to be junior, senior, or whatever. Someone who has a Ph.D. has typically gotten enough data analysis in the sciences, especially the social sciences that he can slide by into a data scientist role and learn what you need along the way.
Arsalan: The shortest path of success is the obvious, but there are a limited number of professor positions.
Reuven: I have incredible respect for the people who are willing to go the academic career path. I just can’t imagine doing that to myself. It’s so difficult. One of my office mates, who are a professor at Stanford, was saying that he felt the Ph.D. program was hard. But, that was nothing compared to what it’s like to be a professor, the whole tenure race, trying to get funding, and funding with funding being limited now these days. But, if you can make it through and get a tenure position, then it’s a huge amount of freedom. You get to ask whatever questions you want and try to answer them, which is a tremendous thing for a curious, smart person.
Arsalan: Absolutely. It’s the freedom to do what you want, pursue the direction that you want. Obviously, you can’t do whatever you want because you have to show results. No one is going to pay you for that. Even computer science professors don’t make a lot of money.
Reuven: Right. At the same time, a lot of it is grant based. But, if you’re willing to give up the grants, then you can have whatever freedom you want. In some ways people were asking me why I am not going into academia. As I’ve said, I just don’t see myself doing that and I’m not such a good researcher. I feel like, in my current career with the consulting, training, and doing all these other projects on the side, I’ve got roughly the same amount of freedom, if not more. That’s without having to deal with the craziness, politics, and bureaucracy of the university. So, I feel like I’ve won.
Arsalan: There are a lot of people out there who don’t even have a Bachelor’s degree in anything. Or, they may have a Bachelor’s degree in some other field. Or, they may have started a computer science or engineering degree, and they are wondering if it is even worth it. Do you think it’s worth it?
Reuven: Almost certainly, yes, but let me back up by saying there are plenty of people in the computer industry who don’t have even Bachelor’s degrees, or they have Bachelor’s degrees in other subjects. So, the question is whether you can succeed in the computer industry without a Bachelor’s in computer science. The answer is ‘yes!’ You can. So, why do I think it would be important for people to get a degree in computer science, or at least get the equivalent of that degree? It will help you with your thinking. It will help you to put things in order. It will help you to understand what the data structures are, what the theoretical possibilities are, and how things work together. It will shorten the learning curve. You can learn a lot of this stuff on your own. But, my experience has been that a lot of people who haven’t are then missing out on the underlying theory and aren’t able to connect the dots so well.
Arsalan: What was your motivation for getting the Ph.D. because by the time you get the Ph.D. you have the knowledge. You went to MIT. You have the background. Why Ph.D.?
Reuven: A Ph.D. and a Bachelor’s are very different. In a Bachelor’s you are taking coursework to learn the fundamentals of the discipline. What are the basics? How does it work? How do the dots connect? So, you are learning basic data structures, basic programming languages, how the language work, how does an operating system work. With a Ph.D. you are going to be the world’s expert in some very small thing. You’re going to ask a specific question and you’re going to try to answer that question which will then build on what you learned in your Bachelor’s, but will use lots of other things as well.
Reuven: I decide to do a Ph.D because I was getting bored with my consulting work. I was getting frustrated because my clients had these projects that were dragging along forever. They were getting frustrated. I also felt that I wasn’t making any advances in my career. I spoke to a professor friend of mine and he suggested doing a Ph.D. because it will open your mind to lots of new ideas. You’ll meet new people and you’ll think in new ways. Then, you can continue with what you’re doing. He was right.
Reuven: I did the degree in learning sciences as opposed to a computer science program, which gave me the tools to understand how people learn and how to make my lessons more effective, how to create better student material. It even allowed me to explore new business ideas. All that comes from the Ph.D. Now, I am writing a book for people who want to do technical training successfully. About a third of that was drawn from my Ph.D. in Learning Sciences program. Could I have learned this on my own? Yes, but I feel I was steeped into this for many years with people who talk about it all the time and who use a certain vocabulary.
Arsalan: When you are committed to a thing, you need to show your commitment in whatever way possible. In your case, because of your degrees, the Ph.D. degree gives you the environment, tools, people, and resources so that you can invest a few years. How many years did it take for you?
Reuven: Eleven years.
Arsalan: Hopefully it doesn’t take you 11 years. Hopefully it only takes you four or five years. That’s 11 years that you are going to dedicate to a thing, but you’re not going to do that unless you are in a structured program. For Reuven’s case, it was a Ph.D. For someone else it might be a Bachelor’s. For someone else it may be a different program, but being in a structured environment definitely helps. Not all of us can do a Ph.D., but we can all take a lesson out of that and apply it to our lives.
Reuven: To summarize it to some degree, I feel fortunate that I was able to spend this time thinking about certain problems. I see my role now as translating some of this research and ideas to the general public who can benefit from it without enduring the same lengthy process that I went through.
Arsalan: That’s what gives you the confidence and authority to write the books that you’re doing and expand your training. I heard from your own podcast that you are taking charge of your teaching. Is it true that you have your own training company?
Reuven: Yes. I have my own consulting company and we mostly do training.
Arsalan: If you take a step back and just think about all the crazy things that we do and we just expect them to be there. Just having the ability to talk to you today over Skype is incredible. Twenty years ago this would have been an incredible idea.
Reuven: I remember it. It was about 20 years ago and there was an Israeli company called VocalTec. When I was working at Time Warner, they came to demo to us that you could have all your audio over the internet. We were all waiting with baited breath to hear how all this would work. It was kind of surprising that it worked at all. My boss at the time said that it sounded like AM radio in the bathroom, but things have really progressed since then. Now, I can be anywhere in the world and I can call people on Skype and to us it’s more or less like any regular phone call and with video. The only way that the programmers who develop it can develop it is to focus on their thing and keep the rest as an abstraction. If the people who are doing the video representations have to worry about how the network is going to carry the data, they’re not going to ever be able to get their jobs done.
Arsalan: Absolutely. You can’t think about the whole program. If you are overwhelmed, that is fine. There is no one working in technology who is not overwhelmed about something.
Arsalan: Does that affect you or your performance? Does it distract you a little when you need to get something accomplished and you feel like you really need to learn this other thing that came out? How do you balance learning new information from your client work?
Reuven: Poorly. When I’m doing development, I often tell my clients that my goal is to come to them knowing between two-thirds to three-quarters of what I need to know. If it’s a good project, I will have to do some homework, investigate it, understand it, and write it up in order to be able to answer their questions. That happens to me when I’m doing training as well. If someone asks me a question while I’m in class, I might have to say that I have no idea and that now I have homework to do. Then, I will try to come back the next day or two days later with an answer.
- http://lerner.co.il (home page)
- http://blog.lerner.co.il (blog)
- http://DailyTechVideo.com — a new high-quality conference video each day
- http://MandarinWeekly.com — a summary of the best new links for people learning Chinese
Thanks for Listening!
If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.