右脳は、大規模な左脳のコードをどのように処理できますか?[閉まっている]


11

私はアーティストであり、ほとんどが、自分自身をアーティスト/物理学者と表現しています。私は数学、言葉、そして左脳と見なされる「論理的」なものを扱うことができますが、それは努力であり、間違いを犯します。思考-空間的関係、全体的な全体像の文脈など。もちろん、左右脳理論は単純化されており、精神活動はそれほど単純ではないため、これらはすべて曖昧です。それでも、私はアーティスト、ビデオディレクター、シェフ、その他の非言語的思考、創造的なタイプにうまく適合していると感じていますが、「IT」またはハードコアソフトウェアエンジニアのほとんどの人は、細部に注意して、一度に多くの詳細を念頭に置いて、強力で合理的かつ言語的な能力。

したがって、ここで私は、オブジェクト指向に非常に重いC ++ソフトウェアの大群の厄介であいまいなバグを修正するための仕事に就いています。それらの間の関係、実行の流れ(非常にスパゲッティのような)およびその他の詳細。

それに加えて、私は現代のC ++およびOOスタイルの多くに対してもかなり強い。このコードを書いた人は、深いオブジェクト指向とモダンなC ++クールドを本当に飲みました。実際、コードを追跡するのがはるかに難しくなり、何かを修正または変更する場所を決定するのがはるかに難しくなります。これが左/右の差の一部であるかどうか(またはあなたがそれを呼びたいもの)かどうかはわかりません。

しかし、私がしなければならないC ++に取り組む-人々は私の収入を私に依存しています。雇用主にとって可能な限り効果的であるために、この状況に対処するためのヒントとテクニックは何ですか?


9
それは左脳/右脳の違いではありません-それを書いた人(多くの場合、彼らでさえ)を除いて、誰もそのようなC ++コードを大きな努力なしで理解したり修正したりすることはできません。何か時間がかかるかどうかの見積もりを求められたら、「現代的な」デザインに対処するために数百パーセントを十分に詰めることを確認してください。
Carson63000

8
イライラしないでください。C ++は非常に奇妙な言語であり、設計目標はユーザビリティ(人間向け)でもコンパイル可能性、明確性、正確性(コンパイラ向け)でもありませんでした。C ++の唯一の設計目標は、完全に非実用的であったとしても、ありとあらゆる字句順列が何かを意味するようにすることでした。

1
@ロケット:あなたはそれを爆破しました:-)しかし、私は断片的に同意します。
オタク

@mojuba-はい、C ++の非常に高度な形式を使用します:D
DarenW

2
これは「レガシーコード」と呼ばれ、問題はあなただけのものではありません。そのような獣を飼いならす方法についてのMichael Feathersの本へのリンクについては、en.wikipedia.org / wiki / Legacy_codeを参照してください。

回答:


2

ファジーに慣れることが強みであることが、キャリアアップの観点から私の提案である場合、物事のデザイン面にもっと入り込んでみてください。創造的であることを好む人として、メンテナンスに取り組むことはあまり適切ではないかもしれませんが、可能であれば新しいものに取り組むことはより良いかもしれません。

自分の仕事に誇りを持ちたいということは何の問題もありませんが、細部に行き詰まりたくないのは、改善するための新しいアプローチを見つける必要があるかもしれません。それを落ち込んで汚れていると見るのではなく、それを何らかの形で楽しくする別の視点があるかもしれません。


一部の人々は新しいシステムを導入するよりも既存のシステムを微調整することを好むため、サポートとメンテナンスにはファンがいる可能性があります。私は、エーテルから何かを引き出しようとするよりも、私が変えようとしている既存のシステムでよりうまく働く傾向があることを知っています。

あなたがしようとするかもしれないことは、これがあなたが好きなものの一部であるので、人々が様々なトラブルスポットとブレインストーミングソリューションに対処するためのアイデアを望んでいるときに注意することです。どのコード行を変更するかを知ることではなく、誰かに「そのオブジェクトを見て、それが主張する以上のことをしているかどうかを確認できましたか?」ものの種類。

もう1つのポイントは、作成するものを知ることです。グラフィック、アプリケーション、Webサイト、プロセス、またはシステムですか。これらはすべてわずかに異なるもので、作成したいときに「何を作成しますか?」


