問題を解決できない場合はどうなりますか?[閉まっている]


58

私は大学を卒業するのに1年かかり、実際の問題を解決することを本当に楽しみにしています。特に、ちょっとした研究と多くの思考を必要とする自明でないもの。

しかし同時に、それは私の最大の恐怖でもあります-どんなに一生懸命努力しても、解決できない問題に直面することです。また、間近に迫った締め切りにコードを配信するようプレッシャーをかけられているため、uniの安全なプレイグラウンドから見ると少し怖いように見えます(最悪の事態はコースや試験をやり直す必要があることです)。

それで、長い間業界にいる人たちにとって、できない問題を解決するように言われたらどうなるでしょうか?それは起こりましたか?もしそうなら、何が起こりましたか?彼らはただそれを落とし、「まあ、私たちは何か他のもので間に合うことができると思います」と言いましたか?結果はありましたか?あなたは懲戒されましたか、解雇されましたか?


24
これはあらゆる職業に当てはまります-早く失敗し、助けを求め、コミットする前に可能な解決策を研究してください
スティーブンA.ロウ

9
心配しないでください。そこにある仕事の80%は、古いジャンクの山を維持しています。
ジョブ

問題を解決できませんか?それは可能ですか?
WernerCD

3
Jon Skeetが解決できない問題でない限り、これが本当の問題になるとは思いません。
スキッツ

回答:


56

まず第一に、あなたの恐怖は非常に健康的であり、正常です。ここに、ソフトウェア業界で約15年の経験があります。
自問する質問を次に示します。

  1. 問題を理解していますか?
  2. 問題が(あなたの時間/予算の制約内で)解決できないことを知っていますか?
  3. 問題を解決する方法が分からないだけですか?
  4. クライアント/上司は不可能を求めていますか?
  5. その価値はありますか?(ROI)
  6. それは本当の問題ですか?

1)まず、問題を理解してください。愚かな質問はありません。クライアント/上司が何を求めているのか、彼らが何を必要としているのかを理解していますか?

2)これは起こります。「明日までに橋を架けてください」。問題が制約内で解決できないという事実を知っていることを確認してください。クライアント/上司は時間/予算に柔軟に対応でき、これらを変更してより多くの時間/予算を提供できます。

3)問題が理解可能であり、制約が理にかなっていて、問題を解決できるテクノロジーがあるが、あなたが十分に知らない場合...それStackOverflowがインターネットの目的です。最初に必ず調査を行ってください。定量化可能な答えがある明示的な質問をしてみてください。仲間に聞いてください。設計セッションを行います。

4)これは、回答番号2の改変体であると思われるクライアント/上司は不可能を求めているよう。調査を行います。正確な理由がわかり、明確にすることができる場合を除き、問題は解決不可能だと決して言わないでください。

5)ROI投資収益率の略です。これは時間の投資を指します。あなたの時間!。問題を調査して解決するのにかかる時間を保証するのに十分なほど重要な問題です。これについてクライアント/上司と話し合ってください

6)それは本当の問題ですか?クライアントは、しばしば自分が望むものを理解しますが、必ずしも必要なものを理解するとは限りません。クライアント/ボスが実際に必要とするものを理解し、これについて話し合うようにしてください。

これらのガイドラインがお役に立てば幸いです。


3
まだ最も有益な答え。それがより多くの票を獲得することを願っています。
ギャブリン

6
悪い答えではありません。最も成功したハッカーは、一定レベルの実用的なrog慢さを維持していると付け加えました。つまり、あなたはどんな挑戦にも勝てると仮定します。ほとんどの場合、あなたは正しいでしょう、そして、あなたは仮定の下で動作しない誰かより多くの問題を解決します。とはいえ、問題を解決しないことは世界の終わりではありません。最後まで任せないでください。上司を管理することは、上司に合理的な期待があることを確認することを意味します。何かをする方法がわからない場合は、上司に、調査して推奨事項を提示する時間が必要であることを知らせてください。
HedgeMage

#4が質問ではないことを気に入っています
エンドリス

57

一見解決不可能な問題に悩まされている場合、覚えておくべき2つのこと:

  • あなたができるだけ早く立ち往生していることを他の人々に知らせてください。手遅れになる前に見積もりを調整するのに役立ちます。

  • 問題を解決する1つの方法が機能しない場合は、時間を浪費する前に削除してください。助けを求めるか、別のアプローチを試してください。それは自分自身を懸命に賢く証明することではなく、物事を成し遂げることです。


11
「助けを求める」ための+1。問題に対するもう1つの見方は、非常に役立ちます。
マイケルK

5
2番目のポイントの+1 ... 95%のソリューションに注意してください。つまり、その方法の95%を非常に迅速に実現するソリューションですが、100%作業することはほぼ不可能です。あなたは「ほとんどそこにいる」ので、最後の5%を獲得しようとして余分な時間をかけるのは簡単です。
スコットホイットロック

5
「ミスター・コルレオーネは、悪い知らせをすぐに聞くことを主張する男です。」
ジェフ

3
助けを求めることができることは非常に重要です。2週間後に新しい開発者が戻ってくるのを何度も目にしました。最初の日に立ち往生していたため、何も表示されません。もちろん、あなたのメンター/上司はあなたがどのように進んでいるのかなどを尋ねるべきですが、それが明らかにそうでないときは嘘をついて「すべてがうまくいっている」と言ってはいけません!
ディーンハーディング

4
問題を他の誰かに説明する簡単な行為でさえ、解決策を見つけることができます。
アレクサンダーパス

26

StackOverflowに行きます;)

しかし、冗談はともかく、未知を恐れないでください。あなたのキャリア全体が未知のものに直面するでしょう。なぜなら、あなたがすでにそれを解決していれば、次回は問題にならないからです。


12
それは私にとっては冗談ではなく、通常は私の最初の寄港地です。実際、質問を定式化するプロセスは、多くの場合、自分で解決策を発見するための推進力となります。
NimChimpsky

10
前回、いくつかのソフトウェアの問題を把握できなかったため、SOに尋ねると、ほぼ即座に正解が得られました。
デビッドソーンリー

すばらしい回答です!+1- ソフトウェア開発の最高の部分 -「あなたのキャリア全体が未知に直面するでしょう。」
カルティクスリーニバサン

10

私は簡単な答えを出さなければなりません:私は助けを求めます。他の人と同じように、何かの解決策を見つけようとしているときに助けを求められることがあります。

編集:同僚に問題を説明するだけで、あるいはStackOverflowのようなサイトに質問を投稿し始めるときでさえ、しばしば解決策を見つけることを言及する必要があります。


3
時には彼らはちょうどあなたがあなた自身の頭の中でそれを整理することができ、それを話して、任意の提案を提供していない場合でも、作業を助けることができる理解して同僚に話し
funkymushroom

9

さまざまな角度から見る

私はこれに何度も出くわしました、通常何が起こるかです:

  • あなたには問題があります。最初は、それをどのように解決するかを頭の中に考えています。
  • ソリューションを実際に実装することになると、それは機能しないことがわかります(おそらく実際の問題の弱いモデルが原因です)。
  • 問題を解決するのに苦労した後、それをもっと研究するか、他の人に尋ねます。それのどれも、純粋な欲求不満!

最後に、やりたくないことを選択します->

「ダーティハック」

それは動作しますが、あなたは汚れていると感じます...


3
ダーティハックの+1、時には適切なソリューションが利用できないことはまったくソリューションのように見えません...確かに、誰もグローバル変数が好きではありませんが、これがAからBへの情報を取得する唯一の利用可能な方法であれば...まったく配信しないよりはましです。
user281377

+1- ソフトウェア開発者が直面する最も一般的な経験の明確な説明。
カルティクスリーニバサン

5

通常、私はそれを修正するために私より賢い誰かを得る。彼はそうし、彼は私のボスです。愚かだ。先に進みます。


4
私はあなたがうらやましい---あなたはあなたがあなたよりもあなたが何をするかをよく理解している上司を持っています。感謝する!
JasonFruit

実際、私は幸せではありません。;-)私の上司は、邪魔にならないように障害物を取り除き、必要なときに助けを組織し、やる気を維持し続けます。
ヨハネス

