I agree that the instructions could use an overhaul - maybe one of the volunteers around here will take care of it.
I'm not here to convince you (or anyone else) to take the Cattle Drive. I am here because I took the Cattle Drive and found it to be very helpful - it taught me many things that I did not learn at university. So I stuck around, hoping to help other people who may want to learn what the Cattle Drive has to teach.
I'm not sure if you are asking whether the Cattle Drive will help you pass the SCJP 5.0 exam - I can't say, because I haven't taken it. I can only share with you what I have learned from it.
1) Writing readable code.
I learned more about writing good code from the lessons in the cattle drive than any books or courses. The lessons are applicable to other languages (I code in a different language at work). There are books that are fabulous that teach these things:
Clean Code (Robert Martin)
Implementation
Patterns (Kent Beck)
The Pragmatic Programmer (Thomas/Hunt).
But I don't know if I could have learned from the books the way I learned from the Cattle Drive without having taken it first.
2) Humility.
I learned more here than any other place that there is always another way of approaching a problem - there is always a different solution, and it might be better than the one I came up with. Even when I thought I had coded a masterpiece the nitpickers had something to say. And they were right - every time
This is a lesson that I apply every day in my work. Only yesterday, I had a tangled piece of legacy code that I had to extend. I took the core idea of the code, wrote some
unit tests, and tried to extend the idea. I think I spent 4 hours digging a deeper hole before I realized that a different approach might be better. After that it only took about an hour and a half until I had a working prototype.
I also learned a few things about optimization, and a thing or two about conforming to the standards set by a group - not because they are the best standards, but because they are the ones that the group has chosen. I place my braces one place here - a different place at work. I don't have a very passionate view about where they go, but I certainly appreciate the uniformity, no matter where I am.
3) The idea of refactoring.
While the Cattle Drive doesn't teach you to refactor in the sense that you change the structure of the code without changing the behavior in a controlled manner (with automated tests and small steps), the Cattle Drive does teach you to look at your code and see that this here is similar to that there, that if you move this over here then the flow of the code becomes easier to follow, that if you change the name of this variable, then the reader isn't guessing what you mean anymore, and once you do that, you suddenly see something that allows you to simplify the whole thing. If anything, I learned that the number of times I submitted something before it passed was irrelevant. The code went back and forth, and each time, a layer of crud was taken off, and something more beautiful emerged. Each layer exposed something new in the code - and each time I learned something else.
In college, I never got feedback on my code. If it ran, it passed. Heck - I know some people in my classes that submitted code that barely compiled, much less ran correctly, and their code passed. So I learned whatever I could figure out on my own. The problem being that I didn't know what I might have misunderstood or just plain missed. I didn't know what I didn't know. Here, I could be certain that I would be led to an understanding based on where I was right at that moment.
Katrina