Episode 097: Programming in Go with Michael Levan | CloudSkills.fm

Though its usage is not widely known, more and more people from both the development and infrastructure side are beginning to program in Go.

Mike’s guest today is Michael Levan, back on the show to discuss his shift from writing production-level code to content creation, and back to writing production-level code. He is now working at Octopus Deploy as a Developer Advocate, focusing on all the different types of integrations that tie into Octopus.

Michael is here to talk about the increase of programming in Go and just how much this programming language is being used already!

In this episode, we talk about…

  • Day-to-day breakdown of Michael’s job at Octopus Deploy
  • Diving into Go as a widely-used programming language
  • Michael’s book, Quality Code with Go
  • Who is using Go and what they are using it for
  • Go’s adoption on the infrastructure side with things like Terraform configurations
  • How Go helped Michael when learning to write Terraform
  • The best way to start with Go completely from scratch
  • Michael’s advice for anyone looking to go down the path of DevRel
  • Thoughts on public speaking for beginners

Resources from this episode:

Don’t forget to subscribe to our mailing list at cloudskills.io/subscribe for weekly updates, exclusive training, and advice on how to amplify your career.

Full Transcript:

Mike Pfeiffer:
All right, everybody welcome back to another episode of CloudSkillsfm. As usual, I appreciate you tuning in. And we got Michael Levan back on the show. Michael, what’s up? What’s going on, man? How you doing? Doing good. I know that you’ve been working a lot lately, been doing all kinds of cool projects and stuff. So I wanted to have you back on talk about what you’re working on. I think you’ve changed jobs since the last episode we discussed… What did we talk about in the last episode? It was like DevOps and CIC and stuff like that, right?

Michael Levan:
Yeah. I think it was just more of like a general focus on like Azure DevOps and kind of where we’ve seen like the DevOps space going and stuff specifically in Azure and all that. But yeah, I actually did a lot of training and stuff there for a while, working for myself for a little bit. And it was a lot of content creation, a lot of videos, all that good stuff. And I still really love doing that stuff now. But the one thing that I did find was that it wasn’t for me from a full-time perspective. I really missed being hands-on I really missed writing like production level code and doing things for products. As you would as you know with DevOps engineer and SRE or any other type of developer. And I really missed it. It’s still fun to me to create like sample code and stuff like that and do all that. But I also really like being hands-on from the production perspective and I definitely miss that aspect.

Michael Levan:
So since then I made a jump and now I’m working at Octopus Deploy as a developer advocate. So yeah, that’s what I’m doing right now.

Mike Pfeiffer:
I like the experimentation, the willingness to try something and then decide, “Do I like it? Do I not like it?” Because so many conversations have been having this year and last year had really been around talking to people, trying to decide what the next thing is. And there’s been a lot of analysis paralysis. So I like the fact that just got in there and figured out, “Oh, okay, maybe this isn’t the… I want to do this all the time.” So that’s awesome, man. What is the day-to-day kind of look like over there at Octopus Deploy?

Michael Levan:
Well it’s funny, I think it definitely differs from a lot of different companies and how they do developer relations. When you look at like DevRel and stuff like that, nine times out of 10, what it’s really focused on is focusing on a product. So for example, like if you’re working in Azure or maybe you’re like really focused on server lists, or maybe you’re really focused on containerization. And you’re building a whole bunch of content and all of that around those specific focuses. Now with Octopus, it’s a little bit different because we don’t have gajillion different tools in our platform. We have one tool for continuous deployment and continuous delivery.

Michael Levan:
So really with us from a DevRel perspective, yes, it’s definitely about talking about Octopus, but even maybe sometimes more so it’s about what we can integrate in with other products. So for example, we’re very big on, and we’re very open about this on like you might not just be using Octopus. Like you might be using GitHub Actions or Azure DevOps or GET Lab or CircleCI, anything like that, Jenkins, whatever. And how can we help you integrate with all those other tools. To give you an example, I don’t do too many customer calls, but I was on a customer call the other day. And the big focus was like, “Hey, I want to run EKS for Octopus Deploy, how can I do that?” And 90% of the conversation was about EKS and containerization. And it wasn’t even about Octopus. A little portion of it was for like the containers and Octopus and stuff. But we were really talking about how to get Octopus running from a containerization and an EKS perspective.

