Are your work days and hours consistent each week? Or do you at least know a week in advance what your schedule will be like?
Selecting a program like upper/lower or push/pull splits help me because I can do them back to back or miss a day and pick up where I left off. Some weeks I get to train Mon-Wed and then miss a day or two because of work.
It also helps to broaden your view of your training beyond one week. If you plan four workouts per week but keep missing one it can be frustrating. Using the push/pull split as an example, you're hitting push twice and pull once. If you start week two with pull then you'll have three workouts of each under your belt after two weeks. If you continue getting in three sessions per week then you finish the month hitting each muscle group six times. You'd hoped for eight but six is still decent work.
By viewing your sessions this way you can still see that you're putting in work and making progress. If you only focus on one week at a time then you're more likely to beat yourself up for missing a workout. By doing a split that allows you to train every day or every other day you don't have to skip workouts.
Also, if you view the same scenario with a body part split that consists of four separate days but you're only training three days per week then each muscle group would only get trained three times per month (compared to six with a push/pull split).
Hope that gives you some ideas!