未経験者には全てが黒魔術に見える呪いがある

はじめに

2019.06.17に人材系営業からRuby on RailsのWebエンジニアになったたっきーと言います。
僕は文系出身で開発は全くの未経験ですが、一念発起してJOBチェンジした者です。
とても優しく指導して下さっている先輩たちのもと、コツコツと勉強を進めているのですが、
やはり分からない事も多く、先輩の時間を頂くことが多い恐縮な日々です。。

とりあえずRubyを触って3ヶ月ほどたって、
未経験者で入ってみて感じたエンジニアの成長曲線が「とても急勾配」だと感じていた。
要は最初の参入障壁がとても高いと、初めて人に教えて貰うことで実感しました。
書いてたのは8月くらいなんですが、ずっと下書きに放置していたので公開します。内容変だなとかあれば編集リクエストください。

スクリーンショット 2019-09-13 13.12.43.png

対象読者

未経験でもエンジニアしたい人
営業職でモヤモヤしてる人
最近JOBチェンジした人
教えることに苦労している方

名称未設定ファイル-5.jpg

1-1 未経験者どこまでわかっていないのか

初めてRubyエンジニアとして配属されてみて思ったことは知識差の広さである。
正直にいうとパソコンに疎いタイプでは無かったし、ITサポートレベルの用語なら営業時代に
同じ職場の人教えたり、トラブルシューティングをしていたから自信はあった。

まあ結論からいうと全くとは言わないが、ほとんど役ただずな知識だった。
知識のベクトルがそもそも違うのだから、当然と言えば当然だ。

さて、タイトルには強い思い入れがある。
未経験者はどこまでわかっていないのか。
これは未経験者を採用する人や指導するエンジニアさん、いろんな人が興味のあることだと思う。

1-2 無知の段階

もちろん知識の個体差はあると思う。HTML何それ、美味しいの?って人もいるし
WordPressでブログやってましたって人なら、タグくらいはわかりますよって人もいるだろう。
僕は後者でさらっとした知識はあったんだけど、全く役立っていなかった。
学習を進めていく上で下記の記事にたどり着いた。

名称未設定ファイル (10).jpg

質問は恥ではないし役に立つ

新しい知識を仕入れるとき、私たちは揃って人の話を聞こうとする。
それが義務教育の基本だったからだ。
だが、エンジニアの勉強を進めていく上で人から教えてもらう事が突然ハードルが上がる。
用語がわからなかったり、教えてもらうことに多くお金が発生するためだ。
つまり、学習を自己管理しづらい一面がある。
そして、実務で覚えたりとか学習してみたりしてもどこまで自分が学習できているか迷いやすい。

でもちょっと待てよ・・・
俺の知らないって、先輩の知らないと同じなのかな?っていう疑問だった。
そんな時に上の記事を見つけたのは、まさに値千金の出会いだったと言える。
要は、先輩の「知らない事」≠「全然分からない」なのだ。
分からないことはわかっていて、多分こう調べていけば解決できないことではない。
だが未経験者は何が分からないか分からず、次にどういうアクションをするかから悩んでしまう。

名称未設定ファイル.png

これはエンジニアに限らず新卒で入った新入社員だったり、新たな部署で新たな仕事を
する人にも「仕事を覚えるメソッド」として使ってもらえると思う。
要は自分ができないという事実を細かく体系化している図だ。
「わからない」っていうのは、ただ1つの状態を表すのではなく、段階がある。
その段階があることを理解すると、調べ方が変わり、人への聴き方が変わる。
具体的などのようなステップで解決していくのか、次の図を見て欲しい。

名称未設定ファイル-2.jpg

どうだろうか。まあ当たり前といえば当たり前なんだけど改めて図にした時にやれてますか?
って話で僕はなかなか意識しないとすぐに聞いてしまって自分が検索して理解するという
「自走理解」の貴重な機会を失い続けてしまう。

1-3 黒魔術に範囲はない、すべてがブラックボックス

僕自身が一番に困ったのはエンジニアというものが操っているコードが基本的に1種類だと誤解
してしまっていたことだ。勿論、職場や開発環境等でインフラしか、もしくはサーバーサイドしか触りませんという方もいることだろう。
乱暴な言い方だが、僕のWebの理解は下の図のようなイメージだった。
黒いところを言語と呼ばれるもので書いて動かしているんだろう。
それがRubyなんだろうって認識だった。
そして、それがHTMLと同列でどれを選ぶかは会社が何を使っているかに寄るという認識だった。
今思うとどこから赤ペンを入れていいか分からないような理解である。

名称未設定ファイル-3.jpg

実際にエンジニアになってみて、次のような変化があった。
名称未設定ファイル-4.jpg

さらに実際に使う言語・コマンドを作業ベース細かく見てみよう。
MVC①.jpg