上司はあなたよりも多くのことを知っているはずです。
ジョニー

5

それはあなたができない理由に依存します...

  • 論理的に不可能:要件を書いた人と議論してください。誤解があるかもしれません。例:ある時点で、仕様はアプリケーションがすべてのプラットフォーム(Windows / Linux / Mac)でネイティブに見える必要があると言っており、別の場所では、プログラムはすべてのプラットフォームでまったく同じに見える必要があると述べています

  • 技術的に不可能:使用しているツールを再評価してください。おそらく適切ではありません。同僚やプロジェクトマネージャーと問題について話し合います。例:ガベージコレクションが不定時間実行を停止できる環境での厳しいリアルタイム要件

  • 不十分なパフォーマンス:間違ったアルゴリズムを使用している可能性があります。または、問題が難しすぎて(NPハードなど)、要件がそれを考慮に入れていない可能性があります。使用しているアルゴリズムを再評価してください。おそらくもっと速い方法があります。同僚やプロジェクトマネージャーと問題について話し合います。完全な結果ではなく、十分なヒューリスティックに切り替えることを検討してください。例:数十または数百のノードでのパス最適化

  • あなたはただそれをする方法を知らない:あなたの仲間に尋ねる、stackoverflowに尋ねる、インターネットを検索する。使用しているツール/ライブラリのサポートにお問い合わせください。プロジェクトマネージャーと話し合ってください。

  • それは動作するはずですが、動作しません。理由がわかりません。プログラムをリファクタリングして、テストしやすくします。競合状態を考慮してください。これは多くの場合、見つけにくいバグの原因です。仲間に助けを求めてください。4つの目で2つ以上が見えます。使用しているツール/ライブラリの既知のバグについてインターネットを確認してください。


4

他の人々は、プロのやり方でそれに対処する方法をうまく指摘していると思います。欲求不満、恐怖のような個人的な感情に対処する方法を言いたいと思います。

要するに、タイムリーに問題を解決しなくても、あなたはファインになるでしょう。人生は続く。

スケジュールがプッシュされる場合があります。プロジェクトは成功するか失敗するかのいずれかです。あなたは解雇され、その後素晴らしい仕事をするかもしれません。あなたは決して知りません。

誤解しないでください。問題をそこに置いても問題ないというわけではありません。私たちにできることは、ベストを尽くして手放すことだけです。

時々、私はフラストレーション、問題を解決できないという恐怖が平均的な開発者としての私の人生だと思う。


2

問題を解決できなかったとは言えませんが、問題を解決しようとあきらめた場合があります。バグを修正したり、その方法がわからない機能を実装しようとしたりするのに何時間も費やした後、チーム、チームリーダー、またはマネージャーの誰かに、「これにこだわっています。私にやりたいですか?」彼らが私がどこにいるか知っているように。彼らは、「それを守って、あなたはそれを手に入れると思う」、「それほど重要ではない何かに進んでください」、または他のいくつかのことを言うことができ、それから私は何をすべきかを知るでしょう。

解決しなかったバグと、完了しなかった機能がいくつかあります。何かを成し遂げようとすることはできますが、すべてが妥当な時間内に解決できるとは限りません。これの重要なポイントは、上司があなたがどこにいるかを知るためにコミュニケーションをとることです。

そうは言っても、私はいくつかの特別な状況に遭遇したことが何度かありました。

  1. トロントにあるカナダの大手銀行で働いている間、仕事を与えられたときにどうすればいいのかわからないあらゆる種類のことをするように頼まれました。たとえば、起動時に「Esc」キーと「Enter」キーが入れ替わるラップトップを保護するためのこの方法をテストするように求められ、正しいキーシーケンスでラップトップが再び使用可能になります。 「これは機能しますか。ユーザーに問題がないかどうかをどのように知ることができますか?」他のタスクがありましたが、ハードウェアや他のリソースがなかったためです。同時に、これはむしろ教育的であり、トラブルを防ぐために将来の雇用状況に注意することがたくさんありました。支払い時期の確認、時間の追跡方法、

  2. カルガリーのアプリケーションサービスプロバイダーで働いているときに、サービスとして販売した社内アプリケーション内に別のWebサイトのコピーを作成しようとするこのプロジェクトが与えられました。ここで重要な点は、最初に何をするべきかについてのタイムラインや提案が与えられず、一般的な研究だけであり、1か月後、疼痛治療薬に対して悪い反応を示していたのでデモを依頼されました。その反応は1週間続き、突然仕事を辞め、翌週、Microsoftのイベントに行きました。ここで注意すべきことは、上司が私の地域に近づいたときはいつでも、上司との関係がかなり悪かったということです。


