Coming from a programming background, I love OpenSCAD. It's just simple enough that I think I can easily do what I want, and powerful enough that I can do anything with it.
Unfortunately it's usually more difficult than I expected, and when you start using nested loops to define polyhedron vertices, you should probably be using other software.
The main thing I love about it is the ability to define global constants that can be changed later. If done correctly, you can design a part first and take measurements later.