I went through this a few years ago, teaching myself different modelling basics. There are lots of different ways of thinking about 3D geometry, which results in lots of different kinds of modelling software. Generally, the “best” approach depends on what kind of object you’re making. That said, here are a few programs I like, and why. I wouldn’t say any of these are the ideal starting platform–but suggestions for your desire to jump into the deep end:
Coming from more of a programming background, you should check out OpenSCAD. It’s a very different experience from most modelling, in that you’re basically using a markup language to describe a 3D object in the terms of operations (union, intersection, difference, etc.) between different primitives. For 3D printing, it has some real advantages, in that the modelling approach it uses – constructive solid geometry – generally results in “solid,” well-formed objects that can be 3D printed. It’s also great in that it makes parametric design very easy. That is, you could design a pencil box where the length of the box can be controlled by a single variable, but where all the other geometry changes in the result. And it’s free, which is good because most CSG-style modelling software is very expensive.
If you just want to jump right into the deep end, though, both in cost and in complexity, my recommendations would be Rhino and ZBrush.
Rhino is a very traditional “NURBS” surface modeler, which means that the objects you create are modelled as individual surfaces, but not necessarily polygon surfaces. They can be curved or more flowing than you would otherwise suggest. With Rhino, as with most modelling software, you need to be careful to make sure that the model you are creating is physically possible before you try to print it. What I mean is that Rhino will let you create an object that is nothing more than a single open surface–but that has no volume or substance, and so can’t be 3D printed. Instead, you have to make sure that your surfaces all come together so that the object you are designing as a definite inside and outside, and thus a volume. Rhino has tools to help you with this, but you can run into some sticky problems.
ZBrush is an altogether different kind of 3D modelling. Rhino, and most other modelers, do a great job helping you create very precise “hard” objects with crisp lines and smooth surfaces. But they don’t necessarily make it easy, at all, to work with more organic shapes or to interact with the model very intuitively. ZBrush can be a (very) difficult program to learn, because the UI is bizarre, but it provides an incredible interface that lets you model 3D objects like you were working with clay or wax. It’s a great way to do anything sculptural, and it’s a great deal of fun. ZBrush is also great for using with the Form 1 because it has an extremely powerful tool for “shelling,” or hollowing out, even complicated geometry, such as from a 3D scan.
One last bit of advice–pick something you want to make in order to learn the tools. I found it very easy to sit in front of ZBrush or Rhino and just “doodle,” creating lots of cool and interesting shapes. But just doing that didn’t force me to think about how to use_ _the tools to express a design already in my head. So I found it very helpful to find a picture of something I wanted to model and then try to make a 3D model that looked just like that. It really forces you to understand the tool at a deeper level.