私は実用的な人です(私はそう思います。しかし、繰り返しになりますが Jon here には興味深い点があります)。時々、仕事を成し遂げるための問題に対する最も簡単な解決策は、それが完全な冒涜であり、設計原則に非難されない場合、私に最もよく合う解決策です。 Stack Overflow でこの質問に対する私の回答を確認してください。シンプル。動作します。受け入れられました。改善される可能性があります。明らかに完璧ではなく、あまり精巧ではありません。そして一緒に来る この男 。彼は私に反対票を投じ、彼の答えがどのように良く、より正確であるかについての質問にコメントし、なぜ私が反対票を投じたのかと尋ねると、彼は私を電話します明白に間違っています彼のコメントで。これを思い出します コミックストリップ 。
正直に言うと、彼の答えは明らかに優れています。しかし、それは重要ではありません!
スタックオーバーフローを使用している間、これらの人々は遠く離れているため、笑ったり、これらのことを気にしたりすることはできません。一体、私は奇跡のソフトウェアを作成しているわけではありません。その巨大なレガシーなものを実行し続ける必要があり、それは私にとって毎日の冒険です。私はいくつかのことは得意で、他のものは得意ではありません。私は何かを学びたいと思っています。しかし、システムの1つまたは2つの欠陥を、欠陥とは何かとして受け入れることができます。明日はそれらすべてをリファクタリングする予定ですが、まず顧客が望むことをしてからビールを飲みましょう。
私の質問は:
私は両方の観点に興味があります。
面白くしようとせずに、実用主義者として確かにあなたはそれについて実用的であることができますか?
他の人々は、あなたが作業しなければならないもう一つの制約であり、遅い変更リクエスト、難しいクライアント、不十分なツール、限られた時間などと同じです。これらはすべて、実用的に扱うと言っていることであり、これは同じです。
難しいと思う人と仕事をする場合、たとえそれが理想的でなくても、うまくいく問題の解決策を見つける必要があります。
最初に、彼らが提案している内容がどれほど大きいかを自問し、次に、その結果に基づいて、それを使用するか(それが重要でない場合)、妥協点を見つけるか(それが可能であれば)、またはそれと戦う(完全に無理な場合)。
それらが完全に故障していると思われる場合は、エスカレートしてしまうと、ほとんどの場合、マネージャーがソリューションを選択する(実際に機能する場合)ため、マネージャーは通常、 、実用的。
しかし、あなたがこれを行うことができない場合、私はあなたがあなたの実用主義について少しイデオロギー的であり、おそらくあなたは結局そのような実用的ではないことをお勧めしますか?
実用主義者として、私はあなたがこの概念をあなたに当てはめるように提案する:あなたはあなたのコードではない。
あなたはコードを書きます。どんなレベルでも、どんな品質でも書いてください。その後、あなたは家に帰ります。
理想主義者に自分の価値観を自分の出力で識別させ、完璧なソリューションを金色の台座に置いて自分自身を検証させます。それだけのことなら、神の祝福があります。彼らがそこに持っている悲しい小さな存在。
「プラグマティスト対理想主義者」のこの考えは、誤った二分法だと思います。それは実利主義と理想主義の異なるレベルがあり、各個人が連続体の異なる部分に属し、異なる問題のためにある連続体です。あなたはソフトウェア設計に関しては実用主義者かもしれませんが、政治や芸術に関しては理想主義者かもしれません。私は反対かもしれません。そして、ソフトウェア設計のある「理想主義者」は、よりイデオロギーな人と比較すると、自分自身を実用主義者と考えるかもしれません。
だから、私のアドバイスは、ラベルにこだわらないで、代わりにあなたの視点を伝え、あなたが正しいことを同僚に納得させることだと思いますあなたのアイデアがより良いので。あなたが私の同僚であり、私たちが同意しない場合、「私のアイデアはより実用的であり、したがって正しい」というあなたの主張は、私と一緒に飛ぶことはありません。しかし、もしあなたの議論が「私のデザインはこれとこれとこの理由でより良い」であるなら、あなたは私を納得させるでしょう。
acceptance の問題です。
私はcv駆動の自己と呼ばれる建築家に非常にイライラしています。彼らにニックネームを付けるのに十分イライラしています;)
私の経験では、不可能ではないにしても、他の人を変えることは非常に困難です。あなたは自分のエネルギーをより生産的で前向きなものに向けなければなりません。
ネガティブな思考は役に立たない。
それがあなたがそれらを扱うべき方法です:それらを扱わないことによって。
あなたが誰を扱っているかによります。 ideologueはrefuseを使用して特定のソリューションを使用します。理想主義者推奨特定のソリューションを使用する。イデオローグでできることはあまりありません。理想主義者は、同情+実用性に積極的に対応します。 「私もHTML5を使用したいと思います。予算がそれをサポートしている場合は、できます。しかし、Webブラウザーをアップグレードしないすべての(コンテキストに適切な軽蔑を入力する)人々に対処する必要があるため、フラッシュソリューションを実装する必要があります最初。"
私が実際的でどこが理想主義的であるかを理解することが出発点です。食べ物や飲み物のようなものが満たされる必要がある傾向があるか、または飢餓または脱水症のために、しばしば不完全な食べ物で死ぬので、私たち全員が現実主義者である可能性が高い基本的なものがあります。同時に、私たちのほとんどは、他の何よりも支持しがちな価値観を持っていると思います。したがって、私たちには両方が少しあり、両方があるのはなぜ最初から始めるのが良いのかを理解していると思いますが、これはシーソーのどちらかの側にいるという問題にどのように対処するかという質問を避けているように見えるかもしれませんそして、他の人たちと向き合う必要があります。
Elizabeth Lesser:Take "The Other" to Lunch は最近のTEDトークで、誰かがこれを別の見方をするための提案を求めている場合に、良い追加になる可能性があります。その反対側を人間化することは、私たちが集団的に前進したい場合に役立ちますが、私はそのように理想主義的であることに対して少し柔らかくなるかもしれません。
これは本当に、あなたに反対する2種類の人々に対処することの問題です。
グループA)あなたはあなたの議論/意見にあなたのベストショットを与えます、市民になるようにしてください、そして途中であなたの考えを変えるかもしれません。あなたは彼らが言わなければならないことを聞く可能性が高くなります。あなたは彼らが開いていると感じ、途中で会いました。私たちは、自分が快適な人のように考える傾向があります。
グループB)あなたは感情的になり、機会をとらえて、彼らに飛びつき、彼らのやり方の誤りを指摘します。一部の名前の呼び出しは、通常、会話への道を見つけます。何も解決されず、せいぜいあなたは同意しないことに同意します。
これはそれについて取り組む正しい方法であるとは言わないが、通常何が起こっているのか。
- あなたが実用的な人であるとき、あなたはイデオロギー/イデオロギーをどのように扱いますか?
- あなたがイデオロギーの人であるとき、あなたは実用主義/実用主義者にどのように対処しますか?
私は、共通の考え方を持つチームを編成するのが最善の方法だと思います。これはおそらく、何人かのチームメンバーが毎日の作業中に精神的な痛みを経験することなく物事を機能させる1つの方法です。
今のところ、インタビュー中に間違いなくもう1つ注意しなければならないことがあります。チームは、好奇心があり、オープンマインドで、実用的で、目標志向の人々で構成されています(それが私が望んでいることです)、または建築宇宙飛行士、イデオロギー、狂信者(私はその一部ではありません)。
今は(別のチームや部門に移動できない限り)役に立たないでしょうが、おそらく将来に役立つヒントでしょうか。
【コメントへの返答-建築宇宙飛行士について...】
彼の答えは明らかに良いです。しかし、それは重要ではありません!
あなたは確かあなたは実用主義者ですか? :)
ほとんどの場合、誰かがあからさまに理想主義者と呼ばれるのを見ると、彼らは理想主義的ではなく、他の人よりも長い期間にわたる結果を考慮しながら、単に実用的です。
確かに、あなたが見ているすべてが時間外に時間通りに家に帰ることができなければ、汚いコードは実用的かもしれませんが、一度考慮すれば、人々はそれほど頻繁ではありません本当に行く機会を得ます後で物事を元に戻して修正します。長い間コードに悩まされているかもしれませんが、正しい方法で行うと、理想主義のように見えなくなり、現実を超えて単に考えている実用的な人の行動のように見え始めます。
私の経験では、2種類のコーダーがあります。
これが実用主義者/イデオローグの議論であると考えるのは簡単ですが、実際はそうではありません。問題は、これらの人々の両方が同じことをするために反対のアプローチを使用していることです。 両方とも物事をやりたい。おそらく、タイプ1プログラマーは野ウサギ(常に何かを急いでいる)のようであり、タイプ2プログラマーは亀のような(ゆっくりと着実にレースに勝つ)と言えます。
私が目にしていることは次のようなものです。Type1プログラマーは、コードを絶えず叩き続けていないと満足しません。彼らは少し考えるのをやめるかもしれませんが、全体としては時間の無駄だと考えています。彼らはパンチではなく、計画を立てるのではなく、物事をやって来たいと思っています。 Type 2プログラマーは、事前にマップされたコードへのアプローチを望んでいます。彼らは、何を書こうとしているのか、どのように書こうとしているのか、そしてアプローチが正しいものであることを彼らがすでに知るまで、コーディングを開始しません。
タイプ1プログラマーとタイプ2プログラマーが同じタスクで一緒に作業するように設定した場合、タイプ1プログラマーは、タイプ2プログラマーがどのアプローチを取るかを決定するまでに、プロジェクトを長く開始します。この時点で、タイプ1プログラマーは、タイプ2プログラマーが実際にコーディングを開始していないことに気付き、プログラムを使い始めdoing 何か。タイプ2プログラマーは、タイプ1プログラマーが無謀な放棄を使用してコーディングを開始したことに気づき、0.5秒だけ停止してthinkするように試みます。何が起こっているのかがわからなければ、タイプ1プログラマーはタイプ2プログラマーに物事をやりたくないイデオローグ、タイプ1プログラマーはタイプ2プログラマーに適切なコードを理解していないカウボーイコーダーというラベルを付けます。
ここで問題が発生します。それらの2つがこのように反応するとき両方とも正しいがある程度。 Type 1プログラマーは呼吸を止めて、コードに突入する前に何をしているかを考える必要があります。ことわざにあるように、「数週間のコーディングで計画の時間を節約できます」。 Type 2プログラマーは、ある時点で計画を停止し、いくつかのコードを書くことを学ぶ必要があります。他のことわざが言うように、「ネズミと男性の最善の敷設計画はしばしば失敗する」。
組織には両方の種類の人々の一部が必要です。経験の浅い、または邪悪なマネージャーは、手先がノンストップでホイールを回転させているのを見るのが好きで、タイプ1プログラマーを奨励することがよくあります。マイクロマネージャーは、従業員が何を、どこで、いつ、どのようにコーディングするかを知りたいと思っています。したがって、組織はバランスを促進するために意識的な努力をする必要があります。