domain specific knowledge (e.g. 3d math, usability)
correct program writing
And you do them in sequence rather than in parallel (and then of course your boss declares phase 2 doesn't get any of your time).Lots of software engineers really emphasize the second part. But this is like insisting on correct shoelace tying in a shoe factory ... it's nice, but without making a shoe in the first place there is no shoe and no need for shoelaces. And when it comes to choosing between no shoe or badly tied shoelaces ... the choice is clear.
This is why the neverending complaint of software engineers that no-one cares about correctness. Entirely true. You can do without correctness (if there's anything Microsoft taught us), but you cannot do without domain knowledge.
And it's a bit self-serving: guess which one is most often missing in software engineers ?