コラム

ITエンジニア・プログラマに贈る7つの勉強の道しるべ

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

ITエンジニアだったりプログラマといった職業には勉強が不可欠です。

どれだけ学生時代に勉強していたとしても、IT業界の技術はものすごい勢いで進化しており、仕事に必要な知識も急速に増えています。
IT業界の技術者にとって勉強することは付きないのです。

しかし、勉強以外にもやることは毎日いっぱい。
仕事以外の限られた時間を勉強に工面する必要があります。

限られた時間で効果を挙げなければならない以上、勉強の効率が悪いと、時代にどんどん置いてかれてしまいます。

そこで下記にエンジニアが勉強をするためのいくつかのコツを記載していきます。

プログラミングがコピペして満足しない

プログラミングはコピペするだけでも、感動するくらいのプログラムができちゃったりします。

でもこれは誰にでも出来ること。サイトに載っているコードをコピーしただけでは理解に繋がりません。

プログラムを理解する

プログラミングを職業としてやっていくには、何が書かれているのか、何を書いたのかよく理解して置く必要があります。

一から書ける必要はありません。
ただ、コピペしたコードを改良したり、バグを修正したりして実際の製品にしていくには、最低限プログラムの内容を読んで理解出来る必要があります。
理解した上で、足りない部分や間違った部分を適切に補っていくのです。

プログラムを読む

コピペして動作するように整理されたプログラムは、あなたにとって一つの見本になります。

あなたが一から同じロジックを書くならどのように書くか、そして見本となるプログラムにはどう記載されているか比較し、学べる部分を吸収しましょう。
どんなソースコードでも、得られるものは少なくありません。

品質の悪いソースコードですら、下記の記事のように広く引用・議論され勉強に役立てられています。
「やっては行けない事」を学ぶのは成長の上で大きな意味があるのです。

https://qiita.com/YSRKEN/items/0095cf75be3f607b0f98

わからないことはすぐに調べる or 聞く

エンジニアの仕事をしていると、経験や推測では全くわからない事など日常的に訪れます。
知識不足や情報不足、経験不足、原因は色々とあるでしょうが、すぐ解決できない問題を調査を経て解決に導くことこそ、専門職であるエンジニアに求められる仕事でもあります。

わからない事を調べる

近年発達を続けているIT業界では、未知の単語に触れることなど業界に10年以上いる人にとってもザラなことです。

ただ情報技術というだけあって、ITに関する情報は比較的入手しやすい環境が整っています。
下記の様なWEBサービスを活用して、自分と同じ様な課題を抱えた人や、その人がどう解決したのか探してみましょう。

Google

調べごとには欠かせない Google は専門的な課題にも有効です。

自分のトラブルの状況で検索したり、エラーメッセージをそのまま検索してみたりすると、他の人の相談や解決に至った記事などにたどり着くことが出来るでしょう。

日本語のサイトばかりだと情報が遅いこともあり、情報がなかなかヒットしないときは英語で検索してみるのも良いでしょう。

Qiita

日本のIT技術情報投稿サイトです。

日本の技術者たちが自分の見解や経験を記事にしてくれています。Google で検索した際もQiitaの記事がヒットすることは多々あります。

Qiitaで調べるのも有効ですし、自分で解決・調査したことを記事として公開してみるのも、あなたの経験や自信につながるでしょう。

StackOverflow

海外のIT技術 Q&A サイトです。

IT技術に関する質問と、それに対する回答が公開されています。

TeraTail

日本のIT技術 Q&A サイトです。

IT技術に関する質問と、それに対する回答が公開されています。
後に記すとおり、自分で質問して見るのも良いでしょう。

Github

世の中で使われている数多くのプログラムが、このサービスを通して公開されています。

過去どのようなバグが発生して、どう修正したのか。またその際にどの様なコミュニケーションが発生したのか、全て残っていて閲覧する事ができます。

あなたが今抱えている問題も、Github の issue で現在進行系で議論されている問題かもしれません。
Github 上のソースコードはまだ修正されていないが、issue での議論に置いて解決策が提示されているバグも多くあります。

OSSライブラリで問題があった場合はぜひ目を通してみると良いでしょう。

わからないことを質問する

