活躍できるSEになるために必要な考え方・スキル

今までPGとして
開発に携わってきましたが、
これからSEの仕事に携わることになりました

システムエンジニアの仕事は覚えることが
いっぱいありますすが、非常にやりがいのある仕事です

この記事では最初の第一歩として
「優秀なSEとして必要な考え方・スキル」をまとめてみました

##仕事とは？システムとは？エンジニアとは？

仕事って何か人に説明できますか？
意外と難しいですよね
なぜならば明確に習っていないからです

『仕事』、『システム』と当たり前に
使っている単語ですがしっかり意味考えてみましょう

### 仕事とは？
__<font color="red">成果を生み出す活動</font>__
成果が伴わなければただの消費になります
### システムとは？
__<font color="red">いろんな要素</font>__を組み合わせて、全体で大きな機能を実現する仕組み

そのいろんな要素の中に、プログラミングも含まれます。
システムはトータルで描きます。
### システムエンジニアとは？
システムを設計する人
### プログラマとは？
プログラムの設計をする人
### システム開発とは？
システムを作ること
### プロジェクトとは？
特殊（ユニークなテーマをもつ）な取り組み・非日常業務
***

システムは仕事の仕組みそのもので、ただソフトウェアを作ることではない。新しい仕事の仕組みを実現です。

SEに必要なのは「仕事って何なのか？」をしっかり意識することです。なぜならばシステム開発とは__<font color="red">「新しい仕事の仕組みを作る」</font>__ことだからです。

##仕事を深く考えてみよう
仕事は、__活動__のみに目が行きがちですが、活動を意味するではありません。
成果物がしっかり定義されていて、それを生み出すための活動です

__成果__と__活動__のワンセットで__<font color="red">『仕事』</font>__です。

![doc102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647214/b307771d-1f2a-baa1-db57-b39c106125ba.png)
###インプットが不十分ではゴミしか出ない
アウトプット（成果物）を出すためには
インプットがなければならないのです。

システム開発ではフライングができるので、
とりあえず進捗をあげるためにインプットが
不十分なのに活動を始めるケースがあります。

そうして出来あがった成果物をみると不十分です
これは活動が悪いのではなく、インプットが原因です。
いわゆる__<font color="red">GIGO</font>__ですね。

GIGO(Garbage In Garbage Out)＝ゴミをいれたらゴミになる。
開発現場における格言です。

###仕事のプロセス（流れ）
仕事は前後で成果物の受け渡しをします。
この流れを業務フローやプロセスフローなどと呼ばれます、


仕事によって受け渡しされているモノの価値（value）が連鎖（chain）していきます。これがマイケルポーターが言うところの__<font color="red">価値連鎖（value chain)</font>__です


これによって一連の仕事（工程）ができあがってきます。
__<font color="red">最終的な成果物</font>__により必要な仕事（工程）や順番が決まってきます

各工程でどれだけ頑張っても、後工程につながらなければ意味がありません。
後工程に連鎖することをしっかり意識しましょう


### システム開発の原則的な工程
![doc103.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647214/893e0bcb-98fb-142d-d5da-e79f71e674f6.png)
企画・要件定義のフェーズを上流工程といわれるが
大きく考えると、もっと前にRFP・営業プロセスなどの前工程があります


##システム開発のこれまで歴史とこれからの技術
技術の進化が目覚ましく、エンジニアとしての在り方が変わってきます。しかし今でもデータベースや構造化技法は以前からある技術が使われています


![doc104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647214/b0485b26-cc31-69bc-2902-e064be5ec9d0.png)

インターネットの進化により一般の人が使うことが増え
画面のデザインが収益に直接つながります。
、
ここ数年ではAI,IoT,Roboticsなどのキーワードがあり、
これからどういう方向性になるのか常に学んでいきましょう

システムエンジニアなら、
構造化プログラミング、データベース設計はできて当たり前
UIを考えて当たり前です。そこから最新技術が積み上がり続づけていきます



##SEなら必ず押さえておかないといけない基礎

* 要件定義・・・UIスケッチ、プロセス/業務設計、要件定義
* 基本設計・・・UI設計,機能設計,DB設計

どれかひとつだけでは物足りません。
これらすべてができて初めてシステムの設計ができます
##要件定義・設計について考えてみよう

「こういうシステムにすればいいですね」と決めていく工程です

要件定義や基本設計は、
難しくはないですがひたすら面倒です

これらのフェーズは自分で勝手にできない仕事です
自分で決められないからこそ面倒なのです


###要件定義について

要件定義とはお客様との合意をつくる作業です(合意形成)
炎上しているプロジェクトのほとんどは合意を省くからです

正しい要件とは__<font color="red">合意</font>__ができており、
__<font color="red">実現性</font>__を満たしていることです

相手があっての仕事です。
SEとして以下を意識しましょう

* ITの素人さんでも、かみ砕いて丁寧に説明する能力
* SEとして相手の意図をくみ取る能力
* 面倒くさいことを頑張って粘りながら熟す能力


##仕事をする実力を磨くプロセスとは

