Просто нужен рабочий режим.
Например, с 10 до 17 работаю и ничем другим не занимаюсь. До и после - что угодно, любые развлечения по желанию (можно и снова поработать, если хочется, но в рабочее время отвлекаться нельзя). Также можно выделять время не по часам, а по результату - не отвлекаться, пока задача не выполнена.
Блокировать сайты не обязательно, просто нужно соблюдать дисциплину. Ведь в том же ютубе может быть обчающий ролик по работе или что-то подобное. Вы сами решаете, что относится к работе, а что - нет.
Если работа не связана с постоянными ответами на звонки, то полностью откладываете смартфон. Переводите его в режим "не беспокоить". В исключениях - лишь ваши вторая половинка, мама, сын и дочка, которые могут звонить в любое время. Это значит, что смс и мессенджеры тоже заглушены. Переводить взгляд на телефон тоже запрещено. Тянуться к нему и проверять что-либо - тем более. Но если по работе, то, опять-таки, можно. Однако никаких соц. сетей, хабра и всего такого.
В работе, особенно в творческих профессиях, таких как программирование, важна концентрация. Поэтому мелкие отвлечения, даже если они сами по себе не занимают много времени, всё же отнимают много времени от самой работы. По науке считается, что если вы отвлеклись, не доведя работу до логического конца, то из только что потраченного рабочего времени вычитается 23 минуты, они считаются потраченными впустую. После отвлечения придется повторно делать примерно то же самое, потратив эти же 23 минуты (примерно).
Так что проводите границы между работой и отдыхом, а также между разными работами и между разными задачами в пределах одной работы, и между разными хобби в пределах отдыха. Не занимайтесь мультитаскингом, это не только не продуктивно, но и вредно для ума в целом (но это уже другая история). Делайте рабочие интервалы времени достаточно большими, чтобы "разогрев" перед работой (вникание в проблемную ситуацию) не был впустую. А как отдыхать - не так важно, выбирайте по вкусу, пробуйте всякое.