2

他の人が言ったように、コミュニケーションは重要です-あなたが立ち往生しているときに人々に(影響を受ける人)を知らせる:上司、チームメンバー、クライアントなど

鋭い同僚がかつて私に教えてくれたのは、成功には2つのことのルーツがあるということです。

  1. 関係
  2. 期待

良い関係を持つことは、良いコミュニケーションと期待を前もって設定する機能だと思います。


2

ポリアの原則に従います:

「解決できない問題がある場合、解決できない簡単な問題があります。それを見つけてください。」

ジョージ・ポリア

原則の美しさは、ある時点で十分に小さい問題があり、うまくいけば元の問題の解決策をブートストラップできるように解決できることです。この原則は私をまだ失敗させていません。


1

シークヘルプ」の答えは間違いなく正しいです。あなたが特定の問題に遭遇した最初の人である可能性は非常に低いです。

しかし、実験として、助けがなければどうでしょうか?自分で問題を解決する必要がある場合はどうなりますか?最も重要な問題解決能力は、自分の仮定特定し、それに挑戦する能力です。問題に関する仮定を1つずつ列挙し、それぞれを順番に排除することができれば、最終的に誤った仮定に直面し、結果としてソリューションの新しい可能性が開かれます。

(ちなみに、これは就職の面接で得た問題に対する答えが見当たらない場合の最良のアプローチでもあります。口頭で仮定をリストアップし、どちらが間違っているかを判断してから問題を再攻撃します。すべての「トリックの質問」は、自然でありながら誤った仮定に基づいています)。


1

助けを求めることは本当に最良の答えですが、ここにもう少し役立つかもしれません。

それで、長い間業界にいる人たちにとって、できない問題を解決するように言われたらどうなるでしょうか?それは起こりましたか?もしそうなら、何が起こりましたか?彼らはただそれを落とし、「まあ、私たちは何か他のもので間に合うことができると思います」と言いましたか?結果はありましたか?あなたは懲戒されましたか、解雇されましたか?

はい、それは私に起こりました、そして、いいえ、私はそれのためにre責されたり、解雇されたりしませんでした、なぜなら...

業界では、問題を予定通りに予算内で解決するかどうかがすべてであり、まともなマネージャーはそれが常に可能であるとは限らないことを理解しています。

本当に起こるのは、マネージャーに「Xをやってほしい。何が必要だと思うか」ということです。そして、あなたは多くの答えを与えることができます。良いものは次のとおりです。

  • 私はこれに本当に似たようなことをしたので、3週間と3,000ドル相当のテスト用ハードウェアが必要になると思います。
  • 一般的にこれに似たものがあります。それで私はそれについて考えさせて、今日の午後あなたに戻りましょう。
  • 私はこのようなことをしたことがありません。それでは、調査して明日お返しします。
  • 地球上の誰もこれをやったことがありません。あなたがそれを調べたいなら、推定をするのに十分な実験をするのに2週間かかります。

続行するかどうか、および続行する方法を決定するのはマネージャーの仕事です。続行することを選択した場合、見積もりを達成するか、障害があるかどうかをマネージャーに知らせるのはあなたの仕事です。あなたがそうする限り、合理的な会社では否定的な結果はありません。

もちろん、あなたの仕事を成し遂げるための時間やリソースを与えてくれない不合理な会社もあります。私はそれらのいくつかで働いており、誰もが会社の制約内で解決できない問題を手渡されました。そのうちの1人は8か月以内にプログラミングスタッフの約98%を解雇しましたが、それは確かに結果でしたが、個人的に私に向けられたものではなく、そこから上司と彼の上司はまだ良い友達だと思います。


