I did this as my second larger project while learning programming. My solver was at the level of "Skip on invalid Sudokus" and I stopped the project when my generator was able to generate non-unique puzzles.
The thing is, a brute-force algorithm doesn't care whether your puzzle is unique, it will find a solution.
I guess, I would have had to also check whether all cells contain only one number to verify a unique solution, but if I remember correctly, my generator didn't even backtrack. I think, I just threw in random numbers that matched the constraints...