the right and wrong reasons to study computers
Over at The Chronicle of Higher Ed, think tank policy director Kevin Carey says that studying computer science makes you more inquisitive, improves your logic, makes you a better writer, combats receding hair lines, and depending on your gender, either makes your penis bigger, or increases your bust size by a full cup. All right, some of the perks of computer science courses might’ve been made up, but I think that if Carey’s article had a higher word limit, he could well have brought them up in his advertorial. And that’s exactly what it was: a very urgent advertorial to nudge humanities majors into trying a few programming classes while telling them it will make them better rhetoricians and hinting at how much the U.S. wants to encourage STEM grads. But if you really want to answer Carey’s call and dive into computer science classes, hoping to improve your rhetorical and writing skills, I hate to be the bearer of bad news, but you’re being oversold on what programming will do for you by a person whose very limited exposure to the realm of computer science very clearly shows.
Now, don’t get me wrong. As someone who grew up around computers and spent his working life in IT, I can certainly appreciate the tender sentiments Carey puts forward. However, the aforementioned experience also lets me know that simply taking a few programming classes will not necessarily bestow great analytical skills on you. In fact, those analytical skills are a prerequisite for doing well in computer science. If you can’t look at an elaborate and complex process, break it down into its discrete components, then identify a proper design pattern to make all these components work together properly, programming will become exponentially harder with each class. This is what most computer science programs are designed to do. You start off being spoon fed what to do and how, then each level requires more and more independent decision-making until you have to start building everything from scratch. Along the way, you’re going to be bombarded by a whole lot of math, and if math isn’t your strong suit, you’re going to end up in a world of hurt by the 300 level classes focused on implementing constructs from discrete mathematics into functional code. Sure, you’ll get to have some fun in tinkering with neat little code snippets and small apps, but computer science is so much more than that.
Even worse is that Carey represents his experiments with creating scripts as a stepping stone to better verbal skills which will ultimately make you a better writer. Again, from personal experience, I can tell you that being a good writer and being a good programmer are two different, unrelated skills. In fact, many programmers have problems communicating exactly what it is they’ve built and how they’ve built it because they know it inside out and it’s just so intuitive to them, they sometimes fail to realize that not everyone followed their logic. There are even specialists in the IT field whose primary job is talking to users and programmers, then translating what each said to the other. Having done this job, I can tell you that you effectively have to become bi-lingual to do it and has nothing to do with unfolding a narrative within a certain word limit. I learned how to write by practicing my logical skills in merciless online debates, and writing for BusinessWeek with real editors who took a very critical eye to my work and gave me a lot of tips and suggestions for improvement. That’s how you’ll become a better writer and debater. By practicing writing and debating again and again, not by writing tidy code snippets for your statistics package, then saying that writing is kind of like coding but in a different language.
Lastly, and very importantly, the idea that knowing how to code will land you a job is being revised, so while a lot of people are talking about a shortage of computer science grads and how to encourage more students to take on the challenges of STEM disciplines, few of them are talking about a decrease in coding jobs. If you’re familiar with the latest and greatest tools, you have a decent shot. If you understand architecture and design, you have a great shot. But if you’ve just taken some programming classes and want to get out there and code for a living, you may be out of luck since coding jobs are increasingly being automated and outsourced. They are out there, and they are needed, but over the next few years, they will decline. The odds of you landing in a Silicon Valley startup are very slim if you don’t already live there and know some people, and the odds of you starting another Facebook or Twitter are less than of being hit by lightning twice in the same day. Just as with any other job, you have to go into the computer science field with realistic expectations, not praises sung to it by someone on the outside promising that computer science will do something for you when it actually can’t, and telling you that you’ll learn skills that are actually prerequisites for the study and work involved.
With all that said, I’m really not trying to discourage anyone from trying computer science classes. Yes, by any and all means, try coding for yourself. Take some programming classes and see what you can do. But don’t expect the entire computer realm to rotate around coding because quite a bit of it is conceptual mathematics, and don’t do it because you expect to become a great logician, or a terrific philosopher, or a superb debater in your humanities program. Try it because you want to learn how computing really works. Try it because you’re interested in challenging yourself. Try it because you have a mindset for it. Try it to discover if you have hidden talents to be a great software architect, or an exceptional developer. Don’t try it just because you’re being sold a bill of goods based on the advice of someone who never worked in IT and who blatantly says that computer science classes and their demands infringed on his partying and humanities were so much easier.