I look back on my early web dev career where source control was something unheard of as were dev environments. In fact we regularly edited code live on prod server to debug/develop. Looking back I just shudder thinking about it.
IMHO, it's better to be a cowboy and reluctantly follow 'best practices' for the most part, than to be a 'best practices' person and be unprepared to be a cowboy when it's needed.
Sometimes, the best way forward is to force an update on production, even if the only method you have is modifying the executable on disk, while it's running. It's mmaped, so you can do this. But you wouldn't know this if you hadn't broken production by using cp instead of install to update a binary you wanted to modify for the next load.
Putting a site live just involved FTP-ing the files up to one our shared webservers.