I have always respected the attorneys that draft and negotiate commercial agreements. In the last while, I've been doing a bunch of that myself and so have increased my understanding of the joy and difficulties they face.
The basics of the job include working with one or more groups of other attorneys from other companies to negotiate and draft an agreement to reflect the terms of a commercial deal. It can be as simple as I will give you X number of widgets for Y amount of dollars or as complex as hundreds of pages attempting to deal with all sorts of contingencies. These deals are then used by companies to figure out what they should do, for example pay $Y when X widgets are delivered, and, extremely rarely, they are used by courts to figure out whether a company has wronged another by violating the contract.
There is a lot of joy in making a deal work and thinking of creative solutions to disagreements but the job is also VERY tough. To put it in computer terms, imagine the contract as a computer program. In each the object is to be able to interpret the words and have that interpretation drive a result. Now imagine that there is no compiler for your program and that you can't run any tests. All debugging must be done only theoretically and in your head. Imagine that you are coding with another person that is likely to be trying to develop a program that does something significantly different from what you want it to do. You and the other programmer may have different time constraints and, even though you are trying to do different things, you have to be on good terms with the other person because she could just as easily decide to stop working on your project. You and the other person take turns editing the code but without a common coding environment or standard tools to figure out whether the other person (or you) goofed it up. Then imagine that the code you are writing has a high probability of only ever being "run" through two different interpreters with significantly conflicting points of view about desirable outcomes and you likely won't get to see the result of any of these "runs." Or you may be asked to interpret the code in light of complete changes in context. Include a small chance that your code will be "run" by a relatively unbiased interpreter but the outcome of that one interpretation will be at extremely high stakes, often millions of dollars. Finally, know that you will likely get little credit for writing good code but will be crucified if the one time your code is run it doesn't work flawlessly. Now you are beginning to understand how hard the job of a good transactional attorney is.
Great transactional attorneys also pack a whallop of business sense and are very hard to find. Of course I believe our department at Twitter has some folks that are extremely good at this, and the team at Google is also wonderful. If you are not lucky enough to work at either of these companies I'd also recommend the great folks at Fenwick, Heather Meeker of Greenberg Traurig and Suzanne Bell of Wilson Sonsini. Wherever you work, give thanks for your transactional attorneys, I'm sure they deserve it.