Каковы ваши предложения по обучению думать? [закрыто]

22

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

Мы все знаем, что существует множество общих предложений, чтобы отточить свои навыки программирования (например, чтение SO, чтение рекомендуемых книг, следование блогам, участие в проектах с открытым исходным кодом и т. Д.). Это не то, что я после.

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

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

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

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

JK
источник
Ты должен думать как я, потому что я великолепен.
ChaosPandion
Принимайте тяжелые наркотики, как Стив Джоб.
Работа
Функциональное программирование учит думать. Все остальное учит программированию;)
Дарио

Ответы:

13

Мои предложения по обучению думать:

  • Изучай новые языки . И естественные языки и языки программирования. Всегда будьте готовы выучить новый язык. Мышление делается более менее на языке. У каждого языка свой взгляд на мышление. Больше языков, которые вы знаете, больше «умственных инструментов», концепций, точек зрения и абстракций.

«Язык формирует наше мышление и определяет, о чем мы можем думать». - Бенджамин Ли Уорф

И что более важно, язык определяет то, о чем мы не можем думать.

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

«Случай благоволит подготовленному уму». -- Луи Пастер

  • Смирение . Вы должны знать много, чтобы понять, как мало вы знаете. Смирение помогает держать ваш разум открытым для новых способов мышления.
  • Спроси почему? Не довольствуйтесь тем, как.
  • Изучай математику . Действительно мощный инструмент, своего рода язык, для работы с логикой и абстракциями. Изучение математики укрепляет ваш мозг. Ментальный эквивалент «ходить в спортзал».
Maglob
источник
Я не уверен в естественных языках. Изучение их имеет значение, но для размышлений? В контексте программирования? Значение слов для мышления иногда преувеличивается - у нас могут быть идеи, которые мы не можем легко выразить словами, поэтому мы не полностью зависимы от слов в формировании идей. Кроме того, наиболее релевантный словарь (жаргон для математики и других технических областей) широко распространен между языками.
Steve314
6

Из моего опыта это сводится к двум вещам:

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

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

JZD
источник
Хорошие моменты, особенно второй момент.
Orbling
5

Каковы ваши предложения по обучению думать?

Практика. Практика. Практика.

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

Так как бы вы (эффективно) практиковали мышление?

(Здесь я обобщаю что-то еще ...)

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

Стивен С
источник
Я как бы поддерживаю это. Каждый раз, когда я делаю что-то повторяющееся, не требующее размышлений, я думаю о чем-то еще. Я также склонен делать это, когда делаю повторяющиеся вещи, о которых мне следует подумать, например, за рулем, но почему-то я чувствую, что я еду лучше, когда не думаю об этом.
Эрлз
1
@ Эрлз - я не понимаю твою точку зрения. Если вы делаете что-то повторяющееся, вам не нужно об этом думать. Я говорю о практике решения проблем, которые требуют мышления.
Стивен С.
опыт превосходит все (что-то вроде общего утверждения, я знаю), но вы узнаете со временем, я имею в виду, как часто вы сталкивались с проблемой, на которую вам приходилось вечно решать, только чтобы снова столкнуться с ней и позаботиться о ней за считанные минуты. Кроме того, вы подходите к проблеме: не зацикливайтесь на застревании, всегда сосредотачивайтесь на том, что я еще не пробовал, от самого простого до самого сложного
farinspace
Умышленная практика. Вы должны узнать что-то из каждой итерации.
4

Вас могут заинтересовать следующие две вещи:

Течение

Михай Чиксентмихали , профессор венгерской психологии, представил концепцию потока .

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

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

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

Внимательность

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

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

Сообщество
источник
+1 Хотя я ненавижу, что есть книга и целая «теория» о том, что означает подход к проблеме со здравым смыслом, у GTD, безусловно, есть ноги.
Orbling
1
@ Orbling: о, я полностью с тобой согласен. Но, как и в большинстве книг, есть дерьмо и ценность. Что за хрень и ценность зависит от того, кто читает книгу. Проблема с GTD в том, что он настолько мощный, что может раздавить вас, если вы не потратите время на то, чтобы уменьшить свой вклад, вместо того, чтобы сосредоточиться на управлении им независимо от его размера. Это была моя ошибка;)
Проблема, с которой я сталкиваюсь в своей жизни, состоит в том, что есть так много информации, и так много нужно сделать, что у меня не было бы времени, чтобы реализовать какую-либо такую ​​процедуру. Хотя я определенно вижу ценность в этом.
Orbling
1
@ Orbling: я думаю, что это ключ. Фильтрация ваших входных данных - это высочайшая техника производительности, помимо Covey или GTD. Требуется быть очень сильным умственно.
Я считаю, что для выполнения задач, которые вы отфильтровывает, нужны дополнительные люди, смеется.
Orbling
2

Я всегда верил, что хорошие инженеры рождаются, а не создаются.

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

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

