INODEVLOG

WEBアプリ開発・事業開発・ビジネスモデル・読書の情報などをお届けしています。

初心者ITエンジニアにオススメの学習方法・挫折&躓き防止法まとめ

久々更新ですが、今回は駆け出しエンジニア向けに記事を書いてみます。

先日Twitterで下記のようなツイートをした所、リプライ(返信)の数が300を超える反応を頂きました。

「駆け出しエンジニアが学習で躓かないために知っておくべき情報」で募集して、

こんなにリプライつけてくれるなんて、ITエンジニアの方は地味に面倒見よい方多いですよね…!

いやぁ、今回 どれも本当に良いことばかりだった ので本当は全部見てほしいのですが、多すぎるので観点をまとめて抜粋して紹介して行こうかと思います。

日々学習している未来のITエンジニアの方の一助になる情報もあるはずなので、これを活かして学習を進めて頂けたら幸いです。

f:id:inodev:20190217183936j:plain

学習中の心持ちに関すること

他人を意識しすぎたり他人と比較して焦らないこと

スキルは中々進歩が見える化出来ず、ついつい他人を見て焦ってしまいがちですよね…。

ただ、本来意識すべきは昨日の自分だけなので、良い意味でマイペースに成長していきましょう。

自分の価値観や目的に従うこと

特にネットでは心無い言葉を平気で言ってくる人もいます。

自身の価値観に合わない人も勿論いるので、正しい情報を得ながら、自分で自分の船をこぎましょう

好きになる・楽しむこと

ITの世界はとても興味深く、特に知的好奇心や創作意欲などが刺激される分野だと思います。

自分のワクワクする状態を健全に保って進めていきたいですね。

プロ意識を持つこと

やはり実践の場に身を置くのが、スキル習得も早く良い意味でのプレッシャーや良質なインプットが得られます

特に技術力の高い方の書いたソースコードなどを見ると考え方などがとても良い勉強になります。

立場や価値観による所もあるかと思いますが、基礎の実力をつけられているのであれば、プロ意識を持って取り組める場を探してみるというのも良い選択肢かもしれません。

学習計画・習慣付けに関すること

学習を継続すること

最も多かった内容の1つが「継続は力なりの精神でやっていく」というものでした。

当たり前ですが、数ヶ月でバリバリ出来るようになるものではないです。

中長期的にコツコツ、無理せず続けられるように考えることが重要ですね。

出来るだけ毎日やること

忘却曲線などの話もありますが、それよりも習慣として続けるということこそが重要だと考えます。

最悪毎日でなくても、この曜日はやるというように「基本的にはキャンセルできない予定」として埋めておくのが良いでしょう。

他人に説明できるレベルの理解か意識すること

基本的だと思う内容でも、改めて「他人に聞かれたらなんて説明するだろう?」と想像して、言葉にしてみるという理解度の確認方法があります。

人に教えるには普通に使う3倍は理解していないといけないなんて言われます。

これにより復習するべきかのセルフチェックが可能にもなるので、学習項目の区切りで自問してみるというのも良いでしょう。

現実的なスケジュール・目標を持つこと

(特に変な広告に煽られて)期待値が高すぎる方はかなり挫折しやすいです。

当たり前ですが…思ったよりも成果が出ないのでモチベーションが下がっていきますからね…。

これは「アフィ○ス」とか「闇プログラミングスクール」がのさばっている影響が大きいです。

出来ればまともな有識者や、同様の学習をしているちょっと先に始めた人から情報を得ながら、現実的に中長期的な学習計画を立てると良いでしょう。

中長期的な学習計画自体もレビューしてもらえるとベターです。

また、完璧なものを目指すと挫折率は上がります。

学習中は、ミニマムにまずははじめての自分のアプリを一旦公開してみるというのもフィードバックを得られておすすめなので、それを前提に計画してみて下さい。

学習の進め方に関すること

はじめから完全に理解しなくてもよいこと

分からないところにこだわりすぎると、ずっと学習が進まなかったりしてモチベーションが下がってしまう方も多いです。

分からないことを分からないままにしておくことがダメなのであって、その場で理解しなければいけないものではない場合も多いです。(というか前提知識が無いと知識は繋げられない)

今調べようとしている内容が、今学習している技術の幹なのか枝葉なのか、意識して優先度を判定することも意識できると良いでしょう。

