Hi @harshgarg862000
Great to know that you want to know about devops, usually in my personal experience, I lack completely of non-internet people who are interesting of devops, where I lived many persons choose to invest time in being a full stack developer, a network specialist or just the typical guy interested in creating video games and nothing more. Usually this field many times lacks of visual achivements, like web development for example, so I guess is more difficult to understand in the begining why there are some people so happy in just seeing a terminal all the time, and so how to study devops.
So what step learning path I recommend for: Most of the time you will be using a lot of linux commands, so I highly recommend to learn Linux each day, and git also. But Linux is like kubernetes, there is a whole world to explore inside. If you lack of Linux experience I recommend you to do these things in your life:
-
Use virtual machines to know some distros and learn what programs are inside of your system, you will get in touch with all the linux ecosystem, so you will know about the many shells there are and also some alternatives programs to many standard ones, this will get you familiarized with the posix complaint stuff. Not all programs are posix by default (Like bash for example), and therefore some scripts or command lines will not work in other Linux OS. There is a program called shellchecker, which tell you if your scripts are posix or not, if your scripts are posix, that means those will work in every unix system, so don’t be surprise if in one system some stuff doesn’t work, this concept in mind would help you in troubleshooting, always understand if your work is posix or not. Why is this important ? Because not all Linux distros works with the same core utilities, there is busybox, musl, gnu. So for example if you are going to use alpine linux, you should know that your ubuntu scripts may not work. That’s because of the programs flags. Did you know that some times are some flags are with --, others with just - and sometimes without - ? That’s tradition, some flags are called bsd style, others gnu, and others unix style (Like the original implementation of unix). So get in mind that many things will not work depending of the core utilities of your system
-
Learn in your free time Unix in general, because of all above, but approch it by doing, not just reading. Assembling the “legos” by yourself will also help you to master the terminal, and remember the commands.
-
Try to live sometime in a redhat based distro and a ubuntu base distro. As you know, these distributions are more used in jobs, so get in touch with the differences, like where are some config files, and also the package manager. You can also learn suse if you like, but I highly recommend to learn the redhat and ubuntu 100%. Many of the distros are using by background the repos from ubuntu or redhat, so in learning one, also you will be learning the others based most of the time.
-
If you really want know deeply how linux works, try to mod your system for your own needs. Also you can try to live in arch, gentoo world if you like. but this step is optional for your devops carrer most of the time. By the way, checking github projects from other people is also good.
-
Currently now there is a Linux operating system called Nix os. There are some nice jobs that need people who knows Nix os. Nix works with reproducible builds, a very different concept like the traditional package managers of Linux. You can learn that if you like. There is no course of that in Kodekloud, hope someday will be. It takes a time to learn as far as a I know, because the documentation is not so good, and it’s a niche thing.
So in few words: Trying to use linux as your default workspace will help you a lot to get involved with the unix ecosystem, and therefore you will be have more experience in troubleshooting in the long run. Do it with a virtual machine first, and when you are confident enough that using Linux will not be a problem in your life, you could setup your linux machine in bare-metal if you like.
So what about the other stuff that is not Linux ? Try first to understand all the devops toolchain in theory first, not in practice. This I think is important to know the general view, so in your mind you will be able to connect the new concepts with all the devops framework, and not in a isolated program. There are a lot of tools, but try to grap the general concepts of what is the escential task of that application. In a short resume:
Git -------------> Get your code done with other people.
Jenkins -------> Be able to automatize your builds and tests from your repo code, in order to create a image [docker image].
Docker -------> The container program that let you use your software image and be able to isolate from the host system, and be able to do it many times to have availabilty for multiple users.
Kurbenetes ------> The thing that use docker runtime engine, and be able to get high availability and handle it.
Terraform ----------> Usually the program you use to change your cloud setup configuration for many machines at once.
Ansible --------> The program that you use to change the config of many machines at ones (Not the cloud setup, is your OS environment setup of your machines [Yes, terraform can also do that] )
I hope this helps to understand in a simple way how all the programs are interlinked.
The other programs, I guess you can learn it by the way you like, but I recommend learning ansible before terraform. And also try to understand docker before getting in kubernetes. If you have some knowledge in Agile ( Like scrum for example), I recommend you to get and learn jenkis, because when I was learning in the jenkis course, I was able to imagine how the jenkis software helps the Agile environment. Is not a must, but is a recomendation from myself. It help me understand more how Agile and devops works. If you have a Linux background, ansible will be more easy to learn, because you need to put the linux command in the yaml files.
So what about the strategies to learn devops in kodekloud ? I recommend you to trying to take the courses while trying some labs in the engineer plataform, and focus in one or two tools. You don’t need to master all the tools to get a job, but try to understand how all the whole system works in general. So choose one or two tools you like to master, and make the other courses to have a general knowledge, you will understand how everything is linked. After you master your tools, repeat the process again. When you are mastering the tools selected, repeat only the labs of the courses when you can, and try to advance in the engineer plataform, if you get stuck in the engineer plataform get in contact in the forum and keep doing the courses labs until you are feeling that the tool is like your second language, the brain needs time to see the patterns to solve the problems.
Also I recommend to learn web development, or have a full stack friend to talk about, so if you get stuck in your devops learning, you can also change your mind a little and learn a web framework or something else. So you can set your own web challlenges and be able to solve it while you are waiting for answers in general. Trying to know what the development team is doing, will make you understand more easily their issues, for example when you are in a daily scrum for example. So the efficency of your team could be improved, because you are no longer in your devops echo chamber bubble, you are willing to undestand the development issues and talk about it in the free time. After all, you are putting the docker images created by the development team, so I think is a good idea study web development when you are stuck. I mean using html + css + typescript, not wordpress . If you are going to setup a static site, you could learn hugo for example. But try to learn the “tradition” first if you don’t have it. I honestly found the react syntax not so friendly when I saw it. So I recomend you to learn angular or vue. Also react is not a “framework”, because you can use angular inside react for example. You need the time that you are using in devops, so you could learn angular or vue first , if you don’t know it of course.
Hope this post help you, and all the community in general.
Have a nice day!