Jeremy Clark makes developers better. By drawing on over 15 years of experience in application development, he helps developers take a step up in their skillset with a focus on making complex topics approachable regardless of skill level. He is a Microsoft MVP for .NET, and he has authored seven courses for Pluralsight, including “C# Interfaces”, a course aimed at giving developers a clear understanding of abstraction. He loves speaking and has delivered over 200 technical presentations in the last 7 years in the United States and Europe. Jeremy lives in northern Washington with 2 dogs, 2 cats, and a banjo.
Episode Highlights and Show Notes:
Arsalan: Hi everyone. Today my guest is Jeremy Clark how are you, Jeremy?
Jeremy: I’m doing great. Thanks for having me.
Arsalan: It’s so good to have you. I was going to your profile, your website looking at some of the information that we found about you before this interview and I was really amazed that it seems that you’ve done a lot of quality work. You are also a teacher and a mentor. You’ve done a lot of different types of things. I really want our audience to get to know you and really understand where you’re coming from and how you manage all that. I’d also like to hear the story of how you got into independent consulting because that was not planned. You just fell into it. How did that happen?
Jeremy: Yeah. It was not planned at all. I spent the bulk of my development career as a corporate developer at the Disneyland resort and it was a great place to work. I never saw myself as someone who would do contracting or consulting work because I’m not a risk taker. I’m the type of person who needs that regular paycheck every week even though having a regular job is kind of an illusion of safety because we don’t know if the next paycheck is actually coming.
Jeremy: I always felt like I needed that security and I couldn’t go months between paychecks without knowing where my next meal was coming from and things like that. I always saw myself as sitting here and getting a regular paycheck and that’s the way it was going to be. Through a series of small steps, I ended up independent, which is kind of scary. Part of it was that I left that corporate job and workforce startup and part of it was that it was time to start something new. At one time, I managed to save up some money and live within my means, which is always a good challenge to do. I also kind of burnt myself out at that startup. I got to the end of my time there and I realize that I needed to move on to something new because I was burnt out and I needed to relax. I had a friend who said that I needed to quit my job without having a new job. I was like “what? You want me to quit my job without having a new job?” But at the time, I was a senior developer, which is always a good place to be, and there is a good demand for my kind of work. Plus, I did need to break before starting something new. During that time, I started to pursue teaching because get down that’s what I really love to do. I really love to help other developers and make developers better.
Jeremy: So, that’s what I decided to do. I pursued a couple of different paths and I got into cloud teaching and spent some time with that. That didn’t quite work out the way I planned, and I ended up taking a contract job in the meantime and patted the bank account a little more. Then, I ended up with an opportunity to do a Pluralsight course. This was a great opportunity for me because again I wanted to get into teaching. I figured this was a good way for me to show what I could do. I wasn’t really looking at it as a kind of financial solution. I was more looking at it as a marketing and brand building kind of thing because, in the Pluralsight catalog next to these famous people, there’s a little bit of street credit for me.
Jeremy: It turned out that my first course did unexpectedly well for me financially. That gave me the opportunity to do some more courses and I haven’t had a regular paycheck in about four years now. Again, it’s that whole security thing. As it turns out, sometimes you can have that security even though you don’t know when your next gig is coming. A lot of that is because I started speaking within the community. I also started speaking at local code camps. I started regional events in different parts of the US. Then I started speaking at professional events and international events and it’s an interesting trip. Here I am independence. In January, this year, I went to Iceland for a consulting gig. It was for people who had found out about me through various channels.
Jeremy: So, I look back at my life and back in 2010 I was sitting in a cube farm programming. It was a great job, but I look at my life now and it’s like “wow! I’m flying to Iceland to spend a week talking to this team of developers.” It wasn’t intentional, but because of the way that things worked out, it’s just where I ended up. I’m very happy with where I am because it gives me what I need which is to share what I know with other developers and just kind of make it better.
Arsalan: It’s interesting that we have so many different paths that we could follow as new developers. When you’re starting out, when you’re a new developer or still in high school or maybe you’ve switched jobs and you just want to be a programmer or a software developer, you really don’t know what options you have or some of the things that you can do. Those are some of the things that my audience hears struggles with. We don’t know what we don’t know. One of the benefits of having you on this podcast, Jeremy is that they can find out that there are other things that they can do. If they live in an area where there are not many jobs, then they have one option. They can become consultants or do independent work. In your case, you told me that you were consulting with clients that are far away. You are probably also consulting remotely Sometimes. Is that correct?
Jeremy: Yes it is.
Arsalan: You have the opportunity at home and you also can create courses. They sell, and you don’t have to actually do any active work. It’s passive, is that right?
Jeremy: That’s right. The passive income is great because that’s really covering my living expenses right now. What that means is that now I can put my effort into other pursuits like having the opportunity to travel to other parts of the country different people whether it’s having them talk to code schools or to talk to different people on podcasts like yours. It’s nice having that income coming in, but it’s not something that you have to pursue daily. With that said, I know some people who have had great success with it and others who have had moderate to minimal success with it. So, I’ve realized that the position that I’m in is special. I’m very thankful for where I am. But I don’t know if I would’ve been able to actively get to where I am because I just sort of fell into it.
Arsalan: So, sometimes that happens to us. We set out to do one thing and something else happens to us. It just depends. I’ve seen this happen again and again. In fact, seeing that most successful people who call themselves successful fell into what they’re doing. It’s just incredible how many times I’ve heard that. Some will say “I lucked into it. Random stuff just happens to me.” They just do something that they really didn’t think they should do and it works. Then, they drop everything else and get on that bandwagon.
Arsalan: Some people have started companies making a product that they really didn’t want to make, but accidentally made a product. It then turned out to be their flagship product.
Jeremy: I consider myself very fortunate for where I am, but there is also a lot of heading in a direction. So, it’s kind of like what I said about wanting to share my knowledge with other developers. I started out speaking at local code camps and user groups. I started a blog and doing some little YouTube videos and things like that. I’m not exactly sure where I expected to end up. I didn’t end up where I expected to end up, but it’s kind of along the same direction. I don’t think it’s purely random chance. I think that a lot of it is that you create your own luck. Get out there. Talk to people and find out what’s going on. Then, you sort of generate your own luck.
Jeremy: A good example of that that is when I was at that startup. I kind of came to the end of my time there. There were some changes going on in the company. It turned out that I had put in my notice at that company the weekend before code camp. So, I was at a code camp that we can in southern California and talking to the people who I knew from within the community. So, during that time I had about half a dozen people who said “oh, you’re available? Talk to us. We have openings within our company.” I ended up having six leads come out of that. These were people who I knew within the developer community and I just talked to them and met with them at user groups and things like that. That network of people who I didn’t know before has been influential in my career as well.
Arsalan: The key here is that you were out there speaking [to them] and putting yourself out there. First, people know you to be knowledgeable and technically efficient. They know that you can do the job because of the teaching that you do and the writing that you do. Then, you are getting in front of people. If you had the same technical acumen and the same ability but we’re not out there speaking and you weren’t on this podcast and you weren’t writing blogs, then I think you would find yourself in a different situation. You may not have the exposure or the leads. To your point, we really must put ourselves out there if we want to make a change in our lives.
Arsalan: A lot of developers who I’ve talked to, and have known personally, would like to change their situation. Maybe they would like to grow professionally or get into consulting, but they don’t have people coming to them. They don’t have a name. Here’s what I would like to know. [With this question, we are talking about] someone who has been working in the field for years and are at a place where they like to go independent and maybe even make some courses for Pluralsight or some other site or maybe even find their own clients and do some client work, but they don’t have a name and people don’t know them or recognize them, they don’t have a VIP award. Is it possible for these kinds of people to pursue the path that you are on or do they need to do all the things that you did first?
Jeremy: That is a good question. I have a lot of colleagues who are on similar paths, but everyone has their own pace that they go with. The first thing that I would suggest is to find a local Meetup. Talk to other people who are within your developer community, but not people whom you directly work with. That is one way to open your eyes to what is available out there. When it came to [public] speaking, I just didn’t think that I had anything to share because [I was a] corporate developer sitting at a desk, and I don’t want to use the word developer like it’s a negative thing, but I was some kind of corporate developer. I wrote business applications, nothing world changing. I was affecting my users’ lives, but [it was] nothing hugely exciting. Yet, I always thought that I would love to speak and share and things like that. I would go to these big conferences and [think to myself] “oh, it would be awesome to be up on that stage talking to people, but what do I know?”
Jeremy: I was listening to a podcast and they were talking about the .NET world, which is where I lived these days. When .NET first came out, everyone was talking about the basics because C# was a new language, .NET was a new environment, garbage collectors, and how the classic languages worked. Now that that’s been established, people are talking about the latest new technologies in .NET. No one is covering the bids for bringing new developers into the environment or brand-new programmers or people who are coming over from other environments. And [I thought to myself] “you know what, I can teach those basics. I have a good handle on them and a good weight of explaining them.” I took the challenge and I signed up to speak at a code camp that was coming up a few months later. That started it.
Jeremy: I got hooked on it. I realize it isn’t for everyone, but I encourage everyone to try it at least once. If the only thing that is holding you back is [that you think you don’t know enough to get up on stage and talk to people], here’s the secret. None of the other speakers are experts either. The important thing is that you have something that you know that could help somebody else. When I’m talking to somebody and trying to encourage them to go share with they know, I tell them to say something that they wish they had known six months ago. It’s that thing that you struggled through and you finally got over the hurdle and you’re like “I wish someone had told me this six months ago.” That is the topic. You don’t have to know everything about everything. All you must know is one thing more than the people you’re talking to and you can be helpful.
Arsalan: This is great. For everyone listening right now, this is beneficial because you always have something to teach. I’ll give you an example of my seven-year-old kid. She has been programming on Scratch for a couple of years. It’s not really coding the way that we think about it, but it is programming. She is at a point where she is comfortable teaching her three-year-old little sister on how a few things work on Scratch Junior.
Jeremy: That’s awesome.
Arsalan: She’s a teacher. I also started teaching a new class at a K-8 school locally. I’m teaching kids about programming and I want to start awareness between the parents and the students that programming is a valid and legitimate thing that they can pursue for fun or for a career. It’s something that exists. When I was a kid, I didn’t know that it existed. So, I’m trying to teach them, and my daughter is in there and I know that when it comes time to do some things, she’s going to be over there and helping the kindergartners and first graders and even people her age because she has been doing it for over a year and she feels comfortable. That’s incredible for me to think about because since she’s a kid. I’ve been trying to get her into programming, but she wasn’t interested until she started doing it. Now as far as that thing now, for that particular thing that she’s working on, she is an expert to all of the kids who are younger than her.
Arsalan: If I ask her to talk about what she just learned yesterday and how she made a program she could totally talk about it. For all the other kids have never actually seen any programming, that would be very valuable. It just opens a lot of avenues in my mind. All of us can do this. A lot of us are just shy because we’re thinking to ourselves, “What do I know?”
Jeremy: Right, and what I found was that some of the best articles on my blog are talking about learning something new. So I wanted to learn functional programming and I took so I wanted to learn functional programming and one of the languages that I took was F#. I decided that I was going to go through the first 10 boiler problems, which are standard. I would call them brainteasers, but when you’re learning how to program, it’s mostly mathematical things. Write a Fibonacci sequence and calculate the sum of even numbers up to 100 or something like that. So, I decided that I was going to try to do this using F# in a functional sequence and just say “okay, here are going to be the things that I ran into. Here’s where I ran into a roadblock and here is how I got around it.” I’ve heard some great things about that series from someone in another country asking me if I was going to do any more of those boiler problems because they were following that series. It’s just having someone say that that thing that you did was useful to them.
Jeremy: As far as those boiler problems are concerned, those have been around for a long time and there are thousands and thousands of solutions to those in various languages and people have done them in F# before. They have done them in all the languages before. Putting my process out there of how I went through this is helping other people. It’s awesome to think that something that I would normally be doing can actually impact somebody outside of that. So, you don’t have to get up in front of other people and speak. It could just be a matter of writing some blog articles or maybe putting out a little YouTube video if you’re more comfortable doing talking and live coding things than writing. There are many things that we can do to share what we know. The one hurdle that we do have to get over though is that hurdle of being wrong.
Jeremy: In our industry, we have this fear of being wrong. We have this fear of people coming up to us and saying, “Oh, you’re doing that wrong.” So, we just have to put ourselves out there and realize that we are human, and we are imperfect, this is my process, and if you have a better idea, then great! Share it! If you want to rip me, then go somewhere else. I don’t want to hear about that.” Part of it is just saying that you are going to put yourself out there. It’s scary. You’re going to get some comments that you’re not going to like, but it’s going to be totally worth it in the long run.
Arsalan: You must have somewhat of a thick skin because some people love to bring everybody else down. It’s incredible that it happens, but it happens on Twitter and it’s going to happen anywhere that people are going to post comments.
Jeremy: It really amazes me because I have this video on YouTube, which is An Introduction to Test-driven Development, or Intro to T.D.D. In this drive-by comment, someone said: “this drive-by development is awful.” I was like, “who is this who feels that they need to go to YouTube and find a random video and comment that this technology does not work?” You must realize, first, that you’re not going to please everyone. It was a tough thing for me to get over especially when I was first getting up and speaking in front of people. Then, after you do it enough, you’re going to refine it and find those people you’re targeting. It took me many years to refine and hone into it, but I know who my audience is now.
Jeremy: So, when looking for places to speak, I’m not sure shot-gunning it. [I’m considering] who are the people who are going to most benefit from what I have to say and the way that I normally say it? I know I’m not going to hit those cutting-edge things. I don’t do that leading-edge, new technology stuff. That’s not my thing, but [for others] who do that, more power to them. If I have of .NET programmers who want to get better, then that’s basically my target audience. There are a lot of people out there like that, which is nice. I’ve been able to identify that. Now, when I get the comments that say “Oh, this is too basic,” I can say, “That’s fine.” Yet, there are a lot of people who are getting a lot of benefit out of it. So, being able to separate those people is nearly impossible. I’m still crying inside when someone doesn’t like me, but that rationalization allows me to focus on the people who I am trying to reach.
Arsalan: It’s hard to take it. It happens to me. It happens to everyone. It’s hard to take it. It happens to me. It happens to everyone. Sometimes, you get somebody who just doesn’t like you. It’s that. Sometimes, they are saying things that they don’t mean. So, you must have thick skin. You must be able to focus on the positive people, the people who will give you positive energy versus the people who are pulling you down. That’s going to happen everywhere except when you are in a face-to-face environment or when you’re giving a presentation. You will probably not get those comments from people who are present. Virtual people like to throw all kinds of things that you.
Jeremy: Yeah, and the nice thing about code camps are an awesome place to start speaking if that’s what you want to do because first, it’s free and people aren’t expecting things. In fact, I always offer people things like a “double your money back guarantee” if they don’t like my topic. Plus, everyone in the room wants you to succeed. They don’t want to sit there and waste an hour. They want you to succeed. They want to learn something from you. Everyone is rooting for you there. Again, not everyone is going to walk out getting what they wanted out of the topic or the presentation or whatever. So, generally, there’s a very good positive energy in the room. Nobody wants time. They want you to succeed.
Arsalan: I did want to ask Pluralsight also about the MVP award. Did you have the MVP when you approached Pluralsight?
Jeremy: So, by timeline, yes, I was awarded an MVP before Pluralsight. As far as Pluralsight is concerned, they don’t really care who you are. They want to know if you can teach. That is one thing that I found that was nice. They have an audition process, and anyone can go through the audition process. You go to their website and somewhere on there you can click to show that you want to be an author. You go through a process where they send you some instructions and you do a sample video and then they will see if you can teach. They don’t care who you are. They want to know that you can teach.
Jeremy: If you want to talk about the technical aspect of presentations and whatnot, they do a-peer-to-review system where there are some people who are experts in those technologies will view to determine if something is way off when it comes to the technology, not for 100% correctness. So, the MVP idea and Pluralsight are an interesting mixture. MVP awards are basically Microsoft recognizing people who contribute to the developer community. So, through my speaking, my blogs, and things like that, that is how I was initially awarded that. I’ve been an MVP for six years now. So, it’s been great. So, Pluralsight and MVP have interesting aspects to each other, but I would not say that one requires the other.
Arsalan: Do you remember your first encounter with programming?
Jeremy: Yes, I do and it’s just because I was thinking about this a couple of years ago. I’d like to say that first experience with programming was with my dad. He brought home an Apple II that was left over from work and I started programming some Basic and that was my first programming thing. But, you know what, that’s not what it was, and this is going to show how old I am now. So, I apologize for that. I had a ¾ gray beard, but I just shaved so I look a lot younger now. I trace my first programming experience back to CRISP 79, which seems a lot longer ago now. I got this toy called a ‘Big Track.’ It was basically a programmable tank. It was a tank that had six wheels and the little LED thing on the front and it had a CAD on the back. It was a number pad. So, it was several arrows and you would punch in a program for what this thing was supposed to do. You would program it to go forward a certain number of lengths for each vehicle and you could say ‘right 90°.’ So, it would go right 90° and then go forward five or….and then fire the little fake laser thing in front. It was horribly frustrating, but I found out that I was a programmer because first, there was no going back and fixing a program because there was a splay. It was just a matter of programming it and hitting go. There was no ‘go back and debug because line 3 was wrong.’
Jeremy: So, I found myself writing out my instructions on a piece of paper before I typed them into this little keypad. That was my first experience that real life doesn’t always match theory. If you say ‘go forward and turn 90°, it’d turn 85° or 96°, depending on the surface that it was on. These were on plastic wheels and so if it was on carpet it would do one thing and if it was on the tile it would do something else and slide around a little. So, if you told it to turn 90° and it only turned 80° and plows into the coffee table rather than going around it. So, the way you debugged it was by going back and telling it to go 100° rather than 90°. I look back at this and wondered how I ever survived that because that was just a little programming experience. Yet, I guess that was just the time that I found out that I liked doing things like that and I wasn’t completely frustrated by it.
Arsalan: Some of my best experiences were when I was young, and I wanted to do programming. I had access to a computer growing up, but I think back in the day we didn’t have all these instructions. We didn’t have the iPhones and the iPads, and we didn’t have cable TV. Well, I didn’t have cable TV. We didn’t have anything. So, all I had was what was in front of me. I think it would be good if we could find a way to make things simpler again at least for kids so they could focus on things and not get distracted all the time.
Jeremy: Yeah, that’s an interesting challenge. There are times when I’m like “That’s great! I have the entire internet open to me. So, I can solve this programming problem.” But, at the same time, part of me wants to go back to 1980-whatever when I’m typing in basic instructions that were printed out in the back of a magazine. So, you just typed in these programs and you learned to debug based on how badly you typed and by going through them. That’s how we got programs, you know. There was nowhere to download stuff from. You had to type them in yourself.
Jeremy: I didn’t have a lot. So, I always had old computers. That Apple II that I talked about, it was well past its prime by the time that I got a hold of it. You know what’s great? Having a computer that you can hook up to a television set. Oh man, now I feel old.
Arsalan: Yeah. We’ve all heard about it or done it. We are lucky that we are in an era where we can have high definition screens on our desks. Even 20 years ago, that would’ve been the stuff of dreams.
Jeremy: Oh yeah.
Arsalan: So, did you study computer programming, computer science, or any other related field in a formal environment?
Jeremy: No and that was interesting because I am, for the most part, a self-taught programmer. So, like I said, I did hobby programming and back in the day, I ran a bulletin board system where you would basically modem into a specific computer to do stuff. That was quite a thing back in the day. How I got programming for real was that my brother worked for a software distributor. One day he drops this gigantic box in my room. He told me it was a compiler. It was a C++ compiler. I installed it and there were command lines of C++ and I ended up writing some little programs for his bulletin board. I wrote a multiple choice, trivia quiz. It was fun, but it was my first foray into programming for real.
Jeremy: Back in college, I was an English major. I don’t regret that at all because it taught me critical thinking skills that became very useful to me as a programmer. Then, when I decided that I wanted to do programming as a profession, I realized that I didn’t have any formal training and wasn’t sure how I was going to get my foot in the door. That was something that, I don’t want to say that I lucked into to, but I was in the right place at the right time and kind of pursuing a path.
Jeremy: I ended up on the user side of a project. So, I was working at the Disney Land Resort and I was on the user side of this big, resort-wide system that we were doing. I was doing the requirements meetings and I was building some little things and access according, so we could figure out what our requirements were. The develop manager saw that I had the right mindset and I was asking the right types of questions. So, she had a junior position open. So, I said “Awesome! I will take that!” I would say that I got started late as a developer. I wasn’t a developer until I was 29 years old. Most people that you are practically over the hill at that point and that was just when I was beginning my professional journey.
Jeremy: I am very fortunate because that team that I ended up on was focused on going forward. So, everyone was thinking about how we could propel ourselves forward and meet our users’ needs that best way that we can. Everyone was sharing. So, the senior developers were sharing with the people who knew less than they did. So, it was an inspiring growth environment. I attribute how rapidly I was able to progress as someone with no formal training to that and I wish that more people could have access to that. I realize that was a rare experience that I got to experience. It was awesome!
Arsalan: That is amazing that you had the opportunity and found yourself in the right place and at the right time. I have had a lot of other people tell me similar stories, not the same. If you work at a company that deals in technology or maybe have a technology, they may need someone to build some custom applications for them.
Arsalan: It appears to be a common pattern. Some places just need someone to write some Excel or Access or some Visual Basic, or something simple. Some places may have websites, or, in your case, more. The lesson that I take from this is this. Let’s say that you are out, or you are a student, and you want to do software development, but you don’t have any experience or training. So, you get a job in a different position, but you know that this company has a department where they hire developers. There is an opportunity for you to work within the system and either apply for an open position or maybe have a good working relationship with managers there in those departments.
Arsalan: I’ve seen it happen time and again where people go from something completely unrelated to software development or to testing and then they work up. Eventually, they all end up in the same place. Once you have a little bit of experience, then nobody asks how you got that experience or whether you have a degree. Nobody asks if you have a master’s degree or a Ph.D.
Arsalan: I spent many years studying computer science and computer engineering. It turns out that it wasn’t needed for the job, at least. So, I think that’s a good lesson for all of us to learn, especially for those who are listening to this podcast right now and they are apprehensive about getting a job somewhere. Go get the job. Having a job is important. Being jobless is no fun.
Jeremy: You reminded me of the steps before that because when I started at Disneyland resort, I was making hotel reservations. That was my first job there. I was using a scheduling system. I hate to use the scheduling system, but basically, the manager was going through an Excel sheet and typing in the schedule for everyone. Because of seniority and other things, if someone changed their position, she had to rearrange everything and fill in the schedules all over again.
Jeremy: It was this huge manual process. I knew some Excel and I built a pivot table. I told her to just type in the schedule in the pivot table and that would turn it into a grid. It was little things like that where you could save time that is valuable in the long run. I don’t know that the little schedule spreadsheet got me the programming job, but it was small steps to, first, prove to myself that I could be technologically useful and to prove that to other people as well.
Jeremy: So, there are some things that you can do even if they are technologically out of your realm. I see my job as a developer to make the world a better place. That’s just me making other people’s jobs easier.
Arsalan: So, that was your first job as a junior developer. You were excited. You have never done it. You are 29 years old. I don’t know how people reacted to that, but a lot of people who I know would not necessarily react very positively to joining their company, their closed knit group with little to no experience. It happens to a lot of us. Getting accepted and viewed as a valued member, an equal and contributing member to each team, take some effort. How is that experience for you?
Jeremy: Like I said, I was on a very welcoming and open team. So, it was probably smoother for me than what a lot of other people go through. it will take time before you become useful in the department. Realize that if you are brand-new to the area, you’re going to be a drag on the area for a while. So, just because it is in of that. That’s not necessarily that you are a new developer, it might be because you’re new to the industry.
Jeremy: When I took a contracting job in a completely new industry, I didn’t know how anything about these people’s line of business works. Although I was rock-solid as a developer, and the skills that they needed, it was a learning process in determining how they did things. I think I think that the key to becoming a successful developer is absorbing knowledge. You must want to learn. You can learn the technologies. You can learn about the business space area. You can learn whatever the problem space it.
Jeremy: There are so many things out there to learn, but you must be willing to do it. If somebody must keep handing you things that you need to learn, you’re not going to be successful. Yet, if you go and find new things to learn and start participating and that experience, the other developers are going to see that you are serious. You will be showing that you are interested in improving and getting better and wanting to be a productive member of the team. That attitude goes a long way toward softening those people who might be a little harder towards that.
Arsalan: Were you completely on your own or did you have a mentor over there?
Jeremy: It was kind of weird because we tried to set up a mentoring relationship where everyone was paired up in the department, but it didn’t last very long. So, it was more of an informal thing. Different people on the team had different areas of specialty.
Jeremy: So, when I first joined the team, I was given reporting because it’s hard to delete data if you’re doing reporting. It is easier to hang a server, though. I’ve hung servers while doing reporting before. Yet, it’s something that you can approach, and you can learn how the data is set up and people looking for you to get it on a piece of paper and things like that. During the initial process, I am talking to people who know the system, the data that I’m working with so that I can understand how the relationships work and things like that. I’m talking to people who know the tool.
Jeremy: We were using Crystal reports. So, I was able to tap into these people to do the different areas that I needed to learn. Then, eventually, I would be able to do programming. When I first started programming, we were using Delphi and doing some actual language programming. So, we were getting more into the actual application space. It was more of an informal system where we were sharing with each other and we would pair when we ran into problems.
Jeremy: Now, as a senior developer, I’ve heard about these teens who have a 15-minute rule and I really like the idea of this. During the 15 minutes before you asked somebody how to do something, you must spend at least 15 minutes looking for a solution on your own. That could include looking on Google, Stack Overflow, or the software that you have in your environment. So, you must spend at least 15 minutes trying to find an answer before asking someone else. So that gets you past always asking somebody else for help and helps you figure it out.
Jeremy: On the flip side of the 15-minute theory, if you spend more than 15 minutes looking for something, you must ask for help. So, that prevents people from getting stuck. It also promotes that sharing environment. That way, someone isn’t sitting there spinning for two hours being stuck on a problem. They are asking for help and other people are used to asking for help and giving help. Again, it depends on your teammates wanting to be involved in that, but I like the idea of doing some due diligence first and realizing when you get stuck and then asking someone for help.
Arsalan: That’s good advice. I’m not seeing both sides of the equation. I’ve been on both ends of this divide. I’ve been the one asking and the one being asked these questions. The problem is that, for the people who are new developers, the person that you are asking also has his or her own tasks. Everybody is under the gun. That’s what happens.
Arsalan: The problem is that sometimes they are deep in their process and if you interrupt them, not only do you break their flow and sometimes that means that something gets delayed for them, which further adds to their stress and therefore their response to you may not be as favorable. So, I think it’s good to have some type of process. One of the companies that I worked at had this umbrella process. It rained a lot in Chicago, so everyone had umbrellas. If it was on the desk, that meant not to bother them.
Jeremy: Yeah. I like that. This is one of the things that I miss from being in a cube environment. It’s nice when you can pop your head up over the cube wall to look at the person and figure out what’s going on, once you have some experience and you can see it. You can tell if they are deep in meditation while trying to solve a problem or if they’re just looking at the whiteboard or if they are talking to a client or whatever. You can get that visual of how busy this person is before you approach them. Considering I’m working remotely with people, I’m not quite as comfortable with that. I feel like I might be interrupting you if you’re deep in thought. I do miss popping my head up over the wall to see if that person is available or not. So, yeah, the umbrella method does sound pretty good.
Arsalan: If you could start over, is there anything that you would do differently?
Jeremy: I learned many things the hard way. As someone who likes helping the next generation of developers, I love telling people the problems that I ran into and the things I wish I could avoid, but I know that people won’t listen to me and they’re going to have to experience those problems themselves. The advice I usually give has to do with best practices. Before I say anything further, I hate the term best practices because it implies that this is the right thing to do in all circumstances. When I was a new developer, I always thought that best practices applied to academic people and not to regular programmers. So, I proceeded to make huge messes. I eventually realized that the people who had for 30 years or more might know something more than I do. So, I would encourage people to understand the best practices.
Jeremy: I don’t always follow them, but not because I don’t want to use them, but rather, it’s because I know that they don’t apply to the specific situation that I am in. So, listen to your elders. I know that I’m kind of in with the elders, but that’s self-serving. That’s what I wish I would’ve paid more attention to when I was younger. The first solo application that I did in this one department, I was doing a start to finish reporting application. I ended up putting all the logic in the code behind the main form of the application. When I was building it, I figured that it was a simple application, and this wouldn’t be a big deal. Yet, as it got bigger and bigger, I then had 700 lines of code in this one form. I had to reap the benefits of that because I supported the application for many years. It was a moment when I wished that I could have gone back to do it over again and have things in different places based on functionality. Yet, I don’t know if I would’ve learned my lesson without making that mistake. So, I don’t know what a good answer to that is.
Arsalan: I have two little girls. There are arguments or debates between my wife and me about what to do if they are doing something potentially dangerous. My wife’s point of view is to allow them to fall and get hurt and learned the lesson. I like that approach. In general, but then it gets to a point where I feel it’s a little too dangerous and I want to enforce some rules. So, I think there’s a balance here. The people who you and I are talking about, who read blogs and take your courses, or listen to this podcast, or do this, may not always understand this. It’s always a good idea to try it if you’re unsure, then if you fall flat on your face then you’ll know it’s not a good thing and you’ll learn a lesson. However, sometimes it’s beneficial to listen to people who have been there and take their word on it. Often you can save yourself so much trouble and heartache if you could avoid the big problems. I wish I had.
Arsalan: You were mentioning, that as a new developer or just as a young person, that you are so full of self-confidence sometimes and think you know everything. I’ve suffered from that. I just want to believe my own experiences, but sometimes it’s better. There are patterns and there are anti-patterns but we’re not going to go into this. When you’re looking at software development, there are ways of building good software that is just bad. They’re not all bad, but they are generally bad. So, I think it’s good knowledge. The best way to do that is by listening to podcasts, watching YouTube videos, reading blog posts, and all that other stuff that’s out there that Jeremy Clark and other people like him are putting out.
Arsalan: So, Jeremy, are there any podcasts, YouTube channels, or any other places on the internet that people can glean wonderful information?
Jeremy: Yes. There’s a lot of good stuff out there, but there’s also a lot of bad stuff out there. I like Pluralsight because they go through that vetting process. So, it’s not random content on YouTube. It’s curated content where they have found people who know how to teach a topic and are not confusing things.
Jeremy: Another thing that Pluralsight does is that they don’t have multiple courses on the same topic. So, you’re not looking at 32 courses on how to do Angular 2 or Angular 5 or whatever the version number is up to at the time. They are all more targeted and there are one overview course and a lot of specific courses. So, you don’t have several overview courses to pick from. If you are a video learner, then I highly recommend Pluralsight.
Jeremy: Unfortunately, I am not a video learner. I figured my brain doesn’t work at the same speed as video. Basically, my brain speeds up and slows down and video runs at a constant speed. So, for me, print media is the best way for me to learn whether it’s blog articles or paper books. I’m one of those people who still like paper books where you can flip back and forth between pages. Find out the best way that you learn and try to get yourself into the environment where you will learn best. I’m kind of a book person. So, I talked to a lot of my friends about the resources within the community to see what other people are doing and recommending. That’s what I do.
Arsalan: That’s good to know. Pluralsight is very good. You can check out Jeremy’s courses, and we can put the links to Jeremy’s courses on our webpage for this episode. It’ll be in the notes with the transcript of our interview and all the links. If you have a promo code, you can share that with us if you’d like and we’ll make sure that it’s on that page.
Jeremy: I’ll make sure to get you those links.
Arsalan: Awesome. So, we’re finally at the close. It’s been a lengthy interview. I’m grateful to you for giving us so much of your time today. Before we close, I still have a couple of interesting questions that I think our audience could benefit from. One of the things that I’ve noticed is that you are focused on .NET. .NET is not one technology. It is a suite of technologies. It doesn’t appear that you have diverged from your focus, which is a very good thing. I would like you to talk about how you keep up with things and how you decide which new technologies to learn. What do you do? What’re your criteria? Also, give us some advice on how to learn new things.
Jeremy: The first thing to understand is that I cannot know everything. That was a hard lesson for me to learn. I think what I want to focus on. I like to attend user groups, code camps and community events and talk to people about what technologies they are using, what’s interesting, and what’s exciting. I ask myself, what makes me happy? In the current world, I’ve developed an interest in machine learning and functional programming.
Jeremy: Although I’ve talked about using F# earlier, I’ve started learning Haskell for functional programming. Part of the reason I did that is to get out of the .NET environment. That way I don’t confuse functional bits with .NET bits. Most of the work that I would be doing would be in the F# world. I dabbled in Scala and a couple of other things. I’ve also seen some cool things out there that I haven’t had a chance to dabble in.
Jeremy: So, people ask me which technologies they should learn. I usually explore a couple of different things. I asked them if there is a specific industry that excites them. Do you want to be in medical devices? Do you want to be in entertainment? Do you want to be in finance? If there’s a specific industry that you want to be in, go and find out which technologies they are using. Then, start exploring those. That’s one direction that you can go in if you are looking at a specific industry.
Arsalan: I think that is a great answer because it’s hard to answer questions like these because we want to know how you picked a technology and or are so many things that excite you. I think there’s also the aspect of which industry you want to go into because where is the money? Ultimately, you could do something for fun or you could say that you want to do it professionally and you need to learn certain types of technologies because that is how a means becomes an end. Some people have different motivations. If you are just starting out or are a new developer, if you are young or looking to establish yourself, then I encourage you to focus on things that will get you a job. Focus on things that will get you noticed. You need to make your mark. Once you have done that, then it’s okay to branch out into things that interest you. When you’re getting yourself established, the first four or five years are the hardest. In our industry, it is hard to find senior people. So, it gets easier with time.
Arsalan: So, how can people get in touch with you, Jeremy?
Jeremy: You can find me under Jeremy Bytes everywhere online including my website: Jeremybytes.com and also on Twitter. Each I do quite a bit of speaking so I travel the US and venture internationally from time to time. On my website, there are also links to my YouTube channel where I have some screencasts on various topics, as well as my Pluralsight courses. That’s pretty much the one place to go to find out where I’m going to be.
Arsalan: All right. Jeremy Bytes everywhere on the Internet. That’s a good lesson in branding. I am so excited to have Jeremy here and be able to talk to him about some of the questions that our audience has. If you are listening to this podcast and are really excited about learning or you want to learn more about Jeremy or check out his courses, or if you want to see a number of our other guests, our previous guest was Reuven Lerner and we talked about Regular Expressions and he’s an expert in that, if you just want to let know how to get started, you can send me an firstname.lastname@example.org. You can also tweet at us at @MentoringDevs. Let us know what you think about this episode and if there’s a specific person that you would like us to talk to would like to pursue that as well.
Arsalan: All right, Jeremy. It was so nice to talk to you today.
Jeremy: Thanks for having me.
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.