I had an interesting conversation at lunch yesterday when I met a CS professor at a local college. He’s got nearly 15 years industry experience, in addition to a decade being in academia, so exposure on both sides of the fence. During the course of the conversation I asked him what triggered the transition. His response was that he didn’t really enjoy programming.
There’s nothing wrong with that answer. I’m always jarred by it when I hear it from folks, because programming is what I love. But everyone’s different, an there is a lot more to computer science than just programming.
Over the course of the day that statement kept coming back to me, and I realized I’d heard it a lot of times in the past. The vast majority of CS profs I had during my graduate degree were in the same camp. Friends that are in CS academia, tend to lean the same way.
Art and music programs in liberal arts schools are a combination of practitioners and theorists, attempting to build a well rounded art student on both fronts. So why is CS still mostly theory in these environments?
The theory parts of CS wouldn’t have been my thing as an undergraduate either. Much like calculus being pretty boring in high school, but becoming down right compelling in my college physics classes when it was a tool to solve a problem, and not just theory that stood on it’s own. Without a body of work that’s tangible, the theory is much less relevant.
So maybe it’s time to call it something other than Computer Science. Software Engineering has the no no of the word Engineering, which doesn’t go over well at liberal arts schools. Apparently, Informatics is the monkier in much of Europe, and given the rise of data analysis, that’s probably as good an idea as anything else.
As you know, I’ve never liked the term Computer Science. It’s incredibly misleading in that the field itself tends to have more to do with idealized computers rather than actual computers, and there’s very little that’s scientific about it. Informatics strikes me as a much more accurate name for the theoretical end of CS which bears more resemblance to math than science. Software Engineering would be a fairly accurate term if practitioners actually took a more systematic approach to developing software rather than the mostly ad-hoc way its done now. The problem is coming up with a term that encompasses theory, practice, applications, systems, and all of those weird offshoots like AI and HCI. You could argue that CS has become too broad to be considered a single discipline in and of itself, but it’s very hard to disentangle the theory from the practice. Both are necessary for either to be relevant.
That said, my suspicion is that when someone says that they don’t like programming, what they probably mean is that the programming they were doing wasn’t what they expected it to be or what they wanted it to be. Maybe they had to work more with other people’s code rather than create their own. Maybe they spent much more time testing and debugging than designing and implementing. Maybe the code they were writing just wasn’t doing anything they found all that interesting. That was definitely how I felt when I left IBM to go to grad school. Ultimately it boils down to the fact that academics tend to want to deal with the world the way it ought to be while practitioners would rather deal with the world the way it is. I think it would be to the benefit of both to try to see the world from the other’s point of view.
LikeLike
I wonder if on the broadness there is just a statement that more subjects need to be pushed out of the UG space, into the graduate space. Or, like you said, actually start splitting this stuff up into different majors.
I wonder if an MFA kind of model where this is a different terminal degree for practice vs. theory would makes sense. I feel like there is an interesting seed in here about thinking of this more like art programs, especially with the Maker culture doing some nice remixing there as well.
LikeLike