Part way through fall semester last year I found myself worrying about finding an internship over the summer. I had previously worked an IT internship only slightly related to my major (Computer Science) and I absolutely hated it. I knew that I needed to find something that involved me spending more time programming and less time trying to find ways around the companies firewall due to sheer boredom. I found myself on I-Link and saw that Siemens was going to be on campus the following week. I interviewed for their position and was given an offer to work for them. The job offer required me to miss an entire semester of school in order to work for them for a seven-month span. I took the offer and it has proven to been one of the most enriching experiences of my college career.
To give a little background information, in most companies that develop software, there is a process called code reviewing. The process is basically that all code gets reviewed by a small group of peer software developers before it gets committed to the company’s code base. These reviews are where my education away from school began.
I had never realized how bad of a programmer I really was until I started to work at Siemens. The code I produced for school was all about problem solving and I never really spent time considering how my code looked. And, as I learned from my first code review, my code looked awful. Judging by the number of comments and noted bugs, my code couldn’t have been worse. My first code review took about four rounds of revision before it was ready to be put into the product code base. This humbled me in more ways than a failed exam ever could. In the following months I endured code review after code review that pointed out all of the intricate reasons my code was trash. When the reviews were finally complete, I would be left with a broken ego, but a plethora of knowledge. By the time I left Siemens, I not only had developed an intuition for proper programming paradigms, I also developed a deep appreciation for form and style in programming. These are two invaluable skills a programmer should possess, but are extremely hard to teach in a school environment. I don’t think I would have been able to learn these skills in class.
Another important skill I developed in my semester at Siemens was a sense of perspective. As many teachers often say, school is not like the real world, and they are right. While students have heard this time and time again, they are never given a proper taste of what a real work environment is like. Often times classes can get so muddled up in testing and grading that they grasp at things for students to memorize that hold very little bearing in the professional world. I believe school is meant to provide a knowledge base to students so they can extract and apply their knowledge to their work as a professional. Having worked in a professional context I am now more able to see what will be important in the form of skills I wished I had rather than knowledge I wished I had memorized.
Finally, working for a semester was very refreshing for my attitude towards school. At the time, I had been doing the same schedule of school since I was 3 years old. Everything school-related was so natural and business-like it barely felt like learning. Being away from it all for almost a year renewed the way I think about education.
Even though the University provides no credit for working an internship for a semester, I highly recommend it. It has been the most important part of my college education.