プログラム言語は全部覚えなくてもいい

プログラム言語は全部覚えなくてもいい IT企業へ

今回は、プログラム言語の学習方法についての話題です。

現在IT企業への就職を目指して就職活動をしている人や、将来ITエンジニアになることを夢見ている人の中には、プログラム言語の勉強をしている人もいるでしょう。そういった方々に向けて、何を重点的に覚えて、何を覚えなくて良いのかということを、IT現場の感覚からそういった指針を紹介できればと思います。

勉強に時間がかかっている人や、挫折してしまいそうな人は、是非参考にしてモチベーションをあげたり、学習効率を高めることに役立ててください。

プログラム言語を扱えるという事

ITエンジニアには色々な職種がありますが、最も有名なのはプログラマーという実際にプログラム言語を使って様々なソフトウェアを生み出す職種でしょう。何もないところから、自分の知識を使って新しい製品を生み出すプログラマーという仕事は、とても夢があってやりがいの多い仕事の一つです。

プログラマーとして働くためには、当然プログラム言語を扱うスキルが必要になります。そのため、独学だったり学校その他でプログラム言語の扱い方を学ぶ人も多いでしょう。エンジニアを目指す人の中には、書籍やインターネットの情報などで紹介されているような、プログラム言語の情報を全て暗記して覚えなければならないと考えて挫折したり、学習に膨大な時間をかけてしまったりする人がいます。

プログラム言語の勉強において、文法や関数・クラス等の使い方などを知ることは重要ではありますが、大事なところはもっと他にあります。IT企業でのプログラム言語を扱えるということは、プログラム言語のことを覚えている、とは違うところにあります。

現職のプログラマーも覚えてない

昨今のプログラム言語は、それ自体のアップデートも多く、現職のプログラマーも全てを追って覚えていくことが非常に困難な状況にあります。そもそものプログラム言語が動作する環境や扱う技術範囲が広くなっているため、とても人間が記憶できるレベルの情報量ではないことも要因の一つでもあります。

覚えていないプログラマーであっても、実際にIT現場で様々な製品を生み出して活躍しています。

彼らは、確かにプログラム言語を使ってプログラムを積み上げて、一つのソフトウェアを作り上げていきますが、その過程で使うことになるプログラムの各種機能やクラス・関数などを覚えているわけではないのです。

調べる方法は沢山ある

現在のプログラムの開発環境では、インターネットに接続して行うことが多く、一部特殊な環境を除いて、プログラムの制作を行いながら調べ物をすることは十分に可能です。つまり、プロのプログラマーも、独学学習をしているITエンジニア見習いの人と同じように、調べながら作っているのです。

もちろんよく使う機能などは覚えているため、調べる頻度は一般の人とは違うかもしれませんが、細かなパラメータ(引数)や、戻り値の扱い、エラー値の定義など、リファレンスなどを調べながら実装を進めるということは、IT現場でもとても一般的な光景です。

調べる方法としては、インターネット経由でリファレンスや公式の情報を参照する他、一般のWebサイトから他のITエンジニアの経験を参考にしたり、情報共有をしている掲示板のようなサイトでトラブル解決の方法を参考にするといったことも行われます。

参考情報の信頼性について

様々な情報を参考にしてプログラム制作や、資料作成をするといったことはプログラマーの日常業務のようなものですが、情報の扱い方には気を付けている部分があります。

特に、リファレンスのような公式の情報でないものを参考にする場合には注意が必要です。

プログラムの制作作業や、デバッグなどの不具合修正性を行っている作業の中では、どのような情報も参考にすることが可能ですが、取引先や上司やチームなどと共有する情報を資料や各種ドキュメントにまとめるという作業においては、こういった「信頼性の低い情報」を情報源としては使うことができません。

公式の記述を引用して資料に明記するか、それが難しい場合は説得力のある他の情報源を引用または十分な説明資料などを別途準備するといったことが求められます。

どこかの誰かが言っていた、という情報では誰も納得しないということは肝に銘じておきましょう。

現職のプログラマーの知識と経験

プログラマーは覚えていないという話を紹介してきましたが、それではプログラマーの知識というのはどういったもので、彼らは何を勉強しているのでしょうか。プログラマーは、プログラムを制作するときに一から十まですべてを調べているわけではなく、覚えているものは当然何も調べずにどんどん制作作業を進めていきます。

ここでは、現職のプログラマーが「覚える事」と「覚えない事」について、少し詳しく掘り下げながら紹介していきます。

「出来る事」と「出来ない事」を知る

プログラム言語によって、得意なことと不得意なことがあります。また、プログラムが実際に動作するOSやServerなどの環境によっても、プログラム言語の挙動や振る舞いも変化します。

プログラムを制作する上で最も重要なのは、出来る事と出来ない事を正確に判断する能力です。

出来ない事を、プログラマーの能力で出来るようにするということは、とても大変な事です。プログラマーがそういった無理難題を抱えることがないように、通常はSE(システムエンジニア)やPM(プロジェクトマネージャ)などが充分に内容を精査・調整してから実現するソフトウェアを決定していきます。

しかし、そういった上流工程を担当するエンジニアよりも、プログラム言語に近い位置にいて、より詳しくなるチャンスの多いプログラマーには、彼らが判断するための正確な情報を提供することが求められます。最新のプログラム言語の動向や、便利な追加機能について情報を提供することで、より優れたプロジェクトの進め方に貢献できるだけでなく、自分自身の仕事も進めやすく快適になる事でしょう。

恐ろしいのは「出来ない事を請ける」事

プログラム言語の勉強をする上で、出来る事に興味を持って学習を進めていく人は多いでしょう。新しいことが出来るようになることは楽しいものです。

しかし、現職のプログラマーやITエンジニアはその逆で、「出来ない事」を知ることを大変重要視します。何故なら、出来ない事を請け負ってしまうと、関係者全員が不幸になってしまうからです。

注文を出した人はプロが出来るといったと信じたのにそれが叶わないことが発覚したり、請け負ったエンジニアは現実を知って相手に謝罪をするのか、それとも当初の話通り実現できる方法を模索するのかといった選択を迫られ、体力の限界が来るその時まで深夜残業も厭わず奮闘するといった地獄のような日々を過ごすことになるかもしれません。

そんなことにならないように、プログラマーやITエンジニアには、プログラム言語や環境の制約について、しっかりとした理解が必要になります。

出来ないことだらけのITエンジニアにならないために

出来ない事を知ることは、IT現場でとても重要な事ではありますが、何を聞かれても「出来ません」という回答をするようなITエンジニアは信用されず、すぐに仕事がなくなってしまうでしょう。

私は「出来ません」という言葉は禁句だと教育されたものです。

しかし、現実にはプログラム言語やOS等環境の能力の限界というものが有り、出来ない事というのは明確に存在します。それでは、どうするのかというと「必ず代案を用意する」のです。

出来ない事が明確になったら、合わせてそれを「回避するためにはどうすればよいのか」を調べ、方法を模索・検討しておきます。取引先など、プログラマーに無理難題を与えてくる人々は多くいますが、そういった人たちを納得させるためにも、判断を仰ぐための代案は役に立ちます。

ここで大事なのは「相手のために」というのが念頭になければなりません。

どちらの選択をしても、必ず相手に利益やメリットがなければなりません。無理難題を提示した相手が悪いのだから、と投げやりな案には絶対にしてはいけません。

出来る事は有効なアピールカード

出来ない事と違って、出来る事は企業や個人の能力をアピールすることができる有効なカードとして使えます。

プログラム言語の学習を進めると、出来る事を多く学んでいくことができますが、その中でも特に「他の環境では時間がかかる」とか「不可能な事が実現できる」といった点は、大事にしましょう。これは、プログラマーとしての切り札のようなものでもあり、そのカードをどういった時に切るのかは状況やあなたの判断次第です。カードを切らずに日々の仕事を快適に進めたり、カードを切って相手にそのメリットを提供することで点数稼ぎをするといったことにも使えます。

また、プログラマーは日々の仕事の過程で、再利用可能部品を製造することができ、そういったものを活用することで、他のITエンジニアとの差別化を図っていくことができます。それらを多く備えたエンジニアの制作するソフトウェアは品質が高く、コストも安いということになり、信頼されて仕事も多くなっていきます。それが、ITエンジニアやプログラマーの経験というものなので、目の前の仕事を乗り越えるだけでなく、次回以降のことも考えながら、少し苦労してでも出来るだけ汎用的に仕上げることで、自分の武器を増やしていくと良いでしょう。

プログラマーを目指して勉強している人も、勉強する過程で作ったプログラムを、次の作品に活かす工夫をしたり考えたりすることは、とても意味のある事なので、是非挑戦してみてください。

一回触ってみておくことは大事

プログラム言語について、文法やクラスの使い方などを「覚えておく」必要はあまりなく、それぞれの機能などで実現可能な事と実現することが難しい又は不可能なことを理解しておくことが重要であることを、これまで紹介してきました。

その上で、プログラマーとしては、ドキュメントやリファレンスなどを読むだけではなく、実際に一度使って試してみておくことはとても重要な事です。触ってみて初めてわかる事というものがあり、それらを体感しておくことが、色々な場面で役に立つのです。

この過程は、代案を検討する際に実際に行うことも多いですが、意識して試してみる癖をつけておくとよいでしょう。これが、SE(システムエンジニア)とPG(プログラマ)の大きな違いでもあり、現場での役割分担にもなります。資料で知っているだけの人間と、実際に使った場合の実感を知っている人間との間に認識の違いが生まれることもあるので、そこはコミュニケーションを取ってその差を埋めていくことになります。経験を積んでいくと、何を調べて何を体感しておく必要があるのかが見えるようになってきて効率も良くなると思います。

また、個人で色々とプログラム制作している人でも、色々な技術や環境を触ってみることで、それぞれの良いところ・悪いところを知れば、新しいアイデアや効率化の手法を思いつくということもあるでしょう。

調べ方や情報量の把握もしておこう

実際に触ってみると、分からない事や知らないことが多いため、頻繁に「調べる」という行動をすることになります。

実はこの過程はとても大事で、そのプログラム言語や技術が提供しているドキュメント類やリファレンス類の量や品質を知ることが出来ます。また、合わせてITエンジニアが何を参照しながら制作を進めていけばよいのかも把握できます。

調べ方や、情報量の過多を知っておけば、まだ触っていない部分についても「おおよその予測」が立てられるようになります。この件についてこれだけ情報があるなら、他の件についても同様に情報が得られるだろうという予測です。逆に言うと、情報量が少ない環境や技術については、他の事についても同様に情報不足で苦労したり時間がかかるという予測が立てられるということになります。

大事なことだけを覚えていこう

情報が多い現代においては、一人の人間がすべてを覚えるということは現実的ではありません。要所や全体像を把握して、効率よく忘れ、扱い方を学んでいきましょう。

困った時には、書籍やインターネットがあなたの助けになってくれるでしょう。プログラム言語の提供元も、開発者の人向けに便利なオンラインリファレンスなどを提供してくれる時代で、分厚い資料を探さなくても目当ての情報にすぐにたどり着くことができます。

プログラム言語を習得してくことは、自分が出来る事が増えていって楽しい事でもありますが、それを仕事にすることを目標にしているのであれば、そのプログラム言語の不得意分野についてもしっかり把握し、代替案や解決する方法についても並行して学んでおきましょう。