このアイデアは、昨日上司との会議からほとんどまっすぐです。誰もが常に物事を作成することが望ましいとは限らず、メンテナンスは常にトイレの掃除のようなものですか?誰かが「物を作りたい!」と言い回る場合 彼らは真剣に受け止められますか?
DarenW

4
のようなコードの保守。トイレを掃除するというよりは手術のようなものです。作業システムの一部を壊さずに修復する必要があります。
フランクシェラー

「エーテルから何かを引き出す」-レモンドーナツを空から引き出して女の子を感動させる夢を思い出します:Dしかし、真剣にそれは私にとって重要なポイントです-私は常に新しいものを作成します。
-DarenW

3
@FrankShearar時々、それはトイレで行われる手術のようです;(
mlvljr

16

あなたのコードが特にオブジェクト指向であるか、「Modern C ++」に特に似ているように聞こえます(少なくとも私には聞こえません)。それどころか、優れたオブジェクト指向の重要な要素の1つはカプセル化です。その主な目的は、常に追跡する必要があるものの数を減らすことです。同様に、「非常にスパゲッティのような...実行の流れ」は、オブジェクト指向でも現代的(何でも)には聞こえません。

今、あなたが維持しているコードを見ると、私はそれを異なって見るかもしれません、そして/またはあなたは私のコードがあなたが今維持しているものに似ていると見るかもしれません-それは推測するのが少し難しいです。私のコードがどのように機能するかの詳細をたどってみた場合、それはむしろスパゲッティのような制御の流れとして見ることができると思います。

ほんの一例として、私は多くのプログラマーよりもかなり少数の暗黙的な変換をはるかに好みます(または少なくとも寛容です)-私はプロキシクラスのようなものをかなり使います。つまり、単一の関数を呼び出す過程で、異なるタイプの3つまたは4つの一時オブジェクトが簡単に作成される可能性があることを意味します(実際に関数を実行することではなく、単に呼び出すだけです)。もちろん、これらの一時オブジェクトはすべて、関数呼び出しを含む式の最後で再び破棄されます。数え上げれば、コードで「目に見える」呼び出しが行われた1つの関数からの呼び出し/戻りで、半ダース以上の別個の関数が簡単に呼び出される可能性があります。

物事のポイントの方法は、しかし、それが簡単にできるようにすることであることを無視するなどの詳細情報を扱うほとんどの(例えば)に関与トリビアのをどのように特定のオブジェクトを表現し、それは本当に何に専念されている代わりに。特定の部分にバグが見つかった場合にのみ、そのコードの大部分を処理する必要があります。ただし、非常に小さくシンプルなクラスを作成することで、そのほとんどを避けようとしていますが、明らかに正しいことを理解するのは一見以上のことではないので、それ以降は無視するのは簡単です。


うん!そのようなものは、私がうんざりさせます!たぶん、私の思考スタイルはあまりにも低レベル、つまり「オペコード指向プログラミング」であり、これに満足することはできません。
DarenW

2
「トリビアのほとんどを簡単に無視できるようにする」ために-コーディングのスタイルはトリビアの賛美歌のようです。今週、ちょっとした修正を試みたところ、信じられないほどの詳細があり、実際には何もしていませんでした。
DarenW

「...非常に小さくて単純なクラスを作成することで、ほんの少しだけ実行できるので、一見以上のことはありません...」
DarenW

2
@darrenw確かに、smalltalk 80
ティムウィリスクロフト

10

警告:この答えは非常に長く、多くのサイコバブルがあります(説明しようとしていますが、それでも)。何と言えばいい?心理学は、プログラミング以外の私の好きな科目の1つです。

私はアーティストであり、ほとんどが、自分自身をアーティスト/物理学者と表現しています。私は数学、言葉、そして左脳と見なされる「論理的」なものを扱うことができますが、それは努力であり、間違いを犯します。思考-空間的関係、全体的な全体像の文脈など。もちろん、左右脳理論は単純化されており、精神活動はそれほど単純ではないため、これらはすべて曖昧です。それでも、私はアーティスト、ビデオディレクター、シェフ、その他の非言語的思考、創造的なタイプにうまく適合していると感じていますが、「IT」またはハードコアソフトウェアエンジニアのほとんどの人は、細部に注意して、一度に多くの詳細を念頭に置いて、強力で合理的かつ言語的な能力。

これは、実際には、神経科学のやや時代遅れの見解に基づいています。ある時点で、科学者たちは、左脳が論理と生の感覚データのみを担当し、右脳が直感と感情のみを担当すると考えていました。結局のところ、左脳は実際に右脳のすべての能力を備えており、その逆も同様です。ある者として、非常に右brainedまだ、論理的な方向性や空間的な方向とひどい、そして伝統的に右脳と関連している芸術的創造性のいずれかを完全に欠い、私はこれを証明することができます。

左脳と右脳の違いを考える最良の方法は、それらを互いの鏡像と考えることです。これを理解するには、いくつかの背景データが必要です。カール・ユングという名前の心理学者は、20年代にパーソナリティ理論を思いつきました。あなたはおそらくそれらの1つを聞いたことがあるでしょう:内向性対外向性。私はこのテーマに関するいくつかの ブログ投稿を書きましたが、基本的にはこれに要約されています。これは「態度」と呼ばれます。

次に、思考、感情、感覚、直感の4つの異なる認知機能があります。簡単にするために、これらの関数のうち2つは「判断」機能(思考と感覚)と見なされ、他の2つは「知覚」機能と見なされるとだけ言っておきましょう。審査機能が決定を下します。判断力があるときは、驚きを避けようとしています。サプライズが発生したときに適応する必要がないように、適切な決定をすべて事前に行っておく必要があります。事前に多くの計画を行っているため、決定が下されると、硬直して柔軟性がなくなる傾向があります。一方、知覚の考え方は、ズボンの座席で飛んでパンチで転がることを好む傾向があります。

通常、機能と態度を組み合わせて、(創造的に命名された)機能態度(内向的思考、外向的感情など)を作成します。人々の意識的な性格は、主に支配的な機能態度と補助的な機能態度によって定義されます。最終的に、心理学者は、主に2つの機能が内向的な判断機能と外向的な知覚機能で構成される人、または主要な2つの機能が外向的な判断機能と内向的な知覚機能で構成される人の2種類があるという合意に達しました。 。MBTIまたは同様の人格テストを受けたことがある場合、最後の文字はどのカテゴリに該当するかを示しています。あなたがPなら、それはあなたが内向的な判断者/外向的な知覚者であり、Jがその逆であることを意味します。

それでも私と一緒に?ここで私が意味するのは、お互いの鏡像であるということです。当時は誰も気付いていなかったが、彼らは本質的に機能が脳のどこにあるかのスケッチを構築していた。実際、ユングの各機能態度は、脳内の大まかな場所にマッピングされています。結局のところ、すべてのP機能(内向的判断と外向的知覚)は脳の右側にあり、J機能は脳の左側にあります。

左脳の人は詳細が得意で、右脳の人は「全体像」が得意だと言うたびに(「全体像」の方が正確だと思うかもしれませんが)、あなたは物事の外向的な側面に集中しています。左脳の人が右脳の人を管理する場合、左脳は右心が前もって自分の仕事をする方法についてのすべての詳細を知りたいと思うでしょう。彼らは、要件を明確に設定し、厳しい期限を前もって決定することを望んでいます。権利者は、後で詳細を入力できるようにするために、自分が何をする必要があるかについての非常に幅広いアイデアを望んでいます。

ただし、これはあなたが経験していることではないようです。左利きのコードは恐らく事前に十分に考え抜かれておらず、いくつかの先見性によって防げる可能性のある問題を抱えているようです。これは、頭の中でコードのようなものの抽象的なモデルを構築するとき、内向的な関数を使用しているためです。権利者は、そのモデルを事前に作成し、必要なすべての詳細を入力するか、すべての詳細を簡単に入力できるような方法で作成したいと考えています。さらに、採用する最適なアプローチの点で厳格になる可能性があります(C ++のより高度な機能についてどのように感じるかについて、厳しいラインを取っていることに注意してください)。左利きのモデルはよりアドホックであり、進むにつれて埋められます。

私の経験では、このため、左利きは右利きの人がすべてを過度に設計していると非難し、右利きは左利きの人が速すぎて汚れていると非難します。両者には真実がありますが、そのアプローチが極端な場合に限られます。面白いのは次のとおりです。彼らは同じ目標を達成するために反対のアプローチを取っています(つまり、物事を成し遂げる)。権利者は、モデルを事前に決定して、物を実装する時間を短縮し、プロジェクト全体をより早く完了できるようにすることを望んでいます。左利きは、より早く物事を成し遂げられるように、建築に費やす時間を減らしたいと考えています。

ちなみに、プロジェクト管理タイプのもの(タイムラインの決定、要件の策定など)に関しては、これら2つの態度は逆になります。これは、一方が他方を十分に前向きに計画していないと他方が主張している場合、一方が他方を厳格であると非難し、次の引数が両側がまったく反対のスタンスをとる、本当に混乱した状況につながります。

これらすべてについて何ができますか?これらの違いを認識し、反対側の意見に可能な限り対応しようとする以外に何もありません。問題は、これが両方の方向に進むことです。左利きを可能な限り理解して対応することができますが、彼らが好意を返そうとしない限り、それは大きな違いにはなりません。これは常に挑戦です。左利きが嫌いで、右利きの人生を悲惨にしたいからではなく、左利きがプログラミングの分野で支配的であることに慣れているからです。他のほとんどの人があなたの考え方を反映していれば、あなたも自分が正しいと確信するでしょう。


深みがあり、本物の仕事をしばらく延期するのに十分な長さです。
DarenW

6
非常に興味深いもの。ソースがありますか?
メイソンウィーラー

4

あなたの直観を信じてください。あなたが優れた専門家である場合、それはあなたの「頭脳」(左または右)に関係なく、左脳が意識的に行うことを意味し、直感的に行うことができます。最終的には同じことです。残念ながら、私たちは潜在意識を制御しませんが、それがまったくそうであれば、それは私たちの意識よりも速く仕事をします。どこからともなく出てくるこれらの直感的な洞察は、潜在意識計算の結果そのものです。

ああ、あなたは失敗するかもしれません、それはあまりにも信頼できません。しかし、あなたが尋ねたので...;)


