Also depends on the HDD and the interface unit.
I've had successes on booting a 2TB Seagate Barracuda (others were 1TB Marshall, 1TB Western Digital) using an Eluteng SATA to USB3.0 cable.
RPi3B (bit set) and RPi3B+ booted without any configuration file editing...
However on older 3.5" Hitachi DeskStar HDD in Self Powered HDD case, I had tho power the HDD case first before booting the RPi.
Editing the boot wait times did not help as the RPI cannot boot from the HDD to "read" any configuration files (for the wait times).
Have not tried the bootcode.bin method on this...
Using an SSD to boot an RPi is much better (I've done it with a 240GB Sandisk SSD). Much faster, no wait time, lighter, not much heat generation. As SSD prices are going down its becoming more feasible to use as boot drive for RPi. The interface cable I've used is the same Eluteng cable.
"Don't come to me with 'issues' for I don't know how to deal with those
Come to me with 'problems' and I'll help you find solutions"
Some people be like:
"Help me! Am drowning! But dont you dare touch me nor come near me!"