昨日会社の忘年会があり、その中の後輩の一人が悩みを打ち明けていた。彼は会社に入社してから数ヶ月の新人教育を受けてそのまま客先常駐することになった。プログラムや設計の基本も身に付かないうちの配属であったため、プログラムの基礎知識が足りない状況であった。悪循環そんな中でも、お客さんの期待には答えなければならないのだが、自分の力不足からくる劣等感により、なかなかいい結果が出せないばかりか、悪い評判まで出てしまう。すると、次第に仕事が楽しくなくなり、気力もなくなってくる、するといい結果が出せなくなり...とまさに悪循環である。私自信の経験からすると、まず最初にやるべきことは、ベースとなるプログラム言語を作ってしまうことだ。言語はなんでもよいが、できれば手軽に始められるものがよいと思う。RubyやPythonなどもいいかもしれない。みることが大事である。部分的でなく、全体をここで大事なポイントは、部分的にではなく、まず全体を学んでしまうことである。文法の一部だけとか、特定のライブラリやAPIの使い方だけとかそういった覚え方は避けたほうがよい。for文はやったけど、while文は知らないとかベース言語の知識に抜けがあると、セカンド言語に移行したときに知識体系にムラが出来てしまう。そのため、時間かかかると思われるが、一通り機能を網羅するように心がけて学習するようにしたい。あとで結果は付いてくると信じて。実際には無数のライブラリやAPIがある実際には、ライブラリやAPIなどは次から次へと登場しては消えていくため、全てを覚えるといったことは困難であるが、「一度も見たことがない」のと「なんとなく見たことがある」のとでは雲泥の差である。ものに触れることにより、無数のライブラリの共通点が見えるようになり、本質が見抜けるようになってくる。次にやるべきことひとまずベース言語を手にいれると、なんとなく自信が付いてくる。そこで手を緩めてはいけない。次はそのベース言語の知識を利用して、セカンド言語、サード言語を学び始めるのである。今度はベース言語の知識があるため、基本的には差分学習だけで済むので、最初の時よりも高速で学習が進む。一つの言語だけでは見えなかった、ベース言語の利点・欠点なども見えてくるようになる。学び続けること日進月歩の業界であるため、今日の技術は明日使えないなんてこともしばしばある。複数言語を扱えるマルチリンガルになることで、習得したそれぞれの言語の特徴が捉えられるようになる。これを続けていくことで、セカンド言語だった言語が自分のベース言語になるということもよくあると思われる。プログラミングというより上位の概念を捉えられるようになれば、言語の違いは、より薄い境界線となってくる。設計へSEやプログラマが作るのはシステムである。システムを作るには設計が必要であるが、言語が分からない人間に、素晴らしい設計は無理なのである。言語を自由に操れるようになった状態であれば、実装を意識しながら設計することもできるようになる。それを繰り返していくことにより、システムのパターンも掴めてくるようになる。システムのパターンが掴めてくれば、言語に縛られず設計できるようになり、そのシステムを実現するのにより適切な言語を見極める力もついてくるだろう。まとめまず、ベースとなる言語を一通り学ぶ(基本文法・ライブラリなど)。セカンド言語を学びはじめる。その際、ベース言語との差異を意識する。サード言語、さらに多くの言語を学びはじめる。言語の知識を生かして実装を意識した設計を行う。言語にとらわれない設計を行う。»プロフィールid:fumokmm新しいNPNLです。(2)はてなブログをはじめよう!fumokmmさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。