web-dev-qa-db-ja.com

右脳が大規模な左脳コードにどう対処できるか?

私はアーティストですが、自分自身をアーティスト/物理学者と表現していますが、ほとんどがアーティストです。私は数学を行い、言葉を扱い、左脳と見なされる「論理的」なことはできますが、それは努力であり、私は間違いを犯しますが、私は上手であり、ほとんどの場合、右脳に関連するものについて考えます思考-空間的な関係、全体的な全体像のコンテキストなど。もちろん、左右の脳の理論は単純化されておらず、精神的な活動はそれほど単純ではないため、これらはすべてあいまいです。しかし、私はアーティスト、ビデオディレクター、シェフ、その他の非言語的思考、クリエイティブタイプにうまく適合していると感じています。一度に多くの詳細を念頭に置いて、強力な合理的および口頭の能力。

したがって、私はC++ソフトウェアの大規模な群れで、OOが非常に重い、煩雑で曖昧なバグを修正するために給料を支払われている仕事にいます。他の20個のクラスとメソッド名を念頭に置いていない限り、コードの1行は意味がありません。それらの間の関係、実行のフロー(非常にスパゲッティのような)およびその他の詳細。

それに加えて、私は現代のC++とOOスタイルの多くにかなり反対しています。このコードを書いた人は、本当にOOと現代のC++クールを飲んだ-ade。実際にコードを追跡することが非常に難しくなり、どこで修正または変更するかを決定することがはるかに困難になる。これが左/右の違い(または呼び出したいもの)の一部であるかどうかわからないない。

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

11
DarenW

ファジネスに慣れていることが強みであるデザインの側面にもっと挑戦してみてください。キャリアの進歩に関して私の提案です。創造的であることを好む人として、メンテナンスに取り組むことはあまりうまくいかないかもしれませんが、それが可能であれば新しいものに取り組むことはより良いかもしれません。

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


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

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

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

2
JB King

それはsound(少なくとも私には)コードは特にオブジェクト指向であるか、特に「モダンC++」に類似しているようには聞こえません。むしろそれとは逆に、適切なオブジェクト指向のkey要素の1つはカプセル化であり、その主な目的はです。 reduce常に追跡する必要のあるものの数。同様に、「非常にスパゲッティのような...実行の流れ」は、オブジェクト指向でもモダン(何でも)ではありません。

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

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

ただし、そのようにすることのポイントは、無視(たとえば)how特定のオブジェクトが表現され、それが実際に何であるかにのみ集中するis代わりに。特定の部分にバグが見つかった場合にのみ、そのコードのほとんどを処理する必要があります。しかし、私はそれを回避しようとしますが、クラスを非常に小さく単純なものにすることで、ほとんど機能せず、一目でそれがであることを認識するのにほとんどかかりません正しいので、それ以降は簡単に無視できます。

16
Jerry Coffin

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

私はアーティストですが、自分自身をアーティスト/物理学者と表現していますが、ほとんどがアーティストです。私は数学を行い、言葉を扱い、左脳と見なされる「論理的」なことはできますが、それは努力であり、私は間違いを犯しますが、私は上手であり、ほとんどの場合、右脳に関連するものについて考えます思考-空間的な関係、全体的な全体像のコンテキストなど。もちろん、左右の脳の理論は単純化されておらず、精神的な活動はそれほど単純ではないため、これらはすべてあいまいです。しかし、私はアーティスト、ビデオディレクター、シェフ、その他の非言語的思考、クリエイティブタイプにうまく適合していると感じています。一度に多くの詳細を念頭に置いて、強力な合理的および口頭の能力。

これは実際には神経科学のやや時代遅れの見解に基づいています。ある時点で、科学者たちは、左脳は論理と生の感覚データのみに関与し、右脳は直感と感覚にのみ関与すると考えていました。結局のところ、左脳は右脳が持つすべてのことを実際に行うことができ、逆もまた同様です。 極端に右脳でありながら論理的で、方向性と空間的方向付けがひどく、伝統的に右脳に関連付けられている芸術的創造性をまったく持たない人物として、これを証明します。

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

次に、思考、感情、感覚、直感という4つの異なる認知機能があります。簡単にするために、これらの機能のうち2つは「判断」機能(思考と感情)と見なされ、他の2つは「知覚」機能と見なされるとしましょう。審査機能が決定を行います。あなたが判断の考え方にいるとき、あなたは驚きを避けようとしています。事前に正しい決定をすべて行っておくと、驚きが生じたときに適応する必要がなくなります。事前に多くの計画を行っているため、決定が下されると、柔軟性がなくなり柔軟性に欠ける傾向があります。一方、知覚的な考え方では、ズボンのシートのそばを飛び、パンチで転がることを好む傾向があります。