Вы можете научиться думать как взрослый? Конечно, вас могут научить методам решения проблем, но тогда у вас есть алгоритмы, которым вы должны следовать, вы можете стать очень «быстрым роботом», как вы красноречиво выразились. Интуитивное понимание, вероятно, врожденное.

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

Orbling
источник
2

Найдите онлайн-форум о том, что вы увлечены. Что-то, что имеет какое-то сообщество. Желательно не программирование - форумы по программированию обычно более ориентированы на решение, чем на обсуждение. Занять позицию. Защити это. Используйте аргументы. Вы также можете вести блог, но лучше иметь оппонента. Дело в том, чтобы иметь содержательное и письменное общение о чем-то с кем-то. Где вы обмениваетесь более крупными фрагментами текста.

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

Затем воспользуйтесь этой способностью, чтобы проанализировать проблему, обобщить мнение и применить его ко всему. Даже программирование.

Domchi
источник
Должен сказать, это один из способов мышления. Это не единственный.
Домчи
2

Одна вещь, о которой я думаю, это то, что нужно видеть вещи как системы, и все системы взаимосвязаны. Каждый во вселенной. Человечество, планеты, галактика, растения, солнечный свет, фотосинтез, насекомые, камни, океаны, все взаимодействующие системы. Аналогично, во времени, циклы: рождение, рост, распад, смерть, ошибок, людей, цивилизаций, горных цепей, звездных систем. Бесконечная борьба за энергию. Все системы.

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

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

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

Мне вспоминается черно-белая фотография, на которой Альберт Эйнштейн бездельничал на шезлонге на пляже и смотрел на океан. Надпись гласила: «Здесь сидит Альберт Эйнштейн. С его мозгом».

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

Кристофер Махан
источник
2

Одним из подходов является умышленная практика .

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

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

Простая стрельба из 100 выстрелов по дальности ничего не дает. Преднамеренная практика стрельбы из 20 выстрелов укрепит хорошие привычки и приведет к повышению производительности.

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

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

И так далее ...

Беван
источник
отличный момент, снова все это приходит со временем / опытом
farinspace
1
@farinspace, только если вы потратите время на оценку и изучение после каждой итерации.
1

Иди тыкай в то, что любишь, пока не найдешь преимущество.

Глубокий вдох,

Переступить...

...

... Расскажи другим, что ты нашел.

Paddy3118
источник
1

Итак, вы хотите думать

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

Но не о том, почему. Какова цель?

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

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

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

Ищите подсказки, не ища, а открывая глаза. Посмотри на реальность. Вы не можете начать поиск ответов, пока не осмотрели место преступления. Вы не можете найти решение, пока не докажете недостаток.

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

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

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

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

asoundmove
источник
+1 за ваш ответ, изучение вашей проблемной области и выслушивание пользователей очень важно. Хотя -1 для «да, верно» комментарий, так что без изменений.
Orbling
@ Orbling: Хорошо, ты прав, это было немного за бортом. Комментарий удален. Я не думаю, что врожденный талант - это правильно, но не нужно об этом упоминать.
asoundmove
Ну, если бы у вас был -1 мой ответ вместо этого, я бы все равно пометил ваш, но это предотвратило это в этом, исправлено сейчас. Хорошо, если вы не согласны с тем, что я сказал.
Orbling
@ Orbling, нет, мне не нравится голосовать -1 за кого-либо, я бы предпочел просто двигаться дальше ... Только крайние сценарии гарантируют -1, просто несогласие - нет.
asoundmove
Я согласен с вами на других сайтах, так как они правильные / неправильные в основном. Programmers.SE отличается от остальных тем, что субъективен, поэтому голосование - это в основном согласие, несогласие. Считаете ли вы это полезным или бесполезным. Я только голосую против, если я категорически не согласен с кем-либо. На момент написания статьи 2,6% моих голосов были отрицательными. Мнения ведь должны быть оспорены.
Orbling
1

Я думаю, что вы должны проводить различие между разными видами мышления.

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

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

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

Ричард
источник
0

Математика учит тому, как думать. Приложение требует творчества и опыта.

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

Хорошее понимание. Грубо говоря, требования к «величию» зависят от вашего личного определения «величия» ... и со временем изменились. Сегодня успех проекта заключается в возможности быстро собрать воедино концепции, не вдаваясь во все мельчайшие детали. Личный успех можно определить как овладение C #, как у Jon Skeet.

Читайте кодер на работе . Гораздо более опытные программисты, чем я обсуждаю это подробно.

P.Brian.Mackey
источник
0

Работайте над применением идей и концепций из, казалось бы, не связанных областей. Для меня, блеск iPod - это не разработка великолепного MP3-плеера, а помощь в решении огромной проблемы, с которой индустрия музыкальных развлечений сталкивалась с пиратской музыкой и моделью продажи музыки с CD / Album. Джобс, вероятно, применил больше того, что он узнал в Pixar, в работе с киноиндустрией. Он знал, в чем реальная проблема.

JeffO
источник