また、分からないことはWunderListなどのTODOアプリを用いて「調べることリスト」を作り、通勤時間などで検索して徐々に理解するような運用にするのも有用だと考えています。

暗記しないこと

(特にProgateや入門書など)何周も何周もしている方がいますが、あまり効率的とは言えないでしょう。

ググれば数十秒で出てくる内容を頑張って暗記してもあまり嬉しいことはないです。

勿論覚えられればより良いのですが、そこにコストを払うのであれば、仕組みを理解して実際にコードを書いたり構築しながら、出来ることを増やすことを優先するほうが効果的です。

利用頻度の高いものは自然に覚えていきます。

また、覚えるのではなく自分が調べやすいように、Evernoteやその他スニペットアプリ等に、コマンド一覧のような自分用チートシート(カンニングペーパー)を作って置くのも便利です。

自分で考えて応用すること

結局求められるのはアウトプット(動くアプリを構成するコードやインフラ環境等そのもの)です。

特に仕事では「こんなものが欲しい」というアウトプットが先にあって、それを作るためにインプットをします。

今までインプットしてからちょっとアウトプットしていただけでは応用がききません。

つまり、ずっとインプットに注力していたところでアウトプットはうまくなりません。

学ぶ時にも、「これはこんな風に出来ないかな?」と、常に自分なりのオリジナル要素を考えて改造するなど、右から左に流さないでアウトプットを意識すると楽しく且つ効率的になるでしょう。

特に作りたいものがある方は、基礎を学びつつ、どうやって作るのかも考えてみましょう。

学習出来る環境作りに関すること

自分で学習環境や習慣をハックすること

自分のことを一番わかっているのは自分です。

自分のライフスタイルや性格に合うように、無理なく学習できるように「自分をプログラムする」作業から入ると良いでしょう。

メンターを見つけること

経済的に余裕のある方はスクールに通ってみるのも1つの選択肢でしょう。

また、最近ではメンターを見つけるサービスなどもいくつかあるので活用するとコスパが良いです。

勉強会やSNS等でも見つけられます。

結局は自分の性格や状況次第なので色々見ながら検討してみましょう。

スクールに興味がある方は下記もお読みいただけるとお役立ち出来るかもしれません。

www.inodev.jp

エラーや分からないことに対する心構えに関すること

検索して情報を得ること

ITエンジニアに求められる重要なスキルの1つは 問題解決能力 です。

その上で最も重要と言えるのが「検索力」でしょう。

分からないことは出てくるので、現役エンジニアの方も日々検索しながら仕事を進めています。

現役の人が検索しながら問題解決しているのに、初心者の人が検索しないで解決できるわけがないです。

検索も練習であり、解決した問題の数だけ成長できるので、検索しながら様々な問題に向き合っていきましょう。

英語から逃げないこと

エラーメッセージや最新のドキュメントなどは基本的に全て英語です。

最近はGoogle翻訳等の精度もかなり上がっていますし、まずは「英語から逃げない」という心構えを強く持って立ち向かいましょう。

エラーメッセージ・ログを読むこと

特に駆け出しの方で問題解決の為にオススメしたいのが、探偵気分でエラーメッセージやログを正しく理解することです。

プログラムや各種ライブラリ等からでるメッセージは言ってしまえばダイイング・メッセージのようなものです。

こんな重要なヒントを無視するなんて笑止千万です。

赤いメッセージでも怖がらずにちゃんと読みましょう。

重要なヒントを元に事件を解決する必要があるのです。(ちなみに検索は聞き込みみたいなものですね)

何がどういう情報を持つのか、知識を深めてあなたも名探偵を目指しましょう!

デバッグツールをきちんと使えるようになること

デバッグツールは探偵が使えるひみつ道具のようなものです。

要は指紋を検出したり、ヒントを得ることが出来るツールですね。

一流の探偵(問題解決をするITエンジニア)は様々な道具を駆使して、論理的に考えて証拠を抑えることが出来ます。

なお、基礎として、下記のようなデバッグツールの専用の学習もしておくとベターです。

https://dotinstall.com/lessons/basic_chrome_dev_v2

情報の取捨選択に関すること

Twitterの情報を鵜呑みにしないこと

Twitterは2ちゃんねるみたいなもののように扱うスタンスがちょうどよいでしょう。

勿論使いようによっては有用ではあるものの、その情報の信頼性などはかなり疑わしいものもあります。

