プログラマーが複数のプロジェクトに同時に取り組むことは正常ですか?


40

現在の仕事には、2つのプロジェクトがあります。1つ目は非常に巨大なシステムであり、2つ目はそれよりも小さいが大きなものです(最初のプロジェクトは12年間、2番目は4年間開発されています)。

最初は、最初のプロジェクトのみに取り組んでいて、それに慣れようとしていました。それから私は2番目のプロジェクトに移り、そこで試みたので、最初のプロジェクトについての私の知識は日陰になりました。今、私は両方のプロジェクトに同時に取り組む必要があります。

どちらもJavaを使用しているにもかかわらず、異なるフレームワークを使用しており、理解するコードとビジネスロジックの量が非常に大きいため、私は本当に両方のプロジェクトを頭に入れることができません。

私の専門知識は非常に不自由になりましたが、それは普通であり、それに慣れる必要があります。単一のプロジェクトでのみ作業する場合はどうなりますか?または、懸念を提起するべきですか、それとも雇用主を変えるべきですか?


私にとって複数のプロジェクトに取り組んでいるのは、「ボディショップ」という用語に適していますが、これは悪いことではありませんか。

最悪の部分は、プロジェクトにあまり慣れていないときに生じる自信に耐えられないことです。そして、複数のプロジェクトで仕事をするという状況は、私が強い理解を得ることを妨げ、それが私を怒らせ、私が快適な生活\仕事ゾーンから引き出される原因になります。

この質問を閉じたくありません。私の意見では、プログラマとして働いているなら、あなたのコードがシステムに影響を与えないことを保証する必要があります。しかし、システムの専門知識が不足している場合、どのような保証を提供できますか?すべての「等しい」または他のオブジェクトのメソッド呼び出しにnullチェックを入れますか?-地獄うん!

職場でのコラボレーションおよびナレッジマネジメントテクノロジーの使用は許可されていますか?(例:Wiki、コードレビューツール、デザインドキュメントへのアクセス、プロジェクト管理ツール、個人のTo Doリスト、バグ追跡、インスタントメッセージングなど)これらの技術がないと、複数のプロジェクトでの作業は実行できません。
-rwong

この質問は、「企業の50%以上がマルチタスクを許可していますか」または「マルチタスクは良いか悪いか」ですか?
マーティンウィックマン

回答:


54

「はい、マルチタスクは普通です」と人々が言うとき、私はまったく同意しません

それはだではない通常の!開発者が複数のプロジェクトでマルチタスクを実行するのは非常に不自然です(後で詳しく説明します)。一方、開発者の間ではマルチタスクが非常に一般的です。これは間違いなく慣れる必要があるものです。あなたの質問への本当の答えは次のとおりです。

まず第一に、「あなたはそのような優秀な従業員である」ため、単に自分の運命を受け入れるべきではありません。まったくそうではありません。他の人がいないために、人々は複数のタスクを与えられることがあります。マネージャーが仕事を処理できない場合があり、プロジェクトのスケジュールを適切に処理できないため、チームにマルチタスクを強制して委任することがあります。仕事の一部であるか、他の人が無能であるために、マルチタスクを求められているかどうかを明確に判断する必要があります。どちらにしても、それが受け入れられるかどうかは自分で判断できます。[仕事に慣れていない]場合は、仕事を見つけることができる他の場所があります。[開発者であるあなたは商品です。雇用主はこれを知っており、あなたがそれを決して理解しないように祈る。

マルチタスクについては、「はい、前後に切り替えて、各プロジェクトで同じ量を実行していることを確認してください」と人々が言うとき、100%は同意しません。申し訳ありませんが、それは非常に悪いアドバイスです。

最初に、ソフトウェアの開発中に脳がどのように機能するかを理解する必要があります(他のタスクが関係していることは知っていますが、そのタスクに焦点を当てましょう)。最初に「有線」にする必要があります。つまり、集中して、頭の中にすべてをマッピングする位置に心を向ける必要があります。すべての変数名とメソッド名、コードのワークフロー、オブジェクトモデル、並んでいるスレッド、すべて。通常、「ゾーン内」に到達するのに15分から20分かかります。

その状態になると、あなたは本当に飛び立ち、自転車に乗っているようなコードを書いています。中断した瞬間、すべてを失う可能性があります。中断が十分に長い場合(5、10、おそらく30分)、その精神状態を失い、最初からやり直す必要があります。

したがって、マルチタスクはひどいものです。「ゾーン」から離れて別の場所に移動する必要があるからです。常に切り替えている場合、新しいタスク/プロジェクトに変更するたびに15から20分を失って再びゾーンに入る必要があるため、生産性が低下していることを意味します(言及されていないため、脳がゆっくり溶けます)。

マルチスレッドのようなものです。ある時点で、スレッドコンテキストを2サイクルごとに切り替えるコストが高すぎるため、CPUは実際のタスクを実行するよりもコンテキストの切り替えに多くの時間を費やしています。

この問題に関するJoel Spolskyの記事を読むことを強くお勧めします。

http://www.joelonsoftware.com/articles/fog0000000022.html

だから私のアドバイスは次のとおりです。それは確かに一般的であるため、マルチタスクの方法を学んでください。ただし、快適に実行できることも確認してください。一部の人々は集中するのにより多くの時間をかけることができ、マルチタスクを行うと他の人々よりも苦しむでしょう。それも大丈夫です。正常と見なされるのが一般的だからではありません。

ジョエルは次のように言ったとき、それをうまく説明しました

実際、これらすべてから得られる本当の教訓は、人々に一度に複数のことをさせないことです。彼らがそれが何であるかを確認してください。優れたマネージャーは、自分の責任を障害を取り除き、人々が1つのことに集中し、実際にそれを達成できるようにします。


5
複数のプロジェクトを同時に進行させることは、同時にコーディングすることを意味しません。それはマルチタスクになります。一度に1つのプロジェクトを作成することをお勧めしますが、La La Landを夢見ているだけです。
ジェフ

1
+1すばらしい。企業がこれに気づいた場合、彼らははるかに良くなっているでしょう。ただし、明日は勝者がいます!
マーティンウィックマン

@Martinに感謝します。「マルチタスク」が複数のプロジェクトに取り組んでいるのと同じことを理解していない人がいるのは面白いと思います。同時コーディングがマルチタスクと同じだと言ったことはありません。コーヒーを飲んでコーディング?私をからかってるの?あなたが呼吸と点滅を同時にしている場合、あなたもマルチタスクをしていますか?少なくとも投稿全体を読んでください!ジョエルの記事へのリンクは非常に似たアイデアを持っています。ここにコメントを入れる前に読んでください。
アレックス

2
@Alex-@bjarkefと@Jeffは絶対に正しいです。2つのプロジェクトを持つ!=マルチタスク。Joelの投稿と、マルチタスクが高価で無駄になるという記事は正しいですが、複数のプロジェクトでの作業に必ずしも関連しているわけではありません
ニックノウルソン

5
たとえば、交互に2つのプロジェクトに取り組むことにしたとしましょう。ここでコンテキストスイッチのコストはどこで発生しますか?そして、それはゾーンにいることをどのように中断しますか?ガサンは、他のプロジェクトの緊急バグ、または同じプロジェクトの緊急バグでさえ絶えず中断されている場合があります。ここでマルチタスクが問題になりますが、2つのプロジェクトで作業することに固有のものではなく、1つのプロジェクトでも問題になることがよくあります。
ニックノウルソン

33

はい、それは予想されることです。そして歓迎。

これを見るにはいくつかの方法があります。

  1. マルチタスクが期待されており、集中することはほぼ不可能です。これにより、最適化されていないエンジニアリングプロセス、前後に切り替えるときの混乱、悪用されているという感覚、フラストレーション、ストレスなどが生じます。これはもちろんすべて否定的です。しかしながら、

  2. あなたは複数のプロジェクトで信頼されており、それはあなたが生み出した結果と雇用者があなたの能力に対して持っている信頼によく反映しています。信頼が保証されていることを示す機会です。

私のアドバイスは、どのタスクがあなたの即時の注意を必要とし、どれが待つことができるかについての冷静な判断開発することです。時々、答えはどちらも待つことができないということであり、結果を提供するために創造的なアプローチをとる必要があります(プロジェクトAに対して少し、次にプロジェクトBに対して少し、その後すすぎ、繰り返します)。このような状況で成功するためのスキルを養います。

通常(常にではありませんが)、これには、より多くの責任、より多くのジャグリングプロジェクト、より多くの期待が与えられます。ある時点で、この作業の一部を委任できるようになります。それは成功の尺度です。

そのため、成長しているジャグリングスキルが現在の会社でしか活用されていない場合でも、これらは持つべき優れたスキルであり、あなたのキャリアに役立つでしょう。

価値のあることのために、私は通常、大規模なプロジェクト、小規模なプロジェクト、古いプロジェクトの保守とサポート、および少なくとも1つの他の管理に取り組んでいます。それはイライラし、混乱し、うんざりし、とても感謝しています。


7
従順なしもべであり、富に対する希望の代わりに、非能率的であり、非効率性を指摘することで価値を高めることができますか?
ジョッペ

6
@Tungano-決して「従順な僕」であることを提案するのではなく、むしろ複数の同時責任を与えられることは、あなたの仕事が得意であるという自然な副作用です。人々は物事を実現できる人に依存する傾向があります。いくつかの責任を処理することは、必ずしも非効率的、従順、または従順ではありません。あなた(または@gasan)がいくつかのことを効率的に処理できない場合は、できることを間違えないように必ず雇用主に知らせてください。(FWIW、私は富について何も言わなかった。)
bw

また、それだけでプロジェクトに飽きることを防ぎます。現在、17のプロジェクトにまたがる約100の異なるタスクが実行されるのを待っています。確かに、これは時々プレッシャーを引き起こしますが、1つの大きなプロジェクトにすべてのエネルギーを投入する以外に何もすることがないとき、私は不幸になります。
Htbaa

7
私はこの答えに強く反対します。マルチタスクは成功の尺度ではなく、マネージャーの能力不足の尺度です。マルチタスクの方法を知ることは簡単ではありません。PS:私は自分で答えを投稿しましたが、それは最後まで行きます。
アレックス

6
この答えは意味がありません。多くの企業がプログラマーにそれを強いるという意味では「正常」ですが、それでも企業のリソースの浪費です。彼らが一度に一つのことに焦点を合わせるとしたら、それはずっと早く終了するでしょう。
マーティンウィックマン

15

はい!あなたがサービス会社xDで働くとき、それは完全に「通常」/通常です

また、あなたがオープンソースプロジェクトと協力する場合、それはルールです

たぶん理想的な状態ではありませんが、日常のパンです。


まあ、実際に私を悲しませているのは、結果として得た専門知識レベルです。システムビジネスとテクニカルロジックの両方を覚えるだけの大きなメモリを持っていません。タスクを取得するたびに、そのシステムをよく知らないので、私は非常に一生懸命探してデバッグする必要があります。「多くのことを知らないが、すべての仕事を非常に速くしない」プログラマーはプログラマーであるべきであり、「システム全体を完全に知り、数時間の忍者男で修正する」のではないかと思いますか?

4
@gasan「一度に1つのこと」に取り組みたいと思います。ただし、複数のプロジェクトに取り組み、他の人のコードを読み、さまざまな要件に対処すること忍者の道への道です。
-bogeymin

12

それは一般的です。しかし、あなたが概説した理由のため、それは良くありません。コンテキストを切り替えると生産性が低下するため、可能な場合は、1日などの大きな時間をかけて1つのプロジェクトで作業してみてください。


9

私は毎日2〜3つの異なるプロジェクトに積極的に取り組んでいます。そして、さらに数十を維持します。数週間は少し圧倒されます。プロジェクトの中には巨大なものもあれば、数日でコーディングされた小さなものもあり、ほとんど変更する必要はありません。さまざまですが、さまざまな考え方や問題の解決方法、さまざまなテクノロジー、ビジネス分野に触れることができます。楽しいです。

それで、あなたの質問に答えるために、はい、それは非常に一般的です。


だから、あなたはシヴァ男のようなものですか?そのプロジェクトへのあなたのインプットの量を想像することはほとんどできません。

@gasan、ばかげた量。他の小さな、しかししばしば重要な部分。そして、元の開発者がなくなったために維持する必要があるものもあります...そしてそれらは最も時間がかかります。
-CaffGeek

8

Multitasking Gets You There Thereという記事をご覧ください。このグラフは物語を物語っています:

ここに画像の説明を入力してください

言い換えれば、同社はプログラマーが一度に複数のプロジェクトに取り組むことで時間を無駄にしています。わずか3つのプロジェクトで、無駄は40%です!残りの時間は3つのプロジェクトに分割されます。

マルチタスクの理由は、多くの場合「より多くのことを成し遂げる」と言われています。しかし、それは間違った推論です。マルチタスクでは、すべてのリリースが遅延するだけです。この画像は、デュアルタスクの効果と一度に1つのプロジェクトを完了する効果を示しています。

ここに画像の説明を入力してください

(イメージはオーバーヘッドを完全に無視します。実際には、無駄な時間のために両方のプロジェクトが20%遅くなります。)


4

会社によって異なります。IMOは、主に1つのプロジェクトでのみ作業することが望ましいですが、特に中小企業では不可能な場合があります。

もちろん、バグ修正などはどのプロジェクトでも常に発生します。


確かに私は今は小さな会社で働いていますが、以前は大きな会社でしか働いていなかったので、問題の原因の一部かもしれません。

4

はい、私の経験ではそれは普通です(たとえ同じプロジェクトのメンテナンスプロジェクトと機能プロジェクトなど、いくつかの「プロジェクト」が非常に似ている場合でも)。競合や非現実的な期待を避けるために、プロジェクトマネージャーとマネージャーに同意して、各プロジェクトに時間の一部を割り当てます(例:プロジェクトXで3日間、プロジェクトYで2週間)。通常は、Xで月曜日、Yで木曜日など、好きな方法で割り当てを配布できます。

1つのプロジェクトが「例外をスロー」し、現在作業する必要がある場合があります。ここで2つのことを行います。

  1. 単にプッシュ型のプロジェクトマネージャーではなく、本当に例外であることを確認してください。後者の場合は、プッシュバックしてください。
  2. 各プロジェクトで同じ割合で作業できるように、時間の割り当てを交換してください。

3

プロジェクトに戻ったときにプロジェクトのフレームワークまたはビジネスロジックで速度を回復するのが難しいと感じている場合は、作業中にできる限り多くのドキュメントを作成する機会をとるべきです。複雑なシステムがどのように機能するかを、あなた自身の言葉で詳述すると、後でプロジェクトに戻るのがずっと簡単になります。さらに、このドキュメントは、同僚が支援を必要とする場合に役立ちます。

プロジェクトにすでに技術文書が十分に網羅されている場合、複雑な領域で作業しているときに考えを書き留めておくとなお有益です。こうすることで、次に戻るときに思考プロセスを取り戻すことができます。


1
素晴らしいアドバイス。私は詳細なメモを取りますが、それらは複数の機会に非常に役立ちました。
アダムリア

2

まあそれは普通のことではないはずですが、現在の雇用主には多くのプロジェクトがあります。私は認めるのに慣れるのにいくらかかかります。最も重要なヒントは、常に作業に優先順位を付けることです。上司に優先順位の高いタスクを教えて、それにのみ取り組むように強制します。他のプロジェクトについて不平を言っている人から圧力をかけないでください。必ずしも履歴書を更新する必要はありませんが、負荷が合理的に処理できる範囲を超えてエスカレートしないようにしてください。


2
実際、上司に何が重要かを伝えるように強制します。コミュニケーションは非常に重要であり、維持されない場合、どちらの当事者にも多大なフラストレーションと失望をもたらす可能性があります。
-Htbaa

0

正常だと思います。今の私の仕事のやり方(私は約40人の開発者がいる会社にいます。会社の規模は約700です)。そして、私は通常、多くの小さなチケット/欠陥が発生する1つの「長期」プロジェクトを持っているので、通常は50%の小さなチケットであり、50%は長期プロジェクトに取り組んでいます。困難になる可能性があるのは、絶え間ない中断により、長期プロジェクトの速度が低下し、脱線する可能性があることです。


0

複数のプロジェクトに取り組むのは普通だと思います。重要なのは、最初にシステムの全体像の観点からいくつかのあいまいさに直面することを受け入れることです。

より大きな画像を取得しようとすると、システム内の可動/固定部品と、変更がシステムにどのように影響するかを明確に把握できるようになります。

一定期間にわたって、作業対象のさまざまなシステムで共通のパターンを見つける方法を学習します。これらを他のプロジェクトに適用すると、一度に頭に入れておく必要がある詳細な情報の量を減らすことができます。


0

重要なプロジェクトでは、複数の人が割り当てられています。これは、あなたが他の人と協力して、彼らがあなたの仕事をするのを待つ必要があることを意味します。

人々をアイドル状態にする代わりに、複数のプロジェクトをアクティブにして、必要に応じて常にオープンなタスクを実行することが一般的です。

ただし、各プロジェクトでかなりの量のチャンクで作業する必要があるため、「ゾーン内」で生産性を高めることができます。


-1

私はそれが普通/普通だと言っていることに同意します。

それを前向きに考えれば、あなたはより便利になり、柔軟であるとみなされ、物事を成し遂げることができる男になります!最終的には2つのシステムを完全に理解するようになるため、より価値があるかもしれません。


-1

私見、それは通常であるだけでなく、それも望ましいです。

私がこれまで経験した中で最悪の開発ジョブは、同じアプリケーションの同じ部分の同じ小さなセクションで何ヶ月も続けて作業することでした。退屈。そして、あなたが退屈しているとき、あなたはボールから目を離します...


あなたの仕事が退屈なら、多分あなたはそれの一部だけをもっと面白くしようとするのではなく、別のもっと面白いものを見つけるべきです。
アキュメナス

私がやった-しかし、すべての仕事のすべての側面がエキサイティングになると思うことは素朴です。
cjmUK 14年

申し訳ありませんが、共感できません。プログラマーとして、割り当てられたプロジェクトはすべて、現在の仕事だけでなく、以前の仕事でも面白いと感じています。エキサイティングなものである必要はありません。それは違う。エキサイティングなものと退屈なものの間には興味深いスペクトルがあります。
Acumenus 14年

それから、あなたはとても幸運だと思います...しかし、私は大規模な人口統計学者で、ラフをスムーズに処理しなければならないと思っています。
cjmUK 14年

-1

私はあなたがどのように感じているかを理解しています。特に雇用主が開発に焦点を当てていない場合、新しい雇用主に関連する処理の開発を理解させることは困難です。

問題は、一度に1つよりも多くのお金を稼ぐ人が一緒に3つのジョブを処理していることであり、統計ではパフォーマンスが40%低下していることが示されています。Thats 40%loss in profit ..

私は以前に、小さな仕事とチケット、サポートなどの間に1つの大きなプロジェクトに集中できるように組織化に取り組んできました。私たちは8:00-10:00AMが現在のシステムのチケットおよびサポートである取引に取り組みましたメール/電話/ヘルプデスクから10:00から16:30まで、または終了時間は完全に安定したものでした。これはextreemleyでうまくいきました。電話やメールを受け取るためのヘルプデスクがあったため、午前中にチケットを作成し、残りの時間を開発することができました。問題は、管理が不十分な場合です。マネージャーはこのすべてを実現し、日々直面する課題に対するサポートや理解がなければ、事実に無知です。

マネージャーからのサポートと理解の最後の仕事に特に感謝しました。それは私の人生を楽にし、ストレスを減らし、すべての仕事をやり遂げました。

別の問題は、ボスの愛のお金、彼らはお金でプロジェクトを見る、彼らが5万プロジェクトを同時に£20,000で持っているとき(そしてあなたはソロ開発者である)、それは本で£100,000です。これらが満たされない場合、会社の評判を損ない、締め切りを逃し、集中力がないためにシステムにバグが発生します。

私はあなたに完全に同情します。私は今あなたの立場にいます。


これは質問にどう答えますか?
gnat

-2

プロジェクトの説明方法によって異なります。通常、開発者は何らかの問題を抱えており、社内に複数の製品がある場合は、複数の製品を扱っています。


2つの個別の製品を提供し、それらは小さなコードを共有しています。その製品はさまざまなユーザーのニーズに対応していますが、それでも同じドメインに属します。

-2

愛のパートナーのように、ソフトウェアプロジェクトは多くの場合、多くの得意ですが、一度に1つの場合にのみ得られます。


-2

@Martin Wickmanが言ったことに加えて、あまりタスクを切り替えないようにしてください。たとえば、プロジェクトAでAMを、プロジェクトBでPMを実行します。機能を追加することも拒否します。プロジェクトにフルタイムで取り組んでいない場合は、より苦痛になります。

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