+1ターゲットの非常に優れた増分リスト。管理者は、問題があまり知られていないほど、解決にかかる時間の推定値を取得するのに時間がかかり、そのような推定値の誤差も大きくなることを受け入れなければなりません。一日の終わりに、不合理なマネージャーがいる場合、仕事は常に危険にさらされます。そのため、上記のように続行する必要があります。少なくとも「そう言った」と言うことができます。
10

1

あなたが困惑する多くの異なるタイプの問題があり、多くはそれらを処理する異なる方法を持っています。

問題の1つのタイプは、奇妙なサウンドAPIなどのように、今まで見たことのないものを実装することです。この場合、私はまじめに尋ねます。

もう1つは、解決すべき非常に大きな問題です。このタイプの問題には、繰り返しアプローチできます。彼らは「Humongousを実装する」と言います。あなたはそれを見て、あなたが理解できる限り多くのステップを書きます。次に、複雑なステップを小さなステップに分割します。小さなステップについて考えることを余儀なくされると、それらはより明確になります。技術的な問題が発生した場合は、テストの実装を試して、必要に応じてここで確認してください。

より厄介な問題の1つは、不十分に指定された要求です。彼らは単に「x」を行うものを望んでおり、それをどのように行うべきかを教えてくれません。これらの場合、インターフェース(通常はGUI)のプロトタイプを作成し、誰かに試してもらうのが良い方法です。

その後、満たすことができない時間の制約があります。これには多くの場合、期待の修正と機能的なプロトタイプの提供が含まれます。

一般的に、物事を何らかの方法で見つけます。それは恐ろしいことですが、いったんその中に入ると、ほとんどの場合、何らかの方法で見つけることができます。

あなたの最善の策は、ラップトップの外側に「パニックしないで」という言葉をペイントすることです。そして、タオルを忘れないでください。


+1 HHGTTG参照および「その後、満たすことができない時間制約があります。」本当だ。現代のマーケティング主導のビジネスの世界では、まだ販売されていないにしても、すぐに販売されている何かを構築するように求められるかもしれません。しかし、チームの規模は2倍、作成には3倍の時間がかかります。
10

1

問題解決の私のシーケンス(次のspetはすべて、前のspetが機能しなかった場合にのみ実行されます):

  1. グーグルにしよう
  2. 誰かに聞いて
  3. SOを直接検索(Googleをバイパス)
  4. 考える
  5. 煙(==頭をクリア)
  6. SOについて質問する
  7. 朝まで待つ(==頭をさらにきれいにする)
  8. その汚いハックを使って、自分自身について気分が悪い:(

厄介な問題は、手順5〜6で解決されます。

本当に本当に悪い問題には、通常、ある程度の時間が必要です(ステップ7は、ほとんどの「何もできない」問題の解決策です)。つまり、その日の残りの時間に別のタスクに切り替えて、朝一番に問題を解決しようとします。それは驚くべきことです。

そして、ステップ8になります。


通常、問題の解決策を考え出すのに最適な場所は、a)自転車で、またはb)シャワーを浴びることです。それは、メモを取るデバイスがある場所に行くか、思いついたことを忘れてしまうことの間の競争になります(私は今少しを得ていますが、私の短期記憶はそれが何について話していたのですか?)
Skizz

0

このようなことは何も聞いていません。まず第一に、まったく解決できない問題が与えられることはありません。問題は困難であり、解決に時間がかかる場合があります。問題が発生した場合、これが私が必要とする時間であることを伝える必要があります。あなたの研究で、この問題は本当に解決できないと思う場合は、旗を立てて、この問題にもう少し時間がかかるか、解決するのが本当に難しいことをマネージャーに伝えなければなりません。スケジュールがすべてです。あなたが何かを約束し、それを届けることができないなら、それは問題です。しかし、あなたが自分のステータスと懸念を伝え続けるなら、それを管理することはマネージャーの責任です。彼はあなたを助けることができる適切な人にあなたをリダイレクトするか、スケジュールを調整する必要があります。


