Прежде всего, это не общий вопрос «сделай меня лучшим программистом», хотя результат его может показаться схожим. На программистах. Я читал и видел, как они закрываются здесь , здесь , здесь , здесь и здесь .
Мы все знаем, что существует множество общих предложений, чтобы отточить свои навыки программирования (например, чтение SO, чтение рекомендуемых книг, следование блогам, участие в проектах с открытым исходным кодом и т. Д.). Это не то, что я после.
Я также отмечаю активную читательскую аудиторию на этом веб-сайте и надеюсь, что он работает в мою пользу, дав несколько отличных ответов. Из прочтения переписки здесь, кажется, появляется огромное количество опытных людей, которые работают или работали в областях, связанных с программированием. И большинство из вас может выразить мысли красноречиво, кратко.
Недавно я заметил различие между тем, кто способен программировать, и программистом, который действительно может думать . Я отказываюсь верить, что для того, чтобы стать выдающимся программистом, мы просто подчиняемся жизни, похожей на губку (т. Е. Поглощаем все, что связано с нашей областью, читая, слушая, наблюдая и т. Д.). Я бы даже сказал, что просто зная каждую концепцию программирования, которая позволяет вам решать проблему X быстрее, чем все вокруг вас, если вы не можете думать , вы сильно ограничиваете себя - вы просто быстрый робот.
Мне нравится верить, что у великого программиста есть совсем другое лицо, которое не связано с тем, как много вы знаете о программировании, но это то, насколько хорошо вы можете переплетать новые концепции и применять их в своей профессии программиста или хобби. Я не видел, чтобы кто-то углублялся в этот аспект человеческого разума и программирования или обращался к ним. (Да, возможно, я тоже не выглядел достаточно усердно - извините, если это так.)
Так что для любого, кто потратил какое-то время на размышления о том, что я упомянул выше - или, может быть, это все здесь, потому что я немного отстал в своем личном / профессиональном развитии - что вы предлагаете узнать, как думать? Помимо обычного чтения, что еще вы сделали, чтобы быть лучше, чем другие люди в вашей / нашей области?
Ответы:
Мои предложения по обучению думать:
И что более важно, язык определяет то, о чем мы не можем думать.
источник
Из моего опыта это сводится к двум вещам:
Помимо этого, все довольно разные в том, как они думают о программировании или изучают новые навыки программирования. Я предлагаю вам продолжать пробовать новые вещи и сохранять то, что хорошо для вас работает.
источник
Практика. Практика. Практика.
Серьезно, умственная деятельность (то есть мышление) подобна физической активности. Чем больше вы это делаете, тем лучше у вас получается. (На самом деле, физическая активность тоже включает в себя умственную деятельность. У лучших спортсменов мышцы не просто в нужном месте ...)
Так как бы вы (эффективно) практиковали мышление?
(Здесь я обобщаю что-то еще ...)
Я думаю, что вы бы определили проблемы мышления, которые вам кажутся трудными (но не невозможными), и попытаетесь их решить (продумать их), и вам больше понравится.
источник
Вас могут заинтересовать следующие две вещи:
Течение
Михай Чиксентмихали , профессор венгерской психологии, представил концепцию потока .
Мне повезло, что я могу войти в поток каждый день, используя старую технику, которую я изучаю из своего приложения GTD, которое является следующим действием .
Я могу сказать вам, что это действительно имеет значение. Когда я нахожусь в потоке, я получаю более высокое качество и быстрее, чем когда я не в этом состоянии. Я полностью сосредоточен на том, что я делаю, и поэтому я думаю более эффективно.
Внимательность
Я задал вопрос о медитации некоторое время назад, потому что меня беспокоил тот факт, что медитация может снизить мои программистские (и творческие) способности.
Я только начал обучение методике Джона Кабата-Цинна , поэтому мне еще рано делиться с вами обширным опытом, но из немногих, которые я изучил, я могу сказать вам, что это, вероятно, вы захотите сделать.
источник
Я всегда верил, что хорошие инженеры рождаются, а не создаются.
Для этого вам нужно настроение, логический, аналитический, дедуктивный, в сочетании с упорством и любознательностью, необходимыми для эффективного обзора и структурного взгляда на проблему и быстрого перехода от А к В, направляя свой ум через решение.
Существует много исследований, предполагающих, что это умение значительно улучшается благодаря хорошему раннему знакомству с такими вещами, музыка тоже помогает. После определенного момента ваши ментальные карты становятся довольно жесткими. Не с точки зрения того, что вы думаете, но как вы думаете.
Вы можете научиться думать как взрослый? Конечно, вас могут научить методам решения проблем, но тогда у вас есть алгоритмы, которым вы должны следовать, вы можете стать очень «быстрым роботом», как вы красноречиво выразились. Интуитивное понимание, вероятно, врожденное.
Это ни в коем случае не ограничивается нашей профессией, во многих наборах навыков преобладают врожденные навыки, а не приобретенный ответ. Люди могут не хотеть, чтобы это было правдой, но, скорее всего, так и есть.
источник
Найдите онлайн-форум о том, что вы увлечены. Что-то, что имеет какое-то сообщество. Желательно не программирование - форумы по программированию обычно более ориентированы на решение, чем на обсуждение. Занять позицию. Защити это. Используйте аргументы. Вы также можете вести блог, но лучше иметь оппонента. Дело в том, чтобы иметь содержательное и письменное общение о чем-то с кем-то. Где вы обмениваетесь более крупными фрагментами текста.
Вы научитесь сообщать свои идеи и аргументировать их. Поскольку вам придется защищать свои взгляды, вам придется подкреплять их фактами. Вам нужно будет о чем-то подумать, сформулировать свою позицию и поддержать ее; может быть, даже изменить это.
Затем воспользуйтесь этой способностью, чтобы проанализировать проблему, обобщить мнение и применить его ко всему. Даже программирование.
источник
Одна вещь, о которой я думаю, это то, что нужно видеть вещи как системы, и все системы взаимосвязаны. Каждый во вселенной. Человечество, планеты, галактика, растения, солнечный свет, фотосинтез, насекомые, камни, океаны, все взаимодействующие системы. Аналогично, во времени, циклы: рождение, рост, распад, смерть, ошибок, людей, цивилизаций, горных цепей, звездных систем. Бесконечная борьба за энергию. Все системы.
Это изучение жизни и природы в широком смысле изучения. Видеть все вещи, связанные, видеть все вещи взаимодействующими. Сконцентрируйтесь на этом, когда вы наблюдаете закат и ощущаете глубину сил гравитации, которые вращают нас вокруг Солнца, притягивают нас к поверхности планеты и падают солнечные лучи, которые краснеют перед входом в вашу сетчатку со скоростью 300 000 000 метров в секунду и делают изображения в вашем мозгу приматов.
Когда вы начинаете думать об этом, о том, как все связано, о том, как связаны цены на золото и рабский труд, а также штормы в Тихом океане и промышленных комплексах в Японии, и вы не торопитесь, действительно находите время, чтобы сидеть и Подумайте обо всем этом, тогда ваши мыслительные «мускулы» будут действительно сгибаться и расти.
Теперь многое из этого будет ниже порога выразительности, но не позволяйте этому останавливать вас. Ваш мозг более мощный, чем самый мощный компьютер. Нажмите на это. Я не думаю, что это можно разогнать.
Мне вспоминается черно-белая фотография, на которой Альберт Эйнштейн бездельничал на шезлонге на пляже и смотрел на океан. Надпись гласила: «Здесь сидит Альберт Эйнштейн. С его мозгом».
Следующая задача состоит в том, чтобы быть в состоянии передать сложность и взаимозависимость всех вещей простым способом. Это даст вам чем заняться, пока вы не станете очень старым.
источник
Одним из подходов является умышленная практика .
Простое повторение не приводит к приобретению навыков - вам нужно быть интроспективным, оценивать свои результаты, определять пути для улучшения ситуации.
Иллюстрация: мой близкий родственник участвует в спортивной стрельбе из пистолета. Во время тренировок много внимания уделяется рассмотрению каждого выстрела, фокусируясь на правильных шагах. Интуитивно противостоит, не слишком много внимания уделяется плохим кадрам, потому что повторение (репетиция) ошибки усиливает ее.
Простая стрельба из 100 выстрелов по дальности ничего не дает. Преднамеренная практика стрельбы из 20 выстрелов укрепит хорошие привычки и приведет к повышению производительности.
То же самое относится и к программированию - подумайте о том, что вы делаете. Не делайте это ежемесячно, еженедельно или ежедневно - делайте это мгновение за действием, действие за действием.
И так далее ...
источник
Иди тыкай в то, что любишь, пока не найдешь преимущество.
Глубокий вдох,
Переступить...
...
... Расскажи другим, что ты нашел.
источник
Итак, вы хотите думать
Множество отличных предложений от других авторов о том, как думать или как научиться думать: поток, осознанность, математика, страсть, практика ... так что я не пойду туда, покрытая почвой.
Но не о том, почему. Какова цель?
Лично я понял, что прежде чем думать, нужно знать почему.
Лучше всего слушать и смотреть. (Я принимаю оба как единое целое, вы не можете разделить их)
Единственный способ стать лучше в программировании, будь то сбор требований, преобразование этих требований в подробные спецификации системы, сопоставление их с проектной документацией, реализация кода, отладка для вашей дорогой жизни, пропускаете ли вы какой-либо или все эти этапы, есть ли у вас пять минут, чтобы найти решение или 20 лет, вам нужно слушать и смотреть.
Слушайте, что хочет пользователь, слушайте то, что пользователь сообщает вам, что произошло, слушайте, как специалист службы поддержки говорит вам, что он видел. Слушать. Слушай, даже если это не имеет смысла. Слушайте, даже если вы убеждены, что они так неправы. Слушай и не суди.
Ищите подсказки, не ища, а открывая глаза. Посмотри на реальность. Вы не можете начать поиск ответов, пока не осмотрели место преступления. Вы не можете найти решение, пока не докажете недостаток.
Один единственный пример из моего опыта(на разрешение ошибок, но это может быть адаптировано к чему-либо на самом деле). По понятным причинам (юридическим и иным) я буду скрывать сочные подробности. В критической системе безопасности оператор сообщил о серьезном недостатке. Некоторые устройства географического слежения фактически теряли слежение, когда «не должны», что потенциально могло повлиять на жизни (это «должно» было настоящей ошибкой и слишком долго останавливало наши исследования). К счастью, хотя это было обнаружено несколько недель спустя почти случайно, поскольку в удаленном месте работала другая система, для которой другой оператор пришел, чтобы доказать, что отслеживание не было потеряно в этой системе. Это заставило нас задуматься снова. Наш основной поставщик программного обеспечения не поверил нам ни секунды, поэтому нам пришлось выйти и доказать это. Единственный путь был через прививку: построение симуляции для точного воспроизведения рабочей ситуации. Нам пришлось на самом деле снять доказательство, чтобы поставщик поверил нам. В конце концов, моделирование дало информацию, превосходящую наши надежды, и привело нас к пониманию всей проблемы. Это не займет много времени, чтобы исправить после этого.
Единственный способ, которым мы дошли до конца, - это логическое соединение одной удаленной системы с другой, выполняющей аналогичную работу, но не совсем ту же работу. Это поиск подсказок (смотри). Это было возможно только благодаря тому, что доверяли одноразовому отчету и не отвергали его как случайный сбой в системе (прослушивание), а затем снова слушали второй отчет, противоречащий первому (прослушивание).
Таким образом, когда у вас есть правильные подсказки (выслушав и осмотрев), определив проблемную область, поняв основную причину или ключевые принципы, тогда вы можете сначала найти решения для дальнейшего понимания (проб и ошибок, симуляции, демонстрации, доказательства концепции, макет, альфа, бета версии) и, в конечном итоге, предлагают твердое решение (которое иногда может быть улучшено после некоторой реальной эксплуатации).
Для того, чтобы вы могли слушать и смотреть, требуется непредвзятость, доверие и абсолютная преданность вашим целям. Это то топливо, о котором вы должны думать, или, более того, чтобы ваше мышление было сосредоточено на правильной цели (часто проблема заключается не в неспособности думать, а в отсутствии четко определенной цели, на которой вы могли бы сосредоточиться).
источник
Я думаю, что вы должны проводить различие между разными видами мышления.
Креативное мышление - как придумывать новые идеи, инновационные решения и неожиданные результаты. За этим стоит целая наука: ищите Эдварда де Боно, методы творчества и т. Д. Не многие программисты изучают эту область.
Аналитическое мышление - под этим я подразумеваю научный процесс. Посмотрите на входы, выходы, измерьте, что важно, приходите к логическим выводам. Большинство разработчиков знакомы с научной техникой, но никогда не используют ее. Сделай так!
Критическое мышление - я думаю, что это больше философия. Отойдите и посмотрите на более широкую картину, пересмотрите свои предположения, действительно ли вы делаете то, что, как вы говорите, ваши ценности? Изучите философию, есть куча замечательных авторов и идей.
источник
Математика учит тому, как думать. Приложение требует творчества и опыта.
Хорошее понимание. Грубо говоря, требования к «величию» зависят от вашего личного определения «величия» ... и со временем изменились. Сегодня успех проекта заключается в возможности быстро собрать воедино концепции, не вдаваясь во все мельчайшие детали. Личный успех можно определить как овладение C #, как у Jon Skeet.
Читайте кодер на работе . Гораздо более опытные программисты, чем я обсуждаю это подробно.
источник
Работайте над применением идей и концепций из, казалось бы, не связанных областей. Для меня, блеск iPod - это не разработка великолепного MP3-плеера, а помощь в решении огромной проблемы, с которой индустрия музыкальных развлечений сталкивалась с пиратской музыкой и моделью продажи музыки с CD / Album. Джобс, вероятно, применил больше того, что он узнал в Pixar, в работе с киноиндустрией. Он знал, в чем реальная проблема.
источник