下記の記事で書いたように、わからないことは先輩や上司に質問してみるのも良いでしょう。

上述のWEBサービスを使って自分で質問してみるのも良いと思います。
この様な場合においても、相手から回答を得やすいような質問をっころがけて工夫してみましょう。

【脱!質問ベタ】エンジニアに向けた質問の6つのコツ

他者に説明できるまで、自分に落とし込む

『6歳の子供に説明できなければ、理解したとは言えない。』
by アルベルト・アインシュタイン

アインシュタインも言った通り、どんな物事も説明する域に達していなければ理解したとは言えません。

言葉だけ覚えても意味がないですし、説明文をそのまま復唱しても本質的には意味がありません。
きちんと自分の言葉で、わかりやすく表現できることがプロとして求められるレベルです。

  • 自分で学んだことを応用してみる
  • 説明資料を作ってみる
  • 自分で記事を書いてみる
  • 知識をマインドマップかしてみる
  • 知識を言語化して、人前で説明してみる

など、理解を深めるために有効な方法はいくつかあります。
自分にあった方法を探し、日常的に実践するようにしてみましょう。

自分の環境を把握し、環境にあった情報を取得する

IT技術に関しては世の中に多くの情報が転がっています。

そのすべてが、すぐあなたにとって役に立つかといえばそうでもありません。
特に、対象となる環境が異なると、同じプログラミングでも全く違う世界の説明に過ぎずません。それを知らずに学んでいてはいざというときに役に立ちません。

そういった環境に関する情報の中で特にチェックすべきなのがOSプログラミング言語フレームワークライブラリの4つです。

OS

OSとはPCやスマホなどのデバイスの動作を定義した、動作の核となるソフトウェアです。

意味を理解するのは難しいかもしれませんが、 PC の OSではwindow や mac、スマホのOSとしては ios や android など異なるOSが存在している事をまず認識しておきましょう。

スマホアプリを作るための情報を収集すると言っても、iOSのソフトを作りたいのに、Androidの記事を参照しては意味がないのです。

今接している技術は、どのOSで有効な技術なのかよく把握しておくと良いでしょう。

プログラミング言語

現在プログラミング言語は何十種類もあり、どんな言語でも有効なプログラムなど存在しないでしょう。
サンプルコードを読みにあたってもどの言語で書かれているのか理解して読まなければ、なんの学習効果もありません。

例えばPythonでプログラムを書いているのにRubyの記事を参照しても、あまり意味がないでしょう。

また言語にもバージョンがあり、3.6で書いているのに、参照する記事が3.4だと対応しておらず動かない場合があります。

データベースへの接続方法をGoogleで調べるときも「データベース 接続 python 3」とするなど、得たい情報だけでなく、調べたい言語とバージョンを加えて調べると良いでしょう。

フレームワーク 

Ruby では Rails や Python では Django や Flask,、PHPではCakePHP はやlaravelなど、各言語に置いて様々なWEBフレームワークが開発され利用されています。

フレームワークによっては独自の文法・規約を用意していて、あるフレームワークのプログラムを別のフレームワークにコピペしても動かないことがよくあります。

こちらも、情報を調査するときは 「データベース 接続 Django 2」など、フレームワーク名とバージョン名を記載するようにしましょう。

ライブラリ

IT技術においては、「車輪の再開発をしてはいけない」という考えが広く取り入れられています。

自分より前に誰かが作ったものを、自分で時間をかけて作っても太一た価値はないということです。
勉強という意味では価値あるものだと思いますが、仕事でその様な作業をしてはいけません。

そこで技術者たちは過去に作った「車輪」にあたる機能を持ったプログラムをライブラリとして共有し、より多くの時間を新しいものを生み出すことに割けるようにしてきました。

現在は Github等を活用してライブラリは共有され、誰でも開発に参画できるようになっています。

エラーメッセージや特定のトラブルで検索して調べて見たとき、自分のトラブルと同じ内容に見えて、別のライブラリを使っていることも多いです。
そうした場合、調べた情報が役立たないこともありますので、なにかライブラリに依存する記事ではないか注意して読むと良いでしょう。

バグはその場で解決し、問題を理解する

