Какие методы помогают сохранить знания программирования? [закрыто]

44

Как вы помните программирование связанных вещей? Было ли у вас ощущение, что вы столкнулись с ошибкой, которая была у вас до этого прямо сейчас, несколько лет назад, и вы могли поклясться, что знали причину тогда, но теперь вы ее забыли?

Работали ли вы с разбором строки xsl некоторое время назад, но теперь вы не можете вспомнить, какие именно строковые функции вообще взяты из xsl, и вам нужно начинать с нуля? Или, возможно, вы забыли о какой-то функции Apache Commons, такой как «фильтрация коллекции по некоторому предикату», которую вы наверняка использовали в прошлом.

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

Есть ли у вас системы, которые помогут вам вспомнить ваш опыт программирования? Каковы ваши настройки?

сияющий свет
источник
82
мои настройки: 1.google 2. страница закладки 3. забыть о закладке 4.goto-> 1.
e-MEE
4
Используйте личную вики. Запишите каждую проблему, которую вы решили, чтобы вы и другие могли просмотреть ее позже. Просто сделайте это на пару месяцев, и у вас будет много информации. Я использую WikidPad и его довольно приятно
Ubermensch
2
Google отлично подходит для ответов, но я не думаю, что он действительно решает этот вопрос о методах памяти. Конечно, это всего лишь комментарий.
Майкл Даррант
4
Мой мозг - это мой процессор и кеш. Я помещаю вещи в свой кеш, делая это. Остальные мои знания находятся в других местах, таких как старый исходный код, заметки и stackoverflow.com.
Distortum
5
@ e-MEE: хотя описанная вами ситуация часто используется, это плохая практика, и вы не можете на нее полагаться. Это отнимает много времени и излишне. Вы можете использовать это время для создания удивительных функций, а не изобретать велосипед :)
Claudiu Constantin

Ответы:

64

Забывать вещи это нормально. Не помнить некоторые уловки, которые помогли вам в прошлом, это тоже нормально. Это первый шаг, который нужно признать. Тогда есть несколько способов, которыми вы можете «хранить» знания для дальнейшего пересмотра:

  • Найдите время и блог об этом . Будущее - вы будете очень благодарны настоящему - вы;
  • Работайте с крошечными демонстрациями и архивируйте их каким-либо образом. Вы обязательно пройдете этот архив много раз;
  • Используйте свой профиль stackexchange . Пометить интересные вопросы / проблемы / проблемы / советы / хитрости как избранные для дальнейшего изучения;
  • Продолжайте делать , продолжайте программировать. Чем больше вы используете определенную часть фреймворка, тем больше вы с ней знакомитесь и тем больше запоминаете.
Клавдиу Константин
источник
5
+1 за часть «продолжай делать», что-то вроде обновления знаний.
Технит
Пункт 1 напоминает мне об эпизоде ​​The Office ...
JBRWilkinson
Я зарегистрировался здесь только для того, чтобы подтвердить ваш ответ. Идеальный
Мартин.
3
+1 для значения журнала / дневника. Ведение журнала улучшает успех диет, финансов, фитнеса, в большинстве случаев чего-то на самом деле ... люди, которые не тратят время на написание журнала, думают, что выгода от журнала заключается в поиске чего-то, но реальная ценность заключается в том, чтобы заставить вас думать в течение последних событий, критически рассмотреть эти события и превратить их в историю. Этот процесс помогает памяти и заставляет писателя думать о будущем. Преимущество журнала в большинстве случаев заключается не в том, чтобы читать его по факту, а в том, что касается личной и реальной ценности при его создании.
Quaternion
Блог самый лучший. Я веду блог о некоторых вещах, которые я делаю, - некоторые сообщения о проблемах, с которыми я сталкиваюсь (и редко о вещах, которые мне нравятся или кажутся интересными). Таким образом, когда я сталкиваюсь с некоторой проблемой (как я могу установить эту библиотеку здесь снова?), Я захожу в свой блог и иду дальше. Работает как шарм, плюс может действительно помочь кому-то однажды.
MatthewRock
20

Мой ключ

разнообразие


Повторение. Однажды может быть мимолетным. Видя сотое вхождение имеет значение!

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

Библиотека кодов - сохраняйте личный запас кода и приемов, которые вы использовали и видели.

Централизация. Я храню 1 файл со всеми своими именами (сотнями) на 1 ПК. Я применяю безопасность к нему.

