Who can be regarded as a good team member?
It's incredibly hard to determine exactly what a single individual needs to do in order to be a team player. There are some characteristics, but a person can be a total flop on one team, and a valuable asset to another. The study of topics such as social psychology, organizational behavior, management, and leadership all lead to an understanding of team dynamics. There's a huge wealth of knowledge in various research as to how to build and maintain teams.
I think that the team is the best judge of who would be best for that team. Every place I've ever interviewed, I've always interviewed with a number of members of the team. Perhaps not the entire team, but usually the team leader/manager, the team's technical lead, and at least one engineer, in addition to HR and the hiring manager.
The short answer would be that a good team member is someone who can fill the current needs of the team, technically and personally.
Which qualities of a developer can be regarded as good points regarding to work in a team?
It depends on the team and what the team needs. Different teams have different needs, so there's no singular answer here. Generally, a developer (or anyone on a team) should probably be high in the Big Five's agreeableness, conscientiousness, and extraversion traits. Flexibility, adaptability, and openness to new ideas and concepts would also help, regardless of your job and role on the team.
The specific knowledge and experience of the individual would probably be more useful in determining what capacity they can serve on the team.
Also how can a developer improve his/her team-working skills (or attributes, if you will)?
First, understanding your personal attributes would be a good start. I've seen the Big Five Personality Traits as well as Myers-Briggs Type Indicators used. Neither is that great - your current temporary state can have a drastic impact on the results. But taking various surveys over a period of time would probably help understand where you are now on a personal level, and then identifying traits that might be undesirable on a team and working toward correcting those traits. However, it's a long-term process that might not even be possible for everyone.
Second, it's also important to understand your technical knowledge. You need to know what you can bring in terms of functional roles to the team. This could be ability to work with requirements, system design and architecture, implementation using a specific language and/or framework, debugging and testing, and so on. Knowing what you like to do and what you are good at can help you advertise yourself to teams more effectively and know what roles you would be most suited for.
Team dynamics, like I mentioned above, is a huge area for research in a number of fields. Below is just a brief summary of what I can dig up quickly.
According to my organizational behavior textbook, team effectiveness can be determined based on four factors. These factors are context, composition, work design, and process. Your question seems to focus on the composition of the team, which is how the team should be staffed. The four components of team composition are abilities of team members, personalities, role allocation, diversity, team size, member flexibility, and member preferences.
A team needs a balance of three different skill types - technical, problem-solving/decision-making, and interpersonal. You want to make sure that your team has the appropriate balance of all of these. A team, on day one, doesn't need all of these. For example, you might not need technical skills until it's time to implement a solution. Depending on the type of problem(s) that the team is trying to solve or goals that the team is trying to reach, you'll need a different mix of these skill types.
In terms of individual personality traits, the Big Five Personality Traits are frequently used to identify people who have the greatest potential to be team players. Teams that are, across all of the members, high in extraversion, agreeableness, conscientiousness, openness to experience, and emotional stability tend to perform better. It's also been found that mixing a wide variance (for example, having some members who are extremely introverted and some who are extremely extraverted) across any of the traits tends to decrease performance. Some key traits that can affect the whole team are agreeableness, conscientiousness, and extraversion - a person who is extremely low on agreeableness, low on conscientiousness, or introverted can easily bring a team down.
Nine key roles in a team have been identified - linker (coordination, integration), creator (initiates ideas), promoter (champions ideas), assessor (analysis of options), organizer (creates structure), producer (direction and follow-through), controller (details, rules), maintainer (external battles), and adviser (information search). Some people fill multiple roles, and some people might fall into a single role. However, on a team, each of these roles is probably going to be filled by someone. It's a good idea when building or maintaining a team to make sure that there's someone who can step into each of these roles.
Enhancing diversity among members (in terms of personality, gender, age, educational, specializations, experience) leads to increasing the chances of providing the team with the skills and personalities that are needed to complete the job in an effective manner. This increase in diversity also increases the possibilities for conflict within the team as the members begin to go through the stages of group development. A group with less diversity will probably go through the stages quicker and with less conflict, but will also be less likely to have the needed team composition to do as good of a job.
The ideal team size has been identified to be between 7 and 9 people. This size range allows for the necessary diversity in personality and skills, but is a number small enough to enable communication and management. Effective coordination is important to get the job done, and 10 people is about the limit for effective coordination and communication between management and the group and within the group itself.
A team that is flexible, such that members can complete each others tasks, perform well. This reduced reliability on individuals. The members, at the start of the project, might not be cross-trained, but including people who are adaptable and open to training to develop new skills makes building a team easier. Flexibility allows a team to maintain performance over time.
Not everyone wants to work in a team. Some people prefer working individually, and forcing those people onto a team isn't the best option for the team. Having dissatisfied people on the team will hurt team morale and performance.