共同作業とチームワーク
ウェブ業界のプロとして、アイデアのブレインストーミング、提案書の作成、コードの実装など、プロジェクトのさまざまな段階で他の人々と作業する必要があります。
ウェブ開発チームでは、バージョン管理システム(例えば、Git や GitHub など)といったツールを介して、共同作業が行われることがよくあります。 開発者は通常、プロジェクトの別個のコピーで作業を行い、互いのコードをレビューし、コメントを使って変更点についてディスカッションを行います。このようなワークフローにより、チームはバグを早期に発見し、コードの品質を維持し、変更内容を全員が理解できるようになります。
この記事では、他の人とどのように協力して作業を進めるかについて解説します。
| 前提条件: | なし。 |
|---|---|
| 学習成果: |
|
他の人と一緒に作業する
ウェブ開発者として、就職していても学生であっても、同僚や仲間と一緒に作業することに多くの時間を費やすことになるでしょう。以前の調査と学習での議論で触れたように、同僚やクラスメートは学ぶ際に非常に貴重な助けとなる可能性があります。まず、少なくとも彼らと良好な関係を始めるように心がけるべきでしょう。
他人に対しては、自分が受けたいと思うのと同じレベルの共感と敬意を持って接することが重要です。人によって感情面や社会面などでのニーズは異なりますが、基本的な姿勢として、あらゆる場面で礼儀正しく、敬意を払い、協力的であるべきです。
コミュニティネットワークに参加する
ウェブ業界には強いコミュニティ意識があり、仕事や勉強の直接の仲間以外の人々と多くの場合交流し、関心のあるトピックについてディスカッションをしたり、問題を解決したりすることがあります。ウェブ業界には、フォーラム(例えば Discord サーバー)や Slack チャンネルなど、独自のオンラインスペースがあります。また、大規模なカンファレンスから、より小規模な地域のミートアップに至るまで、多くの対面イベントも開催されています。
そうしたグループに積極的に参加し、挨拶をして、メンバーと親しくなり、情報を共有し、質問をし、役立つ手助けを申し出ましょう。コミュニティのメンバーと親しくなることには、数多くのメリットがあります。具体的には、次のようなことが期待できます。
- 友人や将来の同僚、あるいは雇用主になる可能性のある、有益な連絡先と出会えます。
- 新しい手法や技術を学び、技術的な問題について役立つ助けを得られます。
- コードの仕組みを説明したり、他の人からの質問に答えたりする練習ができます。
- リソースやミートアップ、業界の最新情報について学ぶことができます。
- 求人広告を見かけることができます。
- 他のコミュニティメンバーが勤務している企業に関する情報を探し、これは就職市場の状況を把握したり、自分が働きたい場所を見極めたりするのにも役立ちます。
コミュニティネットワークに参加する方法について、まずは以下のアイディアをいくつかご紹介します。
- 地元でどんな対面式交流会グループがあるか調べてみて、いくつか参加してみましょう。Meetup.com や Eventbrite などのサイトを使ってイベントを見ていくことができます。
- confs.tech などのリソースを見て、興味深い技術カンファレンスを探してみてください。参加費が予算オーバーの場合は、主催者に連絡して、ボランティアとしてカンファレンスを手伝わないか相談してみてください。そうすれば、カンファレンスに参加して、たくさんの人と出会うことができます。
- freeCodeCamp のフォーラムも、質問をしたり回答をしたりするのに最適な場所の一つです。
- フロントエンド開発者の Discord サーバーをぜひ調べてみてください。
- MDN の Discord サーバーで一緒に過ごしましょう。
- Libera.Chat のような、開発者向けの親しみやすい IRC チャンネルに参加しましょう。
- 当社の学習パートナーである Scrimba は、Discord サーバーを通じて充実したコミュニティとコラボレーション体験を提供しており、生徒たちが他者と協力して作業する経験を積めるよう役立つことを意図しています。
- ソーシャルネットワークでウェブ開発者を探し、彼らが何を言っているかを確認し、その会話に参加しましょう。
参加の仕方がよくわからない場合は、まずは既存のスレッドを読んで、経験豊富な人たちがどのようにディスカッションに参加しているかを観察することから始めてみてはいかがでしょうか。
メモ: ほとんどのコミュニティでは、プロジェクトに参加する人々に求められる行動規範を定義した行動規範(または参加ガイドライン)と呼ばれる文書を公開しています。これらのガイドラインには通常、どのような行動が不適切とみなされるか、不適切な行動をとった場合の措置、および不適切な行動を報告する方法などが記載されています。例えば MDN は、より広範な Mozilla コミュニティ参加ガイドラインに基づいて運営されています。
他の人を支援し、質問をする
同僚や人脈の誰かが困っているようであれば、手を差し伸べてあげましょう。助けを提供するウェブ開発者は、強固な関係を築き、その見返りとして助けを得られる可能性がはるかに高くなります。
- 相手が苦戦している分野について、すでに経験がある場合は、知識やサンプルコードを共有しましょう。何かを説明するという行為は、自分の理解を改善し、自分自身の学びにもつながります。
- 相手が役立つ答えをどこで探すことができるかアイディアがある場合は、調査の手助けをしてあげましょう。
- 答えがわからなくても、相手と一緒に一息ついて、問題の説明に耳を傾けることを提案しましょう。あなた自身にも有益な気づきを持つことができるかもしれませんし、問題を説明するという行為そのものが、相手が解決策を見つけ出す助けになるかもしれません(休憩をとることとラバーダッキングを参照)。
先生や先輩開発者が回ってきて全員を助けてくれるのを待つよりも、常に身近な同僚を助けることを優先しましょう。能力の低い同僚はすばやく助けを得られ、能力の高い同僚はメンターとなり、そこから得られる満足感を味わうことができるでしょう。
質問をしたり答えたりすることには、ある種のコツがあります。自分が知る必要があることを探すために適切な質問をする練習や、他者から質問された際に自分の作業内容を説明する練習は不可欠です。もしこれが苦手なら、同僚に「お互いに質問し合い、自分のコードの作業方法を説明し合う」ようなセッションを一緒に設けてもらえないか、相談してみてください。
ピアレビューは同時に、この点を実践する良い場所となります(下記を参照)。
成果を公開する
原則として、ソースコードや得られた教訓、困難だった点などを含め、自分の成果を公開すべきです。同業者だけでなく、より広いコミュニティにとっても、これはとても有益です。
有益な答えが見つかったら、それについて書いてみましょう。GitHub や GitLab といったソーシャルコーディングサイトにコードを公開し、ブログに自分の考えをまとめてみましょう。そして、その投稿をソーシャルメディアでシェアしましょう。
文章を書くというプロセスを通じて、概念が自分の中で明確になると同時に、コミュニティから評価やフィードバックを取得できるでしょう。それが、業界で自分の名を知らしめるきっかけになるかもしれません。
たとえ自分の成果が些細なものだと思っても、実際には自分が思っている以上に多くのことを知っているはずです。そして、プログラミングを習得する道のりの初期段階にある人の中には、あなたの成果を有益だと感じてくれる人が常にいるものです。
オープンソースに参加する
友人を作り、人々に影響を与えるもう一つの方法は、オープンソースプロジェクトを探し、他者の作品にある課題を修正する更新案を提案することです。礼儀正しく敬意を払い、変更内容とその根拠をきちんと説明すれば、プロジェクトの責任者はあなたの貢献にとても感謝してくれるでしょう。また、こうした更新作業を通じて、貴重な経験と実践の機会も得られます。
例えば、MDN のソースコードは GitHub 上で利用でき、皆さんが取り組める課題も多数あります。 MDNで、このプロジェクトの概要や、どのように関与できるかを説明したコミュニティリソースが数多く公開されています。
オープンソースとは何か、またなぜ、どのように貢献を始めればよいのかがわからない場合は、どちらも実に有益です。
チームワークと相互レビュー
多くの場合、他の開発者たちとチームを組んで作業することになります。チーム内では、メンバーごとに異なる役割を担っています。ワークフローとプロセスでは、実際に遭遇するさまざまな役割や一般的な作業手法を見ていきますが、まずは、チームで働くことがどういうことなのかを考えてみましょう。
- 取り組んでいるプロジェクトを、成功も失敗も共に受け入れます。
- 何を行うかだけでなく、それを達成するためにどのように協力して取り組むかについても、共に計画を立てます。どのようなプロセスを使用するか?成功をどのように測定するか?どれだけの時間があり、どのような目標をいつまでに達成する必要があるか?
- 定期的に率直なコミュニケーションを取り、問題を早期に発見し、全員が状況を把握できるようにします。
- 常に他のチームメンバーに共感を示すこと。特に、物事が計画通りに進まず、調整が必要になった時にはなおさらです。
- 互いに成功できるよう支え合います。
たとえ実際の業務プロジェクトではないとしても――大学の模擬プロジェクトや、自分の趣味のプロジェクトに取り組んでいる場合でも――タイムライン、計画、役割分担を定めて、あたかも実際のソフトウェアプロジェクトであるかのように実行する練習をすべきです。一般的なソフトウェア開発ライフサイクルについて学びましょう。作業の見積もりや計画を立てられるよう、基本的なプロジェクト計画のスキルやツールを身につけておきましょう。
同時に、相互レビュー(ピアレビュー)を始めるのもよい考えです。同僚同士で互いの作業内容をレビューし、改善点について意見を交換します。レビューの対象となる項目には、コードの全体的な品質やコーディングガイドラインへの準拠、パフォーマンス、ベストプラクティスの遵守、使いやすさ、ドキュメントの質などが挙げられます。レビューを行う側も、レビューを受ける側も、恩恵を受けることができます。
- 他の人の作品をレビューする際は、良い点に対する励ましや称賛と、建設的な指摘とのバランスを心がけましょう。そのフィードバックを、建設的かつ敬意を持って伝える方法を練習しておきましょう。たとえ些細なことのように見えても、仲間の作品についてディスカッションしたりレビューしたりする際は、常に 1 つか 2 つの質問を用意するようにしましょう。
- 自分の作品がレビューされる際は、批判を個人的に受け止めず、良い点やそこから学ぶことに焦点を当てましょう。レビュアーは善意で行動していると信じてください。彼らはただ、助けようと努めているだけなのです。
失敗を受け入れることを学ぶ
学生や新人開発者が(例えば、新しいプロジェクトが始まる際に、または新しいアイディアを模索する際に)実験やリスクを冒すことをためらうよくある理由は、失敗への恐れや、仲間やチームメイトからどう評価されるかという不安です。時間をかけて自分の過ちを振り返り、そこから得られる教訓を見極めるべきです。
失敗とは、実際には成功への道のりにおけるほんの小さな段階に過ぎません。大成功を収めた開発者たちは皆、何度も失敗を経験しています。重要なのは、失敗そのものではなく、その失敗をどのように処理し、そこから何を学ぶかということです。
失敗から学ぶための安全な環境を作成する際に役立つ、実用的なヒントをいくつかご紹介します。
- 誰もが自由に質問ができる安全な場や仲間グループを定義しましょう。「愚かな質問」など存在せず、あるのは質問しない人だけだということを忘れないでください。仲間同士が支え合い、失敗が厳しく非難されないような風土を育みましょう。
- 自分の人脈を頼りに、助けやアドバイスをくれるグループや、自分と同じ課題を抱えていて、精神的な支えになってくれたり、一緒に試してみたりできるオンラインや対面でのグループを探してみてください。
- (教育者向け)評価の採点基準を適切に設定し、プロセスが適切に文書化されていれば、たとえ正しい結果が得られなかった場合でも、妥当な点数数を取得できるようにしましょう。 革新性に対しては、特別に加点しましょう。
- 自分のプロジェクトの一環として、見せて伝えるセッションや一対一のセッションを実行し、フィードバックや洞察を取得して、どこで間違っているかを確認し、正しい道に戻る方法をアドバイスしてもらいます。
- 自分のプロジェクトを分析し、うまくいかなかったことを見ていき、次回以降に改善していくための話し合いを行うための振り返りミーティングを実行します。