> Are there many programming jobs with more time flexibility that would fit me better? Is running late OK in the industry? Or should I be trying to fix this ~6 year behavior of running late? Has anyone dealt with similar issues?
Yes.
Yes, there are programming jobs that aren't nearly as strict on getting to one's desk at a specific time. This tends to be more the case with small businesses and startups (and big businesses that started off as stereotypical "startups" - i.e. the "unicorns" of lore) because of the proliferation of an attitude that how much (or little) time spent at one's desk is irrelevant so long as the employee in question gets his/her work done.
Yes, running late is OK in moderation, depending on the circumstance. Running late to a meeting is generally a bad idea (especially if the meeting is non-routine), but a lot of programming positions in particular aren't exactly strict about getting to one's desk on time. However...
Yes, you should be trying to fix this. Regardless of whether or not you're expected to arrive at work before a specific time, punctuality reflects well upon you, and will give folks who interact with you (not just employers, but also friends, spouses, and other peers) an impression that you value their time.
Yes, I've dealt with (and still deal with) similar issues, since I have the same tendency.
A trick I learned from my dad (who - according to my mom, at least - shares my tendency to procrastinate) is to internalize that "if you're not 15 minutes early, you're late". Try to be 15 minutes early to everything; if you had adopted this philosophy today, for example, you would've arrived at work at 8:51 - plenty of time to leave your things at your desk (proving that you are, in fact, at work), grab some coffee from the break room, and even read an HN article or two. If you can't get into the habit, then turn off the "sync clock with internet server" functionality of all your networked devices (phone, computer, etc.), roll all your clocks forward by 15 minutes, and then still try to aim for being 15 minutes early to everything according to your own clocks.
As briefly mentioned, this trick has tangible benefits beyond brain-hackery. If you're walking or biking to work (or some other engagement), it gives you some time to catch your breath. If you're driving, it gives you more time to make sure that you got all your things out of the car. In any case (as mentioned above) it might give you time to grab some coffee or a bagel or something from the break room before starting your shift, or smalltalk with the cute guy or girl three desks over from yours, or - at the very least - get an early start on the transition from not working to working (which tends to take anywhere from 15 minutes to an hour; this is one of the reasons why pretty much anyone who isn't in a management position absolutely despises meetings, since the interruption causes an abrupt transition from "working" to "not working" (whereas for supervisors, the meeting itself is a transition from "not working" to "working", since their job is to manage their subordinates)).