Is there any word (noun?) for a person who is not bad at doing something, yet not too good?
Journeyman - An experienced and competent but undistinguished worker.
Initially I provided adjectives (included below), apologies for not properly reading the question.
Competent - acceptable and satisfactory, though not outstanding.
If being "above average" is not a requirement, you might also consider mediocre.
Mediocre - of only moderate quality; not very good
relating to or having the knowledge or skill of someone who is more advanced than a beginner but not yet an expert
Someone who is capable of performing a task (or a relevant set of tasks depending on context), is categorized as able: having inherent physical or mental ability or capacity.
A more formal/ technical expression could be competent (to do something/ at doing something).
Neither of the above necessarily imply a above-average capability, while at the same time assuring of no deficiency either. He is (just about) able to do it now after 3 weeks' practice.
An above-average person? Beleive it or not, the term "novice" would suffice.
- A person new to a field or activity; a beginner.
- A person who has entered a religious order but has not yet taken final vows. Also called novitiate.
You wouldn't think, by those definitions, that such a word could mean "not bad, but not good", but you have to read between the lines a bit to get the reasoning for it. Despite a "novice" being very new to an activity, they are still considered a part of the group that does such an acitivity regularly. Their skill level is low, but good enough that they can complete the task.
This is also why the terms rookie and amateur would work - despite the definition referring to them as "new" to the practice, there is an underlying sense that they can still perform the task, if not at a more experienced level.