Software delivery is critical in the world of software development, which wasn’t surprising to me as I started my senior year in university. Being a DevOps intern has allowed me to get a real-world view of some of these tools such as Vagrant, AWS, Jenkins, Maven, and Nexus. Tools in the lives of most students up to this point consist your TextEditor/IDE of choice, some UNIX tools, a browser, and maybe a VM/Cloud service.
Most students can’t fathom the scale or need of tools like Jenkins, Travis, Vagrant, Otto, and Docker because development in school normally involves 1-5 developers all working in different development environments while all committing code and attempting to deploy their software. Tyler, my partner and only other intern at Liatrio, and I fell into this category, but thankfully Liatrio’s senior staff at have done a great job helping us understand the need for DevOps and Delivery Engineering.
First-Time Jenkins Use: Internship Interview Process
Jenkins was part of the internship before I had the internship. The intern interview process included hooking up a Jenkins job to poll a Github repository and build on a commit. Liatrio had us do these tasks to see how we work and think rather than assess whether or not we were Jenkins masterminds. Not only did this process test me but it also helped me understand what the interns were in for. In hindsight, the task was fairly simple, but it felt daunting back before I understood Jenkins.
Jenkins the Orchestrator, Not the Operator
First-time Jenkins use brings the realization that Jenkins doesn’t do much without the help of plugins and other tools. Week one began with breaking apart the major parts of a pipeline and understanding what Jenkins truly is — the conductor of an orchestra of tools. Within an hour of a whiteboard session, we had a full pipeline diagrammed, which included an SCM, Jenkins, artifact repository, code validation, testing, and various environments. Giving us interns this high-level information proved Jenkins’ worth and set the foundation to begin implementation of a pipeline.
Don’t Get Too Comfortable: Jenkins’ Ability for Customization
After setting up and handling a few basic builds, we moved on to deployments to Nexus. This was the first glimpse of the struggles infrastructure deals with on a regular basis. The topic of integration methods came up. Do you use plugins? Scripts? Having conversations about the pros and cons of each is important. There is no one-size-fits-all (and may never be).
Googling Everything Doesn’t Help
Google is a cure-all for programming and system errors during school. You get a seg fault compiling with C++, and 5k other students are probably dealing with the same. With first-time Jenkins use, we found out quickly that Jenkins issues aren’t so common, as there are hundreds or thousands of possible implementations. DevOps interns need to understand that asking for help is okay and getting involved in the community is important. Jenkins administration can be complicated, and struggling is part of the process everyone goes through.
First-Time Jenkins Use: My Advice to DevOps Interns
- Learn to Love Jenkins – If you don’t end up enjoying the work after a while, then the work can become overwhelming.
- Embrace the Fear – Jenkins is intimidating at first, but shortly after the subtle sophistication will lure you in.
- Always Ask Questions – You likely won’t learn these things by accident. Worse, you may be doing more work than necessary. Don’t reinvent the wheel.
- Look Down from Above – A high-level understanding of the job you’re trying to complete will help you to plan the way to implement your solution.
Where We Need Help as DevOps Interns
- Answer Questions – Help answer questions as thoroughly as possible. It has been incredibly important to my personal success in this company. Without asking questions I probably would have failed.
- Encourage First-time Jenkins Use Immediately – Introduce Jenkins in the interview. This will allow you to see the interviewer’s ability to think, communicate, and research. It also helps as a way to make sure the interviewer is interested in this sort of work.
- Be Patient – This stuff isn’t easy and most interns will not have much background, if any, in this field or software development in general. Rushing or belittling someone will make this process very difficult and unenjoyable.