一歩引いて自分の頭で考えることを心がけましょう。

他人の成功体験等の情報を鵜呑みにしないこと

特に会社の中などの閉鎖的な空間で起こりやすいですが、成功した人が正しいのだという生存性バイアスというものがあるので、これを意識して物事を見ましょう。

また、マーケティングとして自分をよく見せたがるポジショントークも横行しているので気にしすぎる必要はありません。

特に、事業として商材を扱っている会社が絡んでいる成功体験系のインターネットの情報は盛っていることが多く、皆がそうなれるような錯覚をあえておこさせるような書き方もされています。

数値や理論に基づく判断をして、咀嚼して自分ごとに消化する工程を踏むことを心がけるようにしましょう。

情報サイトやブログの内容を鵜呑みにしないこと

特に個人ブログやメディアは、集客のために質の低い適当なことや湾曲した解釈の記事を量産して、Google検索を埋め尽くして集客を図るという商売の方法をしている場合があり情報弱者が餌食になっています。

また、個人が書いているものは特に確認せずに思い込みで出していることも多いので、複数の情報を参照して客観的に見ることは意識したほうが良いでしょう。

取り敢えず困ったら、理解が出来るのであれば初めに公式ドキュメントを見れば間違いはないです。

書籍の情報も鵜呑みにしないこと

自分も誤字やコードの間違いのある技術書で時間を無駄にした思い出があります…。

Amazonのレビュー等を参考にしつつ、先輩が良いと薦めるものを使い、初めに正誤表を確認する習慣を持つと良いでしょう。

技術・開発環境の選択に関すること

学習対象にあった開発環境を作ること

このあたりは好みにも寄るところはあるのでなかなか難しい問題ですが…。

基本的には自分が尊敬する方や、色々教えてくれやすい方の環境に揃えるのが良いかと思います。

メンターとなりうる人たちやネットで情報発信している人たちのレベル感なども様々なので、都度色々試しながら環境はアップデートしていきましょう。

開発環境構築等がうまくいかない場合は、TimeTicketやもくもく会などの勉強会でエンジニアを捕まえて、(失礼に当たらないように)最悪出来る人に手伝ってもらうと良いでしょう。

学習対象を集中して身につけること

教養として様々な言語などを触ってみるというのはオススメですが、基本的に柱となるスキルは選んで集中して学習しましょう。

どれも中途半端にしか出来ないと役割がもちづらく、技術者として何かを作る・仕事にするという面でも貢献度が低い場合が多いです。

また、1つを深く理解することで、他の技術を学習することになった場合にもその考え方を活かせるようになりやすいです。

オススメの学習教材とサービス・選び方に関すること

オススメ学習方法

木を見て森を見ずな学習をしている方が実はかなり多いです。

全てを詳しく理解するのは無理ですが、俯瞰するようにシステム全体について解説しているような書籍や記事を探してみるというのは、特に初期段階でとてもオススメです。

抽象化と具体化を往復することで理解度は格段に上がります。

オススメ学習教材

どれもとても良さそうなので自分も見てみるつもりです…!

個人的には(ソフトウェアエンジニアを目指している方はある程度アプリが作れるようになってからで良いですが)このあたりもおすすめです。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

苦手意識があるものは、わかばちゃんのような内容からでも良いと思っています。

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

学習教材の選び方

コレは自論ですが、主教材と副教材があった方が良いかと思います。

主教材は分かりやすいのは勿論ですが、複数の選択肢があるのであれば、出来るだけサンプルが「自分が作ってみたいもの」に近いものが良いです。

ドットインストールやProgateなどは副教材として、理解の補強、つまり観点を補ったり復習したりする時に使うのに良いと思っています。

先程も言いましたが何度もやるものではないです。

ちゃんと手を動かしてアウトプットできる形で学ぶようにしましょう。

今回の優勝ツイート

「駆け出しエンジニアが学習で躓かないために知っておくべき情報」としていいねがぼちぼち付いている中で良い情報なのかなと思ったのが上記でした!

過去の自分も拘りすぎてなかなか先に進めない人だったというのもありますので…。

自分もプログラミングのメンター等していますが、シンプルに、取り敢えず(初めて作ったものは)公開してみると言うのを目指して、最悪一部妥協しながらでもやり切るのが重要だということを知っておいてほしいなと思っています。

1つでも「これを自分は活かしていこう!」というものが見つかれば幸いです。