For many, there is a misconception about becoming a software developer. The title is often associated with someone sitting in a tiny cubicle at a large corporation, but that is not always the case. In fact, there are many different ways that you can work as a software developer and not all of them involve large corporations. Creativity in technological career options is a bounty of opportunities. All you need is to simply approach the door of your choice with an open mind and determination to succeed.
Charles Max Wood entered the field of technology at the age of 26. He has worked as a developer in different situations and now works freelance. Since becoming a freelance developer, Charles hasn’t looked back. He runs several podcasts, is writing a book and a course, and much more. Charles comes to us in this episode to share his knowledge on some of the lesser known career possibilities that technology offers today. So, click on over to episode 37 and listen in to Arsalan Ahmed and Charles Max Wood as we delve right in.
Charles Max Wood’s Bio:
Charles has been playing with various forms of programming since he was 13 but didn’t find his passion for it until he was introduced to Ruby at age 26. After a year of trying to balance his passion for programming with his career as Director of Support for Mozy, he left his management position for a career in programming.
Charles is passionate about helping others make technology work for them. He is a software consultant and leads his own team of freelance programmers. He’s been programming in Ruby and Ruby on Rails for 7 years and has built several websites including Twitter Clones and other social networks, payment systems, shopping carts, and blogs. He has also customized with Spree, Redmine, Discourse, and Instructure’s Canvas.
Charles’ ambitions in life are to be a dedicated husband and father to his wife, Heather, and his three children, to meet as many people as possible who share the same passions as he does, and to write a novel.
Episode Highlights and Show Notes:
Arsalan: Hi, Everyone. Today I have a very special guest. Charles Max Wood, how are you?
Charles: I’m doing great. How are you?
Arsalan: It’s so good to have you. I’ve been listening to you on your podcasts, and you are an avid podcaster. I can say that because you have a lot of podcasts.
Charles: Yes, I’ve been doing it for almost 10 years.
Arsalan: Yes, and you are definitely somebody who I can look up to as someone who is successful in a lot of the things I want to do. The focus of my podcast is a little different from your podcasts, but I think we’re all in the same space.
Arsalan: So, you were telling me an interesting thing that happened when you were getting your first job. Can you tell us a little about that?
Charles: It’s kind of funny. I’m going to drop back just a little bit because I think it’s important to note that I think the people who listen to my podcast that I put on think that I’ve been programming forever. I’ve been programming professionally for about 10 years, as long as I’ve been podcasting. But, they don’t realize that we all got our start in the same way that they do. So, I just want to put that out there because sometimes things just work out differently than what you’d expect.
Charles: My first programming job I had been programming at the job previous to that. We had built a system for the tech support engineers to use in order to answer emails and keep track of phone requests and things like that. It provided a dashboard, a knowledge base, and things like that. So, I had been thinking that I wanted to go into programming, but I didn’t have the confidence to just go out and apply for programming jobs.
Charles: So, what wound up happening was I went and applied to a bunch of QA jobs because the last position that I held at that company was a QA position. Then I just applied on a fluke to a programming job. I went in for an interview and sat down with the general manager for about 20 minutes. He asked me a bunch of questions and did some interview stuff. Then we got on the phone with one of their programmers. At the time, the company was really focused around Java and .Net. They did a little bit of Flash and Flex, and they had one project on Ruby on Rails, which is what I was familiar with.
Charles: So, they got me on the phone with their one other Ruby programmer. We chatted for a few minutes and he started asking me questions. We talked about patterns and I described to him what I had done. He asked me a few other computer science questions, some of which I knew the answers to and some of which I didn’t. But, what I didn’t realize was that this was a consultancy and consultancies want people they can bill out at top dollar. So, what they were looking for from me was somebody they could bill out to do Ruby on Rails projects at a very high rate. So, it was a long shot for me to get the job.
Charles: When I was answering all these questions, I was like “Well, I don’t know. Or, no, I don’t know that.” And he was consistently coaching me. In fact, that part of the interview probably lasted about an hour. An interesting side note to that was that he was actually missing his daughter’s 8th b birthday party to do the interview. But, he was coaching me and helping me learn this stuff. At the end of the call they told me they’d call me back and let me know what they decided. I was like “Okay, well, I’m not getting this job.”
Charles: I got the phone call from them and from another company looking to hire me for a QA job at the same time and both offering me the same salary. I wanted to be a programmer. So, I took the programmer job. I think it’s interesting to note for other people that my resume literally had zero jobs, positions, or responsibilities that showed that I had done significant development in any way. My responsibilities when I was writing all that code before was to basically manage the tech support team. So, I was in management and all my job duties listed were management duties.
Charles: When I was doing QA, were actually told not to write test scripts for the code. So, what we ended up doing was writing basic procedures that someone would have to do by hand in order to do QA. So, my resume did not show any programming experience except for one line where it said that I had built the system that we used for the tech support team and it was fascinating that worked out. I worked for them for a year and then they ran out of clients that did Ruby on Rails and they laid me off. But, I think it’s fascinating and telling that I could go win without anything on my resume, have a conversation with these folks, talk about a side project. I’d worked on, and get a job at a consultancy doing Ruby on Rails.
Arsalan: Yes, that is fascinating. I wonder if it has something to do with the fact that you were at the right time in the right place. Ruby on Rails was really hot and there was a lot of demand and not a lot of supply. You just couldn’t find a lot of Ruby on Rails developers. Today I think that would be something that would be hard to pull off.
Charles: Possibly. I’m actually writing a book on this and putting together a course on it. I have an email course you can get on how to get noticed to get a job at getacoderjob.com, which is where I’m going to sell the book at. You can get noticed. That’s the primary problem that I think a lot of people have at this point. There are a lot of people who contact me saying that they need Ruby on Rails folks. Then, it doesn’t take long before they’re saying that they want senior Ruby on Rails folks, but the reality is that they just need people to get stuff done for them, and if you can demonstrate that you can get stuff done for them, they’ll hire you.
Charles: So, I would challenge you on the premise that it’s harder to do now. It may be harder, but it’s still possible.
Arsalan: Yes, I think that in the Ruby on Rails world, a senior developer would be someone who’s done it for about a year or two. That would be considered pretty senior. I’ve seen some job ads where the title is that they need a senior Ruby on Rails developer who has two years’ experience.
Charles: That’s interesting. Generally, the numbers that I hear thrown out for seniors are 4 to 5 years, mid-level are 2 to 3 years, and below two years is still Junior. Basically, what it really comes down to is what you can do for the company. There are some people who get in and six months later they really get it. It’s because they work hard and that’s all they do. In six months. They can contribute to a team in the same way that someone who’s been doing it for 2 to 3 years can. Then there are other folks who year in and year out. They get to a sort of proficiency on Ruby on Rails or any other technology for that matter, where they can do the job and not get fired and they just kind of stay there. So, they are repeating year one in your two for 10 to 15 years.
Charles: So, I think the problem that a lot of these companies are having isn’t that there needing to find people who’ve been doing this for a long enough. The problem is that they get so many resumes for so many people, or they don’t have a good way to identify the people that they’re getting to come to them or identify the people they could attract to come work for them. So, what winds up happening is that the shuffle through the resumes until they either give up or hire someone.
Arsalan: Yes. I think that you have some really good points. There are a lot of people in our audience who don’t know a lot about you. We know that you are a developer and you’re writing a book, but tell us a little about yourself and who is Charles Max Wood?
Charles: I grew up here in Utah, in Utah Valley, if you’re familiar with Utah. I grew up in Orem, which is a city just north of Provo. I went to Brigham Young University and got a degree in computer engineering. I met my wife while I was going to BYU. We’ve been married for 11 years and we have five kids. I serve in LDS mission in Italy, so I speak fluent Italian. After I came back and went to BYU, I got a job at Mozy, which was my first job. I was doing tech support until it became apparent that two people weren’t able to do all the work. I wound up building the team there. I also started the QA effort there because it turned out that 80% of our requests were related to the same problem. So, if I could put a test in place to prove that problem than it could save us a whole lot of time and effort. After I’d been there a time I moved from director of support to QA in a bid to get into their development department. That didn’t work out.
Charles: I wound up working for Solution Stream. That was my first real developer job. I worked there for a year and then they laid me off as I said. I then went to work for another company that did the generation for colleges and worked there for a year. I then went to another company out here called Public Engines. If you go to crime reports.com, all the crime data that goes there gets Geocoded by a code that I wrote for them. I work for them for about six or seven months before they made a hiring decision to bring on a director of marketing who made some pretty poor decisions and the company ended up starting to lose money as opposed to making money. So, the board came in and fired all the C-level employees and told all the executives to lay people off. I was pretty disheartened because most of the jobs that I had I either love them and got laid off or I hated them and they didn’t want me to leave. So I decided to go freelance.
Charles: When I went freelance, I had to make a deal with my wife that once the money in the bank ran out, I would take a job. After a while, it became apparent that I could make it freelancing. So, I stayed freelance. About eight months after I went freelance, I started a podcast called Ruby Rogues.
Charles: In the meantime, during all those other jobs, I had various other podcasts. The one that most people would be able to find is Teach Me to Code. There were a screencast and podcast series on that. We started Ruby Rogues in May 2011, and then JavaScript Jabber and Freelancer Show in January 2012. We started iPhreaks in 2013. Then, we started Adventures in Angular during the summer of 2014. Those are all the shows that I do right now.
Charles: I’m actually working on pulling together a series of podcasts that I’m probably going to coin as The New Programmers Podcast or something like that. I don’t know that’s going to be an indefinite podcast, though, or if it’s just going to be a series that I put up until I get all the information out and then I stop. That’s where I’m at now.
Charles: I’m also working on the book and the course that goes along with it. I’m also working on a series of remote conferences for programmers. They allow you to attend the conference online for two or three days. You get for talks each day and is held during the middle of the day US time. Those have gone really well.
Charles: So, at the end of June is Ruby Remote Conf. In the middle of July is Newbies Remote Conf. So if you’re new programmer, were pulling together a bunch of experts to come and talk to you about the stuff you need to know in order to be a programmer. I’ll also be doing a talk there about how to get noticed, which is going to be most of the stuff that you can get from the email course that you can get at getacoderjob.com, but there’s going to be other stuff in there too. So that’s been my code journey through all this. I’ve done some other programming here and there, but for the most part, I do the podcasts and the remote conferences, and then I write code when I get a chance.
Arsalan: Wow that is a lot of stuff. I think that if you’re following along in listening to this, you don’t have to remember all that. We’ll have all that in the show notes. So you have started to produce content for new developers. I’m curious about what you think the issues are that new developers have that you are trying to address, especially in your podcast? What are you going to do in that?
Charles: So, this is something that I realized late last year. I decided that I was going to talk to podcast listeners for 15 minutes each just to kind of get to know what their issues were. What problems do you have? What are you struggling with? Who are you? What kind of dreams do you have? I talked to advance people to. In fact, if listeners that the show want to, you could go to Ruby rogues.com/15 minutes. It will take you to Calendly in the take you directly to my calendar and we can chat.
Charles: So, I talked to a whole bunch of people and I found that probably 40 to 50% of the people that I was talking to were new programmers or were looking to get into programming. So as I talk to them. I got a really good feel for what some of the issues are. Some of them are just what technology should I learn. This is something that they struggle with and they don’t know which one to go after.
Charles: Another problem that they get into is should I do, a boot camp or should I do online learning like code school, or should I just do YouTube University which is basically to go browse YouTube and find videos about whatever it is I want to learn. Or, should I go ahead and read a book. There are all these options. Video are courses on Udemy. Where do I go? What do I do? How do I learn this stuff?
Charles: I’ve had a few people asked me if they should go to conferences. I’ve had a few people asked me how they can find a job. That’s a pretty common one for anyone who’s out of the boot camp or has been fiddling around with it for a while. It’s like “I want to do this professionally. What do I do?” Those three or four questions are probably the most common ones.
Arsalan: That’s good. I think some of those questions we try to address in our discussion panels. I would love for you if you have some time, to come on one of the discussion panels so that we can talk about it. I’d like to pair senior mentors and senior developers with junior developers, new developers, and aspiring developers, and ideally have been together in one discussion. Or, if not, I like to have someone who’s in design, someone who’s in UX, someone who is in development with a different perspective and come together to discuss the topic.
Arsalan: I want to know about your encounters with programming. Were you always a programmer? Were you a child prodigy programmer or did you discover it later?
Charles: When I was in junior high, I bought a TI 85 calculator. I thumbed through the programming guide that they had in there, but it was really basic. So I kind of got some of it there – four loops, but not a whole lot that was really in-depth programming. I’ve year after that, I was part of the Math Counts team at the school. It was a year-long program, but Math Counts was only two or three months. So we would do whatever after the contest.
Charles: One of the things that we did was make designs through graphical programming with Pascal. That was real simple stuff. It was all mathematically based and not too involved. When I was in high school, I took an electronics class, and if you took electronics during the first three years, then during your last year you would spend time programming against an 80 or 85 processor. That consisted of actually putting in by setting the pins on the 80 or 85 with the assembly codes. So, we basically just turned LEDs on and off by setting the values and the registers, which is more computer science than just learning how a computer works.
Charles: When I went to college, I wound up getting a job in the IT department managing servers. So, I did some bash they are. I initially started out as an electrical engineering major. I had to take a couple of programming classes, so I did some Java, C++, and C., I changed my major computer engineering, which really pushed me more into C and VLSI, which is the language that you use to specify how a chip should be designed. So I did a lot of chip design stuff and then I graduated, and then got that job Mozy. I was also an intern writing patent applications for a little while and decided I didn’t want to be a lawyer.
Arsalan: That’s interesting that you talked about hardware description language. I think you said VLSI. Two languages that I’m very familiar with that are very login are VHDL.
Charles: Oh, VHDL. That’s what it was.
Arsalan: Yes, and I wrote some log that was a little bit nicer, but I have to say that it was a pain.
Charles: Yes. It’s about as quirky as C and it is an ugly syntax.
Arsalan: But, you’re developing concurrent hardware, right? So, it’s hard for it to be very high level. I think you need to be at the low level. I think I worked on a programmable timer chip as a senior project, but I have to say that in the high-level language like JavaScript. It’s fun, but you have to play with it. It’s harmless too because you can’t really mess up that badly. But a lower level language like a hardware description, C, or C++, you can really mess up in you could spend days chasing your tail and not be able to figure out what happened because debugging stories are not that good.
Arsalan: If you are a new developer or you want to be a developer and you’re thinking of a fun little programming language, you should probably stick with a higher level language like a Ruby, Python, or JavaScript and just learn programming that way. Then, after that, you could learn the hard-core stuff. But, if you are mathematical, who likes things that are very precise, and then I think it would be fine to start with C/C++.
Charles: Yes, the only issue that I have with saying to start with C/C++ is that the syntax is much less forgiving. If you’re into math and you go with Python, or something like it, those languages are a little higher-level and easier to pick up, because the syntax doesn’t get in your way as much. Once you figure out the concepts behind programming, especially the iterative or the procedural programming then you could start to work your way down to C/C++ or something like that if you really need something that’s precise and very fast.
Arsalan: Right. Okay, let me ask you a question about your college education. When you were in high school you liked programming. At that point did you think that that was what you wanted to do as a career?
Charles: I didn’t even think that I wanted to do it. What I was in college, to be honest. I took some programming classes, and they have you work on some very specific problems, but it all felt like it was toy stuff and like none of it mattered.
Charles: With the electrical engineering and chip design stuff. I felt like if I could design a festive chip I could make a difference. If I can reach into these industries and make things just marginally better, then I make a difference. I didn’t see that power and programming when I was in college.
Charles: Once I graduated and worked on that one project, building that system for those tech support engineers to make us more efficient. So we could better serve our customers. That’s when it really started to dawn on me that I was making a small impact here. If I can build or reach more people then I really can make a difference. It really came down to the kind of impact I could make and I realized that software could get me there easier than hardware.
Arsalan: I’m thinking about the time when you are trying to get into college and choosing your major. You graduated with the computer engineering degree, but you really weren’t into programming much at that time. You didn’t know that’s what you wanted to do. Computer engineering is not the same as computer science, it’s not software heavy, but there is a software component to that. So why did you choose that major?
Charles: I’m trying to remember why I switch from electrical engineering to computer engineering. They were both within the same department. So, there were really only a few classes that were different. I think what did it for me was that I just looked at the class lists and just decided that some of the computer engineering classes looked like more fun.
Arsalan: So now you’ve graduated with the computer engineering degree, but you think that you had programming chops at the time. So you started working in QA and you worked on this app that you were able to do on the side for the company. Using this technology you convince the company to hire you to do Rails development. From that point on, you worry rails developer, but I wonder if, after all these years of working as a professional developer, do you ever look back into your computer engineering education, and say “wow, that was amazing. That really helped me.” Or, do you think that was a waste of time?
Charles: I’ve had this debate with myself many times. There are a lot of things that I learned as part of my degree that I feel that really did contribute to the way that I work and think. The specifics of how computers work is not something that I use day to day. I can look at something when it’s not performing well and it’s probably putting pressure here. When something swaps the disc I know exactly what’s going on because that was part of my education.
Charles: I think mostly it was just discipline and thought processes as opposed to a particular subject that I picked up while I was there that really impacts me. I remember several people that I know who didn’t have a formal education, discovering things like state machines, which is like first or second-year stuff for an electrical engineering major, because that’s effectively how you manage the flow in electrical systems. So, I remember seeing them having their minds blown in for me it was something that I had done so many times on so many homework assignments that it was second nature to me. But at the same time, I can’t really point to anything that I really learned there that I can say definitely impacted me in the way that I work now as opposed to the overall discipline and things like that.
Charles: Now, was it a waste of time? I don’t believe it was. I don’t believe that this is the way that everybody should be getting into programming, but for me, it was a very constructive way to figure a lot of things out through my life at that time and also just to get acquainted with a lot of different technologies.
Arsalan: So, when you became a professional software developer and you got your Ruby on Rails job, I noticed that immediately afterward you started a podcast. That podcast is very popular right now. But, it in order to start a podcast via host and get the right guests and put yourself out there, you need a lot of confidence. But you had very little experience at that time. So, how did you get that confidence? Were you always so outgoing?
Charles: No, not necessarily. It was during my first programming job that I started podcasting. That podcast isn’t running anymore. Ruby Rogues is the longest running one that I have now and JavaScript Jabber is the most popular one.
Charles: What happened was I was working QA at Mozy’s and I was within a few months of leaving. I was working with another QA engineer and he would be sitting at his desk and cracking up. I finally turned around and asked him what he was laughing at. He said that it was podcast he was listening to.
Charles: He had an iPod when the iPods were pretty new. That was back when you had to download the podcast from iTunes and sync them over to your iPod. I didn’t have an iPod, but he suggested that I play them in iTunes. So I installed iTunes on the box that I was using to do my testing and started listening to podcasts. I got to listening to one called Rails Envy by Greg Pollack.
Important Links
- PluralSight
- Ruby Tapas
- Elixir Sips
- Lynda
- Get a Coder Job
- Mozy
- Solution Stream
- Crime Reports (Public Engines)
- Ruby Rogues
- Teach Me to Code
Thanks for Listening!
Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.
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.
You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts.
Podcast: Play in new window | Download