Drew, Software Engineering Intern, San Francisco, CA.
College is a funny place sometimes. I’ve been studying Software Engineering at Cal Poly in San Luis Obispo for four years now, and have been taught a great deal there- design principles, programming practices, general software development processes and any number of other useful skills related to the software industry. Yet even after four years, it amazes me how much there still is to learn, something I’m reminded of every day here at CBSI.
Cal Poly is typically regarded as a very hands-on university; after all, their motto is “Learn by doing,” a mindset that has lead to some very exciting and unique programs there. I’ve had the chance to work on several larger software projects in my studies, including a year-long Capstone project for a real customer company. But for all of the preparation and experience I’ve garnered at Cal Poly, I’ve still had some big surprises from my internship.
One challenge I’ve faced since day one is the incredible variety of outside elements used in the projects I’m been working on. In the first two months of my internship I’ve worked with Apache, Apache Tomcat, Solr, Hibernate, jQuery, CSS, Spring, and many other tools and technologies. Some of these I have dabbled in before, if only a little. Others I’d never even heard of, much less been trained in. But in just a few weeks’ time I’ve seen and learned more about these tools than I could ever hope to in twice as much time at school. The change of pace is nothing if not exciting.
Another surprise came in the form of the project I was assigned to. Nearly every college course I’ve taken thus far has centered on building something new from the ground up. By contrast, my project here at CBSI has me working almost exclusively on combining, repurposing, and maintaining existing software. This wasn’t entirely unexpected, but some of the realities of working on legacy code are very new to me. For one thing, it’s much easier to start using an unfamiliar technology when the code I’m working with uses that technology thoroughly; I have many excellent examples readily available to me. On the other hand, understanding my coworkers’ code and learning to interpret their unique styles is a very new experience, one I’m starting to wish I had been exposed to sooner but am grateful to have dabbled in here. The vast majority of the software life cycle is maintenance of existing projects, and these experiences are wonderful preparation for that sort of work.
The world of software is constantly changing, and as students in software-related fields we’re often reminded that, if we want to stay in the game, we will be learning in some shape or form for the rest of our careers. Now, thanks to this internship, I’ve had a meaningful glimpse of what that really means each day here. Even once we’re done with school, there will be plenty more to learn- and I wouldn’t have it any other way.