こんにちは、アイダです。 ワクワクしながらPythonが学べる通称「ワクPy」について、開発業務未経験の新人Mさんが投稿してくれました。 前回投稿のTさんの内容↓↓の第二弾となります! www.intage-ts.com
「ITを通じて世の中の人々を幸せにしたい」と願うMさん!研修の内容を具体的にどうすすめたかなど詳細に報告されていて、同じような立場の方の参考になりそうです。
はじめに
こんにちは。旅行BI部開発2G、1年目のMといいます。
僕は読書が好きで、最近は「哲学」にはまっています。先日、古代~中世哲学の本を読んだら、その夜に精神崩壊しそうな夢を見てしまいました。 その時代の頭がいい人は、答えのないことを考える傾向にあり、僕には合わなかったみたいです。 そんな超次元な哲学ではなく、現実的な近代哲学を生み出したカントは素晴らしいので是非皆さんも調べてみてください。 (カント以前と以後の哲学の変遷は現代に多大なる影響を与えており、めちゃくちゃ面白いので哲学にハマること間違いなしです。)
と、雑談はさておき、今回は題意の通り、ワクPyのリーダーを務めてみた自身の感想をつらつらと書いていきます。
ワクPyってどんな研修?
概要:人事の要求を満たすシステムを開発し、ワクワクしながら開発の一連を経験する研修
期間:1月13日~4月21日(※本ブログは、3月9日作成)
方法:4~5人チームで要件定義>設計>実装/テスト>デプロイを実施
制約条件:2週間サイクルのスプリント(下図参照)、工数は2~3時間/週、各メンバー必ず1週間は休むこと
自チームメンバー紹介
続いて、自チームの頼もしいメンバーを紹介いたします。ちなみにチーム名は「オムライス」(メンバーの好物)です。
メンバー名 | 年次 | 業務経験 | ワクパイに参加した理由 |
---|---|---|---|
Mさん(執筆者) | 1年目 | 旅行業基幹システムの要件定義~内部設計(途中) | 業務ではウォーターフォールなのでアジャイルを経験してみたかったから。また、開発経験をしてみたくて、自分一人でシステムを作れるような技術や知識が欲しかったから。 |
Sさん | 2年目 | CR集計システム開発チーム所属 主にプロジェクトマネジメントなど... |
業務ではあまり経験できない”自分が1から書いたプログラムでシステムが動く”ということを味わいたかったから。Pythonなど、なにかプログラミング言語を習得したかったから。 |
Aさん | 1年目 | システムインフラの運用・保守、構築。 | アプリケーション開発に興味があったため。開発を通して必要な知識やプログラミングスキルの向上をしたいと思いました。 |
Sさん | 5年目 | 営業ひとすじ | 営業以外の領域、特にシステム開発が気になり体験したい気持ちで参加しました。 |
開発経験があるのが、Sさん(2年目)だけという驚きの編成になってしまい、自信喪失・・とはならず、 「やってみたらなんでもできる」思考の脳筋な自分はむしろリーダーに立候補して、ワクワク度が上昇したのでした。 (これだけ見たら、死亡フラグ立ってますね・・)
途中経過報告
早速ですが、結論ベースで、これまでワクPyで行ったことを下記に述べていきます。
■サイクル1:要件定義/データ定義
担当 | 行ったこと | |
---|---|---|
人事の要求整理 | 全員 | キックオフで提示された人事の要求を自分たちで一度整理。 |
ブレスト(KJ) | 全員 | どのような機能が必要かブレストし、カテゴリごとにマッピング。 |
質問リスト作成/人事ヒアリング | 全員 | 人事に質問しないと詰めれない内容について、質問を20問ほど用意して、人事にアポを取り、30分程度でヒアリング実施。 |
ユーザーストーリー作成 | 全員 | ヒアリング結果に基づき、ユーザーストーリーを作成。 |
サイクル1では、人事へのヒアリングを30分程度という短い時間でユーザーストーリーをFixさせました。 少し難しかったと思うのですが、実際の業務でも営業を担当しているSさん(5年目)の感想を聞いてみました。
Sさんより↓
30分という限られた時間内に必要な情報をGETするには事前準備が必要でした。 メンバー内で何度か打合せを行い、当日用の質問資料をまとめました。 おかげで時間を効率よく使えたと思います。 普段業務では、開発側で仕様を整理し出来上がった物を目にしてましたが、実際やってみると大変でした。
■サイクル2:画面/API/DB設計
担当 | 行ったこと | |
---|---|---|
画面設計 | Sさん(5年目)、Aさん | ヒアリング結果を基に、画面設計書を作成。 |
API設計 | Mさん(執筆者) | 必要な機能を基に、API設計書を作成。 |
DB設計 | Sさん(2年目) | 必要なデータを基に、DB設計書を作成。 |
【成果物】画面設計(5画面のうち、一部抜粋)
サイクル2は自分が担当したAPI設計が恐らく最も困難でした。 初めはAPIが何か分かっていない状態でスタートし、Open APIを必死で勉強し、 特にサンプルもない設計書に書くべき項目を洗い出して書き上げたのですが、その時点で3時間弱かかり、絶望しました。 yaml作成が2時間で終わるとは思えず、心底焦っていたところ、たまたまネットで「StoplightStudio」というGUIでOpen APIを作成できるツールを見つけました。それを使用すると、なんと30分で終わり、なんとか想定工数オーバーは免れほっとしました。 効率的にツールを使いこなすというのは大事ですね!
■サイクル3:環境構築/実装/テスト
担当 | 行ったこと | |
---|---|---|
APIサーバー構築 | Mさん(執筆者) | サイクル2で作成したyamlを基にSwaggerで生成したPythonスクリプトを、AWSで構築したAPIサーバー上に置き、curlコマンドが返ってくることを確認。 |
DBサーバー構築/ダミーデータ登録 | Sさん(2年目) | 自分たちのスキーマを作成し、そこにテーブルやデータを作成。 |
API実装(Webサーバー側) | Mさん(執筆者) | 画面からAPIを叩く処理を書き、結果をマッピングできることを確認。 |
API実装(APIサーバー側) | Sさん(2年目) | 検索APIや詳細取得APIなど、APIサーバー側で動く処理を作成。 また、「Postman」を使用して、結果を確認。 |
画面実装 | Sさん(5年目)、Aさん | 画面設計で作成したレイアウトをHTML/CSSに落とし込んだ。 |
※Postman・・・ www.postman.com
【途中成果物】APIを叩いて、社員情報をマッピングした結果(画面レイアウトは試作です)
このサイクルはまだ途中ですが、API実装が難しいです。 僕はReactを用いて画面からAPIを叩いて結果を表示する処理を書いたり、「material-ui」を用いてモダンなUIを実装したりしています。 Sさん(2年目)が担当しているAPIサーバー側のAPI実装もかなり難しそうなので、感想を伺ってみました。
Sさんより↓
もちろん初めてのことなので難しいですが、実装フェーズがいちばんワクワクしてます! エラーが解消できない最中は怪訝な顔になってしまいますが、解消できた時の快感がたまらないです。
あと、研修なのでエラーが解消できなくても数日悩めるというところがいいですね。 業務でエラーが出たらそんなに時間は費やせませんが、研修で時間に余裕があるので、2日かけて調べたりしていました。 結局答えは単純だったんですが、このとき調べたことは自分の学びになりましたし、時間をかけた分、身についていると思います。
はやくシステムが完成して、画面から自分が書いたコードが叩かれる瞬間が待ち遠しいです! 人事さんよりも待ち遠しいかも。
チームリーダーとしての反省点
今回、自身がリーダーとして特に意識したことは「メンバーがワクPyで何を学びたいかにフォーカスして責任領域を振ること」「工数時間内に終わらせること」「楽しみながらワクワクしてやること」でした。 1つ目は、何度も繰り返してメンバーに聞いており、出来ているとは思うのですが、2つ目はスケジュールの遅延は起こしていないものの、メンバーの稼働時間および3つ目のワクワク度を把握できていないため、今後はメンバーに適宜確認していこうと思います。
そして、マネジメントという観点で、アジャイルの本質をブログを書きながら調べてみたので、振り返ってみようと思います。(参考:スクラムガイド)
観点 | 概要 | 達成度(100点満点) | やっていること | 改善点 |
---|---|---|---|---|
透明性 | チームの現状や問題点を見える化すること | 85点 | ・JIRAタスク管理 ・Confluence議事録/その他諸々管理 ・成果物フォルダ管理 |
作業物の透明性 ・完成物の共有は管理できているものの、Bitbucketの使いこなしが上手くいっておらず、作成中のソースコード等の透明性は伸びしろがある。 |
検査 | 見える化により問題点を見つけること | 70点 | ・スプリント毎の振り返り(Problem) ・週1回の定例MTG ・質問票作成 |
報告や不明点の定量化 ・終わった終わっていないだけでなく、何パーセント終了したか等 振り返りの記載量 ・振り返りの質を担保するために、一人一人の振り返り記載量を増やす。 |
適応 | 問題があった場合に、改善策を考えて対処すること | 60点 | ・スプリント毎の振り返り(Try/Action) | スプリントプランニング がうまくいっていない ・開発経験がないため、工数見積もりが検討つかず、実装フェーズでは明確なプランニングが上手くいっていない。 |
【JIRAの使用例】
【振り返り】 個人的には、僕たちのチームは資料が綺麗にまとまっていて、情報の整理ができていると思います。
時間があったらやってみたいこと/今後の課題
①ユーザーストーリー、UI/UXにどこまでもこだわりたい
個人的に、新規プロダクトを打ち出す上で最も大切なことはCPF(Customer Problem Fit)だと思っているので、
今回時間をかけられなかったヒアリング・ユーザーストーリー作成は、それにとどまらず、
カスタマージャーニーマップ・ジャベリンボード作成など自分がやるときにはしつこくこだわると思います。
※CPFとは、新規事業創出のステップの1つです。CPF(Customer Problem Fit)⇒PSF(Problem Solution Fit)⇒PMF(Product Market Fit)のステップで進めるのですが、大半の新規事業ではCPFが甘く、うまくいかないものです。(参考:https://note.com/fujimar/n/nc211906b042b)
また、UI/UXについては一般的にUXを設計する際に使用する「UXの5段階モデル」を参考にするなどして、
ユーザーが使いやすいものを徹底的に考え抜いて作成したいです。ご興味のある方は読んでみてください(参考:https://goodpatch.com/blog/elements-of-ux)
②アジャイル開発マネジメントの体系的なインプットとアウトプットの両輪を回したい
スクラムの本質をあまり意識せずにリーダーをしていたことに自省していて、 残りのフェーズでは一度アジャイルマネジメントとは何たるやを学習して、アウトプットしたいと思います。
③バックエンド(AWS)の設定も全て自分で行いたい AWSのAMI、SGなどは、サポーターさんが元々設定してくださっていたので、よく分からないまま終わってしまっており、自身でも設定できるようにしたいです。
最後に
ワクPyを通して、手を動かすことの大切さを心から実感しています。 冒頭で述べたように、読書好きなので普段から概念をインプットすることはあったけれども、たまにしか手を動かしていない、かつ業務でコーディングもほぼしたことがないため、今回実装が最もつまづきポイントでした。 そのようなことに気づかせていただいた本研修および、支えてくださっているサポーターさんをとても頼りにしており、本当に感謝しています。 僕自身、「ITを通じて世の中の人々を幸せにしたい」というロマンの元、SEという道を選んだため、 本研修を生かして社会へ精一杯貢献していこうと思います。引き続き、よろしくお願いします。
以上、お読みいただきありがとうございました。