2005-Improve-Programming

Q

  • ソフトウェア・エンジニアリングのスキルを向上するには

Ans

  • 対象のソフトウェア・エンジニアリング領域を、どうやって早く、的確に理解するかが、まずポイント。基本的な実装スキルは、想定できる。
  • 例えば、以下。

    • 環境の理解(セキュリティ設定、実装環境設定、開発環境、リリース環境)と、環境設定を如何にshortcutできるか
    • debug手順、テストデータ生成
  • 自分が、何がわかっていないのかが、分かる。プログラミングが結果として、エラーが発生した場合に、なぜ、エラーが発生したか分かる。このように、あるドメイン空間を理解するとは、わかっていることとわかっていないことの区別、不具合と不具合が出ない場合の場合の区別が、スキルとして重要になる。

  • 何がわかっていないかを、分析できる。曖昧さを回避して、言葉として記述してみる等が、対処となる。

  • わからないことを、書籍をベースで調べる。インターネット上の情報を、ツギハギしていると、体系的に、Domain空間を把握することがうまく行かない可能性が高い。より、必要な書籍は、正しく入手し、それをもとに、Domain空間を把握することをまずする。

  • それにより、この部分は分かるが、この部分はわからないということを、明確にする。明確にするとは、A=A'とA⇔Bを分けること。で、A=A’とA⇔Bの区別ができる部分と、その区別の中で、結果が曖昧な部分を、記述する。で、その内容を、QUESTIONとして、残し、そのQUESTIONに、自問し、自答することで、スキルが伸びる。

  • なお、スキルは、Procedure(HOW-Tree)と、Domain SpaceのDefinition(What-Tree)で成立している。Domain Spaceとは、その空間が提供するClassと、その空間をツールとして利用する場合に必要なVariablesとそのCalculateを構築していくこと。Calculationは、よく使うものをSnippetsや、Subroutineにすることで、効率化できる。

  • Procedureは、自動的に作れれば作れるほど効率化が可能といえる。また、パターン化できればできるほど、発生する課題に先回りして、問題が起きない手順を提供できる。