より
ある程度の経験を積んだ技術者/プログラマであるかどうかを判断したいとき、「リビジョン管理システムを普通に使えるかどうか?」という基準はけっこう有効な気がした。
これに対して「そんなの使えて当たり前だろ」という(まっとうな)反応もあったのですが、僕の経験では「当たり前」ではありません。
うんうん。
良く分かる。
これは、「当たり前」なんだけど、「当たり前」じゃない。
使えない人、使ってない人は多い。
それどころか理解していない人も多い。
たとえば、もう存命ではないベテランの方と話をして、噛み合わなくて困ったことがある。
「ソースコードの差分管理は必須。これが無いと書きたくない」
「今のデータベースの性能で、そんなことできるわけがない」
時代的にはCVSもTFSもまだ無いころ。もちろんSourceSafeも無い。
世間的にはSCCSとかRCSが有名だった時代。
たかが差分を抽出して保管する程度で、性能が足りないなんて、そんなアホなと思ってよく話を良く聞いてびっくり。
キーを1回押すごとにデータベースに差分を保管すると思ってたわけですよ。その相手は。動作を確認してからチェックインするという発想が最初から無かったわけです。
それが笑い話で終わるかと言えばそんなことはなくて、最近もそれに匹敵する噛み合わない会話がしばしば起きます。使ってる人と使ってない人の差があまりにも大きすぎるからですね。そもそも何のためにソースコードの管理システムを使っているかという前提が分かってない人がいるわけですね。
では、そういう人と一緒に仕事ができるかというと、かなり怪しいですね。そういう人は「必ず日付入りで修正点を説明したコメントを入れろ」とか、「定期的にソースのバックアップを作れ」とか要求されかねません。大幅な効率ダウンです。(いや別の「その自己満足のためのお金は払うからやってくれ」というならやりますよ。お客様は神様だから。お金を払う限り神様です)
まあその先は語っても意味は無いので語るまい。
ただ、おいらの頭の中では、ソースコードの管理システムの優先順位はコンパイラよりも上です。統合開発環境より上です。ソースを何を使って書き換えるかは実際にはいくつも選択肢があって別に特定のソフトとは決まっていません。場合によっては自動生成するツールで生成する場合もあります。ただ、ソースコードの管理システムは基本的に1つです。とても重要。命の次に大事なソースを仕舞っておくのだから。
余談 §
リビジョン管理システムは、ファイルシステムの機能を拡張したようなものだとも言えます。だから、「ファイルシステムに毛が生えた程度のもの」なんですが、そもそもファイルシステムが難しいし、毛の生え方に付いて行けない人もいるのです。
それも分かります。ファイルシステムはしばしば直感を裏切る動作を引き起こします。同じファイルに複数の写真が入ると思って保存しても上書きされて困っていた人を実際に見ています。確かに、物理的な書類入れであるファイルに、写真は複数入れられます。
それはビギナーだけの話かと思いきや。実は、そこそこ分かっていると豪語する人でもけっこうミスをします。たとえば、ファイルシステムごとのタイムスタンプを保存する精度の違いから、タイムスタンプの比較が失敗する等ですね。昔、日付時刻ベースで比較する差分バックアップソフトを作っていた人が悩みをこぼしていました。互換性があると豪語していても、そこで引っかかって上手く行かないケースが多かったとか。