I started several hours ago by reading Email = Efail at CodingHorror. The point of the article, and the ones to which it links is that email doesn’t scale. One email is trivial to deal with, like a pebble. 1000 emails in a day later, the pebbles have turned into an avalanche. Also, emails are one to one, no one else benefits from the work put into them. Thus it is better to have the conversation in a public place, where others can benefit. Examples of better media are: blogs, twitter, and wikis.
As I was reading the first post, I started ctrl-clicking every link that seemed interesting. It took quite a while for me to explore the tree. Effectively I was doing a breadth-first search. I was being exposed to a lot of thoughts I hadn’t seen before. Toward the end I came across Portrait of a N00b by Steve Yegge. He explains that immature programmers frequently feel the need to explain every state of the program with comments. As they mature, they are able to keep track of more details and let the code speak for itself. I don’t know where I am in the process, but I definitely appreciate clear code over verbose comments.
Update: Note to self, never make a blog post before finishing the referenced article. I guess I have to reserve judgment on Steve’s comments about Java. I’ll be working with more dynamic languages once I start at Facebook. The first code I worked with at my last job was C++ and didn’t have comments. However, it wasn’t well engineered. There was copious repetition of code, and refactoring was a dirty word. The Unit tests that Steve maligns would have made it much easier to modify behavior. The second code base I worked on was Java and quite legacy. It had more comments, but again refactoring was rare. I think its biggest problem was feature bloat, without worrying about the best architecture to handle all the features. I hope to do some side projects soon with django wh ich is based on Python, so maybe I’ll have more to report.