I usually start with a solved puzzle and move my way backwards trying to add layers of steps and complexity. The puzzles doesn't need to be exactly difficult or smart either, you only need to make the player feel like they are solving a puzzle and not actually the frustration of solving it.