Dane and Brian discuss skills needed for people that become software developers that don’t have computer science degrees.


Transcript for episode 70 of the Test & Code Podcast

This transcript starts as an auto generated transcript.
PRs welcome if you want to help fix any errors.


Welcome to Test and Code, a podcast about software development, software testing and Python.

Today’s show we have Dan Hillard. Dan and I discuss the skills needed for people to beat come software developers from nontraditional paths. We also discuss the bookies Writing Code Like a Pro, the writing process, testing with a multi language stack. And we even cover music, art, photography, and a lot more. So I hope you enjoyed the show.

On today’s episode of Test and Code, we have Dane Hillard. So, Dane, will you introduce yourself to everybody before we get started? Yeah.

So, hey, I’m Dan, as Brian mentioned, and I’m a lead Web application developer at Ifhaca. And if it’s a is a nonprofit organization that does a few different solutions for higher education, one of the most widely known as Jstore.org for academic research.

And yeah, I’m working on this book for Manning called Code Like a Pro, software development in Python. And that’s all I got so far. Okay.

So how long have you been in the software industry?

Graduated in 2011. So it’s close to nine years. Ten years. And I’ve been doing Python specifically for, I would say, the last five or six years.

Okay. Where’d you start with?

I was originally doing some low level CNC Plus Plus programming, a little bit of MATLAB, some interesting array of stuff, and then moved into some data processing. So I had a mix of Pearl and Shell and stuff. And then now I’m doing a lot of Python, as I said, and then also some reactive JavaScript frameworks, view and react.

Okay.

That’s kind of an interesting mix.

Yes, mostly. Are you doing Web related stuff?

Yeah, I would say the majority of my day to day work is directly for Web product, but there’s a little bit of sort of backend infrastructure things, too.

Yeah. Well, one of the things you brought up that you want I want to touch on your book a little later, but you mentioned that you wanted to discuss nontraditional paths to becoming a software developer. Do you think you had a nontraditional path or is it something you just believe in? Otherwise?

I would say my path has been very traditional.

Okay.

So what do we mean by traditional?

That’s a good point, too, to even examine what that word means. But for me and the definition I’m working with here is like someone who has a computer science degree, went through a four year College, and has sort of arrived in the industry as a natural extension of that education that they received. So in contrast, I sort of view nontraditional approaches or stories as people who either didn’t go to College or went to College for something else and found that they wanted to supplement or replace whatever they were doing with software and other things I probably haven’t even thought of.

Do you have a lot of people around you or that you work with that you would think of as a nontraditional path.

I do definitely have a couple of coworkers who are not College graduates. I have a few friends who have transitioned into software recently from other industries and a couple of friends who do things like computational chemistry. So they’re using software, but not with the focus being on software they’re trying to solve. There’s very few applications of software that are strictly the software, but their major area of study is something outside of software.

Yeah. I also work with a lot of people that without computer science degrees. I have one, but I work in electronic test and measurement, and so a ton of the people there physics degrees or electrical engineering degrees or something else. I even had somebody that has actually a rocket propulsion degree, which is so cool. He’s actually technically, I don’t know if technically, I don’t know, rocket science is something he studied. I don’t think he can call himself a rocket scientist because he works on the Oscilloscopes. But there’s a bunch of electrical engineers that learn various levels of coding on the job that’s both awesome that people can pick it up and there are downfalls. So have you seen that there’s stuff that people miss that maybe they is that one of the reasons why you wrote the book is you think that there’s a lot of aspects of software that people missed out on by not going to College.

To me, some of the things that would be useful that I view as useful for people who maybe didn’t go through for your education in computer science science are things like thinking through how to solve a problem in software, because it can often be pretty different to other kinds of thinking that you might have to do in other fields.

And then I think putting a focus on things like testing and performance are things that might not be introduced to you organically if you’re just sort of entering software from out of nowhere. I think I try to cover a couple of those areas in the book for sure, and eventually move into talking about things like encapsulation and abstraction and layers of abstraction and how to sort of write code that lets you not keep all of it in your head at once.

Because even for me, it’s sometimes hard to imagine an entire system, and I’m sure for a lot of people. So focusing on methods for making sure that people can write code in a way that lets them abstract things and sort of compartmentalize it as they go along.

