Actually I liked what you called it at the bottom in your comment: Things Every Programmer Should Have Learned in Kindergarten.
One thing that I've noticed a lot, which you didn't mention there, is this: For us professional programmers it's obvious that code is there to do something useful, like getting the payroll done or encrypting some communications or whatever. But for the beginning students it seems to be that the main purpose of the code is to get it over with so they can pass the course. One can understand this attitude, of course, but on the other hand it seems like the students haven't been introduced to that concept by their instructors.
Thanks for reading the post, Paul. Yeah, I was waffling with the Kindergarten thing after I'd written and rewritten a few times. I started out mentioning things we learn in kindergarten but the analogy went away and got replaced by the teenage driver and road rules thing.
Yeah, I know it's probably too much to ask of the average student to start thinking deeply about some of those things. My son is taking a Java programming course at Ohio State this semester and he has pretty much the same kind of blase attitude about writing code. I could be totally wrong about all that stuff I wrote. Maybe I'm still just a young idealist at heart. But then again, I know there are young programmers out there who are already thinking about elegance and craftsmanship. For as long as I can remember, back to when I was learning Pascal as one of my first two languages, I already understood the concept of elegance in code. I don't know, maybe I'm just weird that way.
Thanks again for reading the post.
The best ideas are the crazy ones. If you have a crazy idea and it works, it's really valuable.—Kent Beck
Great article. If I were to add anything, I think it would be something about setting realistic expectations. Norvigs article on ten years is a great example. I myself became very frustrated with the slow pace of learning and I've seen others express the same concern. It took a long time before I realized that it's just the nature of the craft. It's difficult, and it takes a long time to learn. There are no shortcuts.
Now that I've been doing it professionally for almost ten years, I think I'm finally starting to figure out what I'm doing. Maybe in another ten I can dare to call myself an expert, but that's still a long way down the road. But I've accepted that and learned to enjoy the journey rather than focus on the destination.
"The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do." -- Ted Nelson
Thank you Junilu, I read it twice, great article. That is inspirational.
I really good remember when I saw one of your post for the very first time, that was 1.5 years ago or so, I thought, heck, such stuff should be as a mandatory module on its own right in every single programming course AND that would increase amount of higher quality code globally. If not, luckily if student ever gets a chance to pick up one of the good books such as "Clean Code" on early days after graduation ceremony, so he could get a breadcrumb to the ideology you wrote.
Excellent article Junilu! Very well worded! I really liked the analogies you used to explain, or expand, on the various topics in your article. Practically nothing better than an analogy to help relate something to real life situations, particularly as it applies to programming fundamentals. So again, excellent work, many thanks for taking the time (and showing enough concern) to feel you needed to write this article. Cheers!