Design for development is an approach that puts communities at the heart of problem-solving and takes a systems view of solutions to create options that meet community and institutional needs. It focuses on introducing yourself and using local facilitators, speaking the local language, and respecting cultural context. Key principles include observing the community's context, not making assumptions without testing them, creating solutions with the community, and learning from community members. It also stresses being prepared by meeting communities where they are, having a plan B, and remaining flexible while respecting people's time.