Yeah. Even writing their own code and modularizing parts of it are a good thing. But even you bring up an interesting point of just being able to jump into a huge system and finding your way around and figuring out the routes, the path through the system and at least enough to where you can work within a system that there’s no way you can actually mentally capture all of it at once. That is something that is tricky. And I actually ended up having some people with CS in my CS program. One of the things we did was jump into a working operating system or a semi working mock operating system and then change some things like change how the file system worked or changed threading priority or whatever. That was the first time I’d dealt with what I thought of as a very large code base. Now people have access to lots of stuff on GitHub and whatnot to play with large systems. But even with the access even CS degree, people coming out with a bachelor’s degree, I think, often don’t experience that. There’s been several times where I’ve interviewed people with the bachelors in CS and asked them like the largest file size or how many files in the largest system they worked on. And often the answer is like twelve or something like that. And it isn’t like a limiting question. You’re not going to get not hired just because of that. But it is surprising. There are very few software systems active in the world that only have twelve files in it. So dealing with a large code base is something people should learn how to do.

Yes. And I think in the same sort of vein, even people with CS degrees during those four years they were in school don’t necessarily get much experience with collaborating with other people there’s, like group projects and stuff, but sort of at the scale of managing an open source project on GitHub or working on a repository as an organization, that kind of scale is not introduced or even really talked about.

Well, right. And some of those skills, it doesn’t matter if you have a CS degree or not, if you pick up a lot of these other things. I think that it is possible to become a very, of course, a hugely active and prolific and effective software engineer without a CS degree. And it’s possible to become a horrible software engineer with a CS degree. One of the things also I think it would be cool to emphasize is leading on tests and other ways to validate a system to be able to change your mind and refactor things. That is one of the things that I see people coming from, at least electrical engineers that come in once they get it kind of working, they don’t want to touch it anymore. It works. Don’t touch it. That’s I guess the freedom and fear thing that comes from not quite understanding what it is you’re writing from some people.

Anyway, interesting topic, but it’s something we definitely have to tackle because we’re not going to solve all the just CS majors aren’t going to be able to solve all the programming problems in the world because we don’t understand all the stuff. Like you need people with deep understanding of finance to do finance software, and you need people with deep understanding of other systems and you can’t expect them to also get a CS degree. Yeah.

Another sort of facet of it is very interesting, too, because a lot of the people who currently are sort of traditional past software developers tend to be white male people like you and I had the privilege in the background to be able to enter University and all that stuff. So we’ve seen crazy things like these machine learning algorithms that can’t identify African American faces and things like this.

So I wonder, as we tend to democratize access to knowledge and process about software development, how much positive impact that can also have on that kind of stuff?

Yes. Any other ideas you have around this topic?

No, I think that’s a good place to kind of go with it. There’s certainly not going to answer these questions, but yeah, that’s the kind of stuff I’m thinking about and hopefully some of the stuff that I can convey and help other people with in this book.

Yeah. One of the things that before we I want to talk about the book a little bit in the writing process when, for instance, my company and other companies I’ve worked with often will put in a job description that a computer science or an electrical engineering or some specific degree is required. There’s often a little tiny two word phrase that’s or equivalent. And I just need to tell people a lot of times that’s in there because of upper management or human resources or somebody requires that to be there. But the or equivalent that’s on the discretion of the person interviewing or the hiring manager.

That often doesn’t mean that you need an equivalent degree. It often means work experience or that you can prove that you can do the job will be fine. And so don’t be afraid to apply for stuff. Just because you don’t have a degree, it doesn’t mean you have to have a degree. It’s just sometimes you can’t get it out. One of the things that computer science degree does or any degree does is you got to do a whole bunch of stuff that you’re not interested in and you got to do it anyway. And that’s one of the cool things about getting a degree. But if you’ve had a job really anywhere, like if somebody told me that they clerked at a grocery store for two years, then I know that they can deal with doing stuff that’s not fun that they have to do just because they have to do it. Because even in how cool of a job software and development is, you got to do stuff that’s boring sometimes.

That’s really great advice.