Дисциплина - вы упомянули, что у вас нет времени / усилий для обновления собственного блога и т. Д. Над этим вам нужно больше работать и убедиться, что вы это делаете.

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

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

Мнемоника , например, css border order Tarball (TaRBalL) TopRightBottomLeft. Я также использую цвета и формы, чтобы запомнить слова и темы. Часто чем страннее, тем запоминающе!

Продолжение использования - это эффект «используй или потеряй». Все знания исчезают со временем. Time ++ Fade ++

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

Dropbox - я храню небольшие файлы с элементами памяти

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

Эффект Google - ни один список элементов не будет полным без упоминания об этом. Это больше о том, что вам не нужно помнить - потому что вы можете найти его в Google. Это тоже важное соображение. По мере того, как все больше людей становятся более искусными в этом способе получения знаний, необходимость фактически запоминать любой данный факт падает. Однако это также «поднимает планку» для работников умственного труда, которые все больше и больше находят, что глубокое концептуальное понимание требуется для выполнения в текущей среде. Конечно, что для CME !

Мой собственный блог

Мой собственный сайт закладок .

  • Как мне обновлять свой блог и закладки? Ну, в конце концов, я думаю, что это дисциплина и ловкостьт. е. да, для этого требуется определенная самоотдача. Однако, если вы пошли в школу на получение степени и заплатили 100 000 долларов (или даже 10 000 долларов США) или вы самоучка, вы понимаете значение преданности и настойчивости. Это ничем не отличается. Изящность, или «изящный фактор», заключается в том, что когда вы видите классный веб-сайт с классным учебником или техникой или чем-то еще, или вы преодолеваете острую непростую проблему, вы говорите: «Эй, это изящно! - поэтому, когда вы почувствуете это (или какую-либо фразу, которую вы используете), теперь ассоциируйте это с «Я должен опубликовать это в блоге или записать эту закладку». Есть большая вероятность, что вы не за компьютером, обновляете свой блог в тот самый момент, так что отправьте себе электронное письмо, или текстовое сообщение, или даже голосовую почту, или новое задание в своем списке задач - все, что работает для вас- чтобы напомнить себе сделать это! Например, на моем телефоне Android есть приложение для задач, которое полезно для этого.
Майкл Даррант
источник
Спасибо за ваш вдумчивый ответ. Он остается дисциплинированным по поводу обновления вашего блога? Я думаю, что проблема у меня либо лень, либо я не публикую что-то, потому что я не думаю, что другие выиграют от этого.
Кайл Хейс
+1 за разнообразие. Действительно работает, и я испытал это много раз.
Картик Сринивасан
Кайл, хороший вопрос, я обновил свой ответ. Однако мой ответ все еще больше о необходимости оставаться в курсе, а не о том, как я остаюсь дисциплинированным. В какой-то момент это сводится к личной мотивации.
Майкл Даррант
7

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

Базовая версия бесплатна. Так что попробуйте!

Holli
источник
1
Итак, что бы вы делали в день, когда сервисы evernote не работают или нет интернета (потому что ваш оператор был обстрелян, например)? Я не рекомендую полагаться на «облако» для хранения важных ноу-хау.
Мистер Смит
В настоящее время я использую Evernote, но если вы разместите все там, раздел тегов станет очень загроможденным, и вы начнете использовать его меньше. Если у вас есть хорошие уловки по этому поводу, это поможет многим поделиться! Спасибо!
сияющий свет
@danleadgy, я согласен с тегами. Я должен был быть более избирательным, о чем я действительно не должен беспокоиться.
Кайл Хейс
Задав тот же вопрос о переполнении стека, я начал использовать Evernote, и он работает очень хорошо. Помимо информации о программировании, я храню инструкции. Например, как настроить мой компьютер с нуля (установить ОС, установить программное обеспечение, настроить). Это было чрезвычайно полезно. Кроме того, вы можете получить доступ к той же информации с любого устройства. Таким образом, вы можете читать на одном компьютере или планшете и работать на другом.
B Семь
6

Шерлок Холмс однажды сказал что-то вроде: «Ум человека похож на чердак. Если вы наполняете его мелочами, не останется места для чего-то действительно важного. Для всех этих деталей у нас есть энциклопедия».

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

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

Спенсер Рэтбун
источник
4

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

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

