From: Scott Rubin Date: 2004-06-10T03:23:43+09:00 Subject: Re: Unit tests ... not just for the young Hi, I'm current a college student in the US who almost has a BS in computer science. At the school I go to we have a co-op program. What this means is that before you graduate you must work in the industry for your degree for a total of 40 weeks. Currently I am working on co-op at a small firm writing some software in ruby for an embedded linux machine. From what I have seen of other students in my major I can tell you, many of them are just as useless as you say. I have friends, who are good people, but they have no passion for making software. For whatever reason they became CS majors and they get passing grades. They learn everything that is taught to them in class, but that is the only experience they have. The school does not require prior programming experience to get in the program. So what you get coming out of college are 75% of the degrees signifying a complete mastery of java and a basic understanding of low level programming theory. The other 25% of the students are like me who actually care about software. We do software in our spare time and not just for class. We learn things not taught in the classroom. Most of us do Linux and other OSS stuff. I can safely say that every day I see another one of those 75% of students fail to get hired or getting replaced by outsourcing. At the same time I see us in the other 25% getting jobs and moving on with life. The resumes from the 75% are all the same, because they all took the same classes and learned teh same stuff. The resumes of the rest are varied and specialized depending on their interests. Some like language theory, some like embedded stuff, some like large database stuff. There are good programmers coming out of college, just most of them suck because they aren't coders at heart. It just happened to be the major they picked. Concerning unit testing I can say this. While I can understand all the reasons to not do unit testing, and there are many, it is sometimes useful. Primarily I usually perform unit tests in heavily object oriented programs and not in others. If I am writing an object oriented programming it takes me all of a few minutes to write a main that creates multiple instances of a class and calls all of the member functions with a variety of inputs. Just doing this simple thing lets me know right away if a class is working properly or not. Many times I have had projects work on the first "real" try because I unit tested all the components first. However, when doing less object oriented programming it is often more difficult to do unit tests for the reasons above having to do with blocking out code and such. What is important is that you do test your code and that you do it in the most efficient way for you. I thought this was an interesting thread and just had to say my piece :) -Scott