Where to Actually Start When You're Learning SCCM
SCCM, now called Microsoft Endpoint Configuration Manager, is not a simple tool. It is a massive piece of software that manages software distribution, patching, inventory, and device compliance across thousands of endpoints. Most people who get thrown into it have zero formal training and are expected to figure it out by watching three YouTube videos and breaking something in production. Here is what I wish someone had told me when I started. Start with the infrastructure. Before you touch the console, understand how the site hierarchy works. You need a primary site, you might need a management point, and somewhere along the line you will deal with a distribution point. These are not optional concepts. I once spent two full days troubleshooting a failed application deployment only to realize the content hadn't been distributed to the right distribution point. The package was sitting in the database, perfectly fine, just not on the server the clients were actually pulling from. Check the DPs first before you chase anything else. The official Microsoft Learn path is free and decent. Go through the modules on Configuration Manager fundamentals, then immediately start a lab. Do not skip the lab. Watching someone configure an application deployment does not teach you anything. You need to break things yourself. Set up a virtual machine with ConfigMgr, install a couple of test servers, and deploy a harmless application like Notepad++ or 7-Zip. Watch the client logs. The logs are where the actual answers live.
What the Training Won't Tell You
Most beginner resources focus on the console. They show you where to click to create a deployment. That is useful for the first week and completely useless after that. The real work happens in the logs, and nobody trains you to read them properly. Let me walk you through what I actually do when something goes wrong. Take PolicyAgent.log. This file, located in C:\Windows\System32\CCM\Logs on the client, tells you what configuration policies the device received and when. If a deployment shows as "available" but the user never sees the app, this log will tell you whether the policy ever reached the machine. Then there is Execmgr.log, which tracks the execution of deployments. It will show you exactly why an installation failed, including the exit code. Exit code 1603 is a fatal error, 3010 means a reboot is required, and 0 means success. These are not guesses. They are documented. I once had an application that failed on exactly three machines out of two hundred. The error in Execmgr.log pointed to a missing prerequisite. The prerequisite was installed on the other 197 machines. I spent four hours checking group policy, registry settings, and application dependencies before I realized the three machines had a different build of Windows than the rest. They were running LTSC while the rest were standard enterprise builds. The prerequisite package only targeted the standard SKU. I added a second application dependency for the LTSC version and moved on with my life.
Counters and Collections: The Part Everyone Messes Up
Collections in SCCM are how you organize your devices and users. There are two types: device collections and user collections. Device collections can be dynamic or static. Dynamic collections use query rules based on attributes like operating system, manufacturer, or operating system edge. Static collections require manual addition or membership evaluation. Here is the mistake I see constantly. People create a dynamic collection that queries for all Windows 10 machines. Then they try to deploy to that collection and wonder why half the machines do not get the deployment. The collection might evaluate correctly, but the machines in it may not have the required software distribution point assigned. Or the boundary groups might not be configured properly. Or the machine simply has not contacted the management point since the collection was updated. Check the collection membership count, then verify the machine's last policy refresh time. If the machine hasn't checked in recently, force a cycle on it or wait. It usually resolves itself within a few hours.
Get the Full Details

The Boot Image Problem
PXE boot is one of the most common pain points for beginners. You want to image a new machine over the network, everything seems configured correctly, and the machine just won't boot. Before you tear apart your WDS or DP configuration, check the boot image architecture. x86 boot images will not work on x64 machines. This sounds obvious until you have deployed the wrong boot image to a collection and spent an hour wondering why the network boot fails every time. Also verify that the client packages are updated in the boot image. After every SCCM console update, you need to right-click the boot image and select Update Distribution Points. If you skip this step, the new client version will not be present in the boot image and machines will fail to connect to the management point during OSD. This happens after every service update. It is not a bug. It is just how the product works.
Application Dependencies and Constraints
When you create an application, you need to understand requirements, dependencies, and constraints. A requirement is something that must be true on the machine before the installation runs. A dependency is another application that must be installed first. A constraint controls whether the deployment proceeds based on conditions like user context or drive space. Counter-intuitively, you should rarely use dependencies between applications you control. Use requirements instead. Dependencies create tight coupling and make troubleshooting significantly harder. If Application B depends on Application A and Application A fails to install, Application B will silently fail too, and the error you see will point to B even though the root cause is A. Requirements are evaluated independently and give you clearer failure signals. One thing I learned the hard way: if you set a deployment constraint requiring a specific amount of free disk space, SCCM checks the actual free space at the time of evaluation, not the advertised space. If your application says it needs 2 GB but the machine has 1.8 GB free, the deployment will not start. This is by design. It prevents half-installed applications that run out of disk space mid-installation. Make sure your minimum requirements are realistic.
Limitations You Need to Accept
SCCM is not suitable for every environment. If you have fewer than fifty devices, you are overengineering it. Intune or even simple scripting will serve you better. SCCM requires a dedicated infrastructure team, SQL Server, and significant ongoing maintenance. The database grows quickly if you do not implement proper retention policies. I have seen environments where the databases exceeded terabytes because no one had configured log cleanup or compressed content archives. Another hard limitation: SCCM does not natively support macOS or Linux. Microsoft has added some basic Linux endpoint management through Azure Arc integration, but it is not full Configuration Manager functionality. If your environment includes Linux servers or Macs, you need a separate tool. Don't waste time trying to make SCCM do something it cannot. The product also struggles with highly dynamic environments. If devices are constantly being added and removed, collections will churn and evaluation will consume significant resources. In those cases, consider using Azure AD device groups synced into Intune and letting Intune handle the cloud-side management while SCCM focuses on on-premises endpoints.

Free Resources That Are Actually Useful
Microsoft Learn has a free Learning Path for Configuration Manager. It takes about forty hours to complete and covers the fundamentals adequately. The SCCM Docs community on TechCommunity is active and the moderators are knowledgeable. Myitforum still has archives that are worth reading, though some of the advice is outdated. For hands-on practice, set up a lab using the Evaluation Center ISO. You get a fully functional SCCM instance for 180 days, which resets if you reimage. YouTube channels like Coretech and Simple-Talk have practical walkthroughs that go beyond the official documentation. They show you what actually happens when things go wrong, not just the happy path.
The One Thing Nobody Mentions
Documentation in your environment matters more than any training program. Every collection you create, every application you deploy, and every task sequence you build should have a brief note explaining why it exists. Six months from now, you will not remember why Collection-CM-Workstations-Dev was created or what query rule drives it. Write it down. Use the comments field in the console or maintain a simple spreadsheet. This is not optional if you plan to work with this product long term. Configuration Manager will frustrate you. It will work perfectly for months and then suddenly something breaks and the error message is completely unhelpful. That is normal. The skill is knowing which log to check, which setting to verify, and when to accept that you need to rebuild something from scratch rather than keep chasing a ghost. Start small, break things in a lab, and read the logs before you ask for help.