Подтвердить что ты не робот

Это отличная память, требующая отличного программирования

Считаете ли вы, что наличие большой памяти НЕОБХОДИМО быть отличным программистом?

Я не считаю себя отличным программистом, но я думаю, что я порядочный. Но моя память ДЕЙСТВИТЕЛЬНО плоха, поэтому мне всегда приходится напоминать себе, как делать что-то. Я имею в виду, что я "знаю, где искать", но иногда это заставляет меня чувствовать, что я просто дерьмовый программист. Что еще хуже, так это то, что я всегда забываю, где вещи находятся в моем исходном коде или какой алгоритм я использовал для определенных ситуаций.

Вспомните о великих программистах, с которыми вы столкнулись в своей жизни, не все ли у них были удивительные воспоминания?

4b9b3361

Ответ 1

Конечно, apocrapful, но здесь номер Эйнштейна:

Репортер взял интервью у Альберта Эйнштейн. В конце интервью, репортер спросил, может ли он Номер телефона Эйнштейна, чтобы он мог позвоните, если у него возникнут дополнительные вопросы.

"Конечно" ответил Эйнштейн. Он взял телефонный справочник и посмотрел его номер телефона, затем написал он на листе бумаги и передал его репортер.

Ошеломленный, репортер сказал: "Ты считаются самым умным человеком в мире, и вы не можете вспомнить ваш собственный номер телефона?"

Эйнштейн ответил: "Почему я должен что-то запоминать, когда я знаю, где найти его?"

Ответ 2

Рассматривайте свою краткосрочную память как стек (не статический) и не ожидайте от него большего. Я вернулся к коду, который я написал только месяц назад, и его почти как кто-то написал это. Это займет некоторое время, чтобы вернуться в ту же зону.

Меня дразнят, часто оставляя комментарии для себя, как сухари, но это работает. Если я закончу какую-то функцию и скажу "AHA, это абсолютно БРИЛЛИАНТ!", Я сразу же комментирую свою сложность, поскольку я обязательно забуду.

Итак, теперь, чтобы ответить на вопрос с двумя вопросами:

  • Что вы имели на обед в прошлую среду?
  • В чем цель 'counter' в hash_foo()?

По крайней мере, с № 2 вы можете быстро вернуться и посмотреть/запомнить.

Ответ 3

Пока вы помните, как написано g-o-o-g-l-e, вы в порядке.:)

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

Опытные программисты могут вообще срывать API, мелкие детали и т.д., но, по моему опыту, никогда не было случая сесть и запомнить вещи по rote. Это естественное следствие использования вещей снова и снова.

Ответ 4

У меня есть этот коллега, который пишет действительно плохой код, который невероятно сложно поддерживать. Я пришел к выводу, что его проблема - хорошая память. Он просто мог вспомнить, где он поставил какую функциональность. Поэтому ему не нужно писать код, который не требует пояснений. Он просто помнит это дерьмо. Остальным из нас очень сложно выяснить его код.

Я уверен, что хорошая память не в том, что ребята только проблема. Но я уверен, что его код улучшится, если его память ухудшится.

Ответ 5

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

Ответ 6

Я могу ответить именно так, используя только одно слово: НЕТ. Наличие большой памяти, чтобы запомнить все о программировании, не обязательно. Опыт и утомительное обучение практикой являются лучшими.

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

Ответ 7

Для меня есть два типа программистов в мире. Первые родились, чтобы сделать это, второй узнал. В обеих группах они варьируются от невероятно бедных до невероятно великих. Обозначает ли память эти рейтинги? Нет, абсолютно нет. Хотя хорошая память может помочь вам в обучении, ничто не поможет вам больше, чем практике и пониманию. В конце концов, способность помнить всю Энциклопедию Бриттаника ничего не значит без понимания. Здесь хранится мое хранилище серверов.

