見出し画像

工学部生に告ぐ! ワークフローを示すことから始めよう

自分への戒めも兼ねて,ここに改めて記しておこうと思う.様々なプログラム開発において,ワークフローを疎かにしていないか.ワークフローを明確に示すことが,各工程のやるべきことに集中できて,結果として効率化が爆上がりする.これは,チーム活動ではなく,一個人の作業であったとしてもです.ついついパソコンに向かっていきなりプログラミングし始めるといったことをしていないだろうか.このやり方は,私の経験上,意外と手戻りが多いのと,バグの発見・対策に想定以上の時間がかかってしまいます.

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

余談になりますが,

私が海外でインド人のハイスペック(もちろん博士号取得者たち)プログラマーたちと一緒に仕事をしていた時,あるプロジェクトの取りまとめを私がしなければならない状況でした.そして,バグが見つかった際に,担当者にこのバグはいつごろ直りそうですか?と聞くと,1日半で修正できますと回答が帰ってきました.私はその自信たっぷりの回答に驚いて,なぜそんな短時間で,しかも確信を持って言えるのですか?と聞くと,まず○○のダミー変数を入力とした△△テストを行い,次に...と理路整然とした回答が帰ってきました.そのきちんとしたロジックに感動したことを今でも鮮明に覚えています.

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

ワークフロー明確化の重要性

プログラム開発の上級者ほど,しっかりとしたワークフローのっとって時間をかけてアーキテクチャ・プログラム構成を検討している.

現代では,どのような研究内容であっても,大学院において,たくさんのプログラムを作成することになると思います.エンジニアとして生きていくなら,機械系であれ,ソフトウェア開発からは逃れられません.情報,システム工学,機械学習などのAI関連学科の人のみがプログラミングするという時代ではありません.ノーコードプログラミングというものも出てきていますが,それでもプログラミングスキル,様々なロジックやアルゴリズムを身につける必要はないということにはなりません.

ワークフローを明確にすることは,スケジュール/タスク/予算/人的リソース管理を効率的に行うことができ,バグの早期発見とその対策が迅速にでき,結果としてソフトウェア品質が向上することにつながります.

ワークフロー例

一例として,一般的なソフトウェア開発のワークフローを示しておきます.
これを見返すことによって,開発ステージごとのマイルストーンを明確にし,自分はどのステージにいて,目前のマイルストーンに効率よく到達する助けになればと思います.

1.背景と目的
どういった社会課題があって,その問題の本質はなんなのか.
2.要件定義(課題克服へのアプローチ)
PoC(Proof Of Concept:概念実証)思い浮かんだ様々なアプローチの中から実現可能性の高いものに絞り込んでいく.
3.要求機能(システム〜コンポーネント)
どういった機能を作り込んでいかないといけないのか.
4.構造検討
細切れ(適切)に分解された関数の関連性(親子関係)を図示する.
5.ソフトウェア詳細設計
一般に想像されているプログラミングというのは,このステージでのコーディング作業を指す.
6.テスト立案
入力ケースと出力の評価基準を設定する.
7.検証(単体,結合,機能,システム)
8.組み込み/実運用/保守・管理

製品完成までの全体工程が見渡せているということは,プロジェクトを成功に導くに当たって非常に重要で,大学院における研究も同様です.

このようなプロジェクト管理,これまで作成してきたソフトウェア関数の1つ1つが,10年,20年と積み重なって,50歳を過ぎても楽しくエンジニア人生が送れています

もっともっともっと頑張れ!大学院生!
私も負けないように頑張り続けますから.


この記事が気に入ったらサポートをしてみませんか?