This episode is brought to you by Python Morsels. It’s easy to Plateau with your Python skills, you know, enough to get your work done. But often you feel that maybe your code looks kind of like C Code or Java code or could be more elegant, but just really isn’t something you’re proud of. Python Morsels is an excellent way to fix this. Each Morsel is a carefully curated exercise. There’s also a couple of bonus requirements included that you can optionally tackle, and tests included as well to let you know how close you are to solving the exercise. Trying to solve the exercise already improves your skills just by practicing on different kinds of problems, but then it gets really awesome when you look at the solution. Trey Hunter, the genius behind Python Marshalls, walks you through the solutions. He starts with one way to solve the problem, but not the ideal solution. He talks about what’s wrong with it and gradually improves it one step at a time, explaining what he’s doing and why with every step. And then he goes on to solve the bonuses step by step in the same way. And then you realize what’s happening. The exercise and each bonus have been carefully selected so that the solution pushes your knowledge of Python even further. You can almost feel your brain expanding. Try these out yourself by going to testingco. Commorshals.

What on Earth would cause you to decide to write a book?

Yeah, that’s a really good question. So in my specific case, Manning had reached out to me. I don’t know if that’s how it works a lot of the time with a publisher. I don’t know if people make proposals to them, sometimes out of the blue, or if they’re kind of constantly looking for new authors to do books, but they reach out to me. And I haven’t traced this all the way back. But my guess is that they found me through online blogging and writing that I had been doing. So I’d say if you are interested in starting a book, definitely put some writing out there, both as a way to get signal back to you, but also as practice. I think putting down that much ideation on paper or on screen, if you will, sometimes makes you realize you might not actually want to do that much of it after all. But they approached me and I think it is something that I had wanted to do more of. So in my case, I did like it and I did enjoy trying to spread knowledge and having discussions about these things. So I decided to bite on it.

I can’t remember you’ve got twelve chapters you’re working towards, is that right?

Yeah, that’s the current plan. And I’ve got four available now in the early access. Okay. And I tried to be a couple of chapters ahead at any given time, so I’m working on chapter seven now. I think I’m starting, so maybe a little over halfway there, depending how you slice and dice it.

Yeah, it is available right now with Early Access.

We will drop a link in the show notes. And also we’ve got somebody from Manning contacted me and hooked me up with a discount code. So we’ll also put a discount code in there, and it also nice enough. Hopefully people will use it for your book, but it works for everything that Manning has got. So it’s just a Manning wide discount code, and I don’t know what the percentage is. A discount is cool.

They also gave me a key code for three free copies of people that can read it right now or start reading it as you drop new stuff in. I didn’t know how we wanted to give these out, but I figured just this morning I have a mailing list, but I wasn’t pushing it too much. But I just added a link to the top of Test and Code. So at testandcode.com, there’s a friends of the show. So sign up for a friend of the show and I will give out three copies probably within maybe a week. I’ll wait a week after it comes out and then start handing them out. How’s that sound?

It sounds pretty sweet. I like that if I was trying to learn some stuff.

Well, I like your writing style so far. I downloaded a copy and started reading it. I was a little disappointed that the testing chapter isn’t there yet, because I kind of care about that a lot. So give me some hints at what we might expect in the testing chapter.

I do mention Pi test.

So to me, testing is, as you mentioned earlier, or alluded to at least kind of a way to build confidence in malleable software. So as you find things that no longer feel like the right abstraction or just need to be updated with current code style and all that kind of stuff, having testing at your back, to be able to move that stuff around and not be afraid that you’re breaking something is really helpful. And I think that’s like a reality that I probably still haven’t achieved in a lot of my own code, but that is what I endeavor towards. So I talk about being able to use testing as the thing to prod your software with, make sure that you understand it. And also, if you don’t have existing tests, you can write tests in order to understand the software that you’re trying to change. So it’s kind of this multifaceted tool that is super useful.

Yeah, we’re talking automated tests, I’m assuming that’s correct, yes. I’m not expecting that you’re going to cover the whole gamut of testing all the way through web testing, because that would be a book in itself. But you work with web applications now. At what levels do you have testing around what you’re doing?

Yeah, like I mentioned, we do both Python and reactive job script framework stuff on the front end side. So we have unit testing on both the controller code and our actual on page application code, and then we do some amount of our integration testing at the Python level as well. And then we have quality assurance engineers who are doing the integration and regression testing through, in this case, Ruby and Cucumber library.

Okay. Yeah.

So calling a multi tiered approach both in terms of the tool sets we’re using and the layers of things we’re testing, that’s cool.

One of the things I wanted reasons why I asked is because to let people know that it’s not uncommon. That’s very common. You can have a multiple set of stuff like you’ve already got a perhaps it’s also what people know. So if you’ve got a team that is used to writing cucumberish Ruby tests or in whatever language, it makes the most sense, especially from the outside.

