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


11

В основном я художник, хотя я называю себя художником / физиком. Хотя я могу заниматься математикой, иметь дело со словами и «логическими» вещами, считающимися левым мозгом, это усилие, и я делаю ошибки, тогда как я хорошо разбираюсь и большую часть времени думаю о тех вещах, которые связаны с правым мозгом мышление - пространственные отношения, целостный контекст общей картины и т. д. Конечно, все это нечетко, поскольку теория правого левого мозга упрощена, и никакая умственная деятельность не так проста. Тем не менее, я чувствую, что мне хорошо подходят художники, режиссеры, шеф-повара и другие невербальные мысли, творческие люди, в то время как у большинства людей, занимающихся «IT» или хардкорными инженерами, есть умы, которые работают по-разному, с вниманием к деталям, много деталей в памяти одновременно, и сильные рациональные и словесные способности.

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

Кроме того, я также довольно сильно против многих современных стилей C ++ и OO. Те, кто написал этот код, действительно пили глубокие OO и Modern C ++ kool-ade. Я считаю, что на самом деле это делает код намного труднее следовать, гораздо труднее решить, где что-то исправить или изменить. Я не знаю, является ли это частью левого / правого различия (или как вы хотите это назвать) или нет.

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


9
Это не различие между левым и правым полушариями мозга - никто не может постичь или модифицировать код C ++ такого рода без огромных усилий, кроме человека, который его написал (часто даже они). Просто убедитесь, что, когда вас попросят оценить, сколько времени займет что-то, вы добавите несколько сотен процентов, чтобы справиться с «современным» дизайном.
Carson63000

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

1
@Rocket: Ты все испортил :-) но я согласен по частям.
Компьютерщик

@mojuba - да, мы используем очень продвинутую форму C ++: D
DarenW

2
Это называется «Код наследия», и проблема не только для вас. См. En.wikipedia.org/wiki/Legacy_code для ссылки на книгу Майкла Фезерса о том, как приручить такого зверя.

Ответы:


2

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

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


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

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

Другое дело, зная, что вы хотите создать: графику, приложения, веб-сайты, процессы или системы? Все это немного разные вещи, которые при желании можно было бы спросить: «Создать что?»


Эта идея почти прямо из встречи с моим боссом только вчера. Интересно - не всегда ли создание вещей более желанным для каждого, а уход - как уборка туалетов? Если кто-то говорит: «Я бы лучше СОЗДАЛ вещи!» будут ли они приняты всерьез?
DarenW

4
Мне нравится обслуживание кода. Это больше похоже на операцию, чем на уборку туалетов: вам нужно починить часть работающей системы, не ломая ее.
Фрэнк Шиарар

«вытащить что-нибудь из эфира» - напоминает мне сон, в котором я вытаскивал из воздуха лимонные пончики, чтобы произвести впечатление на девушку: D А если серьезно, то для меня это ключевой момент - я всегда хочу об этом думать, создавать новые вещи.
DarenW

3
@FrankShearar Иногда это как операция в туалете; (
mlvljr

16

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

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

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

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


Тьфу! Такие вещи заставляют меня съеживаться! Может быть, мой стиль мышления слишком низкоуровневый, то есть «программирование, ориентированное на код операции», чтобы это было удобно.
ДаренВ

2
Что касается «сделать так, чтобы легко было игнорировать большую часть пустяков» - стиль кодирования, кажется, прославляет мелочи. Попытка исправить одну мелочь на этой неделе, было невероятное количество деталей, которые на самом деле ничего не делают.
DarenW

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

2
@darrenw уверен, smalltalk 80
Тим Виллискрофт

10

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

В основном я художник, хотя я называю себя художником / физиком. Хотя я могу заниматься математикой, иметь дело со словами и «логическими» вещами, считающимися левым мозгом, это усилие, и я делаю ошибки, тогда как я хорошо разбираюсь и большую часть времени думаю о тех вещах, которые связаны с правым мозгом мышление - пространственные отношения, целостный контекст общей картины и т. д. Конечно, все это нечетко, поскольку теория правого левого мозга упрощена, и никакая умственная деятельность не так проста. Тем не менее, я чувствую, что мне хорошо подходят художники, режиссеры, шеф-повара и другие невербальные мысли, творческие люди, в то время как у большинства людей, занимающихся «IT» или хардкорными инженерами, есть умы, которые работают по-разному, с вниманием к деталям, много деталей в памяти одновременно, и сильные рациональные и словесные способности.

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

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

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

Как правило, вы комбинируете функцию и отношение, чтобы создать (творчески названную) функцию-отношение (интровертное мышление, экстравертное чувство и т. Д.). Сознательные личности людей определяются в основном доминирующей функциональной позицией и вспомогательной функциональной ориентацией. В конце концов, психологи пришли к общему мнению, что в целом существует два типа людей: люди, чьи первичные две функции состоят из интровертной функции оценки и экстравертной воспринимающей функции, или люди, чьи основные две функции состоят из экстравертной функции оценки и интровертированной функции восприятия , Если вы когда-либо проходили тест MBTI или аналогичный, в последнем письме указывается, к какой категории вы относитесь. Если вы P, это означает, что вы интровертный судья / экстравертный воспринимающий, а J наоборот.

До сих пор со мной? Вот где я получаю то, что имел в виду, когда две стороны были зеркальным отражением друг друга. Никто не осознавал этого в то время, но они по сути строили набросок того, где функциональность лежит в мозгу. Действительно, каждое из функциональных установок Юнга было сопоставлено с грубым расположением в мозге. Как выясняется, все функции P (интровертное суждение и экстравертное восприятие) находятся на правой стороне мозга, а функции J - на левой стороне мозга.

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

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

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

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

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


Удивительно глубокий и достаточно длинный для чтения, чтобы на время отложить выполнение настоящей работы!
DarenW

6
Очень интересные вещи. Есть какие-нибудь источники?
Мейсон Уилер

4

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

О, и вы можете потерпеть неудачу, это слишком ненадежно. Но так как вы спросили ...;)


2

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

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

Во-первых, советы после

  1. Правильные люди воображают все своими глазами.
  2. Когда ваша визуализация хорошо соответствует реальности, работа проста
  3. Правильно мыслящие мыслители, не умеющие хорошо мыслить, должны полагаться на визуализацию
  4. Ученики с правильным умом изучают все сразу "ага!" затем вписать детали в умственную конструкцию. Сначала им нужен обзор, затем подробности.
  5. Без обзора контекста детали плавают в вакууме, не связанном с умом - поэтому необходимо использовать грубое запоминание. Очень тяжело для праворуких.

СОВЕТЫ, которые помогли мне:

  • 1 Используйте Цвет, чтобы различать части синтаксиса
    1. напишите псевдокод кода, который вы отлаживаете: это нужно сделать, затем перейдите сюда и пометьте разделы кода для соответствия
    2. если бы объекты были, скажем, настоящими животными, у них были бы привычки и ожидаемое поведение. Это более легко визуализируемый способ мышления о кодировании.
    3. Я представляю код как историю с псевдокодом в качестве моих заметок, а затем следую за процессом вокруг.

  • Какой раздел исправить дальше?

  • Мой рабочий процесс

  • Кто здесь живет? (процесс, соединения, данные и т. д.)

  • что им нужно сделать? (функция) ОК

    хорошо

  • код это где-то может быть синтаксис / проверка орфографии ОК скопировать и вставить

  • Тест

    Результат -> это работает? Да продолжай

    Нет? Персонажи должны играть Гамлета, где все умирают.

  • Вернуться в среду-

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