問題
訳語がハブにあったStraustrupの記事の中で、古いビョルンは、西洋教育に焦点を当てたIT教育の問題について述べています。 アカデミック教育(いわゆるコンピューターサイエンス)とIT業界のニーズに合わせた専門家のトレーニングとのギャップにあります。
要点について簡単に説明します。
- トレーニング中、学生は100〜1000行を超えるコードの割り当てを書くことはめったにありませんが、最新のプログラムには数十、数十万、数百万行のコードが含まれています
- 学生は個々の課題を作成しますが、現代の産業ではチームワークが必要です
- 学生自身に教える教授はコードを書かず、それを誇りにさえ思っています
- コースで提供されるアルゴリズムとデータ構造は実際のタスクとは離婚しており、学生はそれらを適用する方法を知らないだけです。
- そして最後に、コンピューターサイエンスは非常に広範であるため、ソーシャルネットワーク用のWebアプリケーションとアビオニクス用の組み込みシステムの両方を等しく作成する専門家を想像することは不可能です。 プログラムを開発する必要がある非常に幅広いトピックがあり、プログラマーは特定のトピックに飛び込む必要があります
実際、私はすべての声明に同意します。 このセッションで生徒に起こった例を挙げることができます。 1人の生徒が作業を行い、彼のコードが使用され、需要がありましたが、教師は、これはコースワークをまったく引っ張らないと言い、良いコースワークの例として、コードをまったく書く必要のない技術のレビューを行いました。
Straustrupの記事では、スペシャリストの認定から成るソリューションを提供しています。 ロシアでは別の試験が行われる可能性がありますが、おそらくこれはケースに役立ちます。 Stroustrup自身は、プログラマと医師を比較しています。 実際、手術前にインターンシップの経験を積んでいない医師を誰も許可せず、同じ手術の一部を担当するプログラムを作成するプログラマーは、講義を聴き、いくつかの研究室を修了し、卒業証書を書いた後にのみコードを書くことができます仕事。
解決策
私の意見では、プログラミングを教えるとき、開発と同じ原則を使用する必要があります。 「 コードを書く! 」つまり、プログラマーは生まれず、1つになります。そのためには、1000行以上のコードを書く必要があります。
しかし、問題は、学生がどこで練習できるかということです。 さらに、実業界では正確に実践する必要があります。 医師にとってこれはインターンシップですが、プログラマにとっては...
学生プロジェクト
現実には、今説明したように状況はそれほど悪くはありません。
多くの学生はIT会社でインターンシップに参加します。たとえば、 システムプログラミング部門では、4年目に働かない(インターンシップ)学生を見つけることは困難です。 IT業界は明らかに成長しており、スタッフ不足の問題に直面して、教育プロセスに対する独自の要件を提示し始めました。 さらに、企業の多くの取締役や管理者自身が大学で(純粋に営利目的であっても)教え始め、技術者を企業に派遣して教えるようになったことに留意すべきです。 IT業界の専門家は、企業でのインターンシップのために学生を募集するようになっただけでなく、よりグローバルなタスク、つまりITスペシャリストの質の高いトレーニングについても考え始めました。 結局のところ、他の誰が彼らが学生に何を望んでいるか知っているべきです。
そのような試みの1つは、たとえば、前述のマットファーの学生プロジェクトです。 そして ここに VolgSTUからのプロジェクト へのリンク があり ます 。 彼らが言うように、傾向は明らかです。
同様の慣行とそれに興味のある人々が現れるのは素晴らしいことです。 しかし、このアプローチには欠点があります。 たとえば、大きな欠点の1つとして、これらのプロジェクトのほとんどが1学年度に向けて設計されていることに注目したいと思います。 したがって、完了した(実装された)プロジェクトでさえ、実際のユーザーでテストする時間がないため、プロジェクトのライフサイクルは完全ではありません。 もう1つの大きな欠点は、そのような方法には大学とプロジェクトマネージャーへの地理的参照が含まれることです。
オープンソースプロジェクト
少し異なるアプローチは、学生をオープンソースプロジェクトに参加させることです。 これは、たとえば、Googleの夏のコードでGoogleで有名です。 また、他の大規模な西部IT企業もそれほど遅れをとっていません。 最近、メンターグラフィックスのディレクターであり、かつてはGCCに積極的に貢献していたオープンソースプロジェクトの作業を担当するマークミッチェルがMat- Mechに来ました。
このアプローチの間違いない利点は、学生が独自の開発プロセス、利用可能なコード、コーディングスタイル、ドキュメント、
似たようなプロジェクトがたくさんあります。あらゆる好みやほぼすべてのトピックで選択できます。
証拠として、私は私たちのプロジェクトから統計を提供します。 メトリックを1つだけ見てみましょう。これは非常に原始的なものであり、開発者の品質、つまり彼が変更したコードの行数を完全には反映していません。 これは、 4年生のAntonKozlovの ohloh.netアカウントです 。 彼は30,000行を超えるコードを変更したため、C言語での開発に十分な経験があることがわかります。 そして、これは私たちの最も活発な学生ですが、残りはそれぞれ10,000人もいます。さらに、これらは個々の研究室ではなく、かなりの数の開発者が参加する複雑な複合プロジェクトです。
したがって、私の意見では、トレーニングの過程で優秀な学生は、関連するトピックの産業システムの開発で経験を積むことができる、いくつかの(またはいくつかの)オープンソースプロジェクトに参加する必要があります。
さらに、ロシア語圏でも、さまざまな種類のオープンソースプロジェクトが非常に多くあります。 ここに、例えば、開いているメッセンジャーの最近のレビューがあります。 オープンクライアントダイレクトコネクトEiskaltDC ++に言及する価値があります 。これは、同じマットファーの隣のペテルゴフキャンパスでも開発されています。 記事によると、ロシアのPostgreeSQLの主要な開発者の1人であるOleg Bartunovは、「同時に」天文学者であり、GAISH Moscow State Universityのスタッフメンバーです。 参加できるオープンソースプロジェクトについて説明する記事があります。
これらが唯一の例ではないと思います。 そして理想的には、大学やIT企業がこの動きに貢献するべきです。 西洋では、オープンソース運動が生まれたのは大学環境であり、企業はオープンソースの成果をうまく利用しています。
おわりに
それで、「プログラマをどこに連れて行くか」という質問に対して、「オープンソースプロジェクトで検索する」と答えます。 ちなみに、これは同じGoogleで積極的に使用されており、ウェブサイトohloh.netでプロジェクトのメンバーが数人見つかりました。 「プログラマーを育てる方法」という質問に対して、企業はテーマ別のオープンソースプロジェクトにもっと積極的に参加する必要があると思います。おそらく大学や他の企業との共同プロジェクトを組織し、そこで学生を巻き込むことです。
さて、経験を積んだ開発者は、おそらく抽象クラスとインターフェースの違いをすでに知っているでしょう。