Hacker News new | past | comments | ask | show | jobs | submit login

> It seems like the important stuff that differentiates the expert from someone with casual knowledge isn't documented.

It isn't documented because it can't. The difference between an expert and a novice is that an expert has been exposed to and working with a particular subject for so long that there are higher level abstractions that have become "chunked" or "codified" in their mind such that they look at the problem differently than novice people.

Example

`for(int i = 0; i <= list.length; i++) { ... }`

A novice will see this and after parsing the pieces can tell you that this takes a counter i and does an action until i is the length of the list.

A more experienced person will see this as a for loop iterating through a list.

An even more experienced person may intuitively map this to the need of the program to operate on a list data structure and begin to immediately start asking why we didn't use a more functional approach, what effect will this have on the program when my list has 0 items, is there a way I can simplfy this code? Etc

The expert knows this not because he has read it in a book or because he followed design docs, he knows because he has practiced 10,000 hours, which includes doing something evaluating what went well, what did not, what could be improved, looking for new knowledge and new ways to do things.

In contrast too the man who has practiced 1 hours 10,000 times that has mindlessly written this block of code and continues to repeat this abstraction because this is his go to and familiar tool.




What about the one who shall notice an off-by-one error?


First thing I noticed too. I’m afraid you’re now the security expert.. ;)


Or just that senior engineer who knows better than to allow a for loop to pass code review!


A for loop, is a better construct than a map or more complicated language features because of the fact that its stupidly easy to understand.

Im not saying maps and other functional paradigms are hard to understand, just that is more complicated than a for loop and confuses people far more.

This simplicity of a for loop is worth far far more than the saving of 2-3 lines of code and some abstract idea of elegance.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: