web-dev-qa-db-ja.com

ソロvsチーム開発とその結果

私はしばらくの間、さまざまな言語でプログラミングを行っています。私は実際に学校でプログラミングを勉強したり、2人以上のチーム(私も含む)で働いたりしたことはありません。それでも、私は3年以上プロの開発者として働いています。

昨年、私は最初のC#プロジェクトを引き継ぎましたが、結局はうまくいきました。私は一人で学んで働いたので、いくつかのコンセプト/ヒント/エッジが欠けているに違いないと考えざるを得ません。

チームに参加する前に単独の開発者であった人のために、あなたの経験を共有できますか?何かが足りないことに気づきましたか?難しいと思いましたか?あなたはその後より速く学びましたか?

8
Mathieu

私はあなたにeveryone誰が、特にコードを書くときに孤立して働いていることを保証できますが、あらゆる種類の作業で、100%、彼らが実際よりもはるかにうまくやっていると信じています。

したがって、チームでの作業を開始したときに(そして私が見つけた)最初に目にする利点は、実際にはかなり謙虚なものです。他の人と一緒に、特に才能があるときは、他の人と一緒に作業すると、考えられるすべての方法であなたより優れているという異常な状況であっても、最初に自分の間違いと弱点を強調します。あなたが批判をうまく行うことができ、能力がある場合(たとえ他の人と一緒に仕事をしているときに見られるように、自分の仕事の観察からだけでも)、経験は良いものになる可能性があります。

この最初のメリットは持続します。チームと、そしてより多くの人々とより多くの作業をするにつれて、間違いについてより多くの、より良いフィードバックを継続的に得ることができます-そして、それを使って修正することができます。また、成功についての肯定的なフィードバックも得られますが、特にプログラミングの世界では、否定的なフィードバックが広まっています(バグ追跡システムで「アンチバグ」を開いて、モジュールを見て特にニースのアルゴリズムを見たことはありません。実装)。

長期的には、他にも学ぶことのできるレッスンがいくつかありますが、その一部を単独で学ぶのは非常に困難です。

  • 読みやすいコードを書くことは、特にスキルレベルが異なる他のプログラマーが理解するのを書く場合は難しいです。
  • 他の人がバグ修正のために持っているコードを書くのは難しいです。他の人があなたのバグを修正するのを助けるには、あなたが持っていないかもしれないスキルが必要です。
  • 他の人が書いたコードを修正して統合するには、自分で作業する場合はそれほど練習できないスキルが必要です。自分で書いた古いコードを統合または修正することで、これの一部を得ることができますが、非常に限られた意味でのみです。
  • チームではプロジェクト管理がより重要であり、チームでは、知らない、または単独で役立つと思われるアクティビティが重要になります。 CVSのクリーンリリースブランチを適切に維持するなど。または、チェックインする前にコードをテストします。
  • 周りに誰かがあなたに説明してくれる新しいテクノロジーを学び、学びながらそれらについてのあなたの質問に答える方が簡単です。
  • 中断はチーム内で頻繁に発生しますが、面白くてイライラすることがあります。より多くのチームメイトと作業するときに、コンテキストをより適切に切り替える方法を学びます。
  • チームでの作業では、コードレビューなどのアクティビティから、常に時間どおりに作業するなど、単純ではあるが必ずしも明白ではないものまで、ソロで作業する場合には存在しない構造が必要になることがよくあります。
  • 信頼できるチームメイトとチームを組むときは、専門知識を深める方が簡単です。あなたが何かを学び、それを他の人に教え、そしてそれについての詳細な質問に答える(そして関連する問題を解決する)ことは、あなたが扱う人々が他のプログラマーであるときは特に、あなたがあなたのスキルと知識のレベルにあなたをプッシュすることに気づくでしょう知らない
25
blueberryfields

ええ、ソロで作業するときは、自分の間違いや落とし穴を逃してしまうので、それほど大したことはないように見えます。 ...どうしてそんなことを考えなかったのか」

私を信頼してください。追加の目は、プログラムに関しては常に価値があります。

4
user6791

チームに参加した直後に、多くのメリットが得られます。一部はしばらくしてから来ますが、間違いなく来ます。

  • あなたはもう部屋で一番賢い人ではありません。チームで作業しているときに、プログラミングであなたよりも優れた人がいることを知るのは非常に謙虚な経験です。 しかし、あなたがそれを愛する数少ないプログラマーの一人なら(私はそうです!)、あなたは彼らからあなたができる限りのものを吸収します。

  • あなたは突然必要他の人々のコードを読む方法を学ぶために。あなたの知識を広げることはもはや推奨されていることではありません。あなたはそれをすることを学ぶか、あなたはそこで長い間働きません。

  • あなたはさまざまなタイプのプログラミングにさらされているので、何が機能し何が機能しないかを学びます。良いコメントをするもの、悪いコメントをするもの。メソッドを操作するのが恐ろしいのはなぜか、また、そのメソッドをあらゆる機会で使用したいのはなぜですか。貴重な、そしてこれを教える本はありません。 :)

  • 社会的スキル。同僚のコードを批評する方法と、誰かがあなたに良い方法を示したときにlistenする方法をゆっくりと学びます。

  • コードを書くとき、あなたは卵殻の上を歩きます。これにより、変数に名前を付ける際に余分なことを考えるようになります。自分用のコードを書くことも、他のプログラマーがそれを読むことを知っているときは、まったく別のことです。

チームに加わることは私にとって大きな変化でした、そして、ここの誰もがその経験に代わるものは何もないことに同意するでしょう。

4
Sergio

私の最高のツールの多くは、他の開発者から入手したものです。私はインターネットと本から学ぶことに非常に積極的に取り組んできましたが、テキストと学校のみからそれらの年を費やしていた場合、私が現在行っている仕事をすることはできません。私は一緒に働いたすべての開発者から何かを学びました。時には、何をすべきでないか、どのように行動しないかを学びました。それはまたあなたにあなた自身を説明する機会を与えます。 コードがどのようにまたはなぜ機能するかを他の開発者に説明したことがなく、それらの推奨事項や懸念事項に耳を傾けていなければ、本当に見落としていることになります。これは、開発の最も基本的なものの1つです。プログラマーの演習。まれな超天才を除いて、私が独りで働くならば、どんな開発者も非常に高いレベルのスキルを得ることができるかを真剣に疑っています。

私の最初の実際のプログラミングのギグは、小さなお店で一人のプログラマーであったことから、チームで作業することになりました。私のスキルは、そのチームと彼らとのやり取りから指数関数的に増加しました。私がチームを変えるたびに、新しい思考領域全体が探求され、ネオがマトリックスでカンフーを学ぶような感覚で物事を学ぶこの最初の期間があります。

3
Nathan Craddock