One challenge I have found with SCCM is how your organization views it. If you are taking a job as new administrator you may quickly find that expectations are very low. SCCM is a beast all of its own and by its nature can be very difficult to maintain its very easy to mess everything up and not have it perform the tasks you want. If you came into an environment that was not well maintained or the previous administrator didn't know what they were doing then chances are people will hate SCCM. Most of these issues are primarily related to the organization is thinking of SCCM in the wrong light. In the past SCCM was known as SMS some administrators jokingly called it "Slow Moving Service". In some ways SCCM is still a "Slow Moving Service" that is all because in its roots SCCM is a tool meant to maintain compliance.
With the main goal of SCCM being compliancy it performs things differently then we may think. A lot of organizations hear that SCCM and push out Windows updates, Upgrade their software with out there users needing admin rights, Reimage workstations and even change local settings to better suit their needs. This is all correct but that miss leaded a lot of people into think the tool is only meant to push things out when in reality it's keeping your workstation in a compliant state by doing things like installing software update. There are a lot of working parts to how SCCM works on a workstation and each part is logged on either the workstation or the server.
So when you are setting up a software deployment and you don't see the software showing up right away its because without some settings changed it could be days before the deployment actually appears. By default the settings you first use will be set for keeping all computers complaint with the whatever deployment you set up. Even when you do set your deployment to work faster there are still some built in processes that will delay your deployment a little. If anyone is giving you a hard time about how long its taking for the deployment to go out just remind them this, SCCM is smart enough to know that you don't want all of your computers to try to send all of its checks and request at one time so it has processes that will stagger when each client talks to the server (in general that is a 2 hour randomization).
In the end a misconception of how SCCM should and shouldn't work can ruin the tool for an entire organization. However a great things for us SCCM administrators is that there really isn't an alternative so even if a organization hates it or thinks its pain to use they really don't have another option that can suit so many needs. We just have to always keep in mind the nature of SCCM is to keep compliance.