GitHub cited Java as one of the most popular coding languages in 2018, and there is a reason why this language has stood the test of time. We chat with Peggy Fisher, content manager at Linkedin Learning Solutions, and author of the book Get Programming with Java, about why Java is still so popular, what it’s good for, and how to get started.
- CodeNewbie Survey
- Get Programming with Java
- Linkedin Learning Solutions
- Object-oriented programming
- Functional programming
- Sequential Programming
- Graphical user interface
- Pennsylvania College of Technology
- Khan Academy
- Continuous Integration (CI)
- C Sharp (programming language)
[00:00:00] SY: Welcome to the CodeNewbie Podcast where we talk to people on their coding journey in hopes of helping you on yours. I’m your host, Saron, and today, we’re talking Java with Peggy Fisher, Content Manager, at LinkedIn Learning Solutions and author of the book Get Programming with Java.
[00:00:21] PF: The Android studio actually was built using Java code.
Thank you so much for being here.
[00:00:45] PF: Thank you for having me.
[00:00:52] PF: Oh great question.
[00:00:53] SY: Classic question.
[00:01:49] SY: So you said something in there where you talked about how Java is object-oriented. Can you tell me more about what that is?
[00:01:55] PF: When you’re doing programming and especially if you’re just starting out in programming, you’ll hear terms like object-oriented programming, functional programming, sequential programming. Each language operates a little bit differently. So when we talk about an object-oriented language, which is what Java is, we’re talking about a language that deals with objects. An object, if you think of an object as a representation of a real-life object, of a physical object, I’ll use my landscaping example. So for example, you might have a customer. So a customer is a physical person and in Java, you would represent that person as what we call an object. Every person would have information that you need to know about them. So in your application, you probably want to know where to send the person who’s going to mow the lawn. So you would need the address of your customer and your customer is an object.
So your customer is an object creating an invoice, the invoice would be an object, the task of mowing the lawn could be an object. All those things are stored and then they’re used by the program to decide who to send to what job, how much to bill this person. When you hear object-oriented, it’s just the way that the language looks at the information that you’re giving it.
[00:03:21] SY: So when you describe object-oriented, it sounds like a representation of what the world actually is, right, because the world is made of objects, invoice is an object, a person’s an object. Whether or not we’re coding it, it’s still an object, right? So I’m wondering if it’s not object-oriented, what else would it be?
[00:03:38] PF: Good question, yeah. And you’re right. Many of the languages are object-oriented. So your C++ would be object, your C#. The other option would be maybe what we call a functional programming language, which is something that is used maybe more by a data scientist who, really, is not concerned with real-life objects, but maybe they’re more concerned with massive amounts of data. Maybe they’re keeping track of the weather over the period of a year to try and predict weather patterns. And so they have a lot of information, but they’re not really going to associate that information with an object. They just want to process it. They want to keep track of what happened from day to day.
[00:04:19] SY: Okay.
[00:04:19] PF: So all languages behind the scenes use variables to keep track of data, but some languages also use objects to identify, like you said, real-world objects.
[00:04:31] SY: Okay, so we talked a little bit about what Java is. What is it best at? Where does it shine?
[00:04:37] PF: Java shines in its ability to be able to model objects in real life and allow us to program applications that need to process objects. There are many examples that you’ve probably already used. Maybe you have an online bank account and you do online banking. Behind the scenes, there’s code that is used to allow us to process those transactions. It might be code that was written in Java. Java is very useful in the fact that it’s easy to understand because it is object-oriented and it’s easy to identify the different objects in Java.
[00:05:14] SY: So where might I see Java? Where would I encounter it?
[00:05:20] PF: So you’re not going to see the Java code unless you become a programmer, but behind the scenes, every app on your phone has some programming language. So let’s say you have an Android app. The Android studio actually was built using Java code. So you might not see it, but behind the scenes, your app on your phone could be written in Java. As I stated earlier, maybe the online banking system that you use could be written in Java. If you go to the grocery store, you know, things have changed a lot from when I used to at a grocery store and we had to type in the amounts of all the items and the quantity, and now we use the scanners.
Behind the scenes, it might be Java that’s matching that barcode to a particular item. So it might say, “Okay, that barcode is a bag of potatoes and here’s the price for that.” So the Java might be behind the scene crunching your total amount as they swipe the items and at the end, it prints out how much you owe the cashier.
[00:06:18] SY: Interesting. Okay. So as a programmer, I feel like there are so many languages I could pick from right. There are so many different options out there. When might I reach for Java as my preferred option?
[00:06:30] PF: If you’re going to do your own home monthly budget and you’re a programmer, you might go ahead and use Visual Basic because it ties well with Excel, but if you were hired by a company, let’s say it’s an insurance company, they might already have a large job application in place because that’s the kind of industry that you’ll find Java in, any kind of big industry that needs to process a lot of information about people or maybe a car manufacturer that needs to create an inventory system for all their cars. So those are the types of places where you might see it. It’s used more in the back-end processing of items and not so much like the frontend and presenting information to a user through a window.
[00:08:00] SY: Yeah. So I assume there is a job out there called a Java developer. Is that generally how one might make a career out of knowing Java or are there other jobs that take advantage of that language?
[00:08:12] PF: Absolutely. No, that it’s definitely a job role that you might want to investigate if you really love programming and you want to do programming, a Java developer. It might be called a Java programmer. The names have changed over the years. It used to be programmers. Now everybody’s a developer, but I think the role has not changed. The assignment of a programmer is very similar to what the assignment would be for a developer. There are other options, too. If you enjoy programming in Java, but maybe you find that you’re very interested in testing code and making sure that it works, there’s always, always a demand for people that want to be testers.
So you don’t want the same person, the Java developer, to test. They do have to test their own code, obviously, just to make sure it works, but before you put it into a live production environment where other people are accessing it. You want some other people to play around with it and poke holes at it and make sure it works. That would be the role of a Java tester. Nowadays, there have been very interesting trends. I shouldn’t say nowadays. It’s been going on for a while, but it’s much more prevalent in that there’s a lot of software methodology and a lot of automated software that does automated testing, but just like anything, even though it’s automated, somebody still has to plug in the information and review the results. So, you know, it’s not 100% automated. So there is also that avenue that someone could go into.
[00:09:41] SY: So when people are considering what language they should learn, how important is Java? Is that kind of a core language that people should pick up? Is it something that’s better when you are a little bit more comfortable with code? How do you think about that?
[00:09:55] PF: It definitely can be a beginner language. The reason that I say that is because it is the language that is currently taught through the high schools for any advanced placement course in programming. It gives you a great foundation for understanding syntax, which is the grammar of a language. I always try and relate the syntax. So, you know, at the end of every sentence in the English language, you usually put a period or an exclamation point or a question mark. In programming, specifically in Java, you put a semicolon and so it helps to reinforce
“Okay. This programming ‘language’,” which it is, “has its own rules. I have to use a semicolon. I have to use parentheses in certain situations.”
So I think it’s a great language to learn even for straight out-of-the-box beginners and because of the fact that it’s object-oriented, it does teach you how to imagine what an object is. One of the things that you’ll see in many teachings and in many textbooks is that we think of an object as having a blueprint. Maybe the object is literally a house. Maybe we work for a construction company. The way that we define that object is we write a blueprint. We say how many bedrooms does it have and that blueprint is then used to create objects that represent the physical houses. So, once you learn that and you get a real good handle on the syntax, what it means to be object-oriented, you learn about when you’re dealing with languages, one of the first things you’ll learn about is how do I create a name for the values that I need to keep track of?
I just gave an example of how many bedrooms. You need what we call a variable which some people like to refer to it as a box that contains a value and so you learn about that and you learn that depending on the type of value that you’re trying to keep track of, you might need a different type of box. You might need a numeric box that allows you to capture numbers. You might need a box that allows you to capture name because letters are different to a computer than numbers. So you have to make sure you tell the computer whether you’re going to include characters in here or letters of the alphabet or if I’m going to include numbers. Definitely, I highly recommend Java as a first language to learn. I think it’s great and it lays the foundations for being able to switch over to Python or C++ or C#.
[00:12:25] SY: (Music) Coming up next, we dive into Peggy’s book Get Programming with Java, how she got to where she is today and whether or not you need a PhD or a Master’s to do her kind of work after this.
[00:12:54] So as of 2018, GitHub cited Java as one of the most popular coding languages which is pretty impressive considering the fact that it first appeared in 1995, which in coding world is like a super long time ago. How did it manage to do that? How has it managed to still be so popular after all those years?
[00:13:13] PF: It is a language that can be learned without much prerequisite, but it’s also very versatile. As I stated, it’s a language that can be used when you’re processing numbers or letters or names. It really has so many uses and over the years, it’s been modified to keep up with some of the newer things that are happening with computers. The fact that computers now, memory is not so much a concern. Back in… maybe before 1995 but back in the ‘80s, it was very much a problem whether or not your computers ran super, super efficiently because time was money. The longer a computer program ran, the more it costs. Storage was money. The more storage it needed to be able to process massive amounts of data, the more it costs.
As we saw those things come down, Java was able to persist because it was already very efficient in the way that it processes things, in the way that the program’s run. It’s always been very efficient and it uses memory and releases memory, and that is some of the things that have changed over the years, is how it handles that, but it’s really kept up with the times and the changes behind the scenes in the physical components of the computer.
[00:14:25] SY: So you wrote a book about Java and it is called Get Programming with Java. Tell me a little bit about that book. What was the impetus for writing it?
[00:14:33] PF: I guess I’d have to say it was a bucket list item.
[00:14:36] SY: Okay.
[00:14:37] PF: In college, I was taught COBOL and I was taught how to program, how to think like a computer. And then after I got out of college, I did do COBOL for many years, but eventually, I switched over and became a teacher. What I found was that I was able to use my programming knowledge from programming, I also programmed in a few other languages, Fortran and Pascal, but knowing the basis for how the computer works, I was able to translate that and self-teach how to use Java, how to use C#, how to use C++. So from there, I wanted to share my passion and desire for programming. I feel everyone should take a programming class. I think it should be a requirement in high school. Not that they continue on to be developers. Obviously, not everybody wants to be a developer, but the logical thinking skills in understanding computers are such a key part of our life these days.
You know, our handheld smartphone is a computer, that I think understanding how those things work and taking even if it’s just like one semester or half a year course would really help people to be able to think logically. But when I was teaching and I was using a lot of the books that were written by many great authors, I found that a lot of times, they just didn’t explain things in terms that students needed to understand. A lot of the times, they skipped the reasoning behind something or I said earlier, maybe a good example might be when you’re talking about how to save a value and you give the analogy of using a box, which is a wonderful way to teach to give people visual ideas, you have to help the students understand that a computer views a number differently than a character.
They might look at you, like, “Well, what’s the difference?” The letter one, the letter A, they both take up the same amount of space basically, but behind the scenes, the computer does a lot of different things with those two different values. It converts the letter to numbers first. I’ve always wanted to be able to write the book in a way that I thought that learners might get the most benefit from reading so that if you are struggling to learn Java and, you know, maybe sometimes people skipped over important concepts or did not explain them in a way that my next door neighbor would understand, I wanted to make sure that I addressed that. I wanted to use as many analogies that I could. I strived to not have examples that were using names or variables that were like A, B and C that mean nothing to anybody. I try to use…
[00:17:15] SY: Thank you, by the way.
[00:17:16] PF: Yeah. I tried to use as many real-life examples as possible because even though you’re trying to get across maybe a simple concept like how to add three numbers, it’s not going to help anybody if I say, “Add A plus B plus C.” But if I say, “Add three numbers, the quantity of the first item you bought at the store plus the quantity of the second item plus the quantity of third,” that’s going to sink in a lot better than the fact that these three variables A, B and C had values.
[00:17:45] SY: It sounds like this book is for beginners, but also kind of people who may have already started learning Java and were unhappy, unsuccessful, maybe just got a little frustrated with it and need a little bit… frankly, just needed a better book or need a better resource for it. Is that fair to say?
[00:18:02] PF: Yeah, definitely. It is written with the understanding that maybe you have a little bit of background as far as maybe you’ve kind of explored a little bit about how are programs written. It doesn’t spend a whole lot of time in the very beginner stuff of creating variables and assigning them values for what type of data, but it really jumps right into object-oriented. It’s very example-based. So I think it is for people that want to maybe understand maybe more about why they know they’re supposed to create an object that has data that’s listed as private which means that it allows the data to only be updated very purposely and not accidentally. They might have been taught to use that keyword, that word private that I just mentioned, but they might not know why they used it. It’s for people that maybe want to have a better understanding of why they’re programming the way they are.
[00:18:57] SY: So you’ve written the book, but you also create a bunch of other content at your job at LinkedIn Learning Solutions. Can tell me a little bit about what you do there?
[00:19:04] PF: I started by creating courses myself. Again, it all comes back to like… one of the very first courses I wanted to create is called Java Essential Training for Students. I’m also a part-time professor for Penn State University.
[00:19:20] SY: Oh, very cool!
[00:19:20] PF: It’s all about this passion for sharing my love of programming. And so the course that I created was specifically for students that I saw struggle in a programming class maybe with another instructor, not that anybody’s any worse or better, but someone that was really struggling. I’m like, “You should not be struggling. This should be something that is explained in these terms.” And so I created these courses and I put them on the Lynda.com library at the time which is available to many colleges, but then eventually, I switched over to the role of a content manager.
My role is now to try and find other people similar to me that are enthusiastic about the subject matter, also that I feel are very good at explaining things. So I try and find people that want to give back and want to also teach about different programming languages for our library. I cover what they call all core programming languages, which is your Python, your C++, your C#, your Java. Our library is split up and there are many different content managers. Someone else has the HTML and the CSS because that’s more web design and another person has maybe software development methodologies, but for me, it aligned great with my interest, that was in programming languages in general.
[00:20:40] SY: So how did you get into coding?
[00:20:42] PF: I loved math in high school, absolutely loved it. We had a little computer there and I don’t know, two cassette tapes or something like that. I’m a little older, but anyways, I thought it was fun to watch it run. So when I went to college I was torn because I really wanted to be a teacher and I thought I could teach math, but I also liked this whole idea of computer programming. I weighed the two and I said, “Which one can make more money when I graduate?”
[00:21:08] SY: Smart!
[00:21:09] PF: I thought, “Let me go into computer science.” So I did and everything that I’ve done in my life has led me to the point that I’m at now, so I’ve no regrets whatsoever. Eventually, I did go back and get my teaching certificate in math education and I also taught math and computer science over the years, but it was that decision. And then I took a lot of programming classes at my undergrad at Shippensburg and use those skills to get into programming and never looked back. I love it.
[00:21:38] SY: Good for you. Now you’re sharing that love with the world. So thank you so much.
[00:22:11] One of the big questions we talk about a lot and we ask a lot in our community is the importance of a computer science degree. What is your take on this issue? As a professor yourself, what is your take on that? How important is it for people who want to be in tech and people who want to code professionally, how important is it for them to get a degree in computer science?
[00:22:32] PF: I really believe that, and this is, again, just totally my opinion but that everyone especially if you’re going to go into programming that you really do need that computer science degree, or you could go to a technical school as well. I think that’s also an option. If you know for sure that all you want to do is program, you could go to maybe a Penn Tech or something like that where you’re just taking programming classes. In this state right now, the way that we’re at across America, there’s a lot of people that want programming jobs and so a lot of your HR people are not going to look at the ones that don’t have the college degree. So you want to give yourself, first of all, that leg-up. And the other thing, too, is until you get that degree, you might change your mind halfway through. So it’s a great way to get into programming, make sure that’s what you want to do.
[00:23:18] SY: That’s a good point.
[00:23:18] PF: I really believe in it. We’re telling my son, it’s 13th grade, you could go from senior high school to freshman in college and there’s never any one-size-fits-all, but I do believe that it’s very important.
[00:23:30] SY: You mentioned technical schools. What’s your take on bootcamps and other more self-taught avenues?
[00:23:37] PF: Depending on the bootcamp, I think they’re a great alternative. Again, there are probably a few people that could come out of high school that maybe could go right into a bootcamp and really succeed because I think there’s always some people that maybe they’ve been programming since they were five and they just absolutely know what they want to do. I think there are some great options out there. Some of the bootcamps are pretty intensive too, so it is almost like taking college and swishing it down into just the programming courses into a very small amount of time and then the employer gets to see how well you do in the bootcamp.
I think that gives you a chance to evaluate them and give them a chance to evaluate you.
I think that the bootcamps are great and the tech schools also. I think they’re really good, too. I think that the four-year college is a more rounded program. So you get in addition to just your core skills that you need for your job, maybe you get some more business skills. Maybe you get some managerial skills, some oral communication skills. I think you would miss on some of those if you did go there, but it all depends on what type of job you think you’re going to get in the future.
[00:24:47] SY: Some of the pushback that we’ve heard on getting a computer science degree is that it is not as applicable and as practical as one might expect. It’s a lot of theory and a lot of foundational stuff but not necessarily things you would do on the job. In your experience, is that true or is that depending on the program? What’s your take on that?
[00:25:08] PF: In my experience, it might not be a one-for-one. It’s not that I’m going to go to college for four years, get a degree. Let’s take my personal example. I went to college, I learned COBOL as well as some other languages and then I got into a job that I was doing COBOL programming. Well, the COBOL that I did in college was not the same as what I did at the company, but the skills that I learned on how to program are more important. I learned how to take a problem and how to apply that language to that problem. And so that was the skill that I needed. I needed the ability to adapt. I needed the ability to understand how things worked behind the scenes of a programming language and then I could use those skills to apply to the job that I got.
I think to say that it’s not a one-for-one match is not giving colleges the benefit there because I think that, like I said just a little while ago, you get so much more than “Here is the road experience you need to step into a programming role and just start programming.” You also need to work together on a team. Most colleges now force their students to work in teams on projects when they get into the more advanced portion of their learning. I do that in my courses. They don’t know the people they’re working with, but that’s what’s going to happen when you get a job. If you don’t have that experience to either maybe find some of your uncomfortableness or maybe even fail in college, then you don’t want to fail in the job. It’s better to do it now in college and learn from it.
[00:26:46] SY: Yeah, that’s true.
[00:26:47] PF: And then be able to go off to a job and be able to succeed.
[00:26:51] SY: For folks who don’t have a computer science degree and are unable to go back to school to get one, what can they do if their pathway is going to be largely self-taught? What can they do to maybe learn some of those foundational skills that they would have gotten with that degree?
[00:27:07] PF: I am a firm believer right now in a lot of the video learning that’s out there. I did say that I do work for LinkedIn Learning, but the reason that I work for them is because I really believe in them. I believe in our product. I believe in the courses that are there. We not only have the technical courses. We have the business courses as well. A lot of companies offer it for their employees. In many cases, the employees don’t even realize that that is available to them and it’s a wonderful benefit. If it’s not LinkedIn Learning, it might be another type of video tutorial. For younger generation, Khan Academy is another example, but I still have a shelf full of books and I, to this day, continue to purchase programming books, even for things that I already know just to see how another person might approach it.
It is hard and I think that that avenue is much more difficult, but if you’re self-motivated enough, you can find free resources. Maybe even like a Udemy or a Coursera or one of those types of avenues where it’s either free or maybe you pay a much less of a fee to be able to use the courses that they offer.
[00:28:15] SY: So for folks who are listening who are hopefully excited about Java and want to get started and want to dig in, besides reading your book, are there other recommendations you can make, other good resources to check out?
[00:28:26] PF: There are a lot of free resources out on the internet. What you have to do is just start searching on Java training. I know that Oracle offers a few passes that will allow you to learn a specific subject, maybe start to watch even some YouTube videos or some other videos.
[00:28:44] SY: What are some things to maybe keep in mind before getting started? What might have helped you maybe when you’re first learning Java that you wish you’d known that might help people who were currently about to learn?
[00:28:54] PF: I think you need to go into it knowing it’s going to be different. Don’t think of it as hard or impossible. Know that it’s different. Know that it’s like learning French. It’s like learning another language. Don’t beat yourself up when you make mistakes. Obviously, a key point is programming is not a male/female kind of thing either. Don’t think just because I’m a girl or a woman that I’m not going to be able to understand it or learn it as quickly as my counterpart, my male counterpart. Definitely be kind to yourself. I would recommend that if you are learning it and it’s something that’s a little bit difficult, re-read it, relearn it, re-practice it. And that’s another thing, too. It would be to don’t do it in a vacuum. So make sure when you’re ready to take on this task, that you’re willing to learn a little bit, test it out.
Go to the computer. Use any of the free editors that are out there so then editor would be a place where you could type your code in and you can run it just to see what happens. Eclipse is one, NetBeans is another. What you want to want to look for is an integrated development environment and use one of those. Run a very small piece of code in the beginning, just a little. You’ll see any book, any video, almost anything will have a little what they call Hello World app.
Take the time to run that little app, see what it feels like to watch it work. Watch it show up and maybe it doesn’t the first 10 times, but don’t give up. Know that it’s not going to be really super, super easy, but it’s also not impossible. It’s definitely something that you can do. You just need a lot of patience.
[00:30:41] SY: Yeah.
[00:30:41] PF: And you need to just kind of keep stabbing away at it.
[00:30:44] SY: (Music) Now at the end of every episode, we ask our guests to fill in the blanks of three very important questions. Peggy, are you ready to fill in the blanks?
[00:30:56] PF: I am ready.
[00:30:58] SY: Number one, worst advice I’ve ever received is?
[00:31:02] PF: I have to say that it was not verbal advice but more of a role model. What I’m referring to is growing up, my dad he was the sole worker in the family. My mother was a housewife and he had the same job from when he was 18 driving a truck and then he made his way into management and he stayed at that job for 39 years.
[00:31:24] SY: Wow!
[00:31:25] PF: Watching him, I think I started out thinking that’s what you do. That’s what you have to do. You have to find a job. You have to love it even if you don’t and you have to just stick with it for your 39, 40 years, whatever it is that you want to work. That is not the case and it has definitely not been the case for me. Following your passion is much more important than trying to stick with a single job.
[00:31:50] SY: Number two, my first coding project was about?
[00:31:53] PF: When I started my job at an insurance company, there was a new tool out called Culprit which is kind of a funny name, but it was kind of like a report writer. It was a little language that you could use and you would give it a file, a whole bunch of information and you could pull out information. You could count up certain numbers. You can identify how many people lived in the State of Pennsylvania. That was the first one that I ever wrote on my own, but what I wanted to mention about that was that I got it up and running and I was pretty excited, but I made a huge mistake in that I didn’t make the little variable that was going to hold the number big enough. So my number was not representative of the actual number. For example, if it was supposed to be 1,150, my output was only showing 150 and I thought it was right. To this day, I’ll never forget that because I remember showing it to the people that had asked me to write it. They’re like, “That seems awfully low,” and it was just a great learning experience to go back and force myself to think, “Okay. Don’t just write the code and run it and take the results for granted. You need to think about what you expect the answer to be and if it’s that far off, you might want to check it again,” but that was my first program.
[00:33:16] SY: Number three, one thing I wish I knew when I first started to code is?
[00:33:21] PF: I wish I knew that there was going to be so many different options and languages available later on in my career. I wish I knew that it wasn’t just going to be COBOL, CICS for the remainder of my career. At the time, that was all there was. I wish I knew and had the confidence to know that I would be able to learn Java and C++ and C#. We hired consultants at one point when I was there at that new job and pay them extraordinary amounts of money per hour. At the time, I thought, “Well, they know how to do it. There’s no way I’ll ever learn,” and I wish I knew that I could learn and that there would be these opportunities ahead of me.
[00:34:06] SY: Yeah, absolutely. Well, thanks so much for being on the show, Peggy.
[00:34:09] PF: Thank you very much.
[00:34:10] SY: (Music) This episode was edited and mixed by Levi Sharpe. You can reach out to us on Twitter at CodeNewbies or send me an email, firstname.lastname@example.org. Join us for our weekly Twitter chats. We’ve got our Wednesday chats at 9 P.M. Eastern Time and our weekly coding check-in every Sunday at 2 P.M. Eastern Time. For more info on the podcast, check out www.codenewbie.org/podcast. Thanks for listening. See you next week.
Thank you to these sponsors for supporting the show!