軽いバグが発生したとき、その改修を後回しにしては開発の効率が悪いだけでなく、学習効果としてもよくありません。
どんな小さなバグでも、その場で原因を特定して解決することが自分の実力向上に繋がります。

特に勉強中や参考にした記事からコピーしてバグが発生しまったとき、「ああ、参考元が間違っていた」と考えてその作業をやめたり、他にコピペで動作する引用元を探し始めたりする人は少なくありません。
こうした習慣もあなたの成長のためにはあまりいいものではありません。

理由は2つ、

一つは「失敗は成功のもと」バグに出会えたことはあなたが成長する最大のチャンスです。
二つ目の理由が、問題が発生した直後が最も「自分が何をしたか」を覚えている瞬間で、振り返った場合の効果が最も大きいタイミングだからです。

IT技術を活用する上で、問題が発生する原因は大きく分けて2つあります。

  1. あなたの作業がドキュメント通りに行われておらず、間違いがあるためにバグになっている
  2. あなたがドキュメント通りの作業を行ったのに、ツール側(PC、ライブラリ、ソフトウェア等)にバグがあった場合

上記うち、初心者〜中級者エンジニアが触れるのはほとんどが 1. の方。上級者ですら、半分以上は 1. だと思います。
それくらい、近年よく使われているのデバイスやソフトウェアの品質は高く、マニュアル通りに、いくつかのサンプルに従っている限り、そうそうバグは生じません。

すなわち、殆どの場合、技術的な問題はあなたの作業によって生じています

この場合、 問題を解決するためには

  1. あなたが実施した作業を振り返る
  2. 実施した作業が問題ないかドキュメントや詳しい人に確認する《問題が特定できない場合は3へ》
  3. 問題を特定するために、一部作業内容を変更してやり直す《繰り返し》

とした作業を行って修正する事になります。こうして、問題を解決に導いた経験があなたを大きく成長させます。
この経験を得たあなたは、同じ問題だけでなく、類似の問題も解決することが出来ますし、問題解決そのものの考え方を、いずれあなたが接するあらゆる問題の解決に利用できます

自分のした事を覚えているうちに、何が悪かったのか、どうすればよかったのか理解して修正することが学習効果の高い経験に繋がります。

バグや問題に接したときにイライラするばかりでなく、前向きに自分の問題解決力を引き上げていきましょう!

目的に沿った学習をする

一言にITと言っても多くの技術、言語、情報が関連しているため、盲目的に学んでいては手に負えません。
目的を明確にし、それに向かって学んでいくこと、それを極めることが重要になります。

例えばイチロー選手は筋トレ反対派です。
彼のシャープでスピーディな動き、どんな球が来ても対応する柔軟な打撃には筋肉を大きくすることは向いていないのです。

「スポーツをする人はほとんど筋トレをしている」→「だから筋トレをする」
このような、「みんなやっているからこうしよう」といった考え方は目的が先行しておらず、本質的なあなたの成長にはならないでしょう。

理想的には、
「よりコントロールの良い投球をしたい」&「よく投球時にバランスがくすれる」
→「体幹を鍛える必要がある」→「体幹が強くなるトレーニングをする」

といったようになりたい自分や、自分の抱えている課題を確認して、それを叶える・克服するための手段として、勉強をするべきなのです。

自分との向き合い方や課題の発見方法は下記の記事にも記載しています。

どんな勉強もまずは自分を知ってから? 自分の課題を見つける自己対話

論理の設計をする

仕事でも、勉強でも、どのような手順で進めていくか、明確にしなければなりません。
自分が今どのような状況なのか整理できていないと、自分で次に何をすればよいのかわかりませんし、自分の状況を他人に伝える際論理性を失う事もあります。

5W1H、ロジックツリーやフィッシュボーン図を利用して、自分の思考や現状を論理的に把握しましょう。

この部分はいずれ別の記事で深掘りできればと思います。

ロジックツリー

【3分でわかる】ロジックツリーの使いこなし方

フィッシュボーン図

https://sinap.jp/blog/2015/11/fishbone.html

 

まとめ

成長につながらない勉強時間ほど無駄なものはありません。

上記の内容を意識して、ブレずに手を動かすことで、一歩一歩確実に成長していきましょう!

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

コメントを残す

*