一般に、機能と態度を組み合わせて、(創造的に名前が付けられた)機能態度(内向的思考、外向的感覚など)を作成します。人々の意識的な性格は、主に支配的な機能態度と補助的な機能態度によって定義されます。最終的に、心理学者は、2つのタイプの人々がいるというコンセンサスに達しました。主な2つの機能が内向的な判断機能と外向的な知覚機能で構成される人々、または主な2つの機能が外向的な判断機能と内向的な知覚機能で構成される人々 。 MBTIまたは類似の性格テストを受けたことがある場合は、最後の文字でどのカテゴリに分類されるかがわかります。もしあなたがPなら、それはあなたが内向的な裁判官/外向的な知覚者であり、Jはその逆です。

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

左脳の人は細部がよく、右脳の人は「全体像」が得意であると言うときはいつでも(「全体像」の方が正確だと言いますが)、外向的な側面に焦点を当てています。左脳の人が右脳の人を管理する場合、左利きは、右利きが前もって前もって自分の仕事をどのように行うかについてのすべての詳細を知りたいでしょう。彼らは、事前に決められた厳格な期限に定められた要件を求めています。権利者は、後で詳細を記入できるようにするために、何をする必要があるかについて非常に広範な考えを望んでいます。

ただし、これが実際に発生しているようではないことに注意してください。左利きのコードはおそらく前もってひどくよく考えられていなかったようであり、いくつかの先見によって防ぐことができたかもしれないいくつかの問題を持っているようです。これは、頭の中でコードなどの抽象的なモデルを構築するときに、introverted関数を使用しているためです。 Rightyは、そのモデルを事前に構築し、必要な詳細をすべて記入するか、簡単にcan記入できるように作成したいと考えています。加えて、それらは採用する最良のアプローチの点で厳格になる可能性があります(C++のより高度な機能についてどのように感じているかについて固い線を取っていることに注意してください)。左利きのモデルは、その場しのぎで、行くにつれて埋められます。

私の経験では、これが原因で、左利きはすべてを過剰に設計した右利きを非難し、右利きは左利きが速すぎて汚いと非難します。双方とも真実の粒度を持っていますが、そのアプローチが極端に行われた場合のみです。ここで面白いのはここです。彼らは同じ目標を達成するために反対のアプローチを取っています(つまり、物事を成し遂げる)。権利者は、モデルを事前に決定して、物事の実装に費やす時間を減らし、プロジェクト全体をより早く終わらせたいと考えています。レフティは、より短時間で物事を成し遂げることができるように、設計に費やす時間を減らしたいと考えています。

ちなみに、プロジェクト管理タイプのことになると、これら2つの態度は逆になります(タイムラインの決定、要件の作成など)。これは、一方が他方を厳格すぎると非難している一方で、もう一方が十分に計画を立てていないと主張し、次の議論が両方の側がまったく反対の立場を取っているという本当に混乱した状況につながる可能性があります。

このすべてについて何ができますか?これらの違いを認識し、可能な限り相手側の見方を受け入れるようにすること以外に何もありません。問題は、これが両方の方向に進むことです。左利きをできる限り理解して収容することができますが、彼らが支持を戻そうとしない限り、それは大きな違いにはなりません。これは常に課題です。左利きが嫌いで右利きの生活を惨めにしたいからではなく、プログラミングの分野で左利きが支配的になることに慣れているからです。あなたの考え方が他のほとんどの人から反響を受けていれば、あなたもあなたが正しいと確信しているでしょう。

10
Jason Baker

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

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

4
mojuba

視覚的にも、タイポグラフィの細部にも驚かされます。

Googleの用語:イギリスの失読症サイトも学習スタイル:視覚的空間的思考、全体から部分的な学習。

概念を最初に、後のヒント

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

私を助けたTIPS:

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

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

  • 私のワークフロー

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

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

    OK

  • どこかにコード化できます構文/スペルチェックOKコピーアンドペースト

  • テスト

    結果->機能しますか?はい、続けます

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

  • 環境に戻る-

  • 何かを残しましたか?、sysntaxエラー
  • 接続が必要
  • データが必要
  • エラーコードは意味がありますか?
  • コードの別の部分で機能しますか?
  • バージョントラブル?
  • 動作するはずです
2
user87105