設計力をつけるための練習問題をやってみて

Adways Advent Calendar 2018 3日目の記事です。

http://blog.engineer.adways.net/entry/advent_calendar_2018


 

お疲れ様です!まっちゃんです!
本日は設計力をつけるための練習問題を取り組んだ事を書きます。

設計力...?あれ?と思った方いらっしゃるかもしれません。
昨日は教育担当者、本日は教育対象者からお伝えしていければと思います!

練習問題制度についての詳細は前日の記事をご覧ください。

blog.engineer.adways.net

実際にどんな課題に取り組んだのか、どのように課題に取り組んだのかを書ければなと思います。
あくまで自分の中でも取り組み方なので他の教育対象者の取り組み方とは異なると思います。

当初の計画

いきなり課題着手!というわけではなく、現状分析から始まりました。
教育担当者が教育対象者やチームのチーフと面談し、教育担当者が各教育担当者にあった教育プランを作成します。

教育プランに課せられた内容として「Try And Errorを繰り返すために考える絶対量を増やす」でした。
課題を実施した回数は3回、頻度は1ヶ月となります。

1回目 過去の設計

内容

1年目に携わったレポート基盤リニューアルを自分が再設計するという内容です。
実際のシステムとなるため詳細は省きます。

また「考える絶対量を増やす」を達成するための特別目標として「最低3つの設計パターンを考えること」が課せられました。

行ったこと

1. 現状の構成を確認

携わってから既に1年以上は立っていたので、覚えていない事が多くありました。
なので構成図を書いて、要件も再度まとめました。

2. 実設計

実際に自分なりに設計を考えてみてみました。
手段を変えるような形で3パターンの設計を作成致しました。

結果的に「最低3つの設計パターンを考えること」これに引っ張られすぎて一つひとつの設計が落とし込みきれないという問題のまま、発表を迎えることになりました。

発表に向かう際の心境「これはダメだ」

ふりかえり

良いことフィードバックがあれば、課題となるフィードバックもありました。
フィードバックをもとに自分が理解できていなかった仕様も改めて確認することができました。

主な課題として

  • 辻褄が合わない設計はやめる
    • 点と点が線で繋がっていない
  • 落とし込みが充分にできていないので次回は1つの案で考えてみる
    • なぜこのプロセスなのか?意図と役割が今回の課題だと見えなかった

という事が挙がりました。

教育内容にありました

「処理のデータの流れ」と「処理を実現するためのミドルウェアの組み合わせ」の観点の確認や考える練習を行う
設計におけるリスクの認識を行うことで考える範囲を広げる

というところが充分に考える事ができていませんでした。

方向の転換

ということで特別目標があったものの、今後の課題からは無くなりました。
図も時間がかかるという旨を伝え、今後の課題では手書きでも問題ないという許可を頂きました。

2回目 過去の設計

内容

どうスクレイピングをするのか、スクレイピングをした結果をどう活用するのか?という狙いの問題です。
要件、考えること、考えないことは教育担当者側で既に定義済みです。

行ったこと

1. わかる情報をホワイトボードに書き出す

要件などを元に、わかる情報は全てホワイトボードに書き出してみました。
疑問点などは付箋に書き出して近くに貼りました。

2. 流れが繋がるように、データのフローを書いた

情報はホワイトボードに書き出したので、ここでは〇〇ということをやって、△△というデータを送れば□□では処理ができそう。
ということを意識してホワイトボードに追記していきました。

[〇〇を行う] --- △△というデータ ---> [□□を行う]

良い感じに肉付けができました。
これを基準として、ここを変えればどうなるだろう?という、パターンもいくつか出すことができました。

発表に向かう際の心境「前よりは良くなったがまだまだダメな気はする」

ふりかえり

データの処理をどうするのか、流れも書いていたので前回の課題で上がっていた辻褄が合わない件は解消しました。
反省を踏まえてやったものの、実行方法がバッチしか考えきれていないなど、固定概念を払拭しきれていなかったので課題としてはまだまだあるという形になりました。

昨日の記事で上がっていたアピールシートやレビュー結果はこのCase2の内容になります。

f:id:AdwaysEngineerBlog:20181204121729p:plain
アピールシート

f:id:AdwaysEngineerBlog:20181204121852p:plain
レビュー結果

3回目 過去の設計

内容

より落とし込むということで、本来は広告配信設計を行う予定でしたが、スクレイピングの落とし込みを実施することになりました。
Case.2 の成果物から「パフォーマンス(スケールアウト、並列処理)と再帰処理のロジックを考えて」という課題を頂きました。

行ったこと

3回目なので自分の進め方が確立してきました。
ホワイトボードに書き出し、疑問・懸念点を付箋に書き出し解消していく。
という事を繰り返し、教育担当者との議論も数回行いました。

発表に向かう際の心境「前よりもさらに良くなった気がする。矛盾もないはず。さぁどうなる」

昨日の記事で上がっていた構成図はこのCase3の内容になります。

f:id:AdwaysEngineerBlog:20181204122021p:plain
スクレイピング設計

ふりかえり

まだまだ不足点はあるものの、課題を通して設計の観点を掴むことができてきた。
ということで課題としては一区切りしました。 次は実案件で設計してみよう。という事になりました。

まとめ

あくまでここに書いたのは自分の取り組み方です。
今はこのやり方が正解なのかなと思いつつも、きっと違うやり方の正解があるのかなと思っています。

今回の設計課題を一通り行って今後に活かせそうな点は下記となります。
「まずはデータ流れを意識して矛盾のない設計を作り、議論がしやすい設計(松竹梅)を作りたい。」
これを肝に、実案件では設計をしていきたいと思います。

現在は、インフラの課題を主として着手しています!!
インフラ課題についても、教育対象者の誰かがブログで発信できたらなと思います。


 

次は佐藤さんの記事です。

http://blog.engineer.adways.net/entry/advent_calendar_2018/04