ちょっと乱暴な言い方になったがあまり細かく説明し過ぎてしまうと未経験者は混乱する。
面倒だと思うかもしれないが、これが事実である。説明とは想像以上に骨のかかる作業なのだ。

僕も実際にこの理解にたどり着くのにかなりの時間をかけてしまった。
正直最短距離で学習できた気はしていない。それも当然だ。教える側と教えてもらう側に
埋めようのないくらいの前提の違いがあるのだから。
私自身上の説明が100%正しいとはいえない。細かなニュアンスまで含めてしまうと意味が違う。
だが、最初はこれでいいと思う。徐々に修正をかけていって最終的に正確な理解をできれば。
個人的にはまずは導入の理解で転けないことがとても大事なことのように感じる。

1-4 黒魔術の正体

結局は自分の気持ちなんだと思う。
なんだよこれって気持ちの上で理解しようとするのか
面倒だからいいやなのかどっちかだと思う。

2-1 未経験者にどこまで教えていけばいいのか

名称未設定ファイル-6.jpg

このエンジニア不足の時代に数を確保するのは大変ですよね。
やる気があってきたんだから、自分でどうにかしてくれよって気持ち。
すご〜くわかります。自分の仕事はあるし、消費税変わるし、バージョンは上げないとだし
品質向上に努めないといけないし、あ〜あなんでこんな仕事選んだんだろうって思う日も
あると思います。もくもく会とかで話聞いてるとそんな日もあるそうです。笑
でも、僕たち初心者は先輩の状況も知ってます。
なるべくご迷惑はかけたくなし、上司の力になりたい。

名称未設定ファイル-7.jpg

折り合いをつけるのは難しいですが、僕が先輩にしてもらってとても嬉しかったことが
この章の答えな気がしたので図にしてみました。
自分としてはとても大切でここがあるから頑張れてるのもあるのかなと思うくらいです。
(過保護なくらい先輩に恵まれました・・・本当にありがとうございます。)

結論を言うと、マネジメントをしてあげることが正解だと思います。
当然ですが、学校の先生みたいな教え方はしなくていい。
これはこう言うことで・・・みたいなことはProgateが代行してもらいましょう。

大切なことは「意欲の適正昇華」なんだと思っています。
これは一体どう言うことかと言うと、学びたいと言う気持ち、SEになりたいという気持ちを
綺麗に昇華させてあげることは非常に重要です。

名称未設定ファイル-2.png

そのために何をどのように学習すればいいのか。
ここをきちんと管理してあげることて適宜質問に答えてあげられればいいのかなと僕は思います。

下記の記事は僕が学習を進める上でもバイブルになりました。
もし参考になれば幸いです。

Rubyの学習メニューについて
未経験からRuby on Railsを学んで仕事につなげるまでの1000時間メニュー
文系から半年でRuby(Sinatra, Rails)を学んだら人生変わった

指導制度・環境
ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習
新人研修で質問スタミナ制を導入してみた
毎朝15分の勉強会で若手の行動が驚くほど改善した話

2-2 学習効率を100倍あげる白魔術(誇張じゃなく)

名称未設定ファイル (8).jpg

そもそも論を言うと元は全員未経験者じゃん。
ってことは、1つ言えるのはみんなそういう時期があったから絶対にどこかで経験済みなんだ。
ただ、時代が違えば今みたいに未経験者が優遇なんてされなかった時代もあったし
気合いで覚えてバリバリやっているエンジニアさんやPMさんも多いと思う。
その方達からすると、今の未経験者は軟弱だと思われるのも仕方ないのかもしれない。

自分の学習効率は極力あげるためには、そんなガチガチのプロの人たちと一緒にやっていくべきだし
その人たちのアドバイスは絶対に受けるべきなんだよね。
と言うことは、アドバイスをもらうためにやれる白魔術は1つ。

「自分の学習方法・進捗を積極的に公開する」ということです。
これは社内外を問わず有効です。
このQiitaに記載することも多くの方からのアドバイスをいただけるので非常に有効です。
知見を集めて学習手順や時間の無駄を削ぎ落とすことに集中できます。
時間をどれくらいかけるべきなのかもわかりますしね!

3 僕がQiitaで触発された記事一覧

35歳を超えても爆速で成長するエンジニアの特徴
https://qiita.com/kopug/items/2e6821de0d0fefb29e0f

未経験からRuby on Railsを学んで仕事につなげるまでの1000時間メニュー
https://qiita.com/saboyutaka/items/1a8c40e105e93ac6856a

プログラミング勉強を加速させる7つの習慣
https://qiita.com/YudaiTsukamoto/items/42a8df22ca4c6b327dfd

毎朝15分の勉強会で若手の行動が驚くほど改善した話
https://qiita.com/kojimadev/items/cd5dd5332e33b3ef46a6

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away