酒と開発の日々

飲酒大好き駆け出しエンジニアのブログ

正しいものを正しく塾 設計コースに参加しました

めちゃくちゃお久しぶりです、ぐーどらです。

新しい環境に身を置き、半年以上経過していることに驚いています。

今回の記事は正しいものを正しく作る塾の設計コースの初回に参加してきたので、内容のまとめと自分なりの解釈を記事にしたいと思います。(アウトプットは主体的に学ぶために大切という話がまさに塾の内容にもありました。)

主体的に設計スキルを学ぶ

現場で役立つ実践的な設計スキルを学ぶには当然ですが、学びと実践が大切であるという話が最初にありました。 また、コースを受けるにあたりラーニング・パターンが紹介されました。特に下記2点は設計活動にも酷似しているパターンとして紹介されました。

また、このセクションの最後のスライドでは設計を学ぶコツというスライドが有り、"形式知は正解でなく手がかり"と書かれていました。この部分に関しての自分なりの解釈は、形式知はかならずしも現実の正解とは限らず、実践が不可能の場合もある。実際に実験などを経て自分の経験から来る正解を見つけるべきという主張だと解釈しました。

設計スキル 三つの伸びしろ

まず最初に下記のスキルが書かれたスライドがありました。

  • 俯瞰するスキル
    • 全体を見渡す
    • ランドマーク(特徴や目印)を見つける
  • つながりで考えるスキル
    • つながりの有無・強弱・濃淡・方向を考える
  • 軸を中心に組み立てるスキル
    • 軸から周辺に広げる
    • 軸を強化してから周辺を広げる

設計を学び、実践する際はこの3つのスキルを意識し実践せよとスライドに書かれていました。 自分なりの解釈を書き出すと下記のようになるかと思います。

俯瞰するスキル

全体を眺め、中でも大切な部分や特徴的な部分や要素を見つけ出す能力。

つながりで考えるスキル

要素同士がどのように関連するかを考える能力。

軸を中心に組み立てる

大切な部分や大切な要素から組み立て始め、理解をまず深める。その後周囲に取り掛かる能力。

正直なところつながりで考えるスキルに関してはあまりピンときていません。

良い設計

ソフトウェアの品質特性として、スライドでは下記3つが挙げられました。

  • 合目的性
    • 対象業務、画面、データ、外部インターフェース
  • 稼働性
    • セキュリティ、処理性能、可用性、運用・監視
  • 発展性
    • 設計品質

最も大切な品質は発展性であるとスライド内で明示され、また講師である増田氏のブログ記事でも、下記のように主張されています。

masuda220.hatenablog.com

講義の中では、合目的性や可動性を突き詰めても発展性は向上しない。逆に発展性を担保できれば合目的性や稼働性を改善してゆくことができるというお話もされていました。個人的にはとても納得のゆく話で、下記のスライドの中でも共通している主張がされていると感じました。

speakerdeck.com

最後に

今回自分がこのコースに参加を決めた理由はいくつかあるのですが、やはり一番はコードを書く時の迷いを払いたいという思いが一番強いと思っています。

今まで私はプログラミングを学ぶ際、師事をうけるような機会がありませんでした。前職や現職でもアーキテクトのような存在がおらず、コードを書くための判断基準が常に曖昧なままコードを書き続けていました。

講師の増田氏の書籍やブログ記事は以前より拝読していました。主張されていることはいずれも納得のゆくものばかりで、この塾の講師をされると知ったときすぐに申し込みをしました。

この塾を通じて、設計に対する身体知を少しでも多く獲得し、コードを書く時の迷いが軽減することを願ってやみません。