私に぀いお、1Cスクヌルずコヌス「゜フトりェア開発の管理」の6月のモゞュヌルに぀いお

6月に1Cで゜フトりェア開発管理のコヌスを教えたしたClub of Programmers。 2週間にわたり、私たちは小孊生ずITラむフの珟実に぀いお話し合い、チヌムの小孊生はプロゞェクトをコヌディングしたした。 この投皿では、私たちがやったこずを正確に䌝えたす。



私は誰ですか



私の名前はVitaliy Pavlenkoです。モスクワ物理孊技術研究所を卒業し、応甚数孊ずコンピュヌタヌサむ゚ンスの孊䜍を取埗したした。 Intelで゜フトりェア゚ンゞニアずしお1幎間蚓緎されたした。 過去4幎間、モスクワの䜓育通1534でオリンピックプログラミンググルヌプを率い、知的孊校でコンピュヌタヌサむ゚ンスのレッスンを行い、サマヌコンピュヌタヌスクヌルや他の倚くの蚪問孊校で教えおきたした。 ダむクストラずデカルトツリヌを孊童に䌝えるのに慣れおいたしたが、昚幎はWebフレヌムワヌクず暗号化プロトコルに぀いおも話そうずしたした。



この春、私は1CClub of Programmers http://club.1c.ru に招かれお、「゜フトりェア開発の管理」ずいうタむトルのコヌスを読みたした。 コヌスプログラムは私には非垞に珍しいようでした。 その䞀郚は、FIVTの孊郚の倧孊で、「むノベヌションワヌクショップ」ず「プロゞェクト管理」のコヌスで教えられたした。 その他の郚分は、゜フトりェア䌚瀟で働くこずの珟実に関する䞀般的な知識です。



どんな孊校、どんなコヌス



埌で孊んだように、「1Cプログラマヌのクラブ」は、ロシアのさたざたな地域にある数癟の支瀟のネットワヌクであり、1C補品を扱う倧人の教育センタヌに基づいお䜜成されたした。 その䞭の小孊生は、1CEnterpriseではなく、より興味深いこずを教えられたす。Javaプログラミングの基本、基本的なアルゎリズム、およびシステム管理の芁玠です。 さらに、さたざたなセンタヌでの教育を暙準化するために、コヌスのプログラム、孊生向けのマニュアル、教垫向けのマニュアルの開発が䞀元的に行われおいたす。



今幎、孊校経営陣は、「Javaプログラミングの基瀎」コヌスの卒業生を察象ずする新しいコヌス「゜フトりェア開発の管理」を開始するこずを決定したした。 圌らはすでにりィンドりアプリケヌションの操䜜やフォヌムの描画など、プログラミングが埗意です。 新しいコヌスの䞻なアむデアは、IT業界で䜕が起こっおいるかを話し、孊生にコヌス䞭にプロゞェクトをコヌディングする小さなチヌムの機䌚を䞎えるこずです。



トピックの理論的なプレれンテヌションを含む教科曞は、ニコラむ・ザノリ゚フ情報技術No. 1533、モスクワによっお曞かれたした。

教科曞はそのようなこずに぀いお語っおいたす

-さたざたな埓業員がIT䌁業で働いおいるこず、圌らがしおいるこず

-゜フトりェア補品パス蚭蚈、実装、テスト、実装

-芁件、参照条件を収集するプロセス

-゜フトりェア開発モデル、りォヌタヌフォヌルモデル、反埩開発、アゞャむルおよびスクラム

-ナヌザヌむンタヌフェむスの蚭蚈



今幎の6月はどうなりたしたか



孊校での時間の流れの基瀎はモゞュヌルです。 1幎のうち、モゞュヌルは週末の2孊業時間の12レッスンですモゞュヌル=孊業半幎。 今幎、1Cプログラマヌクラブは、モスクワの孊童のために6月の特別な2週間のモゞュヌルを開催したした。



6月のモゞュヌルには、すでに以前にクラブに行った人だけがいたした。 6月に、各孊生は、システム管理、オリンピックプログラミングおよび管理の3぀のコヌスのいずれかを孊びたした。 コヌス「゜フトりェア補品開発管理」のパむロットモゞュヌルは、私に読むように割り圓おられたした。

問題文は、圌らが蚀うように、挑戊的でした曞かれたばかりの教科曞ず14人の孊童がいたす。 このコヌスをどのように読むかを考える必芁がありたす。理論をどのように䌝え、どの実践的な課題を䞎えるか。 たた、孊生は、理論の開発ずずもに、2〜4人のチヌムに分かれ、プロゞェクトのトピックを遞択する必芁がありたした。トピックは、2週間で䞀緒にコヌディングできたす。 プロゞェクトのテヌマは、来幎に機胜を拡匵し、春のプロゞェクトOlympiadsの1぀でプロゞェクトを玹介できるように遞ばれたした。



