After reading Jeff Smith’s Programming is a funny thing article I felt the need to comment.
As a strong advocate about simplicity I was according to the fact that “experts” writes clearer code then beginners. But I think Jeff missed the point when he said that in the software industry, beginners gets all the hard and big projects. They make it hard by their selves. For years software developers have been solving similar problems over and over. That’s why we end up with design patterns, frameworks, libraries, etc. But to be selective with all those tools, you have to know them. Software “experts” know them because they’ve been around for a while, so they know that for this kind of problem you do this kind of thing, and whoop! You’ve just divided your project in half the complexity and time and LOC and … Fred Brooks mentioned in his famous No Silver Bullet article (published in 1987) that all low-level problems had already been solved.
Sure knowledge is not everything. You could still have someone with 20 years of experience under his belt, knowing all about everything, but unable to select the correct solution for a given problem. You need to be good at synthesizing all that knowledge too.
I think I can sum this up like this: you’re not an expert when you can solve a problem, but when you can choose the best solution to that problem.
(I would have loved to put a nice analogy with some other industry, but yeah! I only work in the software one)