in reply to
(OT?) Usefulness of CS
I studied for an English Degree but I work as a computer consultant because the current model of studying English is abhorrent and the modern field of literary criticism is worthless to prose writing. Frankly, I would venture that the majority of good authors didn't spend time in academia studying literature. ‘Oh yes, the use of the moon in this piece shows a tie back the Freudian notion of wish fulfillment, which ties back to blah blah blah….”.
The best writers are not in their Ivory Towers studying literature; they're out living the life they're going to write (Hemingway, Jack London, etc). This does relate to programming, that the people we really emulate are those who actually put their skills to work (Larry Wall, Merlyn, et al).
Programming adds another angle though. There is more need for architectural skills and a deep understanding of the underlying concepts to move into the advanced fields of the computer industry. Being able to write little scripts and "quick and dirty" programs will get you to a point. There will come a point though where you will be at a crossroads in your career, and you must decide to move into more deeply technical matters, or start honing your business skills, and hiring someone else to deal with the deep technical matters. A fundamental understanding of the structures, constructs, and concepts that make up the field in which you are working is vitally important if you want to move into the deep technical matter.
It's only when you begin to understand that your code begins to take on a quality of elegance.
To take one step further, the concepts of Computer Science are available as technical jargon shortening communication with peers. If you have two peers educated in Computer Science together discussing an issue, and one says 'I was originally going to represent this as a linked list, but realized I needed to track both ends so I used a circular linked list instead' the other will understand the concepts involved.
To go one step further, remember that Computer Science is a SCIENCE. Think of chemistry. There were chemists and physicists who were able to accurately theorize elements that would show up on the Elemental Table before they were discovered. And a Chemist may not be able to create a certain product X even if he tries all day long, but he is accurately able to predict that X will help him synthesize Y. His inability to produce X does not devalue his work, because it's the theoretical that he's dealing with.
Computer Science is about the theory of why creating a binary tree is important, how it should operate, what features it should exhibit, and what limitations it should abide by. Without this theoretical knowledge, we would not be where we are today, with tools like Perl, etc.
Anybody can follow a procedure and mix chemical X with Y and that doesn't make them a chemist.
Many of the nodes in this discussion so far have made a point to say ‘No, because I’ve met Computer Science majors who can’t program their way out of a paper bag.’ But this shouldn’t be taken as an indication of Computer Science as a whole. That phenomenon is not endemic to Computer Science, but throughout all fields of human endeavor, especially those that value and trade in theory.
And that’s perhaps the issue that we all have to deal with. You take an 18 year old child straight from High School, stick them in the Ivory Tower with the other sheltered academics to learn rote theory, and then thrust them into the business world where your manager with an MBA and Microsoft Project fixation is not going to care if you use a merge sort, bubble sort, or quick sort. We (and even I am guilty of this sometimes) then mock these people for their inability to adjust. Maybe we would be better suited if we returned to the notion of Apprentice, Journeyman, and Master Programmer, and that you can only go get your computer science degree after a few years of appreciable real-world experience, and tutelage at the feet of someone wiser and more experienced.
whew. That was quite a bit to come out all at once. And I should note that I am just starting in my long path towards getting an eventual Computer Science degree.
I would suggest to those who scoff at Computer Science and deride it’s value should invest in a copy of ‘Programming Pearls’ and read it cover to cover several times.