You can test a web interface with whatever language you want. So whatever people are comfortable with, that’s probably the most efficient thing to do. All of these can be done in Python, of course, but that would be silly. Probably to try to retrain people just so that everybody is using the same language. And then if you’ve got Python is probably not the right language to test, you probably can, but you probably don’t need to use that for unit testing your React code. That might not make sense. There’s a whole bunch of JavaScript tools to do that. So you have all this stuff.

I don’t have a good answer for this, but do you have a good reporting mechanism to report all of the data.

Test data from all these different layers together that’s sort of still in the works for us a little bit? I would say on the integration side is our best reporting. We use Jenkins for continuous integration, so every time an application gets deployed, it ends up kicking off this set of integration regression tests. And on each run you can tell if something new has broken or if something old that was broken is now fixed. And that happens fairly reliably and every time deployment happens. So that one is definitely at the best level for us. Our unit testing needs some work on the automation side, but we run them as often as we can. And we’re in this situation, too, where it’s a micro service oriented back end that we talk to, and then we’re also fragmented, kind of similarly on the front end applications. So at the moment, we don’t have a way to just run all the tests for all the applications. That’s worth the site.

Yeah.

Okay. I don’t have a great answer for you either, I think.

Well, I’m not going to fault you for that. There’s just not that great of answers around. It’s a hard problem. There’s a handful of companies trying to sell solutions for it, but I don’t see that they’re very much better test and code stuff that people pull together.

But you’re writing a book, hopefully.

My guess I should just ask you. But my guess is it’s a combination of fun, exciting, and stressful.

Yeah, I would say that’s absolutely accurate.

And you’re doing it while working full time. When are you doing it? When are you finding time to write?

I would say my ideal schedule would be to work on it one or 2 hours a night, every night. But the reality of it is often that I get to a few days before the next chapter is due and start cranking it out. And part of it is just my nature. But part of it, I think, is also that being able to teach a concept means really formulating the best set of examples and phrasing of concepts to really convey what you’re trying to say.

So even on days that you’re not actually physically writing, there’s stuff going on in your head you’re thinking about it, trying to.

Yeah.

Has that been your experience as well?

Well, yeah. For me there wasn’t a consistent schedule, so I would get up and write in the morning. I would sometimes ride on my lunch break, go to a Starbucks or something. Sometimes I do it in the evenings and then when they’re on the weekends, if there was a crunch period trying to get a whole bunch of stuff done, I would just leave the house and go and spend a few hours in the evening at a coffee shop or at a library or something. So for some reason the library worked sort of. But the silence actually was almost too distracting. So the chaos of like a coffee shop or something with a lot going on, but nothing I had to care about that seemed to work pretty good.

Yeah, I’m definitely in that same boat. There’s a website called Noisley that sort of lets you turn on and off different environmental sounds.

Oh, really?

Yeah. I super recommend checking it out if you need like a focus background noise. But yeah, I usually find myself if I’m not in a coffee shop trying to use that and turn on coffee shop noises and like thunderstorm noises.

Yeah. For some reason I had like one playlist on Spotify that I would just listen to repeatedly. So it’s the same songs all the time and I normally don’t do that normally. I listen to lots of different kinds of music, but the repetition made it so that I could just ignore it more easily.

Yeah, there’s lofi hiphop as a genre I’ve also found super helpful because it’s very relaxing music, but also kind of groovy and not to have any lyrics in it so your mind isn’t occupied trying to figure out what people are saying or anything.

Okay.

It’s a bit like the Mozart effect, I guess.

So do you have any idea when we’re going to see the testing chapter drop?

That should be the next one out. And so my hope is that it will be out in the next couple of weeks.

But like I said.

I try to stay a couple of chapters ahead. So once the current chapter that I’m on is a little further along, it’s probably when it will come out.

Okay. And then do we have a target date for the whole book?

There are varying accounts on this question.

I think it’s you don’t have to answer either.

Yeah. And it’s not for want of answering, but I think in a few months time is a real stretch goal for me. I think the original date we had sort of set for ourselves was about now over the course of a year.

Like imagine trying to plan a software project a year in advance.

Nothing ever goes quite the way you hoped, or in some cases.

