The hardest cards to program are cards that let the player choose something. Probably the most common phrase in all of Magic is “choose target creature.” This is the simplest choice that the user can make and the code for choosing a creature is simple. More complicated cards like Peel from Reality (1 U, Instant, Return target creature you control and target creature you don't control to their owners' hands.) require the input code to be specifically customized for that specific card.
My favorite cards to code are cards that don’t allow the player to choose anything like Wrath of God (destroy all creatures) or Concentrate (draw three cards). Cards that don’t have choices require less lines of code. Another classic card in this category is Soul Warden (cost:W, 1/1, Whenever another creature comes into play, you gain 1 life).
I would kill Wizards if they made Soul Warden’s ability optional, “you may gain 1 life.” But truthfully I would ignore the “may” and make the ability mandatory versus always asking the user, “Do you want to gain 1 life, yes or no?”
The cards that require the most amount of code are optional abilities, which I personally hate from a programming point of view like AEther Vial (At the beginning of your upkeep, you may put a charge counter on AEther Vial). AEther Vial is a great card but every turn the computer has to pop up a window and ask the user a question, which interrupts the flow of the game.
Random odd fact, Wizards has only printed one card with the word “vial”.