Wow, 3 whole minutes before you bumped your topic?
That mess of wires doesn't give much useful information. I have a hunch what might be wrong, but until I see some photos showing clearly what goes where, what's soldered and what's not, that's all it is, so I won't waste your time with it.
I always recommend beginners use the I2C interface to control an LCD display. There are much fewer pin and connection issues.
Buy an I2C backpack and solder it to the display (or, better yet, buy an LCD display with the I2C interface already mounted).
delay() is not the correct solution, despite many forums saying connect R/W pin to GND it is used to read busy flag on d7 of lcd when the flag is 0 the you can write otherwise wait for it to become 0 like if HD44780 freezes for 10 seconds we will lose 10 chars in your code place 1 on R/W and check D7 that’s the busy flag