1.
Говнокод: врага надо знать в лицо. Обычно, говнокод это тихий ужас, который получается у неопытных программистов и который практически невозможно поддерживать. Гораздо проще бывает переписать всё заново.
2. Хардкод это своего рода некая разновидность говнокода, но с ним более-менее можно жить. Это может быть какой-то наспех сделанный код, где определённые настройки просто зашиты в программу, а не вынесены в конфиг и впоследствии от хардкода можно избавиться небольшой доработкой (а не полной переделкой функционала, как в случае с полным говнокодом). И если говнокод получается из-за каши в голове разработчика, то хардкод может быть вполне осознанным решением.