Entering college, I knew I wanted to be in computers (and computer accessories), but I wasn't sure how quite to go about it. CS engineering looked like a good pick, but it was incredibly focused (at the risk of missing out on other subjects). It was good if you wanted to do all CS, all day, no sun, but I wasn't sure that was my dish. I love CS as a subject, but I also have a habit of delving into other subjects and wanting to expand the breadth of my studies.
After some awkward concentration fairs, I found the School of Information's undergrad degree: Informatics (which was offered through LSA at the time I enrolled- it'll be in SI in the coming years). A customizable collection of classes related to information sciences. It caters to both technical and non-technical people alike and allows students to design a major that's right for them.
This was totally up my alley. It would allow me to primarily situated in CS while still taking classes about UX, technology, games, and the rest of LSA's distribution requirements. The big pitfall was (and still is, to some degree) how to describe this train of study to other people. It looks great on paper, but it's awkward to describe on the fly. I usually mention something like "a frankenstein of CS and Social Psych that lets me uh, program better". That's really not it though.
At its core, it's the study of information as it is used in our technological society. I took CS classes, but I also took a lot of non-technical courses that made how I code and what that code is used for strictly more awesome. For instance, here's a list of classes that took for major credit, enhancing my ability to create awesome, applicable, and helpful software (and probably wouldn't have taken as an engineer):
- EECS 182: Building Applications for Information Environments - This introduced me to real Python and the idea of an API. We got our hands dirty with real data from our class facebook group and made apps that actually did things. It was a wonderful introduction to the world of actual web development.
- SI 410: Ethics and Information Technology - Basically writing for the internet (wiki editing, blogging, etc). Additionally, we looked at a lot of really fascinating ethical dilemmas we face now (and that will develop in the coming years) such as: who "owns" information, is the internet a right?, should wikipedia be regulated or supported by a 3rd party? etc.
- SI 301: Models of Social Information Processing - The study of people, the networks they form, and the decisions they make. How groups of people interact, a bit of game theory, marketing, and network mechanics round out a really interesting study of society.
- SI 422: Evaluation of Systems and Services - We delved into how product and usability design can be done well and poorly, designed some products ourselves, and conducted usability evaluations of existing software in order to improve it, a hugely helpful skill when it comes to web design and user interfaces. My group analyzed Sublime Text 2 and sent them our findings (without response).
- SI 429: eCommunities - The study of groups of people online and how they form communities (and what sets those communities apart from their real life counterparts). Over the course of the semester we did an in-depth analysis of a single site recognizing how the admins (if there were any) regulated users, behavior, conventions, new members, and more. We also looked into what motivated users to contribute information without any inherent awards and designing rewards systems. My research focused on Reddit and may at some point be posted here.
- COMM 408: Technology + Play - Another UX class, this looked at what exactly "play" was and how exactly it was captured in games (particularly of the video variety, but not always). Designed (but didn't develop) large scale games and made specific, research supported design choices that directly affected the user's experience. Additionally, we partnered with the Florida Institute for Sustainable Energy to design a game tasked with teaching the general public about the dangers of monopolized power supplies in smaller districts.
- EECS 388: Computer Security - An in-depth and technical look at the security of deployed apps and systems of information transfer. We spent a lot of time evaluating existing systems (such as electronic voting machines and web applications. I probably would have taken this even in CS.
So there it is. Informatics. A major so open that people declaring don't even know what exactly they can do with it (a depressingly funny running joke in SI). My favorite part is that its openness affords students the opportunity to shape their development however they see fit. For me, I wanted to be a programmer, but better; to sling code with the slickest of shakers all the while maintaining a diverse and flexible skill set.
The trick with development is that your code doesn't exist in a vacuum, and neither does the developer. Nerds in closets programming may get the work done, but they're stuck when it comes to any other facet of their job. We need to break that stereotype and emerge and the renaissance creators of the current technical landscape.
As I near the end of my college career, I'm incredibly happy with my major. I've got plenty of what I like coupled with a thorough understanding of the ecosystem in which my code lives. I probably would have had a slightly stronger foundation in subjects like algorithmic design and pathfinding algorithms if I had gone pure CS, but I know for a fact that I (nor my code) wouldn't be nearly as well rounded. For me, it was a perfect choice and I wouldn't have it any other way.