3
-1、解決することが不可能な問題を与えることは間違いなく可能です。「256メガグラムのRAMを搭載したPentium 2で実行する必要がある1分以内に30文字のパスワードを解読できるブルートフォースパスワードソルバーを設計します。」
AttackingHobo

1
解決できない問題がたくさんあります。秘Theは、それらが非常に迅速に解決できないことを知ることです。できれば、マーケティング担当者が解決を求める前に、問題の告知が終了する前に。
10

@AttackingHobo ...それは現実的な問題でさえありません
Dacto

0

ここにいくつかの素晴らしいアドバイスがあります!私の2セントの価値は。大きな問題に圧倒されることはありません。問題を解決する際の刺激的でやりがいのある部分は、管理しやすく、より重要な理解可能な一連のサブ問題に分解されることを忘れないでください。サブ問題。優れたプログラマーは通常、コードの作成中に1分ごとにこれを行います(関数、メソッド、サブルーチンなどを使用して、コードのセクション全体の複雑さを軽減します)。この方法論は通常、BIGの問題に適用されます(職場だけでなく)人生の顔。


0

明らかに、特定の問題が何であるかに依存します。ただし、応答は次のいずれかになります。

  1. 回避策/代替策を見つける
  2. あなたが望むものに近い商用ソリューションを購入する
  3. あきらめずに、成功するまで必要な限り作業を続けます

3番は、問題から休み、数週間または数ヶ月後に再訪する必要がある場合があります。それはしばしば役立ちます。


0

私の経験では、少なくとも時間制限で解決できない問題が時々あります。解決に向けた努力が失敗に終わった後、できるだけ早く助けを求めました。

経験則を覚えておいてください:上司があなたを雇う理由を常に見てください。最良の結果を得るためにあなたができると思うことを何でもしてください。時にはそれは早期の失敗報告です(遅い報告よりもはるかに良い)。

要するに、あなたが解決策を見つけるかもしれないと思うならば、試してみてください、しかし、リスクと時間コストについて上司に見積もってください。今彼らの問題です。


0

経験豊富な人でも1億ドルのプロジェクトが失敗する可能性がある場合、学生であるため、失敗することを心配する必要はありません。私は取り組むべき問題を抱えていて、それがあなたが行き詰まる何かであるなら、あなたはそれを解決するためにあなたがしたすべての試みを記録しなければならないことがわかりました。

それが役立ちます:

  1. 問題を解決するために行われた試行の証明。
  2. このタイプの失敗を記録することは重要であるため、そこから学習し、数日後にそれが機能すると考えて再度それをしないでください。

0

私の経験では、新鮮な卒業生が深いところに投げ込まれることはありません。代わりに、経験豊富な開発者を含むチームの一員になる可能性があります。

私のアドバイスは:それらを利用することです。問題への対処方法がわからない場合、またはソリューションが正しい方向に進んでいるかどうかを知りたい場合は、彼らと話し合ってください。そして、あなたがどこかで立ち往生していると感じるなら、経験豊富な人の一人をつかんで、あなたの問題を説明して、助けを求めてください。

ほとんどの場合、問題を説明するだけで解決策が明らかになり、解決策を説明することで同様に問題が明らかになる場合があります。


0

多くの場合、これは問題を適切かつ正確に定義していないために起こります。おそらく、実際の問題自体ではなく、先入観のある解決策を解決しようとしているのでしょう。

問題は観察することだけであり、想像することではありません。

「私の血まみれの車は起動しません」は問題です。「バッテリーは平らです。」は、自動車始動の問題に対する先入観のあるソリューションです。バッテリーをテストしても、それが問題の唯一の原因であることは証明されません。実際にバッテリーを再充電または交換して車を正常に始動した場合を除き、バッテリーが問題の原因であるという証拠はありません。

簡素化し、単純化し続けます。それを小さな部品に分解します。これらの部分を解決できない場合は、それらを粉砕します。気分が良くなります。次に、それを異なる小さな部分に分解します。それらの各部分は、観察可能な現象でなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.