2

視覚的にも、タイポグラフィの詳細が私を悩ませます。

Googleの用語:英国のディスレクシアサイト学習スタイル:視覚的空間思考、全体学習。

最初に概念、次にヒント

  1. 右脳の人々は、「心の目」のすべてを想像します。
  2. 視覚化が現実によく対応している場合、作業は簡単です
  3. 左脳思考をうまく行わない右脳思考者は、視覚化に頼らなければならない
  4. 右脳の学習者は、すべてを一度に学習します 'aha!' 次に、メンタルコンストラクトに詳細を合わせます。最初に概要、次に詳細が必要です。
  5. コンテキストの概要がなければ、詳細は心の中でつながっていない、空中に浮かぶので、ブルートフォースの暗記を使用する必要があります。右の非常に難しい-頭脳。

私を助けたヒント:

  • 1色を使用して構文部分を区別します
    1. デバッグしているコードの擬似コードを書きます。これはこれを行い、ここに行き、一致するコードセクションにラベルを付けます
    2. オブジェクトがたとえば本物の動物である場合、それらには習慣があり、予想される動作があります。これは、コーディングについてより簡単に視覚化された考え方です。
    3. コードをpseudicodeをメモとして使用するストーリーとして想像し、その後プロセスを実行します。

  • 次に修正するセクションは?

  • 私のワークフロー

  • 誰がそこに住んでいますか?(プロセス、接続、データなど)

  • 彼らは何をする必要がありますか?(機能)OK

    OK

  • どこかにコーディングします。構文/ spell checked OKコピーアンドペーストできます

  • テスト

    結果->動作しますか?はい、続けます

    番号?キャラクターは全員が死ぬハムレットを演じている必要があります。

  • 環境に戻る

  • 何かを残しましたか?、sysntaxエラー
  • 接続が必要です
  • データが必要
  • エラーコードには意味がありますか?
  • コードの別の部分で動作しますか?
  • バージョンのトラブル?
  • 動作するはずです
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.