未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

学習コストってなんだろうな。

http://d.hatena.ne.jp/hyoshiok/20140205/p1 集中型バージョン管理システムと分散型バージョン管理システムってでいろいろコメントをいただく。ありがとうございます。

結局、学習コストの話になる。何事もなれですね、そーですね。では、さすがに何を議論しているかわからなくなる。

前提として、ソフトウェア製品とかサービス開発の現場のエンジニアの素養としてのVCS利用スキルをどう身につけるかということに限定してみたい。プロのプログラマの必須スキルということを考えている。

サンデープログラマが趣味でプログラムを作っているとかではなく、職業としてソフトウェア製品とかサービスを開発する人のことだ。

そのような人を養成する授業を大学が用意するとしたらどのようなカリキュラムになりうるのか?

ソフトウェア開発の現場の経験がないけど、プログラミング経験くらいはある。エディタは使える。くらいのふつーの学生さんを想定してみる。

授業は必修科目ではなくて、好きなら取ればいい科目とする。プログラマになりたくない奴に無理矢理プログラムを教える必要もないし、むいてないこと好きでもないことをやる必要もない。なので、教える側が、全員に理解させようとか、全員合格でオッケーというようなスタンスでいる必要もない。底辺の底上げを目的にはしない。

前置きが長いけど、その前提で言えば、いまさらsubversionでもないでしょう、CVCSでもないでしょう、というのが今日の日記の結論である。

ソフトウェア開発で主流のDVCSを先に学ぶ。そのスキルを身につける訓練をする。そのような課題を作って、演習をする。

全員、git/github/heroku/Rail/Travisなどを使ってプロジェクトを行った。10週間でのcommit数である。ずんずん開発している感じがする。(下記参照)

チームでツールを学んでいけば、ちょっとしたところで躓いても教え合って、理解が深まる。

今回はgit-flowなどの話はしなかったけど、次回は触れてみるかなー。プロダクト開発の感覚を理解するためにも、そのようなパターンを共有することはいいことかもしれない。

学生作品、順不同

チーム名 プロダクト commit数 貢献者数
Hacky_and_rocky http://denka.herokuapp.com 345 4
team puma http://sorejanai.herokuapp.com 215 4
5倍返し http://jshop.herokuapp.com 112 6
RyuPiT http://sharepla.herokuapp.com 1111 6

commit数はgitでの数。貢献者数はgithubでみた数。チーム外からの貢献者がいるチームもある。