Как найти junior-y middle программиста на вакансию?
Если нет возможности пригласить со стороны знакомого…

Я бы попросил его решить пару небольших проблем, которые вы недавно решали и на которые у вас ушло больше, скажем, часа. Не на написание кода и тестов, а на принятие архитектурных решений. Если он уложится в 10 минут и решение будет адекватным — он ваш.

Что-то по типу: есть каталог товаров (plain table), скажем, на 1 000 000 записей. За каждый товар голосуют пользователи на сайте и таблица с товарами постоянно обновляется. Как в такой схеме посчитать рейтинги, чтобы не уронить всю систему. 

Посидите, обсудите. Поспорьте. :)
Размещаете вакансию, отбор кандидатов по требованиям, так же нужно в вакансии Вы указали — наличие своих проектов ( не забывайте что это мог бы быть и просто написанный модуль, плагин, расширение для какого то движка,CMS, etc..), на собеседовании Вы открываеете или до собеседования изучаете проект(а именно код который он писал САМ), делаете заметки. На собеседовании делаете ревью кода и спрашиваете ПОЧЕМУ так сделали. Так же можно кандидатам отправить задачку (задание) которое когда то Вы сделали успешно и на собеседовании его обсудите.
А в помощь себе нагуглите Best Practice по вашим технологиям, и так же зададите вопросы по этому списку.

P.S. Вопросы по использованию технолоний тоже необходимо, а то вдруг получится так что middle, а не знает как создать (обновить) окружение для junior'а =)