新しく学ぶ言語が業務でそれなりに使えるようになるまで
みなさま、おはようございます。Kyonです。
5月ぐらいから苦戦していた、PHPを使った案件がとりあえず落ち着きました。リリースはまだですが、最終的な調整段階に入ってきました。
『一つの言語をそれなりにやっておくと新しい言語も習熟しやすいという話は本当だと感じた話』を以前書きました。もう2ヶ月も経ってたことに衝撃ですが、そのコラムの後日談というか、その後の話のようなことを書きます。
新しく学ぶ言語が業務でそれなりに使えるようになるまで
どれかプログラミング言語を既に使える状態の人が、次に新しく言語を学んで業務でそれなりに使えるようになるまで、をここ2~3ヶ月ぐらい体験しました。
PHPの案件にアサインされるまでは、Javaの案件を対応しておりました。それまでもJavaが多かった私が、PHPでプログラムを書く案件に入れてもらうことに。「機会があれば他の言語の案件にも関わりたい」と上司や先輩に話していたので、それを叶えてくれたことは嬉しかったけど、不安しかありません。でも、ありがたいことに、設計段階から関わりながら、PHPの勉強をしつつ案件を走れるという状況でした。シンプルな単機能の処理を実装しつつPHPを理解しつつという状況が可能だったのです。
これまでも「わからーん」と頭抱えながら、調べながら、誰かに聞きながら業務をこなしている状態でした。が、PHPを使う案件に入って、久しぶりに「全然わからん」と思うことが何度かあって、自分の理解力のショボさに悲しくなりつつも、とても新鮮な気持ちになりました。新人時代の技術研修で落ちこぼれまくっていた時のことを思い出すレベルです。
そういう状況を、社会調査でいうところの参与観察みたいな感じで、悪戦苦闘している私(調査対象者)とその状況を記録する私(調査者)という視点を持ちながら、業務にあたっていて、それの記録みたいなコラムです。
プログラミング言語を初めて学ぶ人や悪戦苦闘中の人、そういう人たちをサポートしている人とかに、何か役に立つかもしれない。
なんかとにかく全然わからん期がある
「なんかとにかく全然わからん期」というのは私が勝手に考えた言葉ですが、わからないことがわからなかったり、わからないことがあるのはわかるけどそれの説明ができなかったりする期間のことです。新人の時ってこういう期間があって、それでめちゃくちゃ悩んだ思い出があります。
なにか1つプログラミング言語が理解できたら、次に新しく言語を学ぶ時はこの期間は無くなるかなと思っていたのですが、無くならなかった。短くはなった気がしますが、「うーん、わからん」と悩む期間はありました。だけど、一度こういう期間があることを知っているので、「来たな」ぐらいの気持ちで、変にアタフタせずに済んだ気がします。
学ぶ側の人へ。こういう期間はあるし、必要だと思います。この期間でもがいていろいろ考えて調べるということが大事なんじゃないかなと。この期間にいる最中は先が見えないし苦しいのですが、いつか終わりはあるので、ちょっとでも前に進めないかと模索してみるといい気がします。
学ぶ側の人をサポートしている人へ。「おーもがいてんな」ぐらいの大きな気持ちで見守ることが大事です。ここですぐに答えとなるプログラムを渡したり、「そんなこともわからんのか」と言っては、この先が暗くなります。ちょっと時間がかかるけど、ある程度はもがいてもらうことが大事だと感じました。(そうは言っても案件によってはそんなもがかせてる時間は無いよーというのもわかりますよー)
私ももがかせてもらったおかげで、後半のプログラミングのスピードは上がったし、ちゃっとややこしいところも必要な質疑を重ねつつ実装できたかなと。
既に使える言語とのギャップに苦しむ
既に他のプログラミング言語が使える場合、その言語と今やっている言語の違いに戸惑ったり、書き方の違いでミスったりすると思います。
私の冒頭の案件では、PHPのアロー演算子に慣れるのに時間かかりました。何度か「.」で繋いでミスりました。最初に、JavaとPHPの違うところを学んでおけば良かったんでしょうけど、それをすっ飛ばしてしまったので、繰り返しやって学ぶ戦法でした。ただ理解はしているので、エラーを出しても「またここかー」と早く気付けるので、自分で解決できたという成功体験は積めます。
データベースでも慣れないことがありました。文字列を連結する時の書き方です。Oracle DBだと||演算子をよく使用していたのですが、MySQLでは「||」は別の意味になってしまい、同じような処理としてCONCAT関数が用意されています。こういうところが違うんだと知る、よいきっかけでした。
学ぶ側の人へ。既に使える言語と新しく学ぶ言語で、どこが違うかを先に知っておくと便利ですが、必ずしも先に勉強しておく必要は無いかなと思います。既に使える言語で当たり前にできることが、新しく学ぶそれで必ずしも使えるとは限らないことや書き方が違う可能性があることを知っておいて、その都度、公式の情報(リファレンスとか)を参照するようにすればいいですよね。
学ぶ側の人をサポートしている人へ。「既に使える言語ではどうで、この言語ではこうだ。」みたいにフォローをするとわかってもらいやすいかもです。私も既にPHPの開発歴が長い人にいろいろ教えてもらったのですが、「これはJavaで言うところのあれだから、こういうことだ。」みたいな感じで説明してもらうとすんなり理解できました。
既に使える言語でモヤッとしていたことが理解できることもある
1つの言語であまりしっくりきていない・理解できていないことがあったとします。その考え方や物事が、新しく言語を学ぶことで解決する、なんてこともありました。
具体的にはJavaのMVCモデル。プログラミングをするには困らないレベルでは理解できているつもりだったのですが、どこか腑に落ちないところはあったんです。だけど、今回PHPをイチからやってみて、腹落ちできたので、この点について悩むことが減った気がしました。ちゃんとわかった、という感じでしょうか。
たぶんこういうことって、あるあるなのかなと思います。
だから、1つの言語を極めることもアリだし、そうしたい人もいることもわかるけど、違う言語を学ぶ・使ってみることで1つ目の言語をより深く理解できることもあるから、試してみる価値があるなーと。
新しく学ぶ言語が業務でそれなりに使えるようになるまでを見てみた
自分が体験していることを、もうひとりの視点で見て、感じたこととかを書いてみました。同じような体験をしてモヤモヤしたり、そういう状況にいる人を外野で見ていてモヤモヤしたりした時に何か役立つといいなと思います。
・・・というのは表向きの話で、最近コラムを書けていなかったので、私の準備体操がてら、自分の体験を書くというコラムにしてみました。自分の体験なので、「こういうことあったなー」「これが大事だと思った」みたいなことのメモから引っ張れば良いので、リハビリにちょうどよかった気がします。