Когда личные архивы терпят неудачу, я попадаю в сеть, к которой недавно добавил SO. Я пойду на «новые» концепции (новые с личной точки зрения) на SO до gaagle. На самом деле, я редко (в настоящее время) возвращаюсь в гагл. Первый соответствующий ответ, как правило, содержит ссылку на некоторые интересные вопросы по SO.

YvesLeBorg
источник
4

Как и другие, я отслеживаю вещи, используя закладки.

Раньше я использовал Delicious, но теперь перешел на Pinboard.

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

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

Ozz
источник
Раньше я тоже пользовался вкусным, но они запутались в этом проекте. Теперь я использую Diigo для закладок и основных моментов. Я должен проверить Pinboard.
JMQ
3

«Помни картину, забудь мелкие штрихи»

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

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

Темная ночь
источник
2

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

Я держу большую иерархию маленьких, коротких, одно-тематических файлов. Файлы в основном в свободной форме, но я переключаюсь на использование Markdown. Поиск с использованием grep / find. Я храню папку в своем DropBox, поэтому она всегда доступна для меня.

Но
источник
Я тоже делал это в виде таких файлов, но нашел, что Evernote также является хорошим хранилищем для данных такого типа.
Кайл Хейс
1

У каждого может быть свой стиль, к которому он / она привык, Для меня я разделяю знания по категориям:

  • книги

  • статьи

  • Коллекции (Вещи, которые мне интересны, ограничены несколькими параграфами - я на самом деле копирую информацию и иногда аннотирую источник) - Например: OODevelopment, Generics и т. Д.

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

  • Завершенные проекты

  • Персональные видеоуроки (я иногда записываю видео о том, как делать что-то, когда слишком много шагов).

  • связи

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

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

Кроме того, с помощью Google Desktop поиск текста или файлов выполняется очень быстро.

Без шансов
источник
Было бы интересно увидеть ваше дерево, если бы вы хотели поделиться.
Кайл Хейс
@KyleHayes, я могу предоставить образец
NoChance
0

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

Теперь я также начинаю использовать Stack Exchange.

Сьюзен Кеннеди
источник
-1

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

Мои правила:

-Не более чем украсить! напишите важные вещи, даже если размер шрифта варьируется в вашем документе :)

-Не переусердствуй. Убедите себя, что для начала ваших мыслей нужна древовидная структура с 10 уровнями

-Потратил ВРЕМЯ на поиск того, что записать. Вы можете найти 5 решений для той же проблемы. В тот момент, когда вы пишете их ВСЕ, вы теряете. Запишите 1-2, которые действительно помогут вам. НЕ позволяйте себе сказать, что у вас нет времени на это сейчас. Это довольно странно, но это относится: «Потратил время, чтобы получить время»

Мне не нравится помещать эти вещи в какой-то «продукт», потому что я хочу быть уверенным, что он будет существовать 20 лет спустя, и я не хочу переходить на разные платформы.

Так что делать?

Все, что вы можете получить информацию с минимальными усилиями.

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

Другая проблема заключается в том, что никто не гарантирует, что ссылки, которые вы найдете, будут работать завтра (представьте 5 лет спустя). Поэтому попробуйте скопировать информацию:

-Загрузите видео с некоторым расширением браузера и прикрепите его, например, к вашей записи phpBB (или WordPress или что-то еще).

Посмотрим правде в глаза: вы программист, и вы делаете приложения для других людей. Сделайте простой для себя и станьте ВАШИМ лучшим клиентом.

мой 2с

e4rthdog
источник
-1

Краткий ответ:

Практика, практика, практика.

Краткий ответ:

Как вы помните, как ходить? Как вы помните, как говорить? Да, эти навыки не совсем одинаковы и не требуют, казалось бы, энциклопедических знаний (по крайней мере, для начинающих), но вы используете то же самое: память.

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

Как только я понял это, я начал разбивать вещи на все более мелкие кусочки (моя собственная, личная версия абстракции). Таким образом, то, что казалось трудным для запоминания, становится легче (по крайней мере, у меня это получается)

Записывать вещи помогает больше, чем вы думаете (работая в сфере образования, я знаю, что это может оказать огромное положительное влияние на удержание). Особенно, если вы можете выразить это своими словами, а не просто дословно копировать. Если вы можете перефразировать или приравнять это к тому, что вы уже знаете, даже лучше.

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

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

Качественная документация тоже помогает. То, что однажды сказал мне мой лектор по программированию, застряло со мной:

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

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

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

надеюсь, это поможет

Джейми Тейлор
источник