No matter what framework and processes you use, you will not benefit from them if your team has not got the right attitude.
It is mentioned in the Agile Manifesto:
Individuals and interactions over processes and tools
After years of working with teams I can really understand the importance of this statement.
You can get a team to be more productive by applying processes and removing obstacles but that can only get you to a certain level. If you want to see real improvements you need to have the right people with the right attitude.
Everything starts with how you select your team members.
The interview process.
I've always found interviews tricky. As an interviewER you have a really short period of time to understand if the candidate has got the right skills and if he/she is a good fit for the team, and also if he/she has got the right attidute and open mind to grow.
As an interviewEE you have a short period of time to convince someone else that you have the right skills, attitude and personality to join the team, all of it while keeping your nerves together.
This is the most important stage to get a great team together, or to break a great team in pieces.
But let's see what you can do as an interviewER to get the right people on board.
Test on communication skills first
Even before you ask specific questions about the programming language the candidate will use on the job, make sure he/she can clearly explain a concept or a solution to a problem.
Make sure you have pen and paper available and also a whiteboard handy, but, one thing I do is not explicitly ask the candidate to use them.
Then set a scenario, it could be a real issue you've encountered or a completely made up one.
One I used before is the clock application. It was specific to understand if the candidates had a good understanding of the MVC architecture pattern. It's pretty simple, ask them to explain how they would implement an application that shows the time and identify what would be the responsibility of the view, the model and the controller. Then spice it up a bit and ask them how they would amend it to show analog and digital time, or add an alarm system.
I suggest you spend some time thinking about possible scenarios you can use in interviews, and maybe do a dry run with your current team members, because I honestly consider the ability of communicating concepts as a vital one for development team members.
How do you keep up to date?
This is another essential question I usually ask to figure out if candidates are passionate about what they do. You want passionate people in your team. You want people interested in finding out new things, interested in mastering their art, and share their knowledge with colleagues. Ask them what was the most recent technical book they've read, or the last conference they went to, or the most recent technology other than their core one they've used, or if they keep a blog. If the candidate has no answers to any of those questions think twice before hiring them.
It is now time to go into the technical bit. I'm not a fan of multiple choice tests, I much prefer a pair programming session.
Get the candidate to pair program with a dev in your team on a real user story if possible, or make up a scenario that reflects some of the challenges you encounter while developing your product.
Involve team memebers in interviews
Take the probation period seriously
It's really simple, before the end of the probation period make sure you have a clear idea and you've gathered enough insight to make an informed decision if the candidate is or isn't a good fit.
I've seen a lot of companies feeling intimidated to make that decision. It's call PROBATION for a reason. Remember that the decision you make could drastically improve or destroy your team.