メモ:システムエンジニアの評価指標

HIGH OUTPUT MANAGEMENTを読み、今の自分がどのような尺度でシステムエンジニアを評価できるかを試し書き。 結論、やや古めのWebアプリケーションエンジニア・アーキテクトに関する評価表になった。 何か本を読むなり手を動かすなりで知識を取り入れて更新していきたい。

設計者(システムエンジニア)としての指標

  • 指標(グランドデザイン)
    • 業務領域に関する知見の深さ。
    • 様々なミドルウェア・ソフトウェアの特性の把握。
    • システムを構築する要素の物理(サービス)的・論理(サービス)的観点の知見。(実例を知れば知っているほどよい)
    • 運用時、各アクター(ユーザー、特権ユーザー、ヘルプデスク、エンジニア)がそれぞれできることと権限制御を含めたデザインができる能力。
    • 外部システムとの依存関係の構築に関する知見。
    • 個人情報やシステム監査など、社会的に要求される仕様に関する知見。
  • 指標(詳細デザイン)
    • 機能分割に関する知見。ユーザーの問題領域(ドメイン)と実装に落とした時のフローに関する知識。
    • アーキテクチャ設計パターンに関する知識。(レイヤ化、MVC、CQRSなど。各問題点の理解があればなお良い)
    • 実装パターンに関する知識。(キャッシュによる高速化、遅延評価戦略など)
    • エラー時のユーザーや保守エンジニアの行動に関するデザイン。
    • 機能変更する際、何を犠牲にするか・できないかを想定する能力。(例:パラメータ設計。変更が想定される機能に関しては、複数値を受け取れるように配列での受け取りやインタフェース定義を工夫する。それ以上の要求が来た場合は別の手段を・・・などの切り分け)

Webエンジニア(フロント)の指標

  • HTML・CSSデザインに関する知見・習熟度。テンプレ的な配色比率やレイアウト(ex:グリッドレイアウト)に関する知見。(鮮度あり。長めに見て直近5年)
  • UI・UX視点での知見。(ex:PC向けサイトをスマホで見るとどうなるか?)
  • 素材をベースとした画像加工技術やロゴなどの画像制作技術。
  • CSS命名規則など、中長期に渡るCSSの保守に関する知見。(鮮度あり。長めに見て直近5年)
  • JavaScriptの習熟度・DOMなどの機構の理解度。
  • SPA(Single Page Application)や各フレームワークに関する習熟度。
  • WebAPIの呼び出しなどに関する知見。
  • 実装が及ぼす性能・処理速度への影響に関する知見。
  • デバッグやプロファイルによるアプリケーションの挙動観測技能。
  • ほか特定ケースの技能。

Webエンジニア(バック)の指標

  • HTTPプロトコルとWebサーバーの仕組みに関するコンピュータ・サイエンス観点の知識。(リクエスト、レスポンスがそれぞれ何なのか。ブラウザはどう受けるのか)
  • データストア(データベースなど)の更新特性に関する知見。
  • 認可・認証に関する知見。
  • トランザクション設計・エラーハンドリングにおける知見。
  • 一般的な脆弱性対策に対する知見。(○○インジェクション、認証認可なしでパラメータ次第で不正操作できてしまうかの検出)
  • 実装が及ぼす性能・処理速度への影響に関する知見。
  • アプリケーション・サーバーが実稼働したときの物理構成に関する知見。(リバースプロキシやロードバランサ、CDNなど)
  • デバッグやプロファイルによるアプリケーションの挙動観測技能。
  • ほか特定ケースの技能。

テスト計画者・テスターとしての指標

  • 一般的なテスト工程に関する知見。(単体テスト結合テスト、総合(システム)テストはどんな性質の品質を検証するか?)
  • テスト工程において期待されていることや作用の理解。(品質確認、ビジネスとしての品質保証、メンバー間の認識統合など)
  • 仕様に適合しているかを検証するテストだけでなく、QA(品質保証)観点でのテストに関する知見があるか。
  • テスト自動化における前提・弊害の理解。CI(Continuus Integration)実運用の知見。
  • 境界値テスト・最大値・ゼロデータなどの一般的なテスト観点の知識。
  • 正常系(想定している仕様に適合したケース)、準正常系(想定していない状態だが正常に稼働すると保証するケース)、異常系(処理継続困難となるケース)の理解。
  • 状態を持つ実装(JavaScriptを駆使した動的な機能、スタンドアロンexeによる実装など)における検証の知識。(機能を連続して動かした時や、戻ったときに不正な表示や挙動をとるかの検証)

開発作業管理者・リーダーとしての指標

  • WBS粒度での作業進捗管理の知識。
  • 課題・ボトルネックの検出能力と問題解決手法(エスカレーション含む)の選択能力。
  • 課題に対するリカバリプランの立案・提示能力。
  • チームメンバーに対するメンターとしての技能。
  • プロジェクト内他チームとのコミュニケーションのとり方。(適切・不適切な外部委任?協力的・過剰干渉的?コントロールはできそう?)
  • プロジェクト外とのコミュニケーションのとり方。(各自の関心領域やスコープを把握し手を打っているか?)