Step 1: If possible, don't.
Step 2: If necessary, decompose the problem into all its conceptual parts. Students come in contact with all aspects of the problem before being given the procedure that solves it.
Step 3: Design a procedure that yields the solution, but requires the student to come in contact with the conceptual parts from Step 2.
Step 4: Give them the procedure.
My rational inequalities lesson(s) worked well this way, and I think teaching students to factor trinomials using diamond problems fulfills Step 3, but in teaching it I skipped Step 2. I did an OK-not-great job of forcing them to confront where the terms in the trinomial come from in the multiplication of binomials. Now it's too late, I think, because they're comfortable factoring trinomials and aren't really in the mood to be retaught something they already know how to do. In other words, I think the opportunity for them to just absorb why the procedure works has passed.