I've been a developer for a while. I'm far from the best out there. (As I sit by myself in this room, I wonder if I'm even the best in here.) However, I've come to understand my tools, and I've come to trust in my ability to reason and learn.
When starting a new job, I always believe that I can learn the codebase if it's a language I know. If it's not a language or framework that I know, I believe that I can grasp the concepts enough to learn it (and just read the documentation). This is a part of our skillset as programmers and I'm proud that I can live up to this standard.
For all of this, though - one of my major weaknesses is learning and internalizing business rules for the client I'm working for in a quick way - whether I'm a paid employee or a contractor. I'm fine with codebases, but business rules and processes for a specific business always seem to take me a while to fully understand. (As an example, this can be a tripup when rewriting enterprise applications.)
As a developer, what is the best way to assimilate business rules and processes quickly and efficiently? Is it possible without being a subject matter expert or simply having years of experience with the client, company, or business?