これは私がまだ社会人1年目とかの時のお話です。
当時1年目だったにも関わらず、社内にプログラマーが私一人という状況でした。
(残りはデザイナーだったり営業だったり)
触ったことのない言語、やり方もわからない仕事などいろいろつらいこともありましたが何とかやっていました。
アプリ開発をするのにも、一からアプリ構築の手順などについて調べて、欲しい機能を実現するためにはどうしたらいいのかを手探りで試行錯誤しながらなんとかしました。
がむしゃらだった私は一度作っただけの機能を覚える余裕もなく、似たようなアプリを作るのにも前のアプリから同じような機能をコピペしたり、再度調べなおしたりして都度作っていました。
そんな折り、開発中に過去に作ったものと似たような機能の実装を行うときに私はこんなことを口走ってしまったのです。
「ちょっと調べてみます」
すると上司(デザイナー)は、少し呆れたような、半ギレのような感じでこう言いました。
「一度やったことって覚えてるもんじゃないの?」
そして私は思いました。
「(え、そうなの?)」
新人+唯一のプログラマーということでプログラマーがどうあるべきかなんて分からず、それすらも誰にも相談できないような状態だったので、プログラマーとは全ての機能を把握していて当たり前で、私はなんて仕事ができない人間なんだと酷く落ち込みました。
程なくして精神的に追い込まれた私は逃げるように退職したんですが、そこから先は仕事について色々と思うところがありました。
まず大体のプログラマーはコピペ職人でした。
※別に悪い意味ではないです。
確かに細かい部分の実装だったり、新しい実装、使い慣れた機能については直接タイピングして処理を構築していきますが、たまにしか使わないような機能やソース元が古すぎて既に使えなくなったような機能はまた調べなおしたりして結局サンプル(リファレンスとか)をコピペして自分の使いやすいように処理をラップしたりして使うことが多いです。
そこで気づきました。
一度やったことあるからといって、そしてプログラマーだからといって、別にその全てを覚える必要はないのだと。
プログラマーであれば、言語の文法だとか、とあるシチュエーションでのグッドノウハウ、バッドノウハウ、問題の回避・解決方法なんかについてはある程度覚えているものだとは思いますが、使用頻度が低い、何かのライブラリ特有の書き方や使い方については「あぁ、そんな機能あったな」とか「そういえばこの処理前書いたな」ぐらいで覚えてるんじゃないでしょうか(しかもアプリ固有で処理をラップして使うことが多い)。
正直、そこまでを網羅した全ての情報なんて覚えてられないです。
開発環境が更新されればそれまで使えてた機能も使えなくなるような更新ペースの早い業界ですから、過去のコードについては使えないか、使えてももっと良いやり方や新しい機能が登場している可能性が高いです。
結局調べ直しです。
そう、覚えても調べ直しなんです。
あとは隣の席の人に「ここ前どうやって解決したっけ?」とか聞いてみたらちょちょっと教えてくれたりします。
(相談できる人がいるって素敵)
そんなこんなで、長々と書きましたが全てを覚えておく必要はないって話です。
もちろん覚えておいた方がいいこともたくさんあります。
私が言いたかったのは、もっと気楽にいきましょうということです。
世の中には理不尽なことをいう人がちらほらいます。
その言葉に惑わされて精神が崩壊する前に、そのいわれた言葉が本当に正しいのか、改めていろんな人から意見を伺うのは大事なことだと思います。
そろそろ4月で新入社員の方も増える時期なのでちょっとした思い出話をしてみました。
プログラマーとして働く方は、あまり気負わずに、かといって緩みすぎず、頑張って欲しいです。