アラサー男子(非エンジニア)にゼロからエンジニアリングを叩き込んでみた感想

1年間ほど日本の伝統工芸品ECの社長業をやっており、
技術的にはさほど面白くない:sweat_smile:ECサイトと倉庫の連携システムくらいしか実装していなかったので、
その間にアラサー男子(非エンジニア)にエンジニアリングを教えたエピソードを綴ります。


## お話の背景
私自身も元々は某インターネット広告代理店で、広告の運用や新規事業の立ち上げを行っておりました。
そんな中、広告フォーマットを研究/検証しまくる部署の立ち上げの際に、
毎日エクセルで4-5時間の再計算をして、データ集計してました。
さすがにしんどかったので、それからエンジニアの研修受けて、Java->Ruby->Java->Scala->Ruby…と今に至ります。
※そもそもエクセルは「表計算ソフト」であって、「集計」ソフトでは無いはずですが。。。

今回の主人公は、その某インターネット広告代理店の後輩、Deerくん。
直接一緒に仕事をしたわけではないですが、
聞けば…
　同じ中学校:school:
　同じ高校:school:
　同じ大学:school:
　同じ新卒の会社:office:
…なんと、10年以上も同じキャリア！！
職種は営業だったのですがうまく成果がでず、「開発できるようになりたい！！」…ということで。
人に教えることで学べることも、今までたくさんあったので!!


## アラサー男子のプロフィール
プロフィールはザッとこんな感じ。

| 名前 | Mr.Deer(仮名) |
|:----:|:----:|
| 年齢 | 27歳 |
| 前の職種 | 営業/広告運用 |
| 前職のPCの環境 | Windows |
| なぜエンジニアになりたいか | 自分の強みを作りたい |
| 開発言語 | Ruby(Ruby on Rails) |