Michael Levan:
So really what I’m doing is I’m not just focused on the Octopus Deploy product itself. I’m focused on all of the different types of integrations that can tie into Octopus. I kind of like the way we think about it as like DevRel does like everything from the API out almost, so everything that it’s touching. So that’s been like a pretty big focus. So pretty much I would say it’s not truly 50-50, but 50% of my time I’m speaking at conferences. I’m doing podcasts like this. Writing content with blog posts, doing videos and stuff like that. And then the other half I’m doing a lot of integration and stuff like that. Like I built a GitHub Action for Octopus Deploy. I was part of the team that was building out the Terraform provider, ran and go and stuff like that. So it’s a lot of hands-on and it’s a lot of content, so it’s definitely a good mix for me.

Mike Pfeiffer:
Yeah. It’s good to have variety. And that might be kind of… I don’t know if it’s for everybody. I know that I’d liked for a variety of doing consulting. When I did consulting for over a decade it was kind of like you just get thrown into these projects. It kind of sounds like you’re enjoying that. That’s awesome. And you mentioned Go as a programming language and I know that you’re working on a book or you published a book on Go?

Michael Levan:
Yes. Just published it.

Mike Pfeiffer:
So let’s talk about Go because I think a lot of people probably seen that programming language on the radar for the first time. What is that language all about? And then we can get into the book a little bit.

Michael Levan:
Yeah, sure. So the way I like to explain Go at the very high level, and then we can dive into it a little bit. It’s like writing C++ and Python. So you have these low-level attributes. You have things like pointers, for example, and all the other things that make a low-level programming language really successful and really great to use. But now the problem with a lot of those languages, like C and stuff like that is, it’s just so hard to read and it’s so hard to grasp just basic level concepts. And then you look at a language like Python, for example, and then Python maybe doesn’t have those low level attributes. And maybe Python is a little bit all over the place. However, it’s very straightforward to read. So really the idea behind Go and why it was created in the first place was literally that. Like they wanted a language that was simplified, but still had all of the power of a low-level language.

Michael Levan:
And it was readable. It’s funny, like if you take like a Python function and you take our Go function, just like a very basic, like you write a new function and you pull like, hello world to print it out or something like that. It could almost look identical because it’s just very easy and straightforward to read, but then you also have those advanced level concepts. So it’s pretty much… And I think the big thing too, that a lot of people don’t realize is like Go is very widely used. I mean, if you use Docker, if you use Kubernetes, if you use Terraform, they’re all written in Go. So even GitHub Actions, the CLI, they ended up ripping out Ruby and rewriting the entire thing in Go. So it’s definitely becoming very popular.

Mike Pfeiffer:
Yeah. It really is. And it’s kind of funny because Ruby is still around and like its scale, like huge, but it’s interesting to kind of see people are moving away from a little bit for this kind of stuff. I think one of the big draws of Go is like insanely fast to your point. It’s kind of like C++.

Michael Levan:
And it’s so easy to build as well. I mean, like if you take another language and you want to say like build an executable or build a package or something, it can kind of be cumbersome sometimes. Especially depending on what operating system you’re running on. Its different build process for Mac or a different build process for Linux or whatever the case may be with, “Oh, it’s not the case at all.” You have your Go code and in your terminal, you literally just run Go build and then an executable or a package just pops out and that’s it. And then it’s ready to be installed. So it’s like you said, to your point, it’s very fast and it’s just so easy to build an application and just run it wherever you like.

Mike Pfeiffer:
Yeah. And so what’s the name of the book then?

Michael Levan:
The book is called Quality Code with Go. Self-published at it’s on Gumroad. And it’s pretty much just all about let’s say you’re a Go developer already, or you’re learning about Go and you have the basic concepts down things like what a variable is, what a function is, what a package or a library is. And instead of learning it the traditional way of just going through a course or something like that, or going through a book and just learning all of the ins and outs in Go. Instead, it teaches you the ins and outs from a test driven development approach. So it’s really all about literally as the title says, it’s about writing quality code with Go. And then a lot of those concepts, you can move to different languages and stuff as well.

Mike Pfeiffer:
Got it. So it sounds like you should have a little bit of familiarity with Go going into the book.

Michael Levan:
Yeah, absolutely.

Mike Pfeiffer:
Awesome. And so from your perspective then who is using Go. I mean, obviously developers, but like what are they using it for? And do you see like infrastructure, people are getting pulled into it at any point?

