The mining process is effectively random, and in any given second there is approximately a 1 in 600 chance that a block will be "solved".
There is no progress made towards this goal. The first attempt is just as likely to succeed as the ten thousandth attempt which is just as likely to succeed as the 100 billionth.
As an analogy to help you relate to what's happening...
Imagine that I create a "puzzle" that says "Randomly roll six dice together every half a second until the results on all six dice are a 1."
On average, this puzzle will complete in a bit more than 10 minutes (the actual average is 648 seconds). However, you could get it on the first try, and it could take you several hours. There is no "progress" made. You are never any closer to success than when you started. As a matter of fact, if you've been trying for 30 minutes, and you haven't succeeded yet, on average it will still take 648 more seconds.
This is essentially how the "mining" process works. Miners are given a target (in the analogy the target was all six 1's on the dice, in mining the target is a SHA256 hash value that is lower than a given integer value). They repeat a process that has effectively random results as fast as they can as many times as they can until one of the miners get lucky enough to have a result that meets the target.
Every 2016 blocks the protocol checks to see if the difficulty target needs to be adjusted. If blocks are occurring too fast (took less than 20160 minutes), the target value is set even lower to make it take longer for someone to get lucky enough. If blocks are occurring too slow (took more than 20160 minutes), the target value is set higher to make it take shorter time for someone to get lucky enough.
The solo miner (or mining pool) gets to choose which transactions they want to include in their block. To be "confirmed" a transaction needs to be in successful block. The miner/pool is limited to 1 megabyte of transactions in their block. The miner/pool gets to keep the transaction fees of any transaction they include in their block. So, if there are more than 1 megabyte worth of transactions waiting around to be confirmed, the typical miner/pool will choose the transactions that pay the highest fee per byte (since that will maximize their revenue).
Therefore, if you pay a sufficiently high enough transaction fee your transaction is likely to be included in the next block that is solved. If you don't pay a high enough fee, you'll need to wait for a while until there are less than a megabyte of transactions that pay a higher fee-per-byte than you.