You want developers to share a high level of understanding about your project in non-technical terms and share your goals.
Development is not just about the code. It's about the user experience. A good CiviCRM developer will understand user personas, user journeys and will be able to advise you on how to make you project work for your staff and your clients.
A good CiviCRM developer will provide a test environment for your project and it should be clearly documented. Xpdient does all this, and we provide training needs alnalysis and on-site training if the project requires it.
CRM projects are much more likely to succeed if they are supported by organisational leaders.
Projects fail when they do not engage with the people using the CRM. CRM users should be involved in the planning, development and testing phase of your CRM..
Context is everything. "We want to get more members by making the joining process easier" is much better tha "Can you add this field here, that field there and that button there". Your CiviCRM developer will probably have done this sort of work many times before and can give you really good advice on what works.
Free software like CiviCRM is not really free because you have to factor in lots of othet costs.