Программирование - это логика, как в коде, так и в том, как вы подходите к проблеме. Если вам нужен четкий, понятный код, то, скорее всего, вы разложите проблему на небольшие управляемые куски (т.е. Вписывающиеся в вашу голову в их энтузиазм) и работайте над каждым из них. Каждая функция затем объединяется в одну команду для следующего этапа сложности. В конце этого следующего этапа, если есть другое, у вас снова будет набор одиночных команд для построения. Логическое именование, логическое разделение, логическая сборка... Я думаю, что я получаю свою логическую точку;)

Моя память ужасна, и я имею в виду ужасающую. Меня могут познакомить с 3 людьми, и к тому времени, когда имя №3 было сказано, я забыл, кто № 1. Я все еще могу написать хороший код, а не каждый раз или каждый день; когда вы находитесь в зоне, это что-то еще, в этот момент это искусство. Итак, положите свою память на одну сторону, получите либо очень тихое пространство, либо генератор розового шума, и погрузитесь. Единственное, что сделает вас лучшим программистом, это практика, практика, практика. Единственное, что нужно помнить, это то, что программирование - это навык и навыки, которые практикуются и лучше всего практикуются среди друзей, которые могут дать конструктивную критику и советы... например, переполнение стека:)

Извините за уровень тома этого ответа, но я не мог вспомнить, что я уже написал;)

Ответ 8

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

Плохая долговременная память - это актив, потому что вы в конечном итоге очень хорошо тренируетесь в том, как находить и изучать методы, API, алгоритмы и т.д. Это также побуждает вас найти небольшой набор общих тем, которые помогут вам в вашей работе.

В целом, знак хорошего программиста - это не сложность (чего действительно трудно достичь без хорошей памяти), но простота (которая по своей природе не требует большой памяти).

Ответ 9

Наличие хорошей памяти весьма полезно, но, конечно, не требуется. Я бы сказал, что это не то, что у великих программистов отличная память, но они потратили много времени на изучение даже самых маленьких проблем, которые улучшили их понимание и улучшили отзыв. Если вы потратите 4 минуты на решение проблемы (Googling или ask in SO), вы, вероятно, не будете помнить о разрешении, когда вы ударите его еще 4 месяца. Это может быть эволюционная черта или просто плохая память =)

Хорошие программисты также имеют хорошо продуманные принципы, которые позволяют им работать на автопилоте, не задумываясь о себе. Хороший набор принципов также обеспечивает согласованность и предсказуемость (что является качеством памяти) посредством подкрепления.

Это также распространяется на другие области. Шахматные гроссмейстеры могут вспомнить всю игру, сыгранную 40 лет назад. Это потому, что они помнят шаблоны (открытия, вариации, основные причины и следствия ходов, которые привели к конечной игре и т.д.). который помогает группировать отдельные движения в единицы.

В программном обеспечении инструментам может понравиться автозаполнение или наличие KB/Wiki, а также возможность поиска истории регистрации и т.д. могут помочь.

Ответ 10

Нет. Но, возможно, это может сделать вас отличным...

Искусство программирования (возможно, искусство) способно подходить к проблемам таким образом, чтобы вы могли понять их все, несмотря на свои ограничения (например, несовершенную память). Это потому, что у всех, включая самого умного, есть ограничения. Нападение на ваши ограничения не является признаком того, что у вас есть ограничения, но признак того, что вы достигаете большего.

Это искусство (насколько я знаю) включает в себя такие вещи, как разделение и завоевание (использование модулей различных видов, соответствующих форме проблемы); используя стандартные методы для телеграфирования вашего намерения (идиомы, шаблоны проектирования OO - только один); отделяя суть проблемы (это не о коде: о проблеме); и, конечно, комментарии.

Раньше я полагал, что хороший код был самодокументированным (и даже, этот код является правдой), но в последнее время я пишу парсеры, и в том числе CFG в комментарии - очень полезная ссылка, потому что это очень более простое представление намерения кода.

