Actually, I just had this conversation with a student of mine; I teach CS, and have been trying to throw at least a few proofs each term into most of my upper-level classes. They're generally simple proofs and the initial reaction is that the thing to be proven is "obvious" and thus doesn't need to be proven.
...but then, as they try to write out the steps of the "obvious" proof, or explain them to me verbally, we discover that they don't have nearly as good a handle on all the definitions and the details as they thought they did. Having to wrangle a proof, even a simple one, does an unparalleled job at developing a deeper understanding of the theory.
(For example, in my database theory class: Prove that any two-column table must be in BCNF. On the way through to the "trivial" two- or three-line proof, one has to understand what it means to be a key of a relation, what a functional dependency really is, and the notion of transitive dependency. Even if you never decompose a table into BCNF, the other concepts help you build some important mental models.)
...but then, as they try to write out the steps of the "obvious" proof, or explain them to me verbally, we discover that they don't have nearly as good a handle on all the definitions and the details as they thought they did. Having to wrangle a proof, even a simple one, does an unparalleled job at developing a deeper understanding of the theory.
(For example, in my database theory class: Prove that any two-column table must be in BCNF. On the way through to the "trivial" two- or three-line proof, one has to understand what it means to be a key of a relation, what a functional dependency really is, and the notion of transitive dependency. Even if you never decompose a table into BCNF, the other concepts help you build some important mental models.)