インプットが完璧なら、アウトプットができるのかといえばそうではありません。
活動に対して__<font color="red">実力</font>__がなければ成果物が生まれません

実力には大きく分けて次の２つがあります

・実行するスキル（正しいインプットがあれば成果を埋める力）
・想定外の対応する知見のボキャブラリー

『実力をつける』のも仕事です。「実力がある」という成果物を生むための活動です。
スキルをつけていくには成熟度を理解しましょう

![doc105.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647214/6ef17617-2f77-ae25-5fd8-b959b6e85fc5.png)

③と④の間に基礎を理解せず、いわゆるネットで調べたコピぺプログラミングでは実力はつきません。適当にやっているうちに悪い癖をつかないようにしましょう。ちゃんとロジカルに知ることが大切です。

まず知らなければやれません。そして__<font color="red">やる</font>__からできるようになります
やり方を理解して他人に説明できるまでをアウトプットして習得していきましょう

出来る＝__<font color="red">当たり前</font>__になっている状態です
成果物がでるからと言って出来ているわけではありません

成果物を生み出すには
どんなインプット・活動が必要かを
他人に説明できて理解している状態になります

『なぜ今この手順でやっているのか？』
『あなたの後輩に技術を伝えられますか？』

常に意識してください

##システムエンジニアは『当たり前』に敏感でなければならない

システム開発とは『仕事の仕組みを実現すること』です。

SEは相手（システムを使う人）が、仕事でできて当たり前なモノ（言葉になっていないモノ）を引きだして、合意形成して要件にまとめなければなりません。

※当たり前にやっていること＝言葉にせず自然にできていること

自分の当たり前に気づかない人が
他人の当たり前に敏感になれるわけがありません。

###SEが学ぶべき能力は

今までの前提を抑えたうえでＳＥの必要な能力は？

ソフトウェア屋としてのスキル

* PG設計/テスト設計
* DB設計
* UI設計
* プロセス設計

業務屋としてのスキル

* マーケティング
* 会計
* 生産管理

マネージャーとしてのスキル

* プロジェクトマネージメント
* コミュニケーションスキル


##心に残る参考書籍一覧

『JAVA,Python、PHPでもそういった技術書は20冊でも読んで当たり前です。
そういった技術分野の書籍は読まないと話になりません』

__以下は羽生章洋氏が読んでみて、
手元に置いときたいと心に残った書籍の一覧__

* 経営者に贈る５つの質問
* ミッションマネージメント
* 7つの習慣
* 意志とビジョン -マーケット・リーダーの条件-
* ビジョナリー・カンパニー
* マッキンゼ一流　最高の社風のつくり方
* WILL POWER 意志力の科学

* イノベーションのジレンマ
* ジョブ理論
* 千の顔をもつ英雄
* 「買いたい！」のスイッチを押す方法
* 小売の説得術
* なぜ通販で買うのですか
* ジェフ・ぺゾス　果てなき野望
* 誰のためのデザイン？
* ノンデザイナーズ・デザインブック
* ハードウェアハッカー

* |新役|科学的管理法
* 計画の科学
* ザ・ゴール
* 人生がときめく片づけの魔法
* リエンジニアリング革命
* 1ページ・マネージャー

##あらゆる仕事において大事なふたつの考え方
###バックキャスティング
「こうでありたい」という理想の将来展望からルートを考えましょう。
逆算して必要なことを考える。

「なにやったらいいのですか？」「次にどうしたらいいのですか？」ではなく、将来の理想な姿になるために必要なことを考えていきましょう

頑張ってても報われないのに多いのが、
__<font color="red">ゴールにつながらないこと</font>__を頑張っているからです。

炎上しているプロジェクトでも
バックキャスティングができていないケースがあります。

###分割統治
基本は構造化技法=段階的に細分化していきます。

内容を混ぜすぎない。余計、複雑になり危険です。

ダメなプロジェクトの典型によくあります。
工数が大きくなり見積が大きくなるので、
似ている画面などを混ぜるようなケースです

混ぜるのはよくありません。
ロジカルシンキングの基本といわれる概念の一つに「MECE(ミーシー)」という言葉があります。MECE(ミーシー)とは『漏れなくダブりなく』です

きちんと詳細に細かくしていることが大切で、いわゆる段階的詳細化というやつです。構造化技法を理解していればスムーズにやれるはずです

##SEに必要なマインド
SEは与えられた仕様を解くのではないのです。
自分なりの正解を決めます

仕事では正解はひとつではありません。
正解を当てに行くマインドだと仕事が辛くなります。
正解がひとつじゃないと収まらない人は残念ながら正直SEには向いていません。

自分で組み込みながら、自分で正解を決めていくのがSEです。そもそも何を実現すべきかを考えていくのが戦略や企画になります。

## まとめ

ここまでお読みいただきありがとうございます。
今回の講義はとても重要なことばかりでした。
特にバックキャスティングの重要性を感じました。

「何をすれば（DO）良いか？」ではなく
「何がどうなれば（Be）良いか？」とゴールを考える

この記事は以下の情報を参考にして執筆しました。

[優秀なSEに必要な考え方 -羽生 章洋 氏]より
(https://schoo.jp/class/6164/room)