When I started programming MTG Forge, I didn't know if the program would ever be good enough for someone else to play and enjoy, there are MANY half-written programming projects on the Internet. MTG Forge was created on a very old computer (700 MHz CPU, 128 MB) with an old version of Java 1.2, now Java is up to 1.6 or something.
Even though I had graduated with a bachelor's degree in computers the longest program that I'd ever written for college was in Cobol. It was a 500 line monstrosity that could have been easily written in 100 lines of Java. The longest Java program that I ever wrote for college was probably around 70 lines. Yes I enjoyed programming but that doesn't mean that I was necessarily good at it.
I had about three "false starts" with MTG Forge. A "false start" is when the program was sufficiently large and was actually doing something but when I added more stuff to it, it would just brake and the program could not be fixed.
This meant that the architecture wasn't correct, so I would use some of the "good stuff" like the Card and SpellAbility classes and then try to write a better foundation the program wouldn't "brake" in the future.