Episode Highlights and Show Notes:
Arsalan: This episode of Mentoring Developers is dedicated to all the wonderful listeners, the community of listeners, as well as all of your struggles and triumphs. I really enjoy making these episodes. It’s a lot of fun talking to developers, mentors, and everyone associated with this industry. We really are trying to make this industry a welcoming and easy place for you guys to get started in and thrive in. I think it’s better for everyone. It’s a win-win situation.
Arsalan: Some of you have emailed me at email@example.com. Some of you have joined my email list at scientdev.wpengine.com/list and have gone through The Five Steps to Success email course. I think I’ll be sharing a lot of good tips and tricks in future emails that I’ll be sending out. So, go ahead and join it if you’re interested in expanding your career and being successful. It’s what we all want and together, I think we can make it happen. We just need to have empathy and this is a point I like to emphasize in all of my episodes.
Arsalan: I’m super excited that I have all these intelligent listeners who are thoughtful and send me all these wonderful emails. I thought I would just read a couple and we could go over some of the issues that they bring up and find solutions and answer questions live on this show. Hopefully, it will benefit a lot of people. Thank you again for sending me those emails and keep sending them here. We’ll try to address them as best as we can and as fast as we can.
Arsalan: So, I will read these emails out, but I won’t share the last names or any other personally identifiable information. I’ll just share the first name to respect your privacy. Know that if you send me your emails, they will not be shared with anyone else, but if they have useful content of questions that other people can benefit from, I think it behooves me to share it with people. But, I do still want to respect your privacy.
Arsalan: Here is the first email. It was sent by “Zack.” Zack says “Hi, Arsalan. I’m loving your podcast and I’ve signed up for emails. I love those too. I had a couple of suggestions for the podcast. I listened to the manual tester episode and I’d be interested in hearing more from testers, specifically those fluent in and using automation often. Even more, than that, I’ve been seeing more jobs for something called “DevOps,” which could make for an interesting episode. It seems like that’s a hybrid career where someone develops a bit, but is more responsible for making the company’s infrastructure work to deliver solutions for the company’s products.
Arsalan: After that Zack talks about a friend of his who is in the military along with him. Zack is also in the military, and he thinks that it would be good for me to interview him. For privacy concerns and reasons I’m not going to share the name right here, but I appreciate how he thought of his friend and he thought of how he could benefit and we could benefit by having him on the show. I really appreciate it. If you’re listening to this episode right now, and you want to recommend somebody who would be a good guest for this show, please do that. I really appreciate it.
Arsalan: So, Zack’s in the military with his friend and they’re looking to start a career after they get out of the military. I can imagine how hard it would be for somebody in their position because they have a very serious job. When they get out, they need to restart their life and restart their career.
Arsalan: Computer science and software development could be a very good career, but it’s not for everybody. There are a lot of things that we can do in the software industry as a whole, or computer software industry if you want to call it that. That is not pure software development or programming. Programming is a part of the whole software development thing.
Arsalan: If you are building a piece of software or if your company is building accounting software, you need people to write the code but you also need so much more than that. You need people to understand what needs to be made. Those would typically be called business analysts. Then you need to test the code or test this final software product and those would be the testers which could be a manual tester or automated testers, performance testers, or load testers. There are so many different types of testing that needs to be done depending on many factors like the size of your application, your user base, or many other factors.
Arsalan: There are also people who put your code or software product up on a server or package it up in a way that people can use it. Then, there are people who ensure that your software product keeps working at all times. If it’s a 24 seven web-based product, then you may need support people to ensure that the product is running as expected. If there are problems, they can resolve it. If they cannot resolve it, they can escalate the problem or call somebody who knows more. From there, there are different things that can happen all depending on the size and complexity of your application.
Arsalan: There’s this new thing, this hybrid role that has evolved in recent times. It’s called DevOps. What Do You Think It Means? “Dev,” is probably software developer. “Ops” could be operations. It’s an interesting concept and we’re going to talk about it in this episode.
Arsalan: Thank you, Zack, for sending me this wonderful and thoughtful email. You mentioned that you like the software testing episode. That was episode 42 with Jennifer Cable. You can listen to it at scientdev.wpengine.com/episode 42. That was a wonderful episode because we talked about something that doesn’t get talked about often. That was the importance of software testing, and what software testing is and what you can do to become a software tester. So, check it out. I also wanted to mention that quite often. A lot of people who are doing software development or programming right now began as software testers. So it is a completely valid path to a development career or it can be a very good career in its own right.
Arsalan: You also mentioned DevOps, and that’s a very interesting development in the world of computer software and IT, and we need to define what it is. I’m going to say that DevOps does not have a universal definition. There is no single way of understanding this concept of dev ops, but if you Google it, you’ll have a couple of different ways of looking at it. You’ll find Wikipedia which will say that DevOps is a culture, movement, or practice that emphasizes the collaboration and communication of both the software developers and other information technology professionals…. That’s a lot of words, but what is DevOps, exactly?
Arsalan: The point is that software development as a discipline on its own, which you can consider as programming and related activities, is something that helps you develop a piece of software. You write a piece of code. You write some tests. You write some code in a programming language and you package it up and that is software development.
Arsalan: What happens after this piece of code is developed? If it’s a web application, it needs to be deployed to a Web server. It needs to be configured on the Web server to run appropriately. Perhaps you need to do some tweaking on the Web server side or the application server side to make it perform better. Maybe you need to scale it to accommodate a different number of users per month. You need to be able to support all of these functions without your application buckling down under the pressure. So, you might need to do some load testing to make sure that it works. Or, you might be able to scale it on the fly like Amazon cloud or a similar infrastructure. These are a lot of decisions that a person or a team needs to make. They need to make this application work for its users under all circumstances, or at least try to.
Arsalan: Those types of activities could be called ops because they are not really development in the way that we think of development. If you have a job where you get to do a little of this and a little of that, that could be a good place to start when you’re thinking about the term, Dev Ops. So, let’s keep searching for a better definition as defined by the internet.
Arsalan: According to agileadmin.com, dev ops is “a term for a group of concepts that while not new, have catalyzed into a movement and are rapidly spreading throughout the technical community.” Like any new and popular term, people have somewhat confused and sometimes contradictory impressions of what it is. Here’s my take on it and the agile admin’s take on how DevOps can be usefully defined. “I propose this definition as a standard framework to more clearly discuss the various issues; Dev Ops covers like quality agile Dev Ops is a large enough concept that requires some nuance. So, it is a difficult concept.
Arsalan: The Agile Admin says that Dev Ops is a new term that is emerging from two major related trends. The first was also called agile system administration or agile operations. It gives the whole history, which I really don’t need to know. I want to go into the definition of what it is. What is Dev Ops? There is a huge article that sets up. What Dev Ops is supposed to be, but I’m trying to get to the gist of it.
Arsalan: I found a useful section here. It says “what is dev ops not?” Okay, so it’s not No Ops. No op is maybe an insider joke here. No Ops is an instruction, usually in a hardware platform, like a cpu if you have an Intel processor, it has instructions that it can carry out. One of them is no op, which means “do nothing.” So, wait. I think that is kind of an insider or industry joke because when you’re doing nothing, you’re doing a no op. It’s not just tools, culture, and it’s not just devs and ops.
Arsalan: Some people have complained “what about security” or “what about network administrator?” He’s saying that it’s not just development and it’s not just ops. In ops, I think he means just setting up and running the application. Maybe you should include network security, administration of the network, and all of that. I think we understand that “all of that” is considered the operation of the website. So, if you have a website, and you build it in Ruby on Rails, for instance, you deploy in in Heroku.
Arsalan: That’s great. Now, you’ve tested it and maybe you want to do a different deployment on a large web server or a server farm with multiple servers and a head server that acts like a load balancer, if you will. If you want to do that, then you may need to tweak some things here and there to make it work. You may need to work on a caching system that makes your application load up faster because it doesn’t have to go through the process again since it hasn’t changed. If your output hasn’t changed, you can just store that information and load it up faster. That could be caching. It could be security. It could be networks. There are so many things that go into running a really successful and productive application.
Arsalan: Essentially, if you’re running a serious application with a lot of users, who are paying you money and need this website up and running at all times and errors to be handled gracefully, then you probably have to spend a lot of time worrying about getting the website up and running. Even if it’s a desktop software program, it needs to make some kind of connection to the server to update itself, then you’ll still have those concerns.
Arsalan: I would say that 80% of your effort would go into maintaining and running that application and the remaining 20% would be to develop the application. So, it’s very important. A lot of companies at this time are realizing that they do have to spend this time in running it. Sometimes they need to ramp up their resource pool with the number of people who are working to deploy an application. Maybe it’s a release point. Maybe every quarter they release a new version and they need a lot of hand on deck to make to ensure that it goes without a hitch and any problems are solved as they come. But, a couple of weeks after that, they don’t really need it anymore.
Arsalan: So you can have a person who is comfortable setting up and maintaining servers, but also has skills in software development. So, it’s like having one foot in each camp. When it’s time to release your application, everyone stops developing and instead, they jump on this “ops” bandwagon to help the application get released. If there’s an emergency and something goes down, people can get in and do the work until the crisis is over. Then, they can return to developing features, fixing bugs, and all of that other stuff.
Arsalan: I think that’s the idea behind dev ops. That’s my definition. But, let’s keep looking to see what the internet has to offer. So, here’s an interesting article by Patrick Debois at jedi.be. He talks about what DevOps is and so on, but I found this next section interesting. It’s titled “how does DevOps help?”
Arsalan: He says “the DevOps movement is built around a group of people who believe that the application of a combination of appropriate technology and attitude can revolutionize the world of software development delivery.” Essentially, he is saying that “the demographics seem to be experienced.” So, if you’re very experienced, you might know more than just software development and you might be able to help with the infrastructure and help keep the application running and running well. I think this is where we’ve been heading in our discovery of what DevOps means.
Arsalan: He also talks about some of the criticisms of the movement. “Some people have been a little suspicious,” he says “the movement really looks like a lot of European sys admins, many of whom know each other. Is this some sort of elitist club or a rebranding exercise?” Then, he says that “it’s true DevOps as a movement is characterized by a number of sys admins, any of whom know each other.” So, essentially what he’s saying is that a DevOps person or the movement of DevOps is a system administrator who knows how to run and configure your system. So, they are essentially the operations people, but they do a little bit of development.
Arsalan: He says that it’s an attitude, a state of mind. You need to be a certain type of person to do it, but I think the thrust of his explanation and his definition is that this is something for really serious and really experienced developers or system administrators who have added some development chops to their skills and add to their value within the organization by just doing both sides.
Arsalan: But, according to this definition, you really need to be experienced, and you guys may or may not have that experience. So, if you are just starting out and you want to be a software developer or you want to be in this industry, and you’re thinking about DevOps, I think, based on this explanation, that this may not be the right field for you to get into unless you have some experience behind you, especially for the system administrator or Ops part of it. I’m also looking at different solutions and different products that claim that they help with your transition to DevOps. One of them is Chef.
Arsalan: Chef says that DevOps is a cultural and professional movement focused on how we build and operate high-velocity organizations born from the experiences of its practitioners. Again, there is an emphasis on “experiences” and obviously they are promoting their tool, they say “Chef is your path to DevOps.” Your mileage may vary and you may have different experiences from different tools, but that’s an interesting idea.
Arsalan: If you find a concept being adopted by a tool and being used for its marketing, that’s a sign that there is demand because they would’ve done their market research. So, there is demand and to fulfill that demand, they have come up with vary targeted branding towards people who are interested in getting into DevOps. So, it’s certainly something you should look at.
Arsalan: Zack, if you’re listening and anyone else who is interested in exploring DevOps, I encourage you to do that. If you have any questions or comments, send them to me via email at firstname.lastname@example.org. You can also tweet at me @mentoringdevs, or you can also sign up for my mailing list where you can get my emails directly at www.scientdev.wpengine.com/list. Be sure to check out DevOps. I think it’s a good concept to know. I am skeptical about its efficacy and its usefulness for new and aspiring developers, but if you have a couple of years of system administration done or if you’re very comfortable with maintaining and running servers, you should look into it.
- Just Enough Developed Infrastructure (Jedi.be): What is this DevOps Thing Anyway
- DevOps and Chef
- The Agile Admin
- Wikipedia: DevOps
Thanks for Listening!
If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.