You become a serious programmer by going through a stage where you are fully aware of the degree to which you know the specification, meaning both the explicit and the tacit specification of your language and of your problem. "Hey, it works most of the time" is the very antithesis of a serious programmer, and certain languages can only support code like that.