A Reflection of My Internship as a Software Build Intern

· December 9, 2021

Report a bug

This is a copy of my reflection report I submitted for Professional Experience Year (PEY), a 16 month internship at a company. The contents of this post does not enclosed any confidential information (verified by a manager) and all names will be redacted since this is the internet. Please note that some of the information are outdated and my experience may not reflect what others experience. I did my internship in 2018-2019 before the pandemic when work was not remote.


I had the pleasure of being hired by IBM (International Business Machines Corporation) for my Professional Experience Year. It was exciting to hear that I got hired at one of the greatest companies in the Information Technology Sector that has transformed the world around us for over 100 years. A company that created and inspired products that I have been using either directly or indirectly throughout my entire life such as the Thinkpad (before Lenovo bought Thinkpad), floppy disks, ATMs, and IBM cash registers. Though the IBM brand may not be well known to the younger generations as it used to be, the IBM brand was always around me since I was a little child through books, magazines, and products IBM used to retail.

At IBM, I am part of the Db2 Build Infrastructure team. I am responsible for maintaining and building the code for Db2. Building is the process of compiling the source code to executable files so that it can be used within the company to perform testing before shipping the product to the customer and to ensure that the code pushed to the code base is clean. Monitoring builds is an essential part of my job as my team name implies. As software gets large and more complex, it becomes necessary to have a team dedicated to builds and monitoring the builds on various platforms instead of having developers perform the build themselves. Big companies such as Microsoft, Facebook, and Google have dedicated teams to build their source code. Other than monitoring builds, I do some minor changes in our infrastructure to remove unnecessary steps or fix minor bugs, set up the infrastructure of new projects, and help others on their work. One notable contribution I made was assisting a full-timer migrating a server. I was able to see how applicable my previous work experience was for this task. I got the opportunity to do a non-paid internship at a big company back in High School where I helped migrate servers since Windows 2003 was about to lose support at that time since the previous University student was unable to finish the task on time. Using my experience from my previous work, setting up servers at home, and reading various random articles and books in my free time, I was able to mentor my coworker with the task and resolve a lot of issues my coworker was having.

I will not sugarcoat that my job is an exciting job. In the eyes of most students, the job is not exciting. But I actually found this internship quite enjoyable than I initially thought for various reasons. I think what helped initially was the fact that I had low expectations before I started and it ended up being more interesting than I thought. I believe that those who join the team with high expectations will be quickly disappointed that their job was not how they imagined it to be. My experience at my previous company showed me that not all jobs are exciting but you just need to look for opportunities to make your job interesting. And my team lead and manager have given me plenty of opportunities as well. What actually made work very enjoyable was the people in my team. I realized that even if your everyday task is not exciting, having great coworkers around you can really make your job much more exciting. I really enjoy the mentorship program my team deploys. My team hires interns for 16 months which gives you enough time to learn how to do your job and actually be a positive contributor to the company. With 12 months of experience working in the team, students will train the incoming interns on how to do their everyday job. I like this mentorship style because the students who are training and guiding you at work went through the same thing as you have so they are able to relate with you a lot. They are able to help you transition to the workforce which took me a while to get used to since I have been at school for almost my entire life. Other factors that made my internship much more enjoyable are the free snacks that are available, the training modules you can enroll in, gym access, and the fact that they have a decently sized library where you can read books if you ever choose to.

There is one member (team lead) who I look up to at work because of his dedication and patience with the interns. I have made quite a bit of mistake but my team leader was always patient with me and guided me through my work. My team leader’s dedication to his work has inspired me to work and I really appreciate his help whenever I am stuck on a problem. My team leader would try to make work more exciting by giving us mini-tasks and trying to improve our workflow. A problem I found with myself when mentoring others is not being patient. I often find myself either fixing the problem or giving the answer to the problem without giving those I have mentored enough time. My team leader is the opposite in that he would give me tasks and wait for me to finish them so that I can learn.

The tasks I found very intriguing are when scripts fail. Although it may seem odd but whenever scripts failed, I enjoyed debugging the problems that come up. Debugging failures are very time-consuming and engage with your brain to theorize and isolate the problem. The problem could range from code issues to improperly configured systems. One interesting bug I once found was a script failing due to a built-in function not behaving the way it should be. I have never encountered a built-in function not working as intended (other than misunderstanding the behavior due to different implementations on various platforms). Turns out the built-in function looks at certain system files but the files in question were improperly written when the server was set up. I got to debug scripts written in various languages such as Perl and PHP which are two languages I have taught myself back in High School but did not have many chances to work with them except for PHP in which I have plenty of experience in. I also love moments when something I read during my free time becomes useful at work or is at least insightful.

On the technical side of my job development, I do not think I gained as much as I would have wanted. I did learn a lot from this experience but the skills I learned do not seem to be very transferable to other companies except for a few. A lot of the tools and processes are very specific to the organization or outdated and old. However, I find learning the differences and similarities between the tools to be quite fascinating since you can see the progression and the difference in philosophy over the years. The experience made me realize my lack of knowledge and helped me map out courses I wish to take in the future whether it is during my final year or after I graduate and things I plan to learn once I graduate from University on my own time. Dealing with builds and reading Db2 source code made me realize how little I understand about compilers, makefiles, C++ templates, scalable computing, etc. In addition, the experience has made me aware of the various teams that make up the development pipeline and the importance of the role of each team.

Working at IBM made me learn about myself and shaped what I will look for in my next job search. I have learned that I can get easily distracted and lose track of time easily. I learned how to keep track of time and keep focus on my work. Setting up alarms, reminders, and keeping track of what needs to be done helped me improve my productivity. On a side note, I realized old habits can evolve in a strange way. During the school year, I often like to run away from reality such as from an assignment by occupying my mind such as through cleaning or reading books and reading manga. However, now that I am working, I sometimes find myself just working extra to occupy myself from thinking of other commitments that are unrelated to work.

I love how IBM and IBMers are looking for ways to help others such as volunteering i in charities and advocating to be more green. My team got the opportunity to take half of our workday to volunteer at the Salvation Army and I would like to volunteer again sometime in the future. Looking at how the lab seems to care about the employees and others outside the company fills me with joy and that has become one of the criteria I will look for in my next job search.

One improvement for IBM is to improve their job posting for interns. It has come to my attention that the job posting over the years has become more questionable through discussion between former interns from years back, current, and new interns from various teams stating how ambiguous or deceiving the job title or description has become. I have no qualms about the interview process and the content of the interview as I found it fair and informative. The interviewers were great in informing me of the various teams and tasks the job entailed and the job description hinted at the tasks being performed. I assume the job title was ambiguous because the interview was not for a specific job but rather for a pool of teams. This to me is fair practice but I have heard from a few individuals from various teams that were not as lucky as me to get an accurate depiction of the various roles and their tasks as I did and felt deceived from the job posting. Since I do not have the entire story, I do not want to place blame on anyone and perhaps there was a miscommunication between various parties and the applicant. I felt compelled to mention this in my report after being asked to base my report on the self-reflection form which asked if the job accurately describes the role I currently have. I hope this does not raise any reprisal against me.

I would like to conclude by thanking the various people at work. I would like to thank my hiring manager, , for giving me a chance to work at IBM, my current manager (manager 2), and (random manager) for treating me to a cup of coffee and welcoming me to IBM. More gratitude and special thanks to my coworkers: (team lead), (alpha), (bravo), (charlie), (delta), (echo), and (foxtrot) for being patient, encouraging, and guiding me with my work.

Sources: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/phillips-icse-2014.pdf

Twitter, Facebook