私がプログラムを覚えた時
みなさま、おはようございます。Kyonです。
白栁さんの「生き様012. 僕がプログラムを覚えた時 ~キャリアの軌跡「プログラム学習編」~」を読んで、私も自分のプログラム学習について振り返ってみたくなりました。
白栁さんと違って、私の話はこれからプログラミング技術を学ぶ人には役立たないかも・・・、仕事で使っているプログラミング技術は社会人になってからぐわーっと詰め込んでしまったので。
そうは言っても、全く役立たない保証もないので、とりあえず書いておきます。思いもよらぬところで需要があるかもしれませんし。こんなに回りくどくてもなんとかエンジニアやれますよ、という一例にはなるかも。
もっと可愛いデザインにしたい
私が初めてプログラミング言語に触れたのは高校生の時。ちょっと変わった学科がある高校の普通科に進学したので、授業や部活からは何も影響を受けず。アニメや漫画好きな友人から、自分のWebサイトを作って運営するという話を聞いて、アニメや漫画には全く興味が湧きませんでしたが、Webサイトを作る方だけ興味を示しました。
当時はいわゆる自分のプロフやホムペを作るブーム真っ只中。 プログラミングやWebの知識がなくても、ホムペ作成サービスを使えば、パーツをポンポンと配置するだけで、それっぽい携帯(今で言うガラケー)用のWebページが無料で作れちゃうという世界でした。
前略プロフやpeps、フォレスト、モバスペ(Mobile Space)あたりが有名どころでしょうか。私はフォレストから始まって、モバスペに移行した派です。ホムペ以外にブログも持っていましたね、もうすっかり消えましたが。
多数あるサービスの中で、HTMLを自分で書いてデザインを作り込めるサービスを知ります。「もっと可愛いデザインにしたい!」と思った私はHTMLをゴリゴリ書き始めるように。ここが始まりです。HTMLとCSSで作られたデザインをフリーで提供するサイトもあったりして、HTMLの知識だけでなく、使用するためのルールやマナーサイトから著作権とか知財の知識も学びました。
逆に言うとHTMLとカラーコードを調べただけで、Webの仕組みやサーバサイドに興味を持つことはなく、マイブーム終了。たぶん、ここでWebやサーバサイドに興味をもって、のめり込んでいたらスーパープログラマーみたいな感じになっていたのかも。
文系大学生、理系寄り社会学部で奮闘する
大学進学はいろいろあって、模試の判定に使ったことがない大学(元々受験する予定すらなかった!)の社会学部に進学。入学してみると社会学部の中のかなり理系寄りな学科で、男女比がだいたい10:1というほぼ男子校みたいな環境でした。おかげで職場がほぼ男性で占めていても、まぁなんとかやっていけています、たぶん。
教職課程で必修科目だったデータベースの講義を、THE理系な先生(専門は地球情報学!)から受けることに。質問受付タイムを講義前の時間に設けてくださる、めちゃくちゃいい先生でした。が、講義の内容は当時の私にとってはかなり難解。質問受付タイムをフル活用したおかげで、超高速お昼ごはんの日が続きましたが、無事に単位獲得。
データベースの基礎はここで養われました。この講義のテキストは今も手元にあって、入社後の技術研修の時もOracle Databaseの試験勉強の時も使いました。
みっちりアルゴリズムとフローチャートと時々BASIC
ゼミの指導教員もTHE理系な先生(工学博士!)。講義ではアルゴリズムとフローチャートをみっちりやって、BASICをちまちま書きました。
これもまたなかなか理解できず、出された課題に対して「このアルゴリズムだとダメなのはわかるけど、どうしたらいいかわかりません。」と質問を片手に、毎週のように研修室に通い詰めていました。「行列って何ですか?」な文系大学生の私の相手をしてくださった先生に感謝です。
頭パンクしかけの私にとっては、BASICは割と楽しく感じていたのを覚えています。
C++とOpenGLとOpenCLと
卒業論文のテーマはさらりと決まり、文化財のディジタルアーカイブを扱うことに。指導教員が作ったシステムを元に、3Dカメラや三次元測定機で取得したデータを流し込んで、使い心地や見え方を評価した内容が論文になりました。
大学から借りた3Dカメラを片手にデータを集めに古墳や遺跡へ出かけたり、発掘資料の模型のデータ計測をしたりしていました。じっとしているのが好きじゃない私にとっては、卒論は楽しかった記憶しかないです。
既存システムにデータを入れ込むために、C++やグラフィック系APIのOpenGLや並列処理系APIのOpenCLを教えてもらいましたが、あまり理解できず・・・。結局、先生に教えていただきつつ、パラメータをちょこちょこいじるレベルで終了。ここでも、のめり込んでいたら、研究者になったのかもしれませんが、企業就職して社会人経験を積んでからでも遅くないなと判断して、就活戦線の乗り込んでいました。
技術研修、あかん
就職活動もいろいろあって、今の会社にシステムエンジニア職(候補)で入社して、3ヵ月ぐらいかけてネットワークやプログラミングの研修を受けました。ここでやっと本格的にプログラミング言語というものを勉強し始めます。大学での勉強は本題のおまけみたいな形だったので、やっとエンジニアのスタートラインに立った気がします。
もちろん順風満帆にはいくはずが無く・・・。ネットワーク研修で行き詰まり、大学で勉強してきた同期たちに教えてもらいながら毎日の試験を乗り越えるも、Java研修に入った瞬間、「わからないことがわからない」状態に。
自分でも理解しようと講師に聞いたり、書籍を読み漁ったり、Google先生に聞いてみたりしてみましたが、それでも理解できず。もうダメだ、という状態。最強にわからなかったのが、配列とオブジェクト指向でした。犬クラスとかわからんよ。
そんな状態でしたが、「自分ができないということを理解できているから」ということで、当時の開発チームのリーダーから声がかかり、配属先が決まりました。当時は劣等感の塊と化していたので、面談でそんなところ見られていたなんて全く思っていませんでした。確かに"わからないこと"が何かはわかっていなかったけど、自分が"わからない"状態であることは理解していましたね。
相変わらず、わからん!向いてないかも(泣)
プログラミングがろくにできない新人Kyonは、配属後も相変わらず「わからん!」「向いてないかも(泣)」と悩みながら、面倒見が良い超絶デキる先輩の元で、たまに折れたりしつつもぼちぼちプログラミングを身につけていき、今に至ります。
配列とオブジェクト指向については、配属後も何度も何度も教えてもらい、ようやく2年目ぐらいに「そうか、こういうことやったんか」と腑に落ちました。ここまでくるのにすごく時間がかかってますね、我ながら。
そんなこんなで行き詰まりまくりな私が、数年後にプログラミング経験ゼロのお客様にプログラミングを教えることになるなんて、この時は全く想像もしていませんでした。そこらへんの話はまた今度、いつになるかはわかりません。