Hacking Around and Drinking Coffee: My Internship at SMA

Me, a computer science major, stuck in the figurative barracks of electrical engineering? With the dudes who think a C array is the ultimate data structure for e-v-e-r-y-t-h-i-n-g? I have to admit it: That was the very thought that went through my mind at the beginning, and, to be honest, SMA AG was nowhere near my radar as a place for computer science majors to do an internship until the spring of 2012 came.

A Lecture Provides Me With a New Destination

Everything changed after I attended a lecture on functional programming. The lecturer happened to come from SMA, and the whole thing somehow ended up with me taking a guided tour and attending a couple of presentations regarding computer science at the company. And man, was I in for a surprise: It turned out that computer science was used all throughout SMA.
“Ah heck, why not?” I thought to myself, “just send an application and see what happens.” Next thing you know, I’m about to start my internship at the company in October 😉
SMA has all kinds of developments going on everywhere at the same time, and pretty much every programming language and paradigm out there is being used somewhere.

Sure, you’ll run into traditional languages such as C, which we use mostly to program microprocessors, and C++, which we use for backend code (e.g., in our Sunny Home Manager), but more modern languages, such as Java and C#, have just as big a presence at SMA.

Duties And Spare Time During My Internship
Meeting with SMA collaegues

Meeting with collaegues

As an intern, I worked on analyzing operating data and was involved in developing a few backend components for the Sunny Home Manager.
I got to work in an open plan office with a handful of other students, some of whom even came from far-away countries.
About once a month, there’s a student meet-up to which all students are invited so that they can get to know each other better. I myself went to a few. One of them had an awesome urban scavenger hunt. And we went bowling and then to the Christmas market at another one (the one with the currywurst that was way too hot).
Enough with the fun and games though – let’s get back to the actual internship. I had two reasonably sized monitors available for my work, and I was allowed to install and customize my own developer system – a Linux distro in a virtual machine – as I wanted. Of course, if that sounds like too much work, there are also VMs that are all configured and ready to go, but where’s the fun in that?
I was also given a similar amount of freedom when it came to my development duties: If I was waiting for my code to compile or I started hitting a brick wall during debugging, it was cool. I could take a little break to drink some coffee and chat a bit with my colleagues. Ah, yes, coffee. There’s plenty to go around at SMA, and man, it’s good. Truth be told, there’s nothing a computer science major needs more than the old cup of joe to jump back in the debugging saddle.

The bottom line:

In short: It was sweet! In addition to the really nice colleagues and extremely comfortable environment, I was able to really hone my C++ skills and apply a lot of “theory” from my studies in real life for once.

With “theory,” I mean subjects such as discrete mathematics (graph theory and stochastic systems), software engineering (design patterns), and linear algebra. When it comes down to it, there are a bunch of things here that are really worth discovering, and doing an internship is a great way to do so.