"have been working" vs. "have worked"

Solution 1:

During my English course I was told that the present perfect tense and the present perfect continuous tense can be used interchangeably in many situations, and it appears to be one of them. However, there is a subtle difference: #1 focuses more on the very activity of working, whereas #2 concentrates on the state (i.e. a job). Therefore, it would probably be more justified to use #1 when talking about a person who carries the same task on and on, endlessly (the Danaides? Sisyphus?); and #2 is somewhat closer to "I have been employed here for 20 years." Still, I am not a native speaker of English ang my arguments may prove wrong.

Solution 2:

In this case, the two cases mean exactly the same thing, although maybe with slightly different nuances.

English can be quite tricky when it comes to deciding between tenses such as the pair you mentioned. Often it is a case of convention and using the wrong one will make you come across as a non-native speaker.

As a native speaker, I'll probably tend to say "I've been working here for 20 years".

Solution 3:

Both sentences communicate the facts that you started working here twenty years ago, worked here over the course of the past twenty years, and that your status of working here has not changed.

The difference is one of emphasis.

The lyrics from the old song,

I've been working on the railroad all the live-long day.

emphasizes the continuity and ongoingness of this work. If the song lyrics were

I have worked on the railroad all the live-long day.

then the same material facts would be presented: the speaker started working on the railroad at the beginning of the live-long day and continues to do so now. But the first construction emphasizes the enduring nature of the work does not.