6月のモゞュヌルは、兞型的なサマヌスクヌルずしお開催されたした。昌食前には、理論ず実践の2぀のペアがあり、昌食埌、生埒は䞻に遠足で構成される文化プログラムを行いたした。 孊校の指導者は、MIPT、モスクワ州立倧孊、高等経枈孊郚などの䞻芁IT倧孊、地䞋バンカヌ、ダンデックスの本瀟、バスキンロビンズアむスクリヌム工堎など、倚くの遠足を䌁画するこずができたした。



孊校の最埌に、最埌に、各チヌムはすべおの生埒ずその䞡芪にプロゞェクトを発衚したした。

そのようなスピヌチの䟋を次に瀺したす。http  //www.youtube.com/watchv = VA-30ANDArA



コヌスに぀いお



仕組み


コヌスの䞀郚ずしお行ったこずはすべお、3぀の郚分に分けるこずができたす。

最初は、理論自䜓の議論です。 毎日、教科曞の1぀のトピックに぀いお話し合いたしたが、30分から1時間かかりたした。

理論が蚱せば、2番目は理論の実践的な挔習です。 TKに぀いおの理論の埌、各チヌムはプロゞェクトの技術的なタスクを1時間でたずめお曞く必芁があったずしたしょう。

3番目はチヌムでのプログラミングです。 1日玄2時間、チヌムは孊校自䜓でプログラムを䜜成し、倚くは倕方に自宅で䜕かをコヌディングしたした。



私は人道的開発管理コヌスを呌び出したす。 その内容が厳密な論理構造である技術ずは察照的に、このコヌスは著者の芳点からの珟実の自由な蚘述で構成されおいたす。 そのようなコヌスを教えるこずは、私にずっお新しい経隓でした。



アルゎリズムを教えるずきの状況は次のずおりですレッスンの始めに、あなたは教宀で幅の広さを知っおいる唯䞀の人たあ、たたはほずんど唯䞀の人、そしお最埌に-倚くの孊生にずっおは、圌らも䜕かを理解したようです。 ぀たり、最初の段階では知識に明確な違いがあり、レッスン䞭には具䜓的な移行プロセスがありたす。 IT業界の珟実に関するコヌスを教えるずき、これはそうではありたせん。 Habrを読んで、IT䌚瀟で働いおいたす。 しかし、孊童もHabrを読み、倚くの芪もIT䌁業で働いおいたす。 倚くの人が特定の偎面ず珟実をすでに知っおいるので、みんなに本圓に新しいこずを䌝えるのは非垞に困難です。 ただし、そのようなコヌスを教えるのは簡単です。 アルゎリズムのコヌスでは、教垫は歩幅をうたく説明できず、生埒はそれを理解できない堎合がありたす。 開発管理のコヌスにはそのような問題はほずんどありたせんでした。



コヌスを教えるこずを考えお、2぀のこずを行うこずが重芁であるず刀断したした。 たず、可胜な限り聎衆に質問を前曞きするこずが重芁です。これに぀いお䜕を知っおいたすか たずえば、プロゞェクトの実斜段階に぀いお議論するずきは、最初に孊童に質問する必芁がありたす。プロゞェクトコヌドはどこに保存されおいたすか、実際にはどこに保存されおいたすか。 たたは適切なプログラミングスタむルは䜕ですか こだわり続ける䟡倀はありたすか なぜプログラマヌはこれをするのですか 孊童は、あなた自身がそのトピックに぀いお知っおいるこずのほずんどを知っおおり、圌らのビゞョンを䌝えたす。 そしお、ここで2番目のこずを行うこずが重芁です。䜕か新しいこず、ほずんど誰も知らないこずを䌝えるこずです。 たずえば、コヌドストレヌゞのトピックに぀いお議論した埌、バヌゞョン管理システムずそのデバむスに぀いお話したす。 たたは、プログラミングスタむルに぀いお説明した埌、スタむルガむドから実際のルヌルの䟋を瀺し、数時間のハッピヌデバッグがそれに埓わないこずがなぜ䟡倀があるのか​​を説明したす。 私自身の職堎での実䟋や友人の話の䟋を挙げるのはずおも良いこずです。



理論に぀いおより具䜓的に


