The saying that ‘where you begin is not always as important as where you end’ holds true even more so today than ever before. It’s particularly true for software development. Gone is the old adage or belief that a formal education in your chosen field is key to getting your foot in the door. While there are benefits to a traditional education, some fields, like software development today, are seeing new, more practical trends. Showing what you can do to prove yourself is taking more precedence over a piece of paper confirming that you completed coursework, and our next guest agrees with us.
Meet Damian Brady. Damian is an awesome Aussie DevOps Cloud Developer Advocate for Microsoft and he is here to share his expertise and journey into tech. What’s surprising is where he began….educationally. It’s not where you might think. Yet, through his journey, Damian claimed his career, dominated it, and is here to talk about how you can do it too. Be sure to listen in to episode 66 and learn who Damian is, what he does, and how his tech career came to fruition.
Damian’s Bio:
Damian is a Cloud Developer Advocate specializing in DevOps. After spending a year in Toronto, Canada, he returned to Australia – the land of the dangerous creatures and beautiful beaches – in 2018.
Formerly a dev at Octopus Deploy and a Microsoft MVP, he has a background in software development and consulting in a broad range of industries. In Australia, he co-organized the Brisbane .Net User Group and launched the now annual DDD Brisbane conference. He regularly speaks at conferences, User Groups, and other events around the world, and is an occasional guest on various podcasts like .NET Rocks and Hanselminutes.
Damian has his own Channel 9 show – The DevOps Lab. Check it out for real-world guidance on implementing DevOps in your organization!
Most of the time you’ll find him talking to developers and IT Pros to help them get the most out of their DevOps strategies.
Episode Highlights and Show Notes:
Arsalan: Hi, Everyone. Today, my guest is Damian Brady. Damian, how are you?
Damian: I’m good, thank you. How are you?
Arsalan: Doing fantastic. And, you are not in the US. You are actually somewhere else. Where are you right now?
Damian: I’m in Australia at the moment, on the East coast in a place called New Castle, which is about two hours North of Sydney.
Arsalan: Right. Is it true that it’s summertime over there? It’s hot and sunny where you live?
Damian: Yeah, it’s very much summer time. It’s been 30-something degrees every day, which is Celsius. I can’t do the conversion. We’re talking 90’s [in Fahrenheit], I think.
Arsalan: Wow. I live in Ohio and we’ve had lots of snowstorms this time of the year. We are not very far from Canada, where you lived for a while. What were you doing there?
Damian: I was living in Toronto for 12 months, basically for my wife’s work. I went over there with her. I’m lucky enough to be able to work pretty much from anywhere in the world. So, I went over there for a year and we just got back to Australia maybe two weeks ago. It was a bit of a change. It was -28 Celsius, which is probably pretty close to that in Fahrenheit when we left Toronto. It was plus 30, in the 90’s I think, when we got to Brisbane, where I used to live in Australia and then we came down to New Castle, which is where I’m living now.
Arsalan: Yeah, the world is a large place and the climates are so different. It’s just amazing to meet people from different parts of the world and it’s really good to have someone from Australia on our podcast. We haven’t had that before.
Arsalan: You currently work for Microsoft. What’s your title again?
Damian: I’m a cloud developer advocate for Microsoft.
Arsalan: We’re going to unpack that in a little bit, but first, I want to hear from you about something interesting that happened to you in your career as you were starting out when you were a student. You were in college and you were working on a voting system for the Australian elections. What happened there?
Damian: Yeah, it was interesting. I was in the third year of my IT degree. We had a group project, which involved a few people. We set up our tasks. The project was to write an electronic voting system. So, everyone would submit their votes and it would follow the Australian Federal Voting System, which has preference allocations and all sorts of fancy stuff that happens with Australian elections.
Damian: My part of the project was to write the algorithm that actually counted the votes. It was right up my alley, but I needed to get a couple of questions answered. Mainly, the biggest one was what happens if two people have exactly the same number of votes? So, I went to the Political Science department at the university and spoke to a professor there. It shocked me at the time that there wasn’t actually an answer.
Damian: The answer that he gave me was “we would do a recount and then there’s a different number that comes out.” This is fine for, well, I don’t know that it’s fine, but it’s understandable when you have a bunch of humans counting paper votes. But the computer is probably not going to get a different answer each time. So, I think what that taught me was that without that conversation, I probably would’ve just made an assumption or skipped that requirement or something. But, having that conversation with somebody who might end up using that system was really important in finding out what bits needed to be defined. The conversation is what is needed to happen to get the real software working the way that people needed it to work.
Arsalan: I think the biggest difference that I see between someone starting out in software development and a veteran is that the veterans are more jaded. They tend not to trust the initial set of requirements that are given and they know that when they dig deeper and think about the problem in detail when they actually show the user how a potential system will work, sometimes our understandings are different. Until you dig deeper, you really don’t know.
Arsalan: It’s not all about writing code, right? It’s more than that. It’s about doing the right thing and sometimes it’s hard to know and maybe that is the hardest thing in software development.
Damian: Yes, absolutely. I’ve done a bunch of jobs over the last 15 years or so. I think that writing code is the bit that everyone can do. Actually, having conversations with people and realizing that exploring the requirements are a bit more than what’s just written on the paper is a necessary part of it. We’ve always heard the thing in software development where the user or product owner doesn’t know what they want. They ask for something and you deliver that exact thing. Then, they decide that they didn’t want that after all. That’s just a known thing with more experienced developers, I suppose. But, whether you become jaded and say “I’m not going to get this right. I might as well write the best code I can” or whether you go the other way and say “well, the best thing to do would be to work together and have a conversation and sit down with the person and deliver something really early that they can see and shape the direction that they want the software to go.” That’s kind of the two directions that I’ve seen people go in software development a lot of the time.
Arsalan: Right. So, the modern trend, especially in smaller organizations, is to use Agile methodologies. By that, they mean that they are not going to assume that they know exactly what to do up front. They are going to assume that they don’t [know] and they are going to take it one step at a time.
Arsalan: Let’s say that they are going to iterate. So, imagine that there’s a for-loop going a hundred times. Every time, you learn a little bit more and then you make a little more of that software. That is something not thought up in a meeting with a standards committee who has decided that we need to do this. We are doing this because we have found that all other methods are not working.
Damian: Yeah. Agile kind of came out of the acknowledgment that at the start of the project, that’s when you know the least about what’s happening. You know the least about what the requirements really are at the start. So, the idea of defining everything to the nth degree up front and then trying to implement that in another period of 6 months or 12 months is inevitably going to lead to something which maybe isn’t exactly what you needed at the time. So, Agile was a reaction to that. We said, “let’s acknowledge that and accept it and do it iteratively.”Like you said, let’s just do a little bit at a time and realize that we’re fallible as humans. We may not know everything up front and we can change the direction based on what’s happening in the environment as well.
Arsalan: Right. So, I want to change tracks a little bit. I want to talk to you about your initial days and how you started, not just how you got your first job. Why did you want to be a developer? What was your first encounter with programming? When did you first realize that is a thing that somebody can do?
Damian: Well, I was fairly lucky, actually. My dad was interested in technology. He’s a solicitor, or lawyer, in Australia. He was really interested in these new computer things that were being made available to the public. So we had a computer in our home quite early. It was an old one from my dad’s work. Then at some point, we got an Omega 500 and dad and I bonded over writing code. It was Omega Basic. We were buying computer magazines. At the time, that was how you learned to write code. You’d buy a computer magazine and then there’d be a few pages of code that you’d have to copy to get something worth working.
Damian: Then, I realized that you could tweak little bits of that code and make changes. It kind of became this thing that felt really powerful – to be able to make this device do what you wanted it to do. It was just little games and things like that. So, it was really early. It was probably when I was around 10 or so when I would’ve written my first software that was my own code, I think. That was the initial exposure to this world of computers and programming.
Damian: I maintained an interest while I was at school and high school, but I actually went into music after high school. I got this false impression at the university that writing code was going to be turning up every day and typing stuff out based on really strict specifications that were sitting next to me. [I figured] that it would just be this really boring thing, almost like data entry, I think. That was an incorrect impression that I have since learned, but at the time, that’s what I thought software development was. So, I went and did a year at the Conservatory of Music in Brisbane until I realized that doing that all day, every day was really taking the enjoyment out of doing music. I experimented with a few other degrees and a few other courses at the university and found programming again as one of the courses that I did. Then, I went straight back to that and I’ve been there ever since.
Arsalan: That’s great. What kinds of music were you interested in? Were you an instrumentalist?
Damian: Yeah. I actually played jazz trombone. [It was] a slightly unusual one, but I think the main reason why I started playing that [was that] my dad played trombone. So, we had one in the house, which was very convenient, but I also learned piano when I was younger. I played piano and trombone, but I haven’t picked that up in about 10 years. So, I don’t know whether I could [play] anymore. It was jazz, mainly. I still enjoy jumping on the piano and playing what I hear on the radio.
Arsalan: That’s great! For the longest time, I wanted to play the electric guitar. It’s typical. There is nothing unusual about this. The reason why I got into programming was that I wanted to make video games, which is also very typical, and I wanted to be a rock star.
Arsalan: I wanted to play the electric guitar. I never had an electric guitar until I had a friend who was a very good guitarist. I was buying a guitar for him because he needed a car. So, I drove him to a guitar store and we were looking for guitars. I said “hey, do you think you could help me buy an old guitar for myself?” So, I ended up buying a guitar. It was a very cheap Squire, but I loved it. I was horrible at it because I never took a lesson.
Arsalan: I enrolled in college. I was in college and figured that maybe I would change majors and they would teach me how to become a musician and how to play guitar. I was music major. So, I went through the requirements and it turns out that you already need to be a good enough musician before they’d let you in. I was confused. I was thinking “what’s the point? If I’m really good, then I don’t need to go.” So, that was a really interesting part of my life. So, I have a tremendous respect for musicians, especially the ones who go to music school because they are already pretty good.
Damian: Yeah. I had lessons. I did all that stuff before that phase of my life. So, when I went there, I thought I was pretty good. When I went to the conservatory, I found out that I was not actually very good at all. I was quite good at the theory, which has a bit of a math component to it. But if you put me on the stage next to any other trombone player in that entire building, and probably a bunch of people who don’t play trombone, I was probably not going to be in the top half of the players on the stage. There’s a very good chance that I would’ve been the worst trombone player in the building at that time. So, I completely appreciate what you mean. The standard just to get into those things was really quite higher than I could cope with in the long term. Yeah, you already need to be able to play.
Arsalan: So, you didn’t do a music major. Did you go to school and get a computer science or computer engineering degree? What were you doing there in college?
Damian: After the conservatory, I decided on my ability and how much I was enjoying it, I was never going to be able to make a living from this. It was not really helping my love of music. So I went to the university and enrolled in a general science/bachelor of science degree.
Damian: I did a bunch of really unusual and unrelated subjects. I did philosophy. I did a chemistry subject. I did physics and biology, and I did an IT subject. I did an algorithms subject and that was the one I loved. So, I thought that maybe I had just gotten the wrong idea about the profession. So, I switched my degree to a bachelor of information technology, which is what it was at the time. It was a little more business-oriented programming, I supposed, rather than computer science. I saw a lot of stuff on databases and algorithms. But, I also saw some things on project management and that kind of thing. I ended up with a bachelor of information technology.
Arsalan: Do you think it helped you in your career?
Damian: A little bit. To be perfectly honest, I think I learned a little more in the first six months of actual working than I did in that four-year degree. There are a few science-related things like O notation for the complexity of algorithms and things like that that I can still rely on my knowledge of that and my learning of that. For the most part, I think most of the practical knowledge that I have was learned on the job.
Damian: I’m glad that I did the degree. It got me interested in the subject again. It helped me learn how to learn, I suppose. But I don’t think that it was completely necessary at all for a software development career.
Arsalan: Yeah. This is a theme that I observe in a lot of the interviews that I do here for Mentoring Developers. It turns out that you don’t really need a programming degree, or computer science, or computer engineering, or any kind of IT degree to find success. Apparently, a lot of my superiors in my career don’t have anything to do with computer science as far as their education goes. Yet, that has not hindered them [in becoming] more successful than I was because they were managing me and nobody ever cared. I, on the other hand, went to college and graduate school. I studied for years trying to learn as much as I could. Then, when I got out, I realized that I didn’t need to do that.
Damian: Yeah. It was a little difficult at the time to get a job in software development. This was 15 years ago in Brisbane, Australia. It was difficult to get a software development job if you didn’t have a degree. You would have to enter a company, maybe, as a technician or support person or something like that and work your way in. But that was at that time. I think the trend is changing. I think people are realizing that if you can prove that you are a good software developer, there is no real reason to have a degree attached to what you’re doing, which I think is a good change. I don’t think it should be a requirement, necessarily.
Arsalan: Right. So, in the US, what I’ve noticed is that a lot of companies want their new employees to have a college degree, but not necessarily in computer science or computer engineering. What they are looking for is someone who is educated in other ways, understands how to deal with people, and has a level of comprehension. They feel that is a good differentiator. They get thousands of resumes per job and they don’t want to go through them. So, they feel like it’s worthwhile to have that as a filter.
Arsalan: But, having said that, I know a lot of people who never went to college and they are very successful. The reason that they are successful is that they were able to get their first job maybe through contacts or maybe they worked their way up from QA and just got their foot in the door somehow. They proved themselves and very soon the company, maybe, needed twice as many people. It was very easy for them to move up.
Arsalan: A lot of times I have noticed, in these days for the past 10 years, that you are able to work on your projects even if nobody is hiring you. Then, you can show people what you can do because we have the internet now. If you can show people what you can do, then you can show people your code using Github. All of a sudden, we have the ability to promote and market ourselves.
Damian: Yeah, absolutely. Github, or something along those lines, [provides] a much better indicator of the code that someone writes [rather] than the fact that they have a degree. I knew a handful of people who finished the degree that I finished and I don’t think that they’d really be able to write code. It wasn’t really a requirement. You could get through the degree program without being able to write software. So, saying that you have a degree doesn’t mean that you’re going to be a great developer. Whereas, if you have an example of code out there, on Github for example, it’s something real and tangible that someone can look at and say “well, yes, here is code that works and it looks like this and it has a nice architecture and the person knows what they are doing.”
Damian: Having said that, I know there has been a bit of a trend lately as well. That is, if you’re applying for a job, show us your Github account so we can have a look at all the code that you have written. So, there is almost a pressure for people to write code in public even if their day-to-day job doesn’t allow them to do that. So, they are almost compelled to write code outside of business hours just to prove that they are a real developer. I don’t think that is necessary. Personally, I have a problem with saying that if you’re not writing code outside of your 9-5 job, then you’re not a real programmer. I’m a little wary of that being an expected requirement for somebody. You might really enjoy it, but you might also really enjoy doing other things outside of your day-to-day job. So, there are good and bad parts, I guess, of having that.
Arsalan: Right. I think that in some parts of our industry, some subcultures within our industry, we have taken this too far. You’re absolutely right. I have talked to people and personally experienced some very strange behavior among recruiters and hiring managers. Some people who are not actually going to do the final interview or [make the] final determination will put these filters in because they don’t want to interview a hundred people. They want to interview five people or two people. They want somebody at a higher level of personnel, like Human Resources or a hiring manager, who is not actually doing the coding, to filter people out. They use a degree as a filter sometimes. We have these keywords. So, you have a keyword filter and how many keywords do you have on your resume? Then, you have a Github profile and what is your activity level? [It’s the] heat map for Github. How active have you been? That’s been used for some reason.
Arsalan: You are absolutely right. I am going to say most software developers don’t work in open source. There is no reason why they have to. What ends up happening [is that] we are creating a culture where we are saying that you have to be so passionate and obsessed with programming that that is all you want to do 24/7. That doesn’t mean that a person who writes code 24/7 is necessarily a better software developer than someone who likes to have his 9-5, do a good job, and go home and take care of his kids or play the guitar. We assume that if you are not obsessed with this, it is not going to work. In my experience, it happens a lot with startup companies where they don’t want someone who has another passion because they want them to work 12 hours a day.
Damian: That’s always the danger. Yeah. If you choose someone who is passionate, then you can see that they’re working on side projects and things for a few hours at night. Then, maybe you think that as an employer that you can utilize that time as well. I think that it is a bit of a work/life balance and I am probably a bad example of this. I tend to not write a ton of essential stuff that’s out on Github. I’ll do a little bit, but I also have the problem where, especially if my wife is working late, I’ll just keep working until she gets home. So, I’ll do 18-hour days occasionally just because I really enjoy what I’m doing. I don’t think that it is necessary for me to do that, though. In fact, it’s probably not healthy for me to do that too often. I need to have some other things going on.
Arsalan: Yeah. 18 hours a day may be taking it a little too far, Damian, but on the other hand, you have a cool job which we get to talk about now. You are a developer advocate, but not just a regular one; you are a cloud developer advocate. A lot of our listeners may not know what a developer advocate is [or] may not know what a cloud is. So, let’s talk about what you mean by a cloud and what a developer advocate is.
Damian: So, we’ll start with the cloud, I guess, because I am a bit of a Microsoft person. I work for Microsoft at the moment. So, when I talk about Cloud, I am usually talking about Azure. But, IWS and Google Cloud platform are options as well and they have awesome features. There are really just those three big players in Cloud at the moment. So, when I talk about cloud, I am talking about the developer cloud. There are kind of two types.
Damian: There’s a consumer cloud where you might look at things like DropBox or Apple iCloud or things like that where your general consumer’s photos go, their emails go, and all that kind of stuff.
Damian: The developer cloud is really where programmers will put their stuff. So, rather than having a web server that you host like a rack or a service sitting in an air-conditioned room somewhere in an office that you have to maintain, you can put all your stuff on a cloud that Microsoft, Amazon, Google, or someone like that manages for you. You don’t have to worry about the maintenance of the hardware and, in most cases, you don’t have to worry about the maintenance of the operating system either. You just give it your code; give it the stuff you want to run and it will run it for you. The company will run it for you and they will charge you based on usage, in most cases.
Damian: Lately, the developer clouds have started expanding a little bit in what they can do. So, traditionally, it was more like a server that you can rent, essentially. But, these days the cloud is much more about functionality. So, think of things like cognitive services in the Azure cloud. You can upload a bunch of photos and tag people in what’s in those photos. Artificial intelligence that Microsoft hosts for you will learn about your photos and be able to answer questions that you have later on. You can give it another photo and ask “is John in this photo” and it will give you an answer based on the information that you’ve given it.
Damian: So, it’s really kind of expanding with all the stuff that you can do, but not needing [you] to maintain your own hardware [or] write these complex AI algorithms and things like that from scrap. So, I guess I’ve kind of gone off on a couple of little tangents there, but that’s really what the cloud is. It’s more or less hosted computing and hosted stuff like that. You don’t have to manage [it] yourself. Microsoft, Amazon, Google, or someone like that will manage that for you.
Arsalan: That’s great. That’s a lot of information, but I want to talk about the history of what happened here. Initially, maybe 20 years ago, if you wrote a piece of client-service software or web-based software, then, it needed to run on a powerful computer that everyone in the world could access. You could run it on your own computer, but it isn’t always going to be there and if you have a lot of users, it isn’t always going to work.
Arsalan: Back in the day, we used to run web servers off of our own desktops. I am guilty of that. But now we have realized that we need servers. We need a dedicated hardware machine that doesn’t necessarily have all of the stuff that you need for a computer or for a consumer. I mean, it does have a display, maybe, but it’s very fast. It’s a fast processor. It has a lot of memory. It can allow a lot of people to connect to that computer at the same time. So, that’s where we start and then we make it bigger and bigger and it costs a lot of money to have this running.
Arsalan: We then have to make sure it’s cool because it can generate a lot of heat. So, cooling it is expensive. Then a fault appears and you have to replace it and you have downtime. That used to happen also. I remember back in the day, a corporate server that was running exchange and handling emails and so on would go down occasionally. Then, we would have to wait until it was up again. So, going through that now, a company that has a lot of servers can say “why don’t you rent mine and you don’t have to take care of it. We’ll take care of it for you and then we can take care of millions of other people.”
Arsalan: Now, it becomes something like a utility. So, you pay for what you use. Behind the scenes, if they have to replace hard discs or put new servers in, you don’t have to worry about that. So, now you have a computer that you can just rent in the cloud. So, that’s where I think this whole cloud thing first started, correct me if I am wrong.
Damian: No, go ahead.
Arsalan: You could call it infrastructure as a service. Then, after that, people built software on top of that. So, you can have software as a service like Salesforce that other managed platforms that are running there on top of some kind of cloud infrastructure that you can use as a consumer. You will not know that it is running in the cloud. Or, you can offer it to your customers. Then, we moved on to the platform as services where we are just abstracting away even just the infrastructure or framework around it. All you have to deal with is code.
Arsalan: I think that I am using the correct terminology here. If I have a piece of code that is supposed to run inside of a Microsoft server or in a different type of web server, then maybe Microsoft can give me that web server and I can just tell Microsoft where my code is and to run it. Now that we have Github and the ability to clone and all the wonderful things that we can do with ‘Git,’ I can just tell Microsoft where my Github or my bitbucket repository is. Then, you can just pull the code and build it. If it works, then deploy it. That’s another way. I don’t have to know that there is a computer.
Arsalan: Later on, we moved into even more specialized cloud services where we are not even doing an entire program. We are doing just a little snippet. I can provide this little function for you and it’s going to run in the cloud and there is going to be a server behind it. There’s going to be a hardware processor for this Github memory, location, and all at full tolerance and patches for the operating system. I have no knowledge of that and I don’t care. All I want to know is that this function will run. So, it’d be more like some Lambda functions or cloud functions. I don’t know what Microsoft is calling it.
Arsalan: Lots of platform providers are providing this feature now. So, I see that as an observer. I’m looking at this whole cloud phenomenon as an evolution. It’s almost come to a point where you are expecting that. You are expecting that everyone who has a large infrastructure and who have a lot of users or who may have a lot of loads, they are not going to use their dedicated servers, but something on the cloud. I don’t know if you could talk a little bit about some of the new features that you see evolving in the cloud.
Damian: Yeah, I think you’ve got that trend exactly right. More and more stuff is being taken out of your hands if you liken it to an analogy of electricity. If you had a little generator in your house that would generate electricity, then you have to maintain that bit of hardware and so on. You have to maintain the wiring and stuff like that. Maybe an electricity company can wire it up to your house. Then, you have to worry about the wires that run through the walls of your house and all that kind of stuff. Or, you can just rent a place that has power plugs on all the walls. As long as something works, as long as you have the right power plug, you can just plug it in.
Damian: That’s kind of how it is with this platform as a service thing. You have code that is a particular language and is Microsoft or Amazon or Google, and they know how to execute code in that language. You just have to provide the code. You don’t have to say “well, this isp.net code needs to run on an IS server and it needs to be on this account and all this stuff.” You can just say “here is the code that I want to run when someone hits this URL.” Azure functions give you that ability. If you give Azure a snippet of code and tell it ‘when you do this, execute that snippet of code.’ It’s similar to the AWS Lambda that you mentioned as well.
Damian: So the trend, I guess, is probably taking more of that away from the developer. You don’t need to worry about the things that are pretty much commodity if every time you run a web application it was on an IS server running on a Windows machine and you gave it C# code, but you have to set up that Windows server on that IS machine. Then, let Microsoft do that for you.
Damian: There are other advantages that you get for this as well. Let’s say that you have an e-commerce site that operates in the US. It might have a lot of traffic between 5 PM and midnight every weekday. Yet, between 3 and 4 AM, nobody is visiting that site. If you had your own server, whether it’s your server or an infrastructure server, a rented server from a cloud provider, then you have to worry about what electricity that server is using when nobody is using it. We need to have a machine that is capable of handling the largest load but can also go down to nothing. So, we are wasting all this electricity and power. If you use a cloud provider for your application, and you have them scale it depending on how many people are hitting the thing, then you are not actually getting charged anything if nobody is hitting your site. Suddenly, if you hit a major news program or something and you have millions of people hitting your site, then Azure or whoever it is can scale your application or the hardware behind it up to handle that load. You don’t need to worry about those intricacies. So, that’s another advantage of doing that. Just give it the code and letting Microsoft, Amazon, or Google work out the stuff that is a bit painful to manage yourself.
Arsalan: That’s true. I’m a big proponent of adopting the cloud as your backbone because I, personally, don’t enjoy doing a lot of the infrastructure work. You have to do it when you’re building something from scratch or when you’re testing it. But, for regular maintenance, I don’t know of any developer who likes doing that. So, I appreciate all that. However, I’m just thinking of the conversation we had before we started recording. Your focus these days is on DevOps.
Arsalan: We’ve had DevOps discussed on this podcast before where you are doing some developing and some operations. You’re actually doing something with infrastructure. You’re not just writing code. Let’s take 30 seconds to talk about what DevOps is and then I’ll ask you my question.
Damian: Sure. DevOps means a lot of different things to a lot of different people. I come from a software developer background. So, when I think about DevOps, I think of it as reproducible ways to deploy my code, test it successfully, and make sure that everything works the way it is supposed to work. Microsoft actually has a definition for DevOps, which was written by my boss, Donovan Brown. It is the union of people, process, and products to enable continuous delivery and value to our end users. It is really broad and really just refers to changing the way you operate so that you have a focus on delivering value rather than writing a particular feature that’s on your backlog, for example. That value could actually be things like scaling up your website if you have a lot of traffic. Or, it could be having the ability to recover from a failure if there’s a problem in one of your data centers. But, really the focus is on how you can quickly and repeatedly push software or infrastructure changes out.
Damian: If you come from DevOps with a background in systems administration and operations, there’s a lot more emphasis on making sure that your infrastructure is tolerant, things are able to be repaired more quickly, and you can rebuild servers if they need to be rebuilt, and so on. It all fits into the idea that DevOps is delivering this stuff to your users in a way that adds value to them and quickly and efficiently doing your best so that it works the way that it’s supposed to work.
Arsalan: I think that’s a very good definition. The way that I’ve heard it described by some other people who I’ve listened to in the past is that essentially you’re taking responsibility not only for the correct function of your software but also the correct operations. That means that if something is wrong in the infrastructure or there is anything wrong that stops your production site from functioning, then instead of having two different people (one responsible for fixing the code and pushing it out and the other person for making sure that it keeps running) you combine these two roles into one person. You are responsible for both.
Arsalan: So, my question was that if you think of DevOps like this, it makes sense if I’m running a hardware rack in the back of my office, then I [also] have to manage many different things. It makes sense for efficiency’s sake. The one person who knows the product or the software intimately would be responsible for making sure that it runs and would hope that once you’ve identified and ironed out the kinks that it continues to run. If there’s a problem that pops up, that same person is notified [because] they are familiar with it. That makes sense, but I’m wondering how that works in the cloud because now I feel that a lot of those responsibilities are taken over by the cloud company. Microsoft is doing the patches and maybe even pulling my code down and they are deploying it. So, does that mean that we don’t really need DevOps anymore?
Damian: No, I don’t think so at all. So, it does change a little bit with the cloud, but rather than the busy work of making sure that patches are up to date and you have the appropriate network activity and things like that, your emphasis can be more of making sure that everything is running correctly and efficiently. [That’s true] even if you back up to the deployment of the software where your job may have previously been provisioning a server, ordering something from a manufacturer and getting it in, putting it into the racks, wiring it up, installing all the software and operating systems, and making sure that everything is right.
Damian: You don’t have to worry about that stuff anymore, but you still need experts who can say what this application means. This is what this application needs to run. So, the traditional DevOps role, traditional operations role, can transition to “well, the resources that we need to run this application are these things. There’s a web application that runs under app services.”
Damian: In Azure, for example, here are the scaling settings that we need. Once it reaches a particular percentage of usage, it will then scale up to another one. Maybe we need to separate one resource group from another to provide a bit of isolation. Here’s an entire test environment that’s going to duplicate that. More importantly, here’s the monitoring that’s required. Here are the thresholds that mean that we need to look at something that’s going wrong. If there are more than these many exceptions in this area over a particular time then you need to be notified. We need to make sure that the information we get is such that we can identify what the actual problems are. So, there is still plenty of work left to do within that respect.
Damian: In terms of the actual deployment of the software, there’s a lot that goes on. If you’re writing a website, for example, it’s not really enough to say here’s my web application and there’s my code and that is my website. Do the sync whenever it’s required. Usually, there are plenty of other things that need to happen.
Damian: There are databases involved. There are other backend systems that need activity. There are notifications that need to go out to people. There are approval processes to get things approved to go into production. So, that whole process becomes part of the DevOps role. When I say DevOps role, by the way, this is something that the team should own rather than having an individual DevOps team or DevOps person. Ownership should really belong to the entire team. You may have operations specialists. You may have monitoring specialists. You may have software – the programmers themselves who are specialists on the application as well. But the team as a whole owns what ends up in production.
Arsalan: Yes, I think that’s an excellent answer. DevOps is alive and well, folks. So, if you are listening to this podcast and you are having second thoughts about DevOps as a feature of your career, don’t give up. There is hope.
Arsalan: In this podcast, we like to talk about the technologies that people are working on because it’s really fun and exciting to know that there are so many possibilities and this is an opportunity for us to learn. So, I really appreciate it, Damian, that you gave us a chance to learn from you about your experiences and what you are passionate about.
Arsalan: We also want to talk about how you got started and how you got your first break or your first job because a lot of us are struggling. We may have some coursework in computer science. We may have a degree. We may have some experience doing side projects. We may have a little bit of experience, but a lot of us are still struggling to get our first jobs. So, from your point of view, I’d love to know you got your first job.
Damian: My story about getting my first job is probably not terribly exciting. I finished at the university, put a resume together, and then started applying for positions. The first job I got was a government one. It was in a language that I hadn’t really touched very much, which was all the .Net stuff. So, it was very traditional. I finished my degree. I applied for a job and went to a few interviews and then got an offer. Subsequent jobs, though, have been very different. There have been a few that I’ve applied for, but, especially lately, I’ve kind of followed what I’m interested in.
Damian: The really great thing about software, I think, is that there are so many different areas that you can go into. You can fall into stuff that you really like and it can be completely different from the person next to you. I have a bunch of people who I went to the university with. We did exactly the same degree, but we barely speak the same language when it comes to writing software, even though we are technically software developers. So, there’s a huge range. I think that [for] the climate I was in at the moment, it was just important to get a job, any job.
Damian: I don’t know if that’s the case anymore. I think that these days it’s more important to find something that aligns more with what you enjoy in software rather than just picking up whatever is available. But, if that is what you end up doing, picking up any job that’s available, you can definitely lean towards the stuff that you do enjoy, which is kind of where I ended up.
Arsalan: Sometimes you have to take a few steps before you get to your destination. Here’s what I’ve noticed. In a lot of cases, I’ve found successful software developers. When they started, they did not start in jobs or even in places where they wanted to be. But, they lucked into being surrounded by other people who are really knowledgeable and helpful, even though they were doing something else. Just by being in that environment, they were able to learn and grow. So, there is the opportunity.
Arsalan: Obviously, if you are a new software developer and you want a job, there are many ways of getting it. We talk about this on this podcast. If you want to learn more about some of the different ways of how you could get a job, then go ahead and email me at us@mentoringdevelopers.com. I will reply and send you some resources and we can start a conversation.
Arsalan: If you could start over, Damian, what would you do differently as a new developer? Are there things that you did that you kind of think “boy, I wish I hadn’t done that.”
Damian: I don’t know that there’s anything that I wouldn’t have done, but I definitely would’ve done some things a bit earlier than I did them. It took me a while to realize that I could pursue the parts of the job that I was interested in. For the first seven or eight years of being a programmer, I thought that I was at the mercy of whoever was employing me. Every bit of software development that I did was going to be based on exactly what my boss told me it was going to be. I was going to be pigeon-holed in a particular language, a particular type of software and things like that.
Damian: It took me about eight years to realize that I can read stuff that I’m interested in. I can emphasize the parts of the job that I like, even without really changing my job. We have a saying in my group of Microsoft DevOps-focused Cloud developer advocates that you shouldn’t ask permission to do your job properly. So, if you, as a programmer, think that it is really important for you to speak to the customer about what they actually meant when they asked for a feature, then you shouldn’t need to ask permission to speak to the customer. The same goes for tests. If you think tests are important, you can do that. That’s part of being a professional.
Damian: That led me eventually to where I am now. I thought that one of the things that I really enjoy was learning new stuff and teaching it to other people. So, I started doing that. I would find a bit of code that I had to write as part of a feature – that was my job description, essentially, to write this particular feature. I would find a part of that, that I was quite interested in, and I dove a little deeper into how to make that work really well. Then, once I learned that there was this great algorithm for compressing images or something, which was fascinating, I would end up teaching other people those bits of information because I found that very interesting.
Damian: That led to this whole developer advocacy thing where it has become my job to learn things and then teach other people. So, even within my own job, I was able to focus even more on the things that I liked and maybe my next job would focus even more on it. The one after that might focus even more. You make your own path, rather than being pigeon-holed. It took me a long time to realize that I was able to do that.
Arsalan: I think this is excellent advice. Obviously, you can think outside the box. A lot of times, our managers or the people who are managing us really know what we should do. A new developer would go in and think that the people who are managing them or who are more senior know exactly how to tackle every situation. So, they need to be told what to do because [they] don’t know and that person knows everything. In a lot of cases, we are all learning. When we start a software project, we may not even know what to do even if we have 10, 15, 20, or even 30 years of experience. We may have never done something exactly like that. So, if a junior person comes up and takes initiative and reaches out to a customer or writes tests, most of us are going to appreciate that.
Damian: Yeah.
Arsalan: I have been in situations, Damian, where it is not appreciated. So, let me be clear. Writing tests or talking to customers is scoffed at. It happens in situations where maybe some of that is not billable or some of that does not add to the bottom line of the company. Those types of political things happen.
Arsalan: For most organizations, especially for in-house developers or for people who are really invested in the software product, they will appreciate any initiative that you show. That means that they don’t have to think for you. You can think for yourself. You are going to be an asset to the company, not a liability.
Damian: Yeah, that’s exactly right. I’ve worked in plenty of those places as well where you tested a few things that you wrote if you had time, but, of course, you never have time. In those scenarios, I think you just have to do your best at what the best thing is for writing good software and delivering value to customers. Yet, at some point, if you’re not getting any momentum, you can’t change that culture. If you feel like it really needs to change, then maybe what really needs to change is which job you’re in.
Damian: There are organizations that are going to say “we don’t have time to do DevOps. We don’t have time to do Agile. We don’t have time to do tests.” There’s not a lot you can do to change that. What you can change is where you work.
Arsalan: What’s exciting about 2018 and beyond is that there are so many jobs regardless of where you live. There are a lot of remote jobs as well. If you live in a city or a town where you don’t have a lot of opportunities, maybe there is an opportunity somewhere else. So, don’t give up. If you’re in a situation that is hurting you in becoming a good software developer and a good professional, a lot of times our work environments are not professional, you should feel free to move on. Even if you are at a dream job, you shouldn’t think that you should retire from there.
Arsalan: I think that our society as a whole has moved on from that idea of getting a job and then staying there forever. At least in the US, the employers don’t guarantee you a job at all. So, you shouldn’t feel obligated to stay there until everything falls apart. That doesn’t mean that I encourage job-hopping. I’ve seen some really aggressive job-hopping in my career where some people would change jobs in weeks or in a couple of months. That doesn’t give you anything.
Damian: Yeah, definitely. You could try to change what happens in an organization before jumping away. I think the average is about two and a half to three years in a job and then I leave, but not because I hate the place and can’t work there anymore. I leave because I don’t feel like I’m growing anymore. I’m doing the same stuff day-to-day. I’m not learning anything new. It’s not working out for either party then. They basically have someone doing the exact same thing that anybody else could do. I’m not learning or enjoying it and it’s time to move on.
Damian: If something is not working, then it would be great for the company and for you if you were able to change that in the organization. You can’t do that in a week. So, give it a go for a while and then if it’s just not working, then maybe look at other options. I think that’s good advice.
Arsalan: The most important thing that I like to tell new developers is to not give up. Stay in the game. If you stay in the game long enough, you will succeed. There are plenty of opportunities out there. There is something just right for you. Yet, obviously, if you don’t like software development, then don’t be a software developer. But, if you want to be a software developer, let nothing stop you like a bad job, a bad boss, bad technology, or bad choices. All of that can change.
Arsalan: I’ve seen companies change from within and be completely transformed. A bad boss can leave and a new boss can come in. Or, maybe you could become the boss. That happens too. I’ve even seen situations where a company is using really old technology because that’s all they know. Then, all of a sudden, there’s a new budget and more money. If you talk to the right people, the technology changes and now they are doing Agile and Scrums and they have Kanban boards going and you’re now working on an open source or some other technology that you’re excited about. So, it can happen. Or, you could just move on and find another job. Maybe, if you have a couple of years’ experience, you could go out on your own. I’ve seen people become independent consultants. I’ve done that and sometimes that works out really well.
Arsalan: If you’re listening to this podcast in 2018 or 2019 and so on, you’re in a good place. This is a good time to be a software developer. Right, Damian?
Damian: Definitely. I would agree.
Arsalan: It’s been a pleasure talking to you – so much amazing advice. I think people are going to love this episode. There are so many more questions that I could ask you, but we’re coming up to an hour and I think we need to stop. Before we go, I want to give you a chance, Damian, to talk to my audience and give them a message if you like. Give them advice or talk about something that you’re working on, that you’re passionate about, and that you’d like them to check out.
Damian: There are so many things. One thing that I would say as a result of me starting to work at Microsoft about 8 months ago is that Microsoft is a very different company for developers than it used to be. A huge amount of our code is out on Github now. It’s open source. Their whole developer advocacy group, which is the group that I’m part of, our job description is to literally help people succeed.
Damian: If you’re in the industry and a little jaded about Microsoft from the days of forcing upgrades and all sorts of developer stuff that went on a while ago, have another look. Azure is primarily the Linux server these days. Microsoft is one of the largest contributors to the Linux code base. I think it is the largest contributor to open source according to some Github stats as well. It’s a very different story these days. I’d have another look.
Damian: If you want to learn how to use any of Azure, a great starting point is docs.microsoft.com. There are some work-throughs, videos, and all sorts of stuff. You can also reach out to any of the Cloud developer advocates, too. We should be very easy to find. I think it’s developer.microsoft.com. That’s our job – to help you succeed, and to some extent, whether you’re using Microsoft or not. So, reach out and if you have any problems with anything, we’ll have a look at the docs. Things have changed at Microsoft.
Arsalan: If you want to talk to Damian or you want to send him a message and can’t find him, you can always find me at scientdev.wpengine.com. This is going to be episode 66. You’ll be able to find links for everything that Damian is talking about, show notes, and transcripts at scientdev.wpengine.com/episode66. It’s easy. So, if you want to find another episode, like episode 60, all you have to do is change it to scientdev.wpengine.com/episode60. So, all URLs are fun like that. I am also very responsive to email at us@mentoringdevelopers.com. If you want to send a message to Damian and you want to ask me and Damian something, I will make sure that I forward your request to Damian if you want. Or, you can reach out to Damian directly.
Arsalan: Alright, Damian, it was a pleasure talking to you.
Damian: You too, Arsalan. Thank you very much for taking the time.
Arsalan: Thank you so much, and thank you, everybody, for listening. See you later.
Important Links
- Twitter: @damovisa
- Blog: https://damovisa.me
- Cloud Developer Advocates: https://developer.microsoft.com/advocates
- Microsoft Docs: https://docs.microsoft.com
- What is DevOps?: https://www.visualstudio.com/learn/what-is-devops/
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