※最低限稼がなければいけないため、開発教える以外にも、
　ペット飼い主向けwebメディア(https://magazine.vdt.co.jp/ )のSEO施策や、
　健康食品のEC支援など一緒にやっています。


## アラサー男子が理解に苦労したベスト3
![despaired-2261021_1280.jpg](https://qiita-image-store.s3.amazonaws.com/0/52634/fc3825cc-c4f5-1e79-a00a-592a951f3c97.jpeg)

教材はRailsの鉄板である「Railsチュートリアル(https://railstutorial.jp/ )」で。
まずはRailsチュートリアルをテストコードはスキップしてコピペで進めてもらい、
その後、ほぼ趣味で作っているダンススタジオ検索サイト(https://sagasu.space/ )の開発を任せることに。

しかし、第一の試練はすぐにやってきました。
### 『環境ってなんですか？』
いざ進めてみると…

```
私:「まずはローカルで環境構築ね！」

Deerくん：「ローカルってなんですか？あと、環境も…」

私：（「え！？」）
```

Railsチュートリアルだと、Cloud9というクラウドエディタを推奨しているようで、
特に開発環境とか考えずにすぐにRailsは立ち上げられたようです。
私はvimerなので…

```
私：「vim使おうか！」

Deerくん：「はい！…vimってなんですか？」

私：（「え！？」）
　　「"vi"って打てば、エディター開くからー」

Deerくん：「はい！（"vi"と打ってみる）…！？…！！？？」
　　　　 「あのー、文字が入力できないのですが…」

私：（「えぇ！!?？」）
```

一度でも開発やったら、環境構築から始まるのは当たり前ですが、
それはエンジニアだけの世界のようですね。
たしかに、ビジネスサイドで数値分析する時もPCのにExcel入っていれば、
ダブルクリックするだけで仕事始められるし、よくよく考えれば理解できるかも。
しかし、やったことない人に環境構築を説明するのは難しかったｗエディターもｗｗｗ

<img width="625" alt="Screen Shot 2018-12-01 at 1.40.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/52634/34b97415-3ba3-aa87-f7d7-40d17d809e2c.png">
*↑エディターの説明に使ったメモ*


### 『DBってどこにあるんですか？』
なんとかドキュメントを真面目に作成して、
各コマンドをコピペすればローカルPCで環境構築できるようにして、
いい感じにvim設定をして、いざ`rails s`して、ブラウザで見てみると…

<img width="1013" alt="Screen Shot 2018-11-30 at 23.52.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/52634/e4b7c2f3-8eb5-b659-9793-9c95b9b2dd14.png">

```
私：「あれ？MySQL起動した？」

Deerくん：「MySQLってなんですか？」

私：「データベース（DB）だよ！MySQL起動しないと、DBに接続できないじゃん！」

Deerくん：「え…え…」

私：「Railsチュートリアルやったんじゃなかったっけ？」

Deerくん；「やりましたけどもー。。。」
```

どうやらRailsを覚えようと思って、他のことは特に記憶に残っていなかったみたいでした。

- DBとWebアプリケーションって何が違うのか
- それがローカルではどう動いているのか
- 一つのサービスでMySQLとRubyが違う言語が動くものなのか

などなど。
アプリケーション開発から入ると"動くかどうか"が大事になるから、
それぞれのミドルウェアまでに考えがいかないのかも。


### 『pull? commit? push? merge?…ブランチって何ですか？』
さて、開発環境も整い、簡単にアプリケーション開発のアーキテクチャも理解してもらったところで、
最後の最後に難解だったのが、GitHub。
ボリュームは小さいにしても、Gitも一つの言語みたいなもの。
しかし、さすがDeerくん、ここまでくればGitコマンドはそんなに苦労しなかったものの、
「リモートブランチ」、「プルリクエスト」あたりは
今までのアプリケーション開発とはまた別の概念で、大いに混乱してたｗ
Gitを先述のRubyやMySQLと同じようにアプリケーションみたいな概念で捉えていて、
運用ワークフロー（GitHubフローやGitLabフローなど）を説明して、やっと理解してもらえた感じ。

<img width="741" alt="Screen Shot 2018-12-01 at 1.44.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/52634/98b9f18e-9552-3955-629e-651c7ff5bf6b.png">
*↑GitHubの説明に使ったメモ*


## 1年間通して気づいた非エンジニア社会人の成長角度を上げる3要素
とにかく今まで営業やってきた人からすると、聞き慣れない言葉や概念が多すぎるエンジニアリング。
ゼロから自分でやるには相当ハードルが高いけど、この1年間で感じたポイントを最後に。


### ”できた”感
非エンジニアが社会人が開発をしだしてから一番むずかしいのは、モチベーションの維持。
ゼロからのスタートだからこそ、右も左もわからず、
自分がやっていることが合っているのかを不安になることが多い。
そんな時にほんの小さなことでも良いから、"できた！"と思えることが大事！！
1日のゴール、1週間のゴールをこまめに作って、
自分を褒めれる仕組みづくりがあるとすごく良い。
（…他人から褒められるとより良いらしい）


### 真似できるソースコードがすでにあること
現役のエンジニアからするとドキュメントが大事ですが、
ベースの知識がないとドキュメントを読むのは地獄…
読んでも内容を理解出来ないし、そもそもどういう風に読めばいいかわからない。
そんな時に同じような処理をしているコードがあるとすごい理解しやすいみたい♪
「どういうのが正しいかわからない」、「わからないから自分のやってることが正しいのか不安」など
恐怖に思うことが多いらしい。


### わからないことをすぐに質問できる人が近くにいること
機能が実装できたり、自分がコードを書いてもテストをパスするなら良いけど、
その途中は不安な状態が続くもの。
そういう時に、実装の仕方を事前に相談できたり、実装途中に意見を求めることができる人を見つけること。
stackoverflowやtera tail、（もしかしたら）yahoo!知恵袋でも良いかも。
間違っていても良いから、何か判断や心の拠り所にできるものがある方がパフォーマンスがあがる。


## 最後に感想、
開発以外にも、WebマーケティングやECの支援など、
色々と並行してやっているからまだまだ理想的な成長が描けているわけではないけど、
もうすぐ一人でサービスをゼロから作れるようになりそうで、Deerくんの頑張りにも感謝♪♪♪
しかし、エンジニアリングは単一的なやり方が決まってるわけではないので、
必要な学習量が多くて、継続して開発頑張ろうというモチベーションの醸成が本当にむずい。
（まだまだテストだったり、プロビジョニングだったりとやらなきゃいけないことはまだあるけど…）
ちなみに、教える方のコストは結構なボリューム！！ｗ

そして最後に、私自身の時間がなくてあまりできなかったけど、
ペアプログラミングがやっぱり一番いいかも！！
これからは、ペアプログラミング中心にもっともっとエンジニアリングをDeerくんに叩き込んでいこう


…次回に続く。乞うご期待（たぶんｗ）