In most industries, beginners work on simple, short projects, using only the most basic concepts that they have learned. The experts in those industries, meanwhile, work on things that are very large, complicated, difficult to manage, and require lots of time, energy and resources. The end result is that the experts produce results that are very complicated, while beginners produce results that are very simple.
For example, take an architect. A beginning architect might design a simple house. You might look at the plan for the house and say, "it's basic, simple, easy to understand ... clearly the work of a beginner." An expert, meanwhile, designs a sky scraper, or an airport, or a sports stadium, that boggles the mind in it's complexity. You would look at the plan for the sky scraper and not even begin to comprehend it -- you truly would recognize that it must be the work of a professional and you'd admire and be intimidated by its complexity.
Yet, in programming, it's the beginners who end up creating large, complicated, unmanageable projects that require lots of resources. Instead of using only the basic concepts, they usually completely disregard them! Looking at a beginner's code, it is often amazing at how much work and complexity they forced upon their project, and how much harder they worked than they needed to. Someone might look at a 1,000 SQL statement with 5 levels of nested cursors that requires 2 1/2 hours to run and think "clearly, this is advanced, complicated stuff written by an expert! It requires a super-computer to run!"
A expert programmer, meanwhile, uses those basic, simple fundamentals to write very short, compact, clear code. That same 1,000 line SQL statement will end up being a simple 1 line SELECT. Looking at that code, one might say "that's it? Seems too simple ... it runs in only a few seconds ... clearly, it was written by a beginner!"
Programming is kind of backwards compared to lots of professions, isn't it?
see also: