Gravity Forms is a great way to build all sorts of forms in WordPress. It can be so simple that non-programmers can easily build their own basic forms. It's also incredibly flexible so programmers can extend it in myriad ways, even by adding some complex custom fields of their own. But as usual, there's a trade-off -- ease of use for non-programmers means lots of hoops to jump for programmers. Here's an overview of how I built some fairly complex compound fields for a custom application using Gravity Forms.