私は昨年、4年間のCSカリキュラムを受講しており、FOSSプロジェクトに貢献したいと思っています。残念ながら、バグ修正であろうと機能開発であろうと、有用なコーディングを行う方法はないと感じています。私たちが学校で行うC/C++/Javaプロジェクトは、深刻なプロジェクトのコーディングに比べれば些細なことであり、FOSSプロジェクトのソースコードを読んだとき、私は完全に途方に暮れています。 CS教育と実際のプロジェクトのプログラミングとの間にギャップがあることに同意しますか?ギャップはどれくらい大きいと思いますか、そしてそれをどのように克服しますか?
ギャップがあります。ギャップは、確実性とサイズの2つの要因に要約されます。
教授は彼が何を望んでいるかを知っています。クライアントは自分が何を望んでいるのかわかりません。これはしばしばあなたの最大の頭痛の種です。
教授はあなたがそれをすることができることを知っています。現実の世界では、それができるかどうかは誰にもわかりません。あなたはクライアントと協力して、タスクを実行可能にするように制約する必要があります。
学校の課題は修正されました。実際のタスクは、予算と技術的な制約に合うように変更する必要がありますが、それはあなたがすぐに発言する場合に限られます。
小さな学校のプロジェクトは、バージョン管理、設計会議、プログラマーの協力、インターフェースの問題などがないことを意味します。教室のコーディングプロジェクトで迷子になることはありません。確かにあなたは現実の世界で迷子になり、あなたのために断片を追跡するためにコンピュータが必要になります。
私自身は初心者です。約6ヶ月前に卒業しました。
ギャップ:
時間の制約:大学では、講師は通常、時間どおりに課題を完了し、もう少し時間をかけて物事を「磨く」ことができるように課題を設計します。しかし、職場ではそうではありません。仕事にはもっとたくさんの時間の制約があります。それらのいくつかは、おそらく先行する成果物のクライアントの承認が遅れているか、見落とされていた突然の予期しない技術的な問題で、見積もりよりも時間がかかっているか、単にあなたのタスクに必要な時間見積もり/工数を割り当てる悪い仕事をした管理者です。
ソフトスキル:ジュニアとして、技術的な問題についてあなたを助けるために常にシニアがいますが、誰もあなたのソフトスキルについてあなたを助けません!
大学では、最大で6pplを超えるプロジェクトチームで作業することはめったにありません。職場では、はるかに多くの人と協力しているため、多くの問題の重要性があります。最も重要なものの1つは間違いなくコミュニケーションです。どういうわけか、私たちはユニで適切な専門用語と通信していなかったことがわかりました。したがって、仕事でより熟練した開発者と通信するときに苦労する人もいます。
職場では、私たちはより積極的になり、適切な事実で私たちの声明を裏付ける必要があります。また、あなたの素朴さを利用しようとする高齢者に注意する必要があります(そうでなければ、不必要な余分な作業負荷がかかる可能性があります)
ただし、上記のステートメントは、与えられた大学の教育レベルに応じて大きく異なります(一部の大学は、実際のプロジェクトシナリオを模倣して、学生に多くの実践的なプロジェクトを提供していると思います)。一部の大学は理論に大きく傾いています。そしてもちろん、職場文化もそのような質問に関与しています。
また、ソフトウェアエンジニアリングの大きなギャップもあります。多くの場合、卒業生は次のようないくつかの重要な実践を教えられていません。
ロンドンでは、Graduate Developers Communityが大学と協力してこれらのギャップに対処し、学生に影響の少ないソフトウェアエンジニアリング技術を導入してコースワークで使用しようとしています。
つまり、そのB *ツリーを構築せずに、コードをソース管理に配置し、問題追跡システムでバグを追跡し、最初にいくつかのテストを作成するのはなぜですか? :)
私はそのギャップがかなり大きいことに同意します。あなたの実際のプロジェクトが何であるか、そしてあなたの特定のCSプログラムに応じて少し大きくまたは小さくなりますが、すべての企業が彼らから始まる新卒者のための真剣なメンタリングプログラムに投資する必要があると思います。
あなたは実際のライブプロジェクトに取り組むことでそれを克服します。実際にインターンシップを真剣に受け止めている会社のインターンとして、FOSSプロジェクトに取り組んでいる、独自のプロジェクトを作成している、または最初の仕事を始めている。
特に、新しい人々の指導が「ソースコードを読むだけ」というアドバイスに限定されているプロジェクトに参加しようとすると、FOSSプロジェクトを開始するのが困難になる可能性があることに同意します。私の推奨は、あなた自身のプロジェクトを始めることです。それは、あなたが面白いと思うFOSSプロジェクトを多用するもので、遅かれ早かれ、奇妙なものやバグのあるもの、または文書化が不十分なものに出くわします。そこからFOSSプロジェクトのコードに飛び込み始めます。奇妙な/バグのある動作を文書化するテストケースを作成し、いくつかの文書を作成して、コミュニティがそれを調べるための丁寧な要求にどのように応答するかを確認します。
私を含め、私が知っている多くのプログラマーは、大学でコンピューティングではなく電子工学を教えられていました。わかりました、私たちは組み込みソフトウェアに取り組んでいます。