There are a lot of definitions for this word depending upon its usage. In this instance I am talking about the Christian application of the word, specifically to the people of the Earth who are Gods children.
We are given agency.
In the bold experiment which is Earth, humans were given the agency to make choices. Those choices allow us to learn who we really are and what we want out of existence. Some choices are good, some are bad and all are our own.
God is perfect.
We make mistakes.
Humans are flawed. It was guaranteed that everyone would make mistakes at some point in their life. We would commit some flawed act or our intentions would be impure in a way that would tarnish our souls making us imperfect. This did not surprise God, nor did he fail to plan for it.
Perfection is a long way away.
It is an interesting word: perfect. It means without flaw. In mathematics we play with functions that approach a limit. The function can sometimes reach that limit, but it is impossible to reach it without applying infinity. Perfection of our souls is like this. As we make good choices our souls approach that limit, and though we can see the direction we are headed actually reaching the limit requires an infinite effort. Any number, when compared to infinity is effectively zero. This means that no matter how much work we put in to approaching perfection it is effectively zero.
The Atonement is infinite.
Bringing all of God's children up to snuff so that they can dwell with him is an infinite task. There is no way we could all pay for our shortcomings. To make up for this it took a special person to atone for all God's children and that atonement was infinite.
His grace is sufficient.
Christ made an atonement for our flaws. He did the time when we did the crime. In essence he has created equity by which he can buy our entrance into the presence of God. That equity is grace.
With all our shortcomings atoned for, we just need to be made perfect. That will take time, a lot of time, but in the meantime we can dwell with God to hash things out.