Michael Levan:
Yeah, absolutely. So in terms of from the developer side, essentially what it comes down to is if somebody wants something that has some low-level features, but they also want something that is a little bit simplified. That other people can learn quickly. They’re tending to move to Go. And again, because of that speed, like you said, it’s honestly just insanely fast. Like if you look up benchmarks between other low-level languages or other functional based languages in Go, it pretty much doesn’t even compare. The other thing too is one of the big parts… And I don’t want to get into the weeds too much, but one of the big parts, like from a concurrency perspective. And the best way to think about concurrency is let’s say you’re reading one email and you’re writing another email and you’re making a pot of coffee, you’re not doing all three things at the same time. But you’re doing them concurrently.

Michael Levan:
Maybe you read the email, maybe you write an email, then you get up and go get some coffee. Now that’s concurrency in a nutshell. Go has something called Go Routines. And even with that, it’s built on the fact that standard concurrency is single threaded. Go Routines by default are multi-threaded. So it obviously makes it much quicker. It makes very usable in the cloud and smaller systems everywhere. So those are the few things like why people from a development perspective are really going to Go. Now from an infrastructure perspective, yeah, I mean, we’re definitely seeing it too. Like if you’re a DevOps engineer, if you’re an SRE, if you’re a scripter there’s this concept of infrastructure as software. Which is for example, let’s say you have Terraform and you want to create some infrastructure as code and it creates that state file for you with your metadata.

Michael Levan:
So you know what your environment looks like. Infrastructure software does the same thing. It creates an environment or a service for you. It stores a state file. That state file can be shared, but instead of writing it in JSON or Emo or HCL, you’re writing it in a general purpose programming language. So you’re writing it in Go or Python or something like that. Like for you, Mike, I believe you were a big C# guy, right?

Mike Pfeiffer:
Yeah.

Michael Levan:
So what you could do is like, you could take something like Pulumi or the HashiCorp CDK or the AWS CDK. And instead, like, let’s say, you’re like MI, I just really want to write some C# code. I don’t want to write all of this in JSON or in YAML, I just want to do the same thing that I could do in Ansible or Terraform and do it in C#. You can absolutely do that. And you can still have that state, like you would have with a TF state file or something like that. So we’re definitely seeing that on the infrastructure and services side as well.

Mike Pfeiffer:
That’s interesting. The other question I wanted to ask you, because you’ve done so much infrastructure development as well as like work with Go and stuff. And since your book is about quality code and testing and test driven development, all that kind of stuff, do you see people doing that at the infrastructure layer. Like for Terraform configurations, arm templates or stuff like that, or you think it’s still super early for that crowd doing infrastructure testing?

Michael Levan:
Yeah. So I think it’s two things. Now in terms of it being early from a technical standpoint, it’s not because those tools are there already for us, but it is early in terms of adoption. And the reason why is because if you take like a systems administrator or an infrastructure engineer or something, and you have them learn infrastructure’s code and stuff like that, they don’t have a development background. And because of that, they don’t have that experience with like test driven development and unit testing and mocks and integrations and stuff like that. But then on the flip side, if you take a developer that’s been developing for X amount of years and you throw them into some infrastructure’s code, hopefully their mindset will be, “Okay, I need a way to test this. I need a way to mock this up. I need a way to see if this is actually going to work.”

Michael Levan:
So in terms of the tools being there they’re absolutely there, but in terms of it being used a lot, I still don’t see it used as much as it should be for sure.

Mike Pfeiffer:
Yeah. I was curious to see your perspective, because that’s what I’ve noticed too. Well, I think people will get there, but I think there’s probably just… There’s not enough inspiration out there in terms of, “Hey, guys, this is how to do it.” In software development, absolutely. Not so much in infrastructure code. And then you mentioned you were working on a Terraform provider, so can you share kind of like for anybody listening, we probably got people listening that have just started learning Terraform. And then so like once you get that down and you want to go to the next level and it’s like building your own providers and stuff, can you kind of talk about that process and then how your understanding of Go helped you in that?

Michael Levan:
Yeah, absolutely. So it’s an interesting process for sure. And I think it makes you think about Terraform much differently. So before I started writing a Terraform provider… And by the way, when you write a Terraform provider, it’s 100% in Go, you have to write in Go. So when I was a user of Terraform, my thought process was way different. Like I would go in, I would see a provider. I would see a resource that could get created. I would see attributes that could be used. And then I would just want to use them. I would want to create an AKS cluster. I knew that that needed a cluster size and a node count and all that stuff. And I was a user of it. I was expecting things to be there. Now, when you’re a creator of a Terraform provider, you start to think about things a little bit differently and you kind of go down these rabbit holes of like, “Well, what are people expecting here?”

Michael Levan:
Are they expecting you to be able to put in a name here? Are they expecting you to be able to put in a password here? Like with Octopus for example, we have multiple account types. You can connect to AWS, Azure, you can go via SSH username and password, stuff like that. So it’s like what are people expecting to see from there? And then the other side too is like, “Okay, well, you have to kind of mimic what the UI looks like, but at the same time you have to mimic what the API is expecting.” So to to give you an example, this is something that we thought about for a while was like in Octopus Deploy, when you create a new account for a username or password, you can leave the password blank. Purely from an API perspective, you can leave the password blank.

Michael Levan:
API does not require a password. And then you got to think about that from a Terraform creator perspective where it’s like, “Okay, do we want to give people the ability to leave the password blank?” Because technically, should it ever be blank? “No, probably not.” Then you got to think about it like, “Well, the API allows it, so you kind of have to allow it type of thing.” So I think it allows you to go into a different mindset for sure. I think it helps me definitely learn even more about Terraform because you get to understand how like it’s actually created. Like those schemas that you see and stuff like that to create those resources, like you’re literally creating them from scratch. So it allows you to kind of get in there and figure out what’s happening and even different types. Like your resource types, your data types, your outputs, all of that stuff.

Michael Levan:
And then of course there’s the testing aspect. Go has phenomenal built-in testing packages. Like you don’t have to go out anywhere and get them. They’re already there for you. So yeah, it’s definitely an interesting experience. And what I would say is if you’re really into Terraform and you want a reason to learn Go, it’s definitely a good place to start. It’s a complex process. It’s not like a beginner level project by any means, but it’s a good place to start. Like if you’re trying to jump into Go and you want to take it to the next level outside of the courses or the book that you’re reading.

Mike Pfeiffer:
Yeah. I mean, that sounds like a great way to gain a competitive advantage as an infrastructure developer. I mean, like to your point, it’s not for everybody to go into the hood like that, but if you’re already have ambitions to be a hardcore infrastructure developer, DevOps engineer, SRE, whatever, we’re calling it these days. That’s a great idea to jump in there and inspire yourself to learn Go. Now on that note, like how would somebody start with Go completely from scratch? What’s the best way to build like a hello world app?

Michael Levan:
So I looked up a bunch of resources. Essentially what I like to do when I’m learning any new language, my process is a little bit different because I’ve been working with so many different languages that I kind of just at this point, like I look at a few tutorials and I read some syntax and I’m like, “Okay, this is how this works.” Or like, “Oh, this is how functions are created,” or, “This sound numerators are used.” Or something like that. If you’re completely new to programming in general, I highly recommend just looking at any course, whether it’s on like Pluralsight or anywhere else. Nigel Poulton, he has a great Go course on Pluralsight. I watched his course when I was first getting into Go and it was awesome. I really enjoyed it. He’s a great instructor in general. So that was a really great course.

Michael Levan:
I highly recommend starting there. And then after that course, again, you don’t have to go through the entire thing if you already know programming software or another language. You kind of just got to go through and like see how different things work and stuff like that. Just like how syntax differs and all that. Because the biggest thing with Go, like when you look at it for the first time, the syntax looks really wacky. But when you kind of dive into it a little bit more, you start to realize why things are built that certain way. So I would say definitely start with that course for sure. Another thing too is… Mike, I don’t even know if I told you this or not, but I just recently signed a deal with Manning. And I’m doing Go in a month of launches book with them. So that’s going to be really cool. We should hopefully see that late 2021. I forgot we were at in December.

Michael Levan:
So that’s going to be a really good place to start as well. It’s going to be 100% focused on beginners, like from start to finish. There’ll be that standard month of launches where we’re expecting you to go 45 minutes to an hour per day.

Mike Pfeiffer:
Yeah, that’s awesome. Keep an eye out for that one everybody. Love to have you back on the show when that one comes out. The monthly launches series is always good. We had few different people, Manning authors on the show in the past. So everybody listening, go check out their books. They get insanely good catalog of titles out there.

Michael Levan:
Yeah. Even there’s a new… It’s in [inaudible 00:19:31] right now, which is like there’s a few chapters out and you could buy it if you want to, and then get the rest of the book for free. There’s a really good one out on Pulumi right now. I actually bought that. And I’ve been going through that. It’s really solid. So if you’re interested in Pulumi, there’s that new one out there as well.

Mike Pfeiffer:
Yeah. And by the way, we had the author of that book on the show a couple months ago, Christian Nunziato. So yeah, definitely check that one out. Awesome. So I’m kind of switching gears just a little bit. I’m curious about your DevRel experience so far. And I think it’s kind of a newer job role that we see in the industry. There’s probably a lot of people that are seeing that and thinking, “Hey, maybe I’ll get into that someday.” Maybe you could share your thoughts there for anybody that might have that ambition long-term. What do you think they should start thinking about now and start working on?

Michael Levan:
So I think that if you’re already creating blog posts and you’re doing podcasts or you’re doing like YouTube videos or anything like that, you’re already going down the path of DevRel. So really what DevRel is… I always say this you’re an engineer at heart, whether you’re an infrastructure developer, whether you’re an infrastructure engineer, whether you’re a hardcore developer. Anybody, you’re somebody that’s very passionate about the engineering of development aspects, but you’re also very passionate about teaching others and working with others. So if you want to go down that path, the biggest thing to remember is you will be working with a lot of people. You will be public facing. You will be the one kissing babies and stuff like that. But you’re also going to be on the development side as well and you will be very much hands-on.

Michael Levan:
So it’s a good mix for the person that, again like me where I really liked training, but I didn’t want to do it full-time.

Mike Pfeiffer:
Yeah, that makes sense. But we’re also seeing people pop up places like Microsoft and others where they have just like cloud advocates too. So it’s kind of interesting, right?

Michael Levan:
Exactly. Yeah. 100%. And there’s like a lot of cloud advocates and stuff like that, that they don’t have a development background. For example, like you don’t have to have a development background. There’s several different cloud advocates that we’re seeing nowadays.

Mike Pfeiffer:
So what’s the best way to get started with him, because it is basically a public speaking role. So what are your thoughts on somebody getting into that for the first time?

Michael Levan:
Yeah. So I would say practice and I know that sounds like the obvious answer, but it’s true.

Mike Pfeiffer:
That’s so true.

Michael Levan:
For example, if I look at like my video training from a year ago, I’m like, “Oh, this is awful. I wish I could somehow get rid of this.” But as like I started to go and stop and as I started to get more comfortable speaking and being on a camera and teaching and stuff like that, that’s what really made me be able to alter into this type of role. Because I just got comfortable with my technical ability back then versus now. It’s not that I didn’t have the technical ability before. It’s that I never did it before. I never taught anything. I never did a video course or I never did a conference or anything like that. So it’s just one of those things where you got to practice. If you like public speaking or you’re in like a pre-sales role or something like that, or a sales engineer type of role, customer experience type of role, something like that. Then going to DevRel would be perfect because you already have that experience speaking to people and all of that stuff.

Mike Pfeiffer:
Yeah. I like that you bring that up. I mean, it might sound basic, but it’s so true. And you see that in everything, not just public speaking, but like sports and stuff. Like, “I want to run faster.” It’s like, “Well, run more and run faster while you’re doing it.” That’s really true. And I think that it can be kind of paralyzing you with fear because if you’ve never done public speaking before, so to your point practice. But even for anybody listening, there’s nothing wrong with recording videos by yourself, just until you get the comfort level that Mike’s talking about. And then you can release something. But to your point, it’s like, you got to start and practice and do it. So if that’s your ambition, now’s the time to start. And then eventually the public talks will also be reps.

Mike Pfeiffer:
But I think one of the biggest mistakes I see is that people that want to do that, they wait because they’re like, “Well, I’ll get the first speaking gig and then I’ll get some more nuts off my practice.” It’s like, “No, you got to practice offline and then do the public talks.” So that’s a really good tip. So where can people find everything that you’re working on? You mentioned the monthly launches book. That’s on Manning. What about like your personal sites? Stuff like that.

Michael Levan:
Yeah. So my personal site is clouddev.engineering. I’m on Twitter at the NJDevOpsGuy. Twitter is probably the biggest platform that I’m on. And then also in the CloudSkills community, I’m always in there. If you’re on the Slack channel and stuff like that, feel free to reach out. Yeah. Pretty much Twitter, Slack channels, my website. Those are the best places. And then I’m also really focused on building up my YouTube lately. So it’s just clouddev.engineering, if you want to check that out as well.

Mike Pfeiffer:
All right, everybody go check out the show notes, hit the links, visit Michael’s YouTube channel. Go check out his blog, get his latest books and we’ll see everybody on the next episode. Mike Levan, thanks so much for being on.

Subscribe to the CloudSkills Weekly Newletter

Get exclusive access to special trainings, updates on industry trends, and tips on how to advance your career in the tech industry.