SSブログ

ソフトウェア開発組織が持つべきカルチャー 002 [ソフトウェア開発組織が持つべきカルチャー]

コンピュータの基礎を教える

今日、コンピュータサイエンスを学ぶことなくソフトウェア業界に就職する若者は増えています。彼ら・彼女らが今後ソフトウェア開発に従事してキャリアを積んでいくことを考慮すると、コンピュータの基礎を教えておく必要があります。教えておくべき基礎的な事柄としては、以下の項目があります。
  • コンピュータの基本原理 CPUの基本構造、メモリー回路、割り込み動作、etc
  • オペレーティング・システム Linuxなどのオペレーティング・システムの基本的な仕組み
  • データ構造とアルゴリズム リスト、木構造、ハッシュテーブル、探索、O標記、etc
このような基礎的な事柄を一切教育せずに、オブジェクト指向分析とかJavaプログラミングを教えたとしても、その後の知識の獲得のための基礎が不足したりします。その結果、表面的な理解しかしていない技術者となってしまいます。

「このような教育は不要であり、業務を通して覚えれば良い」と言う人もいますが、実際に問題に遭遇した時に学んでいる暇はありません。極端な場合、数万件のソートされているデータを検索するのに二分探索法さえ思い付かず、線形探索をするコードを書いて、チーム内でレビューしても誰も線形探索は問題であることを指摘できないチームができあがってしまってもおかしくはありません。

本来、ソフトウェア開発組織としては、「若い人が将来どのようなソフトウェア開発に従事しても困らないように」という視点を持って最初に基礎教育を行っておく必要があります。しかし、そのような教育は不要だと考えて、その組織で必要な技術を最低限学んで開発に投入してしまう組織も多くあったりします。その結果、他の種類のソフトウェア開発に従事できない技術者を増やすことになってしまいます。

逆に言えば、最低限の基礎知識を持っているかを確認したければ、上記項目に関連した質問をすれば容易に分かったりします。

※ このようなチームはいくらなんでも作り話だろうと思われるかもしれませんが、実際に遭遇したことがあります。


スポンサーリンク