【テメーは俺を】未経験からエンジニアを目指している方達からDMで来た質問と回答 + 質問のマナー【怒らせた】

## はじめに
煽りタイトルですみません。

[yuki](https://twitter.com/yuki82511988)と申します。DMMWEBCAMPにお世話になって、今はWEBエンジニアとして勤務しつつ、自分で仲間を集めてサービス開発したり、プログラミングの家庭教師したり毎日エンジニアライフをエンジョイしています。

未経験から目指している方向けのサポートやエラー質問なども引き受けておりますので、気になった方はDMへお願いします。

## 執筆の動機と、この記事を読んだらわかること
ありがたいことに、DMの方へ未経験の方や現在学習中の方から質問をいただくことがあります。私はまだ実務経験が浅いので~~どこぞのフォロワーが多い方々のように~~断言することはしていませんが、それでも未経験から転職できたサンプルとして、お答えできることは回答しています。

今回、良くある質問も溜まってきまして、かつちょっと**言いたいこと**ができたのでまとめました。
偉そうにするつもりはありませんが、もし他にもこういう感じのDMを送ろうとしている方の参考になればと思い、まとめました。

二つの意味合いがあって、情報伝達と、注意喚起です。では先に進みます。

## 先に結論
結論として私なりの**質問への回答**+**質問のマナー**として言いたいことを、先に載せます。

#### 質問への回答
- これをやれば評価が絶対上がるという技術は少ないと思う。「なぜそれを、どこまで」学習したかが大事だと思う。
- プログラミングスクールなどでポートフォリオを作った後は、SQLやフロントエンドFWを触るのも良いが、企業や業界を調べて方向性を固め、それに必要な勉強をしても良いと思う。
- HTML/CSSから始めても良いが、最近はgitやアルゴリズム、rubyなどの言語から学習するのも良いと思う。
- 自分で調べ、行動し続ける自信があるなら独学でも良いし、最近は信頼できるメンターを見つけて並走してもらう、でも良いと思う。ただ、プログラミングスクールに絶対行くべきというわけではないが、横の健全なつながりは作れることもあるので、メリットは色々ある。


#### DMでの質問のマナーとして言いたいこと
大前提：質問は悪いことじゃないという上で...

- 最低限名乗りましょう
- 初めての人に質問する場合は、そもそも質問をしていいか聞きましょう
- いきなり質問がくると「どこかでこの人に聞けばいいよ！」とか言われてるのか不安になります。どこ経由でお相手を知ったか伝えましょう
例）hogehogeという記事で、質問して良いと書いてあったのでご連絡しました。
- 調べてわかることは聞かず、またそれでも聞きたいなら、どこまで自分で調べたかを書きましょう
- 「これを実行した」など抽象的な言葉ではなく、具体的な言葉で書きましょう
例）ターミナルで`hogehoge`という内容を実行しました
- 質問の幅を狭くして、回答者が答えやすくしましょう
- 丁寧な言葉を使いましょう
- 環境の情報も書きましょう

それでは、詳細を述べていきます。

## 質問と回答の詳細
特によく来る質問を4つ、回答とともにご紹介します。聞いてくださった方はありがとうございました。

#### Q.ポートフォリオを作るのですが、何の技術を使えば評価が良いでしょうか？
「評価が良い」について掘り下げると、内定が出るとか、面接するエンジニアが評価してくれるところと言った部分であることがわかりました。確かに、よくあるRailsオンリーとちょっとJSを乗っけただけでは、他の人と差別化がしづらいのでは？という不安もわかります。
一方で、私が企業に入って自社エンジニアや他の会社のエンジニアの方々に聞いたことをまとめると、**「なぜそれを作ったか？**」と**「その課題解決や実装したい機能を選定するために、なぜその技術を選んだか？」**の部分を大事にしていると感じました。

つまり回答としては、普遍的に評価される技術はないと思われるため、ポートフォリオを作るに至った理由と、使う技術選定の理由をしっかり持つことが大切ということです。当然、「スクールからrails使えって言われたからだし…」という意見もあると思います。ただ、**たった一つの機能でも良いので**自分が工夫して作った、これを叶えるためにこの技術を自分で探して実装したという**「分析、根拠、結果」**があればきっと評価してもらえると思います。

なぜなら、未経験者にとって実務に入ってから大切なのは**その技術をすぐ使えるかどうかではなく、自分で課題を考えてそのために必要なこと調べ、トライアンドエラーをくりかせる力だと思うからです。**中途であれば、「できる、できない」で評価されるかも知れませんが、それこそ実務未経験者が「ReactJSを使えます」なんて言っても、タカが知れているでしょう。そう言った戦いづらいところで勝負するよりも、素直に作った理由と実装を頑張った機能に自信が持てるくらい、論理を詰めることが大切だと思います。

具体的には、ここら辺を一瞬で答えられたら良いのかなと思います。

```
なぜそのサービスを作ったのですか？
既存のサービスとの違いは何ですか？
どこの実装を頑張りましたか？また、どう頑張りましたか？
作成している最中に感じた課題は何ですか？それをどう乗り越えましたか？
XXXという技術を選定している理由は何ですか？
今後、機能を追加するには、どう言ったものが良いと思いますか？またそれは、なぜですか？
ユーザーに使ってみてもらった感想があれば教えてください。また、その後どう改善しましたか？
```

#### Q.スクールを卒業したのですが、何を勉強すれば良いでしょうか？
個人と、私の周りの話を聞くとSQLを使うことが多くおすすめです。特に自社開発だと顧客データのテストデータを使って開発環境で色々することがあると思うので、バックエンドが何であれSQLの学習をしておくことは、今後実務につながるのではないかと思います。また、別の記事でも述べていますがフロントエンドのフレームワークを使い、これまで学習してきたバックエンドのフレームワークをAPIとして使ってみるのもデータの流れを幅広く理解する学習になると思います。

一方で、そのフェーズに入ったら行きたい企業や業界を調べ、そこにあった学習をしてもいいのではないかと思います。具体的には、フロントエンドとバックエンド両方触れるような会社に入りたいから、今学習の足りていないフロントエンドのフレームワークを学習してみる、と言った感じです。先に挙げたように普遍的な学習をするパターンと、絞ってその企業に特化した学習をするパターンがあると思います。私はどちらでもいいと思います。

#### Q.何から勉強すれば良いでしょうか？
パソコンの操作の知識がある方が、0から勉強するのであれば基本的にはHTML/CSSだと思います・・・と、今までは言いたいところでしたが、実務をやってみて先にアルゴリズムから学んでみたり、rubyなどバックエンドに関わる言語、それとバージョン管理を学習するのもありだと思いました。

根拠としては色々あるのですが、一番は**プログラミングとはどういうものか**を早いうちに知れるからです。私が以前、HTML/CSSを最初に学習することを良しとしていたのは、さくっとできて画面にも反映されるので、できた感じがあり、モチベーションにつながるからです。ただ、今振り返ってみたり、周囲を見てみたりするとrubyに入ってから挫折して、結果残念なことになってしまう方も見られます。もちろん、挫折を早いうちにして欲しいからアルゴリズム・rubyの勉強をして欲しいというわけではないですが、Web制作だけで生きていく！って感じでない限りいずれ触ることになると思うので、先に触ってみてもいいのではないでしょうか。

もし、最初に読むものとしておすすめの書籍を選ぶのであれば**『アルゴリズム図鑑』『ふりがなプログラミング ruby』『わかばちゃんと学ぶ Git使い方入門』**あたりです。

#### Q.独学が良いですか？プログラミングスクール（PGS）がいいですか？
どっちがいいなんてことはありません。何故なら、どちらもメリットデメリットが異なるからです。「あなたにとって」という指標が必要です。
具体的に述べますと、例えば、独学であればPGSより安く済みます。ただ、正しい情報を取捨選択する能力と圧倒的にやり切る力が必要なので、万人におすすめはできません。特に、ここまでできたから大丈夫という安心を享受しにくいので、モチベーション管理なんかも必要になってくると思います。毎日ちょっとずつ積み上げてるだけでは、いつまでもゴールにたどり着けません。
プログラミングスクールでは、スケジュール管理や何をやるべきかは教えてくれますがお金がかなりかかります。また、**現在では受講者も多く、言われていることだけをただやるだけでは埋没して終わります。誰でもエンジニアになれる時代は終わったのでしょう。**ただ、メリットは他にもあって、横のつながりを作りやすかったり、メンターさんと仲良くなって正しい情報をもらえたりなどです。要は**「スクールをどれだけ利用できるか」**というところです。そういうところをうまくできる人にはおすすめです。

最近、プログラミングを教えたりモチベーションを管理するコミュ二ティ、メンターも増えてきました。私は一部のオンラインサロンには少々否定的ですが自分の知り合いや紹介で教えてもらったエンジニアに教育してもらうのもアリではないかと思います。理由としては、PGSが掲げる**転職保証**の価値が下がりつつあると思うからです。

具体的に述べますと、プログラミングを学習しようとする多くの方の動機は、やはり転職だと思います。PGSなど大きな団体の魅力は転職の保証をしてくれることですが、現在はコロナの影響で求人も減り、またプログラミングを学習する人口の増加により、PGSでも企業を、顧客に満遍なく紹介することが難しくなっているのではないでしょうか？（あくまでも私の分析と推測です）

となれば、高いお金を支払ってPGSに通わなくても信頼できるエンジニアに師についてもらい、本気で勉強して自分で転職活動するのもありだと思います。ただ、私はDMMWEBCAMPでメンター業をさせていただいている身でもあるので、一言だけお伝えするとDWCに入って70万円以上の価値は感じていますし、とっくにその分のお金は回収できています。

PGSはよく「たけーよ」「通わなくていーよ」と言われますが、価値をどう最大化するかは、スクールがどうとか、他人がどうとかではなく、**あなた次第**なのです。主体的に勉強できない人は、独学でもPGSでもダメだと思います。

倒れるギリギリまで頑張っていきましょう！！！！！！！
次は、情報収集の際に誰かへ連絡する際、気をつけておいて欲しいことです。

## 言いたいことの詳細
これは、具体的には、未経験者の方が主にエンジニアの方にDMを送る際に注意するべきことです。というよりも、**社会人として他人にメッセージを送る際の注意点です。**こんなこと本来はQiitaに書く必要はないと思うのですが、あまりにも気になったので「こんな人が他にもたくさんいるのか…」とおそろしくなり、注意喚起としてまとめてみました。お許しください。

こういう記事を書くと、私にきっとDMが送りにくくなってしまうのかも知れませんが、それでも何とかせねば…と思っています。

私も人のことは言えませんが、はっきり言って、エンジニアを目指す前に社会人としてのマナーをなんとかする方が良いと思ったケースが何度もありました。。。

少し誇張してますが、実際にあったケースをまとめて一個の例にしてみましたので、その例にコメントする形で言いたいことをまとめます。

## こういうメッセージが本当に来る
ワイ「お、DMに通知きてるやんけ！開いたろ！」ﾎﾟﾁｰ


>from **DIO@人生を変える 時間停止🕛×無駄無駄駆動エンジニア🚜**
今、未経験から自社開発のエンジニアになってフリーランスになるために勉強しています！！☺️
今HTML/CSSはプロゲートで勉強し終わったのですが、次は何をすればいいですか？？
将来はジョースター家を越えるエンジニア目指してるので、やる気はあります！
あと、ちなみに、ここのコードでエラーが出てるので教えて欲しいのですが、これはどういう意味でしょうか？
もしご存知だったら教えてください🙇‍♂️
XX月XX日 1:37 AM

<img width="300"src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557847/bc630282-c991-3004-fdca-87f07019e2bb.jpeg">

皆様はこのメッセージの問題点が分かりますでしょうか。
いや、言い換えればこのメッセージを受け取った時にどのような気持ちになるでしょうか。

先に挙げた結論の詳細として、こういうメッセージに対して言いたいことを述べます。流石にこんなの送らないよ、という方はここで戻っていただいても大丈夫です。

- まず名乗って
SNSだからフランクなのは仕方ないのかも知れませんが、まず相手の名を先に書き、自分の名前を名乗るくらいはするべきではないでしょうか。また、送信先の方はおともだちではないため、XX様（または、さん）初めまして○○と申します。〇〇という目的でご連絡しましたくらいの丁寧な言葉遣いが求められると思います。あと絵文字、初対面では使わない方がいいのではないかなと思います。

- 質問の範囲が広すぎる
これをしたら自社開発に入れる、なんてものはないと思います。もしくは、あっても量が多すぎて文字でまとめられません。もう少し質問を絞って**「こういうエンジニアになろうとしていて」「それで自分ではこの勉強が必要だと思っていて」「その中でこれを選択したが、あっているか、そして他の方法などあるか」**と言った聞き方もできると思います。

- エラーや相手に労力がかかる質問は、まず聞いていいか確認する
基本的に何かを他人に依頼するときは、その人がいいとしても**「じゃあ無償でお願い」**というスタンスでいくと、悪い印象を与えることが多いように思います。エラーの解決や詰まっている部分の質問は、対価を支払わない限り相手の時間を無題に奪うことにつながります。**「何で俺がそんなことに答えなければならないの？」**と思われないためにも、まず聞いていいか確認し、次にどこまで調べて、何をやってみたけどうまくいかなくて、最終的にどうしたいのかを伝えましょう。

- 送信時間も考えると尚良いと思う
SNSは気軽なコミュニケーションが取れるのが良いところですが、それでも深夜に何か依頼の連絡があると、びっくりすることがあります。冒頭に夜分に申し訳ないとか一言添えるだけでも大きく変わります。ただ、何が最も言いたいかというと、**深夜に送ること自体も問題かも知れませんが、それよりも、その瞬間に返信がもらえることは確実ではないのに「投げたから見ておいてください」みたいな姿勢**に取られかねないかなーと考えています。特に理由がないなら、お仕事終わりの19:00頃か、普通にお昼に送るのが吉ではないでしょうか。


全てに通じて言いたいことは**「送られる側の気持ちを考えて欲しい」**ということです。
私もこのようなことが言えた身分ではないですが、自分もこの記事をまとめることで、より一層気を付けます。

今のエンジニアとして勤務されている皆様が、未経験からエンジニアになる人を良い気持ちで応援できる環境になれば良いなと思います。

以上です。
何か質問があれば[DM](https://twitter.com/yuki82511988)までお願いします。