Great article in The Journal of Defense Software Engineering written by 2 NYU PhD’s. Found it via subscription to Joel on Software, here.
I received a B.A. in Computer Science from Lehman College, a member of CUNY (City University of New York). When I first declared my major and started, computer programming courses were taught in C++, but by the time I graduated, they were taught in Java. I chose the B.A. in Computer Science, with a minor in Computer Applications, because I could graduate a semester earlier :-). I’m happy I did, the minor allowed me to take classes in UNIX and COBOL, both of which I needed for my day job at the time.
Its been a while since I graduated, so let’s see what classes I took for my major/minor:
- Math: Calculus I, II, Intermediate Calculus I, Linear Algebra, Discrete Math
- CIS: Computer Information Systems, COBOL, Practical UNIX: Programming & Systems
- Computer Science: Programming Methods I, Programming Methods II, Computer Organization & Assembly Language, Data Structures & Algorithms I, Operating Systems, Networks, Independent Study
I feel as though I got a good grounding in Computer Science. Here are classes, some of which were not offered at Lehman, that I think I could have taken in addition: Programming Languages, Lisp
I have long considered going back to school for an MS in Computer Science, but my computer programmer/software engineer/engineering lead jobs never specifically required me too, there were other things to do (relationships, hobbies, family, etc), and I never got back to it. I have also thought about taking an MBA, which I think would be good for some practical learning towards running my own business.
A question for the Interweb: Has my B.A. in Computer Science, and lack of M.S. in the same, caused me to program in an inferior fashion? I have worked alongside hundreds of professionals, many with MS degrees, some with PhDs. A lot of them approached projects a bit differently, and the PhDs certainly liked to talk about how they approached it quite a bit :-), but I haven’t seen my output to be drastically different. Through my career, I’ve found the need to program in C, C++, Java, Python, PHP, C#, Perl, and ksh/bash. I am comfortable with procedural and object oriented languages, but do not have much experience with functional programming. Where would I see the cracks in my academic learning, out here in the wild?
Update (January 9th, 7:00pm EST): Slashdot has picked up this story as well, some interesting commentary here.









1 user commented in " Where are the Software Engineers of tomorrow? "
Follow-up comment rss or Leave a TrackbackI remember reading that Slashdot post, thinking the author of the linked article was a pretentious snob who knew nothing about modern software development.
There may have been a time where if you didn’t know how to manually move memory between registers you weren’t a good programmer, but that was a good 20 years ago now. Unless you want to write programming languages themselves, and save for C# I can’t think of an example of a how that would be worth the effort, a conceptual understanding of what the computer is doing is sufficient.
I wrote for 3 years using almost exclusively JavaScript for the front-end, and produced powerful software used in large manufacturing facilities around the world. I was so far abstracted from what the CPU was actually doing, that the computer itself was only a consideration if the user had turned scripting off in their browser.
I’ll concede that there is a segment of the profession that needs to spend 4 years studying the low-level activities of a microprocessor, but I would tend to think those folks are more on the hardware side of Computer Science. And in my experience, those folks shouldn’t be writing software for end-users anyway…
/end rant
Leave A Reply