IT

若手エンジニアに伝えたい考え方(ブラックだったらすみません)

お疲れ様です。

筆者はシステムエンジニアとして働いていますが、若い世代のエンジニアを指導することもあります。この記事では、筆者が若手エンジニアに伝えたい「考え方」をメモします。

筆者のこれまでの経験から導き出された考えがベースとなっているので、だいぶバイアスがかかっている&ブラック寄りの考え方かもしれませんが。。。

課題は細かい単位に分割して考える

与えられた課題を一つの大きな枠組みのまま考えるのではなく、細かい作業の集まりとして考えて「やること」を整理しましょう。

「作業を割り当てられたけど、どう手を付けたらよいのか分からない」という方がいます。先日、当事者とお話ししましたが、割り当てられた作業をそのまま一つの大きい作業として捉えてしまっているために発生しているようでした。

課題が大きくて何をどうしたらいいのか分からない

まず、一つの大きな作業を細かい作業に分割して「やること」を整理するところから始めましょう。

割り当てられた課題(作業/開発)を解決するためには、一つの大きな課題を中規模な課題に分割し、さらに各中規模の作業を細かい小規模作業に分割していくことが重要です。

また、同じ階層の作業はそれぞれ相互に関連のない単位に分割できると良いでしょう。

②はDBにデータが入ってさえいればよいので、①の動作は関係ない。②の作業中は①に集中できる。また、DBに修正が入らない限り、①②の修正が相互に影響しない。

こうして自分にとって分かりやすい単位まで細かくすると良いと思います。分割した結果をTODOリストとしても良いですし、マインドマップで体系的に管理しても良いです。

課題を小さい作業単位に分割する際の考え方

  • 実現すべき大きな課題を機能単位に分ける
  • 各機能を実現するために必要となる小機能に分ける
  • 小機能を実現するために実施する作業を書き出す
  • 各機能は相互の影響が小さくなるように論理的に分割する

こういった分割作業は慣れてくると頭の中で自動的に行われ脳内で完結しますが、慣れないうちは紙に書き出しながら管理すると良いでしょう。

起きるかもしれないと思う不具合は発生する。

設計していると、「これがこうなって、あれがああなった状態で、それがそうなるような操作をされると発生するかもしれない。でもそんな事そうそう無いだろう。」と思うような不具合にぶつかると思います。条件成立が困難だから、確率が低いから、という理由で見なかったことにしたくなります。

が、発生する余地がある不具合は、運用上必ず発生します。(マーフィーの法則)

もの凄いシビアな条件だろうが、極低確率だろうが、ユーザーが何年も使っているうちに発生します。そしてリリース後1年経ってから発生した場合、すでにその辺の設計を覚えていないため修正に余計な時間が掛かります(そしてその時は別の業務を抱えていて、深夜残業や休日出勤になって後悔する羽目になります)。開発中、設計が頭の中にあるうちに対応できるものは対応しておくべきです。

設計中の違和感を信じる。

設計していると、ぱっと見問題ないけど何となく不安になるようなことがあります。「何か不安や違和感があるけど、何なのかわからない。」という程度の小さなものかもしれません。この直感は信じましょう。あなたのこれまでの経験が警告を発しています。

自分が何を不安に思ったのか分からない場合は、一度状態の洗い出しや、各状態で各Inputパターンがあったときにどう動くのか、実際に書きだして見直します。または腕組みを自分との対話を行います。とにかく、自分が何を不安に思ったのかを見つけ出します。

それで問題点を発見できれば良し、発見できなくとも自分の設計が論理的に正しいことを再検証できます。設計不備は後の工程に多大な影響を与えますので、多少時間をかけてでも必要な検証は行った方が、結果的に工数を抑えることに繋がります。

自助努力は大事。

自助努力というか、自己啓発ですかね。

会社は学校ではありません。ある程度は教えますが、基本的に足りないと思った技術や知識は自分で学習することが重要です。

これまでコンピューターにあまり触ったことがない・・・という方がこの業界に飛び込んでくることも結構あるようです。これは工具や建築手法を知らずに大工になった状態と同じだと考えています。人一倍努力しないと周りの方には追い付けません。

また、上記に加え、自宅にパソコンがない・・・という方も稀にいらっしゃるようです。これはサッカー選手がサッカーボールを持ってない、野球選手がボールやバット・グローブを持ってない、という状況かなと。学生時代ならそれで良かったでしょうが、プロのシステムエンジニアとして給料を得ていく以上、自分のパソコンは購入するべきかと思います。(そもそも職場でパソコンの使い方から教えることはできません。最低限のコンピュータリテラシーは必須です)

まとめ

とりあえず若手エンジニアに伝えたいことを羅列してみました。

ある程度経験積んでいることが前提になっている話もありますが、最初に伝えておくことで意識しながら作業してもらえればと思っています。(難しいかなどうかな・・・)

これも言いたい!これはまだ早い!などご意見ありましたら教えていただけるとありがたいです。是非ご意見を取り込ませてください。

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA