Это нормально, если я не могу решить проблему, сидя перед компьютером? [закрыто]


12

Я программист-любитель и начинающий. Большую часть времени я не могу решить проблему, сидя перед компьютером. Например, я пытался выяснить, является ли одно число степенью другого. Я не мог найти решение, пока не схватил ручку и бумагу, а затем проанализировал проблему. Примерно через 3 минуты я решил и написал скрипт на Python.

Иногда я могу решить проблему, сидя перед компьютером, но с некоторой борьбой. Это нормально?


6
Для меня это не так уж плохо, и на самом деле многие люди слишком пристально смотрят на компьютер, в конце концов не осознавая, что они имеют эту проблему в меньшей степени. Во многих случаях профессиональное программирование будет включать очень незначительные изменения вместо хитрых логических формул, обычно представляемых как домашние задания, и это не так уж сложно, если вы, по крайней мере, можете их выполнить.
Katana314

2
Я думаю, что вы могли бы просто перефразировать ваш вопрос, чтобы иметь больше смысла в программировании.
Снуп

8
Это совершенно субъективно. Все учатся и работают по-разному. Делай то, что работает для тебя.

7
Перед компьютером может быть худшее место, чтобы попытаться решить проблему, потому что вы слишком искушены начать печатать, когда вам следует подумать. Часто выход из машины лучше, потому что это заставляет вас думать, а не действовать . Большинство моих самых сложных проблем были решены, когда я шел утром в офис.
Gort the Robot

2
Также возникает вопрос, насколько сложна проблема. По мере накопления опыта некоторые проблемы, которые сейчас сложны, станут легкими. Но это просто означает, что вы можете решить еще более сложные. Для себя я решаю многие из моих действительно сложных задач во время походов или катания на беговых лыжах.
jamesqf

Ответы:


34

Я склонен решать свои самые сложные проблемы:

  • Перед доской (иногда даже не рисуя ничего - просто думая о том, как визуализировать проблему, иногда можно найти решение)
  • Объясняя их коллегам
  • Смотреть в окно
  • Во время прогулки
  • Под душем
  • В туалете

Отход от монитора часто очень полезен для концентрации на самой проблеме, а не только для того, чтобы напечатать реализацию.

Решение проблемы происходит в вашей голове. Ввод кода программы - это то, как вы объясняете свое решение компьютеру.


1
Спасибо! Вы правы, чем больше я от компьютера, тем больше я могу сосредоточиться на проблеме.
Махмуд Мухаммад Нагиб

2
Я помню, как читал книгу (к сожалению, которая не помню), в которой предлагалось держать на столе резиновую утку, а когда вы озадачены, опишите эту проблему вслух резиновой утке.
Gort the Robot

7
@StevenBurnap Это называется отладкой резиновой утки, и вы, вероятно, читали об этом в «Прагматичном программисте » Эддисона Уэсли.
Филипп

2
«Ввод кода программы - это то, как вы объясняете свое решение компьютеру». - Алан Перлис сказал: «Программы должны быть написаны для того, чтобы люди могли их читать, и только для машин». Я бы предпочел посмотреть на это так: ввод кода - это то, как вы объясняете свое решение своим коллегам . Тот факт, что если вы однозначно опишите решение таким образом, что любой человек (включая вас, 6 месяцев спустя) сможет его понять, оно также станет исполняемым на машине, это всего лишь побочный эффект от строгого описания Достаточно того, что нет никаких двусмысленностей. …
Йорг Миттаг

4
Re: резиновая утка. Также есть похожая история с плюшевым мишкой. Преподаватели в Массачусетском технологическом институте сидели у своих кабинетов плюшевых медведей Тебе разрешили постучать только после того, как ты объяснил свою проблему медведю. Половина студентов так и не постучала в дверь, выяснив их проблему, объясняя это медведю. Формулировка хорошо написанного, хорошо отформатированного, подробного, подробного, высококачественного вопроса о StackExchange может иметь тот же эффект , что является (одной из причин), почему мы так анально поступаем именно так!
Йорг Миттаг

7

Я думаю, что это хороший вопрос. Исходя из того, как я это интерпретирую, я думаю, что вы спрашиваете: «Хорошо, что мне периодически приходится отходить от компьютера»?

Я не думаю, что наступает день, когда мне не нужно вставать и спрашивать кого-то еще, что они думают, или вытащить лист бумаги и набросать уравнение, чтобы решить проблему. Кроме того, когда вы углубитесь в программирование, вы не сможете даже начать писать код, пока не создадите схему / архитектуру заранее.

Я учился на курсе структур данных, когда учился в колледже, и у меня были проблемы с разработкой алгоритма сортировки. Когда я попросил своего профессора помочь, он понял, что я заранее не задумывался о проблеме. Первое, что он сказал мне, было то, что я еще не был готов начать писать код. Поэтому он вытащил лист бумаги и нарисовал пару квадратов, а затем ввел числа из массива. Затем он нарисовал еще пару снимков, на которых он перемещал квадраты, и наглядно показал мне, как будет работать алгоритм сортировки.

Некоторые вещи, которые вы можете сделать, чтобы очистить свой разум и решить проблему:

  • Сделать перерыв
  • Поговори с коллегой
  • Доска проблема / концепция
  • Спать на этом!

Не удивляйтесь, если вы проснетесь посреди ночи с решением.


1

Я думаю, что это, безусловно, поможет стать эффективным профессиональным программистом / разработчиком, если вы можете. Однако, размышление о проблеме при переводе решения в программную логику ИМХО требует обучения, поэтому я не вижу проблем, если вы сериализуете эти задачи - вам просто нужно иметь возможность успешно выполнить обе задачи. Размышление о решении от начала до конца, прежде чем начинать писать код, безусловно, имеет свои достоинства, но для этого нужно быть несколько терпеливым персонажем.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.