явление, когда берет деньги, и "разбирается", нормальное в случае постоянки: есть некая ставка, зависит от скиллов - накопленого опыта и общей сообразительности - и есть любые чаяния заказчика, которые прогер исполняет. Обычно больше ставка - исполняет быстрее - потому что скиллы. Там нормально, что он разбирается в рабочее время.
В случае же, когда дается ТЗ на фрилансе и прогер берется сделать за N часов, соглашаться, что 0.5 N ушло на изучение задачи нельзя. Однако для себя ставьте 1,5-2 N к срокам, озвучиваемым программистами и постоянно контролируйте.
Поддержка - обычно смесь 1 и 2 пунктов, некая плата за уверенность, что когда что-то нужно будет исправить, прогер не исчезнет. Она должна быть в пределах 0,25-0,5 стоимости вникания в задачу нового прогера