Two things.
1. Lee's big mistake at Gettysburg was that he failed to follow the offensive/defensive strategy that had worked so well for him in the past. After the first day he should've manuevered around the Union Army and set himself up in a position threatening Baltimore or DC and forced the Union to attack his defensive position. Pickett's charge was an attempt to force the issue brought about by this strategic error.
2. Grant was a great general. His campaign against Vicksburg was brilliant (odd no one mentioned it ). It's capture, along with Gettysburg, were crushing blows that doomed the confederacy. In N. Virginia he did what he had to do against a determined and skillful opponent. Lee had the interior lines. I don't see what else he could've done besides sit around and wait for Sherman to come up from the south, but political necessity forced him to bring home the attack.
Bookmarks