Vou falar da experiência, mas tenha em mente que todos são diferentes. Essas coisas não são universais.
Uma coisa é deixá-lo ir pessoalmente. Esse projeto é algo com o qual você viveu e viveu por 18 meses - você naturalmente gostaria que todas as mudanças fossem como você faria. Dê um buffer para um colega cometer erros e aprender. Crie uma sala para eles serem úteis. E lembre-se de que isso pode não acontecer imediatamente. Além disso, seria ótimo se houver algo, parte do código que eles possam sentir que conseguem melhorar ou criar, que pareça um sucesso em um curto período de tempo. Paciência e tolerância têm uma boa taxa de retorno aqui. Não tente microgerenciar, e se você quer criticar, dizer "você está errado", certifique-se de ter um mérito, você pode provar isso, não é uma luta "religiosa".
Outra questão importante é encontrar a pessoa certa para você. Idealmente, é melhor encontrar alguém mais inteligente que você. É subjetivo e relativo, mas se você sente que uma pessoa tem algum conhecimento e habilidades que não possui, é o melhor. Será uma colaboração mutuamente gratificante.
Há duas maneiras: o colega será uma chatice e você acabará refazendo o que fez ou as habilidades de dois se multiplicarão, e não apenas se somarão, e você realmente gostará de trabalhar juntos.
Em um tópico de "código limpo, rápido e reutilizável" - sugiro que em uma entrevista peça para escrever um pequeno micro-kernel / gerenciador de serviços e / ou executor de tarefas. Veja como os componentes conectáveis são especificados e configurados. Não precisa ser finalizado, é um pensamento que conta. E você também aprenderá rapidamente que as pessoas que sabem como fazê-lo vão querer dinheiro decente ;-) Boa sorte!