Кодер должен знать свои ограничения. Это нереально ожидать, что у вас будет такое же понимание чего-то месяца спустя, как когда вы были в гуще. Все вышеперечисленное предполагает принятие этой проблемы и работу над решением. Это не только облегчает вам работу над вашим кодом, но и облегчает кому-то еще... но самое главное я твердо верю, что более четкий и простой код в корне и трансцендентно лучше кода.

Компетентный программист полностью осознает строго ограниченный размер своего собственного черепа; поэтому он подходит к задаче программирования в полном смирении, и среди прочего он избегает умных трюков, таких как чума. - Дейкстра

Ответ 11

В намеке на Эдсгера Дейкстра, компетентный программист полностью осознает ограниченный размер своего собственного черепа. Чем больше деталей вы не втираете в голову, тем лучше вы можете решить эту проблему.

Модифицируйте свой код очень, код рефакторинга, упакуйте свои изящные алгоритмы в объекты и используйте эти объекты. Таким образом, вам не всегда нужно "помнить" каждую информацию о реализации ваших программ./p >

Ответ 12

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

Хорошие заметки и закладки и веб-поиски проходят долгий путь.

Помните, что для отличного программирования требуется очень простая вещь. Все так же просто, как "держать на нем".

Интересная перспектива с другой стороны вашего монитора: Locality of Reference

Ответ 13

Я думаю, что наличие хорошей памяти полезно для быстрого изучения новых вещей.

Это не значит, что это требование быть отличным программистом.

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

Это тайна мозга.

Ответ 14

Я думаю, что одно преимущество иметь хорошую память (скромность: у меня хорошая память) - это способность уметь думать на ногах, когда на самом деле не стоит перед компьютером.

Например, вы можете быть на собрании, когда предлагается какой-то новый вид функциональности для вашего приложения. Можно ли это сделать? Сколько времени это займет? Это вопросы, на которые легче ответить, если вы можете в значительной степени пройти через 250k loc в своей голове.

Тем не менее, я нахожу в себе правду в других мнениях, что мой собственный код может быть менее ясным, потому что я могу лучше запомнить его.

Ответ 15

Оккам-бритва предполагает, что более простая теория, пожалуй, верна.

Если код является теорией, описывающей входные данные, поступающие на выходные данные, то более короткий код, используя ожидаемые идиомы и библиотеки, скорее всего будет "истинным", то есть, скорее всего, он уловит суть решения, поэтому он будет обобщать на входы, которые вы не ожидали.

Более короткий, неудивительный код легче запомнить.

Ответ 16

Некоторые из наиболее хорошо написанного кода, который я когда-либо видел, были написаны таким образом, что каждое дизайнерское решение было неизбежным, а код читался как его собственное объяснение. Это далеко лучше IMHO, чем код, который требует, чтобы читатель (или, что еще хуже, сопровождающий) сохранял тонны произвольной детали в памяти.

Мой собственный индекс сложности в коде: "Сколько вещей я должен помнить, чтобы понять эту одну строку?"

Больше хуже.

Ответ 17

Все зависит от того, что помнит ваша хорошая память.

Я работал над одним и тем же проектом в течение 10 лет или около того, и я не могу запомнить каждую строчку и кто ее написал и почему.

Но... Я очень хорошо помню все запросы пользователей и проблемы пользователей. Кто хотел, что и когда.

Я помню почти все проблемы с поддержкой, которые у нас были.

Поиск старого кода очень просто - у нас есть отличные инструменты для этого. Поиск старых вопросов - это гораздо более абстрактный процесс: у нас есть JIRA и Wikis, но иногда они не режут его, потому что они не обеспечивают семантического значения.

Итак. Обратите внимание на то, что ДЕЙСТВИТЕЛЬНО имеет значение, и помните об этом.

Ответ 18

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

Ответ 19

Я думаю, что можно уметь запоминать разные типы вещей с разной степенью способности.

