チーム開発の重要性
ソフトウェアの規模が年々大きくなってきて、開発に関わる人数も多いですよね。ソフトウェアの開発手法も20年前、10年前とは全く違います。もちろん昔もチームで開発していました。ただし、より効率的に開発する必要性が増しています。
コミュニケーションがヤバい
昔はよくメールでコミュニケーションをとっていました。みなさんもプライベートでメールはほとんど使わなくなったのではないでしょうか。ビジネスシーンでは今でも社外の方とはメールでやりとりすることもありますが、社内ではメールはほとんど使いません。ではどうしているか。cisco社のJabberやMicrosoft社のTeamsなどのチャットを使います。チャットはメールのように「○○様 お疲れ様です。○○です。XXXXに関しまして~~」などの無駄な文章を削減でき、件名の付け方に悩む必要もありません。上司に対しても多少フランクに相談しても問題ないというメリットがあります。
タスクの管理のスピードアップがヤバい
仕事はどんどんやってきます。仕様発行期日なんてお構いなしです。(;^_^A Excelで進捗管理表を作って管理してステークホルダーで共有して、、、なんてやってられません!そこで10年くらい前からチケット管理するのが少しずつ広がってきたように感じます。たとえばOSSのReamineやAtlassian社のJIRAです。タスクが発生したらチケットを切って担当者へ割り振ります。タスクが完了するまでの進捗を管理することができます。プロジェクトマネージャーのみなさん!怖がらずに導入してみませんか。
バージョン管理のスピードアップがヤバい
ソフトウェアのバージョン管理といえばVSS(Visual SourceSafe)ですよね!私はVSSが大好きでした。しかしご存知のとおりロックモデルのバージョン管理ツールは何年も前に終了しています。今はマージモデルが主流です。2000年頃に登場したクライアント/サーバーモデルのSVN(Subversion)、TFS(Team Foundation Server)や近年流行りのGit、GitHubです。Git、GitHubは分散バージョン管理システムになっています。これがおじさんソフトウェアエンジニアにはわかりにくい!ローカルPCにリポジトリを作って、そのリポジトリにコミットして開発します。そして最後にプッシュすることでみんなのコードを統合します。・・・競合するじゃん。もちろんその心配はありません。そうなんですけどVSSで育ったエンジニアにとっては不安ですよね・・・。デグレを起こして叱られる記憶しかありませんよね。
CIが無いとヤバい
夜間に小人さんがやってきて、自分の仕事を終わらせてくれたらいいのに・・・。童話のようなことが起こらないかと誰もが一度は思うものです。これに近いことはよくやっていました。おじさんエンジニアはバッチファイル(.bat)を作って帰宅前に実行。朝、会社に来たらビルドが終わっている、検査が完了している、評価結果がExcelに入力されているというのは得意です。なんだかうれしくなっちゃいます。それがCI(継続的インテグレーション)と聞くと急にドキドキし始めます。Jenkinsって誰?ってつい言っちゃいます。pythonのScriptとか言われると22世紀にタイムスリップしたかの感覚を覚えます。
おじさんソフトウェアエンジニアのみなさんへ
少し自虐的な表現がありましたが、多くのおじさんエンジニアの方々から「わかる。わかる。」という声が聞こえてきそうです。
ソフトウェアの進歩は我々の学習スピードより速い気がしませんか。しかし、そうもいっていられません。これからもますます開発はスピードアップしていくことでしょう。我々は足をとめている場合ではありません。
私が読んでためになった書籍を紹介します。ぜひ一読ください。
よいソフトウェアエンジニアライフを!
チーム開発実践入門 (技術評論社)
2014年出版ですが内容はとてもわかりやすかったです。
タスク管理やバージョン管理、CIについて解説があります。
とくに10~20年前に使用していたツールとの対比で記載されているので理解しやすかったです。
ぷっと噴き出してしまうようなあるある話もあります。