My goal was originally was six months, and I think we did it in 13 or 14 months. And I can’t believe I spent that long. So I think I rewrote the first four chapters. I think I wrote those three times each, but I’m Super excited to get to read it and then check out the rest of it. I encourage everybody to try to write a book, at least blog. Let’s start with blogging and explaining stuff, because I think trying to explain something is a great way to learn how much you don’t know about it. So writing a book aside about being a software right now, what’s something that’s the most exciting you about the future of doing this for future years.

Like for me in my career personally. Yeah.

Or career or side project or whatever you’re playing with or things that you hear about.

I guess something that’s been intriguing me lately that is cool is this space where there’s generative art and generative music.

My personality is sort of serial hobbyist, so I have a lot of random interests and a lot of different kinds of creative endeavors. And I think applying software to those is pretty sweet. Not as, I don’t know, some startups and stuff seem to write software looking for a problem to solve. But using software to augment something that you already know you want or want to create, I think is really cool.

Do you have a music or art background? Do you do that on the side?

I do, yeah. I have an album on itunes, and I was sort of a semi professional photographer on the side. I did ballroom dancing competitively in school.

Wow. That’s cool.

It’s a very eclectic range of things.

But kind of a ballroom dancer.

Yeah. It’s one of those things that I got dragged to and thought I wouldn’t like it all that much and a few of us got dragged to it, and I was the one who stuck around for four or five years to go.

Nice.

Yeah.

So what kind of music is your album?

The album is kind of American folk kind of genre, I would say it’s all acoustic guitar and vocals.

Okay.

And that’s mainly what I play myself or create myself kind of singer songwriter type stuff. In the past, I was in a death metal band.

Okay.

Way back in high school. So I still listen to a lot of that stuff, but I haven’t written any of it in a while. Okay.

And pictures. Do you still take pictures?

I haven’t done it too much. So I moved to Pittsburgh recently, I guess, in the scheme of things. So I’ve been here about a little over six months, and I don’t really know anyone here, especially in the scene for photography that I was in, which is mainly kind of fashion and personal style, a little bit of sort of general portraiture. But I only just got around to switching my Google business results to Pittsburgh from Ann Arbor, where I was. So maybe business will start coming my way.

So you still have a side business of doing professional photography?

I do, yeah.

Okay. Nice.

Yeah. But it’s been slow. Winter is always slow. Anyway, we’ll see what comes of it.

It’s cool. There’s a lot of creative people in software that do some awesome creative stuff on the side. Yeah.

I think there’s a lot of existing and sort of opportunity for intersectionality there.

Yeah. Have you seen some of those artificial intelligence enhanced, like portrait drawing or something? Yeah, there’s some neat stuff. Yeah.

Nvidia just came out with this thing where you can sketch a scene and it will generate some photorealistic scene for you so you can draw a ground and a mountain, and it will make something that looks like a photograph of being in the mountains. That blew me away. Yeah. I think it was on display at a conference recently, so it’s not like a commercialized product or maybe even generally available yet.

But it’s really cool. Now I’m thinking back to all my days early as one of the artists spending like an hour doing the stippling on one leaf.

Anyway, didn’t take that too far. That’s pretty awesome. So if people want to get a hold of you will definitely drop links. But where are they going to be able to find you?

My sort of, like, personal website these days is Dane dot engineering.

Okay.

Yeah, I jumped on the engineering TLD because it was a bad thing to do at the time.

Sure.

It was like Dev now, too. Oh, Dane Dev redirects to Dane engineering. That’s sort of me. And I link out to most of my other stuff from there, but I’m easy as Python on Twitter.

Okay, nice.

Yeah. My GitHub username is completely different than either of those. So just go to Dane engineering, probably.

All right, well, thanks a ton for a lot of stuff for caring about people coming into Python and software from other fields. I think it’s a good thing to care about, for trying to write a book. It’s a good thing for writing and for coming on the show. Awesome.

I really appreciate you having me on and wanting to discuss that stuff, too.

Yeah. Good luck with everything. And we’ll check in with you when you’re farther along with the book.

Yeah, thanks so much.

Sounds good. All right.

Bye bye.

Thanks again to Python Marshals for sponsoring the show. Expand your knowledge of Python at your pace with expertly curated problems and solutions. Try it out at Test And Code. Commorsels. That link is also in the show notes at testandcode.com 70 which also has links to lots of the stuff that Dane and I talked about, including his book. Thanks to Dane for talking with me for the show and thank you for listening and for spreading the word about the show. Thank you to Patreon supporters I could not do this without you. That’s all for now. Now go ahead and test something or maybe write a blog post about something you know.