Например, иногда я нахожу, что у меня довольно плохая память, когда речь заходит о случайных фактах и ​​цифрах, а также о том, что я делал или буду делать - последнее означает, что я считаю программное обеспечение для отслеживания ошибок бесценным инструментом.

С другой стороны, я помню структуру сложных частей программного обеспечения, которые я написал, и где можно найти конкретные вещи в этом.

Это может быть логическая связь. Хорошо спроектированное программное обеспечение должно (теоретически) иметь логическую структуру, которая может облегчить хранение в памяти, если ваш мозг подключен таким образом.

Случайная часть информации, однако, может не иметь этих ассоциаций, что затрудняет их запоминание.

Ответ 20

Я бы сказал, что нужно быть большим и быстрым. Моя память для деталей программирования в порядке (но для этого у меня есть Google). Однако, когда я сижу перед приложениями, которые я написал в основном (~ 30-40 k строк кода), я могу полностью загрузить его структуру в свою память. Я могу найти способ, которым я что-то делаю через пару секунд, и вспомнить, почему я реализовал его так, как я. Это бесценно. К 11 утра я смог сделать больше работы, чем некоторые другие, весь день. Теперь это не делает меня отличным программистом, но это делает меня чрезвычайно производительным производительным программистом. Это дает мне время для рефакторинга, написания дополнительного кода, серфинга, захвата часового обеда и т.д.

Ответ 21

Я думаю, это зависит. Память для программиста очень важна. И короткий, и долгосрочный. Однако то, что вы используете для этой памяти, - это важная вещь. Как программист, если вы используете его для запоминания когда-либо нюансов API, я бы сказал, что вы тратите впустую свою память.

В конечном счете, я пытаюсь использовать свою память для запоминания важных вещей и всего, что я не могу легко найти в более поздний момент времени. Обычно я использую API в краткосрочной памяти и использую google и intellisense, чтобы помочь мне в деталях. С другой стороны, шаблоны проектирования, методологии, уроки, извлеченные из опыта, - это, как правило, то, что я пытаюсь использовать в долгосрочной памяти, поэтому я могу эффективно использовать его в будущем, не переучивая все.

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

Ответ 22

Наличие достаточно сильной памяти для хранения вещей, которые вам нужно использовать сегодня, является важной частью. Если вы постоянно ищем ответы на один и тот же вопрос, вероятно, у вас слабая память.

Самое главное помнить, где вы можете найти ответы. Иногда я занимаюсь блогами по темам, которые немного сложнее, поэтому у меня есть место, чтобы найти их, когда они мне нужны. Но я не пытаюсь держать их на себе постоянно, потому что я могу искать свой блог и находить их позже. Я делаю то же самое с другими людьми в блогах, и я знаю, какие блоги попадают на определенные типы ответов.

Когда все остальное не удается, Google it!

Ответ 23

Раньше я думал, что хорошая память - это экономия времени, потому что чем больше вы помните, тем меньше времени вы проводили, глядя на вещи, но инструменты и IDE стали такими хорошими сейчас, многие вещи, которые я использовал для запоминания, например, синтаксиса и различные фрагменты кода быстро доступны в несколько нажатий клавиш. Это и тот факт, что объем информации в этой области растет быстрее, чем любой смертный программист может не отставать, заставляет меня думать, что память менее важна. Более важно иметь хороший доступ и организацию к полезной информации.

Ответ 24

Просто простой комментарий "Повторение - это мать обучения", неважно, есть ли у вас хорошая/плохая память. Функция, которую вы используете больше в своих программах, вы будете помнить лучше всего. Кроме того, в моем случае у меня есть интернет, когда я не помню что-то, о чем я только что спрашиваю, даже если это вопрос или просто вопрос, и много раз я помню ответ после того, как поставил вопрос, а затем быстро отправьте ответ. Проблема в том, как много времени вы заставляете свой ум работать...

:)