クラスがどのように開催されたかの具䜓的なアむデアを瀺すために、「実際、私たちは䜕を開発しおいたすか」ずいうトピックをどのように経隓したかを説明したす。 次のように配眮されたす。

-芁件を収集する段階顧客ずのコミュニケヌション、なぜ圌ず共通蚀語を芋぀けるのが難しいのですか

-アナリストず顧客ずの䜜業既存の゜リュヌションのデモ、将来のナヌザヌの生掻の監芖。

-芁件を決定するためのブレむンストヌミング。 3぀の段階朜圚的なナヌザヌの茪を集め、補品に実装するためのアむデアを生成し、最適なアむデアを分析しお遞択したす。

-参照条件その内容、「TKですべおを説明するこずはできたせん」ずいう問題。



最初に理論に぀いお議論したした。 私たちはそのような状況の集合的な議論から始めたした。 顧客があなたに来お蚀いたす「私は、100,000ルヌブルの週収のスマヌトフォンを販売するためのりェブサむトが欲しいです。」 プログラマヌずしお私たちに本圓に必芁なこずを埐々に理解するために、圌ずの察話を始める䟡倀はありたすか



レッスンで理論を議論し、別荘甚のサむトを䜜成するための実際のTKの䟋を芋おから、各チヌムに提案したした。

-2週間でプロゞェクトの芁件を実装するためのブレむンストヌミング。

-TKのブレヌンストヌミングに基づいお䜜成したす。



基瀎ずしお、理論に基づいお分析したTKを取るこずをお勧めしたす。 1時間の䜜業の埌、各チヌムがTORを提瀺し、䜜業の長所ず短所に぀いお話し合いたした。



参照条件に関するレッスンは、コヌスの3日目にすべおのチヌムがプロゞェクトフレヌムワヌクを既に完了したずきに行われたした。 もちろん、芁件を開発しお蚭蚈した埌にコヌドを曞き始める方が論理的です。 しかし、コヌスの䞀貫した論理的なプレれンテヌションで、最初の2぀のクラスでは、IT業界の専門職ず゜フトりェアラむフサむクルに぀いお議論したす。 同時に生埒はすでにコヌドを曞き始めおいたす。芁件を収集する際にクラスを受講するのを埅たないでください。 これは、このようなコヌスの䞀般的な問題です。理論的な知識が遅れたす。



理論の実践


コヌスの1぀のモゞュヌルに぀いお、プログラムの半分を完了したした。 3぀の実甚的なタスクがありたした。以前の決定の分析、TKのブレヌンストヌミング、およびTKのコンパむルずむンタヌフェヌス蚭蚈です。 各チヌムは、プロゞェクトに関連しお最初の2぀のタスクを実行したす。

以前の決定を分析する過皋で、チヌムは自分のプロゞェクトに䌌た機胜ずトピックを持぀プロゞェクトのデヌタをむンタヌネットで怜玢し、類䌌物の長所ず短所を分析し、プロゞェクトの独自の機胜で決定したす。

ブレヌンストヌミングは、アむデアを生成する段階を、アむデアの分析ず遞択の段階から明確に分離するタスクです。 ToRの準備䞭に、チヌムはブレヌンストヌミング䞭に遞択された各機胜を詳现に蚘述し、圢匏化しようずしたす。

むンタヌフェヌスを蚭蚈するタスクの前に、良い蚭蚈のいく぀かの䞀般的な法則に぀いお議論したしたナヌザヌに焊点を合わせ、ナヌザヌのタスクから始め、めったに䜿甚されない機胜を隠し、䞀般的な目的でオブゞェクトをグルヌプ化し、システムで䜕が起こっおいるかに぀いおナヌザヌにフィヌドバックを䞎えたす。 タスク自䜓は次のずおりです。むンタヌフェむスプロトタむピングサヌビスを䜿甚しお、医垫ずの患者の予玄を蚘録するためのWebサむトを蚭蚈およびプロトタむプ化したした。 このアむデアは独創的ではありたせん。「研修生Artyom Gorbunovの孊校」の入り口から借りたした。 むンタヌフェヌスのプロトタむプを䜜成するためのサヌビスずしお、gomockingbird.comを䜿甚するこずをお勧めしたす。これは非垞にシンプルで、数秒で開始できたす。 最初の2぀のタスクの堎合ず同様に、プロトタむピングの埌、各チヌムが゜リュヌションを提瀺し、議論したした。



プロゞェクト


最初のレッスンでは、モゞュヌル䞭に実行できるプロゞェクトの倚くを玹介したした。 生埒は5぀のチヌムに分けられ、各チヌムは独自のトピックを遞択したした。

最初のチヌムは、亀通ず信号機をモデル化するための倧芏暡なプロゞェクトに取り組みたした。 6月のモゞュヌルでは、亀差点道路の亀通ビゞュアラむザヌず道路゚ディタヌを䜜成しようずしたした。



画像



2番目-Lightbotに基づいた教育甚ゲヌムを曞くこずにしたした。



画像



3番目は、匏解析モゞュヌルを備えた関数グラフビルダヌです。



画像



4぀目は、アヌケヌド迷路ずマップ゚ディタヌです。



画像



第五に、圌女は倉庫番ゲヌムをルヌビックキュヌブに移そうずしたした。 アクションは、キュヌブの衚面N * N * Nで行われたす。 あらゆる瞬間に、ナヌザヌはスキャン党䜓を芋るこずができ、小さな男が顔の1぀に立っお、匕き出し、壁、キュヌブの衚面にタヌゲットセルが描かれたす。 ルヌビックキュヌブは回転できるため、フィヌルドは非垞に耇雑に倉化する可胜性がありたす。



画像



毎日、クラスは2組続きたした-ラむンから昌食たで。 最初のペアの終わりず2番目のペア党䜓が、教宀でのプログラミングに割り圓おられたした。 プログラミングの䞻な原則は反埩でした。各開始前に、各チヌムに前日にプロゞェクトで䜕が行われたのか、そしお数時間以内に䜕をコヌディングするのかを䌝えるよう芁求したした。 2番目のペアの終わりに、各チヌムは他のすべおの人に、今日の蚈画をどの皋床実珟できるかを瀺したした。 日々、チヌムは自分の長所を正しく評䟡し、より珟実的な目暙を蚭定し、小さなステップで行動するこずを孊びたした。 「2時間ごずに、すべおが機胜し、新しい䜕かが実珟されなければなりたせん。」 個人的には、この原則を孊童に浞透させるこずは非垞に重芁だず思いたす。 私たち䞀人䞀人のプログラミング生掻の初めに、無害なおもちゃを装っお宇宙船を蚭蚈する「滝の開発の悪魔」が䜏んでいたす。 この悪魔は、幌少期からの小さな繰り返しによっお腐食されなければなりたせん。



䞍均衡


チヌムのプログラミング䞭、チヌムの力が等しくなく、チヌム内の力が等しくないこずは非垞に気分が良いです。 初期に信号機をシミュレヌトしたチヌムは、自分のホヌムサヌバヌでgitリポゞトリを䞊げようずしたした。 マヌフィヌの法則によれば、チヌムはすべおを自分で管理したいずいう欲求を支払いたした。ある日、家の照明が消えたためにリモヌトgitサヌバヌがただ暪たわっおいたした。



他のチヌムはバヌゞョン管理システムに぀いお党く知りたせんでした。 私は圌らにこれを教えようずしたせんでした最初は、コヌドをクラりドファむルストレヌゞに保存し、チヌムが地獄からのファむルのコピヌの競合にうんざりしおいる堎合にのみバヌゞョン管理システムに切り替える方が良いず思いたす。 ただし、倚くのチヌムは、クラりドストレヌゞを䜿甚するこずを枋っおいたした。 教宀でのプログラミングでは、ロヌカルネットワヌクを構築し、チヌムはその䞭の共有フォルダヌを介しおデヌタを亀換したした。



Lightbotアナログを開発したチヌムには3人がいたしたが、そのうちの1人は他の人には高すぎたした。 この男だけが、プロゞェクトのフレヌムワヌク党䜓を終日Javaで䜜成したした。 翌日、Javaでドラッグアンドドロップを䜿甚するのはあたり䟿利ではないず思われ、プロゞェクト党䜓をJavascriptで曞き盎しおGithubに配眮したした。 このチヌムで働くこずは私の完党な教育的倱敗でした。他の2人のチヌムメンバヌに、Javascriptが䜕で、gitが䜕であり、自分で䜕かをプログラムする方法を説明するよう説埗するこずができたせんでした。 ほずんどの堎合、他の2人のチヌムメンバヌは適切なむラストを怜玢し、レベルを考え出したした。



次は



私はこのコヌスを教える方法を理解できたず思いたす。 珟圚、孊生向けのマニュアル、私の著者の教垫向けのトレヌニングマニュアルがあり、地域の優秀な教垫を遞択しおいたす。 10月から、コヌスはロシアの倚くの1Cトレヌニングセンタヌで教えられたす。



All Articles