それはきっと幸せな結末

2012/03/27 13:32:11

 わたしがプログラムを書いたとあるシステムがその役目を終えました。

 統合システムが本格稼働するまでの中継ぎ、という説明を最初に受けていて、「寿命の短い子なのね」と思いながら、それでも大事につくったものです。後継開発のスケジュールが遅れたりして、当初予定の倍の期間を働き、役目をまっとうして稼働を停止しました。

 運用担当の社内SEの方々が、稼働停止に合わせて打ち上げをしてくださって、うちの社の者がその席にお呼ばれしたそうで、「そういえば、本格稼働はじめてから1度もトラブルを起こしませんでしたよ」と言ってもらったと、とてもうれしそうに話していました。

 わたしは長いことプログラマをやっていますが、自分が関わったシステムについて「役目を終えて停止した」という話を聞いたことがありませんでした。

 プログラムを書いて、それがテストをクリアして納品されたら、そこから先はもうわからない、というのが当たり前だったんです。

 わたしがこれまで書いてきたたくさんのプログラムは、まだそのまま動いてるかもしれないし、誰かに手をいれられながら生き延びてるかもしれないし、「こんなの使えねーよ」とか言われてどこかのハードディスクのゴミと化しているかもしれません。その行方を知る機会はありませんでしたし、知りたいと思ったこともありませんでした。知ってどうなる、という気持ちもありましたし、知ったところで悲しい思いをするだけなんじゃないかという恐怖もありました(苦笑)。

 だけど、そのシステムの「結末」の話を聞いた時に、自分はもっと自分の仕事の結果というものに関心を持つべきだったのかもなあ、とちょっと反省したんでした。

 と、ここまでの話は数年前のことで、今、そんなことを思い返しているのは、今年になって稼働を開始したシステムのことで「順調に動いています、ありがとうございます」といった内容のメールをお客様からいただいた、という話を聞いたからです。

 わたしはプログラムが書けるだけでうれしい人で、お客様と顔をあわせることもめったにないんですが、それでも、そうやって誰かが自分の仕事の結果に「ありがとう」と言ってくれているということに、格別の喜びを感じます。

 ぶっちゃけ、泣きそうなくらい、うれしい。

 お客様がいてくださるから、わたしはプログラムを書いて食べていけてるし、お客様と粘り強く話し合いをしてくれるSEさんがいるから、お客様に納得していただける仕様が出来上がるし、気が遠くなるような大量のテストを愚痴ひとつこぼさずにこなしてくれるテスト担当の人がいるから、お客様にたどりつく前にバグがつぶせます(←わたしはすぐに「めんどい」とかわめきだすぜ!)。

 ついついプログラムに夢中になっちゃって、自分の世界にひきこもりがちなわたしでも、このうれしさは自分1人では決して得られないものだとわかるから、とても愛おしく感じるんでしょうね、きっと。

 これまでのキャリアの中で、つくる側と使う側がけんか別れしてしまったプロジェクトをいくつも見てきました。

 そういったことを考えれば、運用を担当してくださっていた方々に、最後に「お疲れ様」と言ってもらえた冒頭のシステムは、とても幸せな結末を迎えたと思います。

 そして、今年、動き始めたばかりのシステムが、そんな幸せな結末を迎えてくれるといいなあ、と、今、心の底から願っています。

 ああ、もっとちゃんとできるようになれば、もっとたくさんのうれしいことに出会えそうな気がするから、もっとちゃんとしたプログラマになりたいなあ(←わたしの文章って、いつも小学生の作文みたいな結末に至るよね)。

自分の稼ぎで食っている

2012/01/11 11:22:50

◆ はじめにおことわり ◆

 今回のテーマは「わたしがプログラマという職業を選んだ理由」で、実は1行で書こうと思えば書けるんですけど、それだとかなり意味不明になってしまって、ちゃんとわかるように書こうとするとやたら長くなります。

 自分で言うのもなんですけど、わたしはちょっとレアな人なので普通な人(←表現がおかしい気もするけど、適切な表現が思いつきません)に読んでいただいても、進路選択の参考にはならないと思いますが、もしかしたら、昔のわたしと似たような問題にぶちあたってる人の目に留まるかもしれません。そんな偶然が存在して、なおかつ、この出会いがほんの少しでもよい方向に作用することを期待して、この文章を書きました。

 少々、重いお話になるので、そういうのが苦手な方はここで引き返すことをおすすめします。せっかくきてくださったのに、申し訳ありません。

◆ 10才のわたしは20才の自分に絶望していた ◆

 10才の時のことだったと記憶しているんですけど、わけがわからないまま母親に連れていかれた病院で、医者にこんなことを言われました。

 「この子はへたすると20才ぐらいで歩けなくなります」

 簡単に言っちゃえば、骨の形がおかしいので体重をうまく支えられず、その無理は累積されて最悪20才で破たんする、ということです。まあ、当時のわたしには当然、そんなこと理解できなくて、単純に「足が悪い」とだけ説明されていましたけど。

 駆けっこはいつもビリだったし、よく転んでいるという自覚もありましたが、それは運動神経が悪いせいだと思っていて、足そのものが悪いとは考えたこともありませんでした。

 医者の指示は「走るのも、跳ぶのも、蹴るのも、重いものを持つのもダメです。それと、体重が増えると負担が増すので太らないようにしてください。でも、それ以外のことは今までどおりにしてください。立ったり歩いたりすることもやめたら、筋肉や骨が弱って歩けなくなります」というものでした。

 しかし、そんな話をきいても、ことの深刻さをいまいち理解できていなかったらしく、わたしは病院から家に戻ってすぐに、近所の子に誘われて鬼ごっこに参加してしまい、家のすぐ前を走り回っていたら、母親が「走っちゃダメって言ったでしょ~!」と叫びながら、ものすごい形相でかけよってきました。

 わたしは生まれてはじめて「怖さのあまりに立ちすくむ」という経験をし、一緒に遊んでいた子たちはみんなどこかに逃げてしまいました。

 母親のあまりもの迫力に、おそまきながら「大変なことになった」と思いました。

 その日から母親は「おまえは普通じゃないんだから、普通の子と同じようにしたいと思っちゃいけない」と言い続け、わたしもおとなしくその言いつけを守りました。とにかく母親が怖かったんです。すると、一緒に遊んでくれる子が一人もいなくなりました。雨の日でも外で遊んでいるような土地柄だったので、走ったり跳ねたりできない、というのは、遊び相手にならない、ということだったんですね。

 ちょっと話がそれますけど、「最近の子供たちは公園で携帯ゲーム機で遊んでいる」という話題に対して「気味が悪い」とかいう感想がでてるのを読んだんですけど、わたしは「うらやましい」と思いました。わたしが子供の頃に携帯ゲーム機というものが存在していたら、あの輪の中から外れずにすんでいたかもしれないなあ、と。

 結局、遊び相手になってくれるのは、姉とか叔父とか身内ばかりになって、「友達が1人もいないままで、いつか歩けなくなって、何もできない人になるのかなあ」と考えるようになりました。今はさすがにそんなこと考えてませんけど、当時のわたしは、歩けなくなる=何もできなくなる、と感じていたんですね。

 時々、むしょうに走ったり飛びはねたりしたくなることがあって、そんな時はそういうことをしてしまわないように、しゃがんでやり過ごします。ひざを抱えて丸くなっているとどうしても「こうやってがまんしてても、そのうち歩けなくなるのに、なんでがまんしてるんだろう」と思ってしまいます。1歩1歩、歩くごとに「おしまいの日がまた近づいたのかなあ」と思ってしまいます。

 イヤなことを考えたくないので本ばかり読んでいたら、ある夜、父親がわたしを庭に連れ出し、こんなことを言いました。

 「手に職をつければ、歩けなくなっても自分の稼ぎで喰っていけるぞ!」

 正直、なんでこんなことを言うんだろう、と思いました。突然、働く話をしだすって変ですよ。そもそも、テレビドラマだったら「心配するな。お父さんがずっと守ってやるから」とか言い出す場面でしょう、これ(笑)。

 それでも、「やってはいけないこと」と「できなくなること」ばかり言われていたところに、「できるようになること」を話してもらって、ちょっとだけ安心しました。

 「何もできない大人にならない道もあるんだなあ」と。

◆ 17才のわたしは唐突にコンピュータ業界に入ることを選択した ◆

 中学時代にはいろんなことがありましたが、一言で済ませるとすれば「暗黒期」でした(←延々と鬱展開が続くだけなのではしょります)。

 重苦しい中学時代がようやく終わって、通学で足に負担がかからないように近場、かつ、お金がかからないように公立、という理由で選ばれた高校に進学しました。わたしの人生の大事は半分以上、足基準で選ばれています(苦笑)。

 結果からいうと、心の底から、その高校を選んで良かったと思っています。

 なぜかといえば、高校ではあっさりと友達ができたからです。友達ができると学校ってパラダイスなんですね(笑)。それを知らないまま学生時代を終えずにすんだことは、わたしの人生最大のラッキーでした。高校生活の思い出は、楽しかったことばかりで埋まっています。

 そんなこんなで、浮かれ気味な高校生活もやがては終わります。その先触れとして、進路希望調査表とかいうものの提出を求められました。

 その時点で、20才という当初のリミットは先送りできそうだ、という話になっていて、少しは猶予があるから歩けるうちは働かなきゃいけないなあ、とは思っていたんですけど、将来に対する具体的な希望は持っていませんでした。ずっと、「将来がある」ということを信じられなかったの で、リアルに考えてこなかったというか。

 友達に「やりたい仕事ってあるの?」と訊ねられたわたしは、「本屋の店員さんになりたい」と答えました。「ずっと本に囲まれてるっていいよなあ」くらいの軽い気持ちだったんですけど、友人はわりと深刻な感じで「書店員はむずかしいんじゃないかな?」と言いました。理由を尋ねたら、「店員さんって、重そうな本を持って店内歩いてるし、レジでも立ちっぱなしだから」という答えがかえってきました。言われてみればそのとおりです。そんなことに気づかない自分がバカでした。

 その時に思ったんですよ。「わたしに職業選択の自由はないんじゃない?」って。

 まあ、あるにはあるんですけど、普通の人よりも選択の幅が狭いのは確実です。その時に唐突に子供の頃にきいた父親の言葉を思い出しました。

 「手に職をつければ、歩けなくなっても自分の稼ぎで喰っていけるぞ!」

 歩けなくなるまでは働こう、ではなく、歩けなくなっても働ける仕事を探さないといけない。やりたいとかやりたくないとか、好きとか嫌いとかは問題にしちゃいけない。自分ができる仕事を探さなきゃいけない。

 そう思ったわたしは進路指導室にこもり、そこにあった求人票や専門学校の案内のほぼすべてに目を通しました。その中で、座りっぱなしでできそうな気がする職種をピックアップし、さらに、図書館でその職種の具体的な仕事内容を調べて確認をとりました。

 そんな中で候補にあがったのが、コンピュータ業界の仕事でした。

 コンピュータ関係の専門学校のパンフレットを進路指導室で発見した時は、「コンピュータの仕事って専門学校出でもできるもんなの?」と思いました。だって、わたしにとってコンピュータはSFの中の存在で、それがそんな手が届くような場所にあるとは思いもよらなかったんですよ。中学生の頃にインベーダーゲームの大ブームがあったんですけど、まったく興味がなくって完全スルーでしたしね。調べてみたところ、任天堂のファミリーコンピュータが発売されたのが、ちょうど、わたしが17才の時です。当時、コンピュータが一般家庭に入り始めた頃だったんですね。

 最終的にコンピュータ業界を選んだのは、候補にあがっていた他の仕事(計理士とか行政書士とか)は、いかにも上がつまってそうにみえたからです。コンピュータ業界は業界自体が若いので、働いている人たちの平均年齢も若いはずです。歩けなくなっても仕事がもらえるように、歩けるうちに経験を積んで、できるだけはやく上位レベルまであがっておきたい、という考えがあって、それなら層の薄そうなところを狙った方がいいんじゃないか、という考えでした。

 「コンピュータの専門学校に進むことにした!」と宣言したところ、友人たちに「へえ、そういうものに興味があったんだ」と言われ、「いや、触ったこともないからよくわからない」と答えたら「それで大丈夫なの?」と心配されてしまいました。

 もっと心配してくれたのは教師で、「この成績で理系に進むとか、何、考えてんだ」と言われました。文系教科(英語を除く)は学年内でもそこそこの成績をとってる(←子供の頃から本ばっかり読んでたから)生徒がなんで成績が芳しくない理系に進路をとるんだ、というわけです。この心配はもっともだよなあ、と思ったんですけど、考えはゆらぎませんでした。

 自分の稼ぎで喰っていける道への糸口をみいだした、ということと、家族以外でも自分のことを大事にしてくれる人たちがいる、ということは、わたしをずいぶんと前向きな気持ちにしてくれていました。

◆ 20代のわたしはさまよっていた ◆

 高校と専門学校を卒業したわたしは、無事、プログラマとして就職することができました。

 「足がダメになる前に、仕事ができる人にならなければ」と働き続け、何度も何度も「この仕事は自分に向いてない」と思いましたけど、そのたびに「でも、他の仕事じゃ稼げないし」と思いなおしました。自分に「好きで選んだ仕事じゃないけど、自分が選んだ仕事なんだし」と言い聞かせながら、プログラマという職業にかじりついてましたね。

 一度、なんかもういろいろとイヤになって、オペレータとかヘルプデスクの仕事をやってみたんですが、これならばまだプログラマの方が向いてるっぽい、と思って半年ぐらいでUターンしてしまいました(苦笑)。

 Uターンした段階で派遣の道を選んだんですが、一番、大きな理由は「正社員になったらSEにされちゃう」ってことでした。プログラマに戻る気はあっても、マネージャ職になる気がまるでなかったので。それと、足がどういう状態になるかわからないので、期限を区切った方がどのような状況になっても対応しやすいだろう、という判断もありました。

 足の方は、専門学校時代からじわじわと痛みがではじめ、20代の半ば頃に毎日どこかしらが痛くなるという状態になって、ようやく「歩けなくなる」というのは「足が動かなくなる」ではなく「足の痛みを我慢できなくなって歩けなくなる」という意味だったんだな、ということに気づきました(←遅すぎるから)。まあ、逆を言えば、我慢している限りは歩ける、ということです。

 そんなこんなで意地で働き続けていたら、365日24時間痛い、という状態になってしまって、さすがに厳しいので在宅勤務の道を探そうか、と考え始めた頃、医者から「手術をしませんか?」という提案が出てきました。

 それまで「手術」なんて言葉が出てきたことは一度もなかったので、かなり驚きました。「手術で治るものなんですか?」ときいたら「普通の人と同じになるのは無理ですけど、痛みは軽減できるはずです」という説明でした。手術後のリハビリに時間がかかる、という話も出たので「少しでも状況がよくなるんなら受けたいんですけど、もうちょっとお金を貯めてからでもいいですか?」と訊いたら、「あなたが痛みを我慢できるんなら先延ばしにしてもいいですよ」という答えでした。

 そんなわけで手術を保留にしたまま働き続けたわけですが、ある日、突然、我慢が限界に達しました。からだのしびれと呼吸困難で動けなくなって、駅のベンチでフリーズしてたら、救急車出動の騒ぎになってしまったんですね。

 駆けつけてくださった救急隊員さんが、「たまにね、ストレスためこんで、それでも外側を攻撃できない人が、内側を攻撃しちゃって、こんな症状を起こすんですよ。他人を傷つけるのは絶対にダメですけど、自分を傷つけるのもダメですよ。自分を大事にしないと」というお話をしてくださいました。自分の限界をまったく把握できてなくて、駅員さんや救急の方々にご迷惑をおかけしてしまったことを猛省しました。

 「これが今のわたしの限界だ。もしお金が足りなくなったら、未来のわたしにがんばってもらおう」と決意して、すぐに病院に行って、その時点で契約していた仕事の最終日以降で、もっともはやく手術できるスケジュールを組んでもらいました。

 そんなわけで、30才になってすぐに1回目の手術を受けることになりました。最初に言われた20才を10年も超えたのは、最初に診てくださった医者がヘボかったのか、温存作戦が予想以上に効いたのか、さだかではありません。

◆ 30代のわたしは新たな選択をした ◆

 1回目の手術を受けて、ようやくリハビリにはいれるようになった時点で、足の筋肉はほとんど落ちてました。骨と皮ばかりとはこのことか、って感じで、これでホントに歩ける状態まで戻せるのか、と不安になりましたけど、1年くらいかけて杖なしでも歩けるところまで回復しました。

 病院で知り合った方々と話をしていると、「これから先、仕事がどうなるか心配だ」という話題がよくでてきます。先に退院した方たちの話をきくと、みなさん、再就職に苦労していらっしゃいました。退院はしたもののいろいろと無理がきかない状態なので条件面でおりあわないとか、杖をついて歩いてるのをみた途端に断られたとか、なかなかシビアな話をきかされて、自分も仕事みつけられるのかなあ、とちょっと心配していたんですが、杖なしでは1歩も歩けない状況ながらもなんとか働けるんじゃないか、というところまで回復したところで次の派遣先を探したところ、意外とあっさりと次の仕事は決まりました。

 この仕事を選んだかいがあった、高校生のわたしは間違ってなかった、と思いましたね(笑)。実際、通勤には難儀しましたけど、それ以外の仕事上の不都合はありませんでしたし。

 以前よりも歩くのが下手にはなったけれど痛みはかなり軽減され、そのストレスから解放されたせいなのか、20代の頃の「この仕事に向いてない」と言いながらも積み上げてきた経験値がようやく使えるレベルに達しただけなのか、仕事が「わかる」ようになってきました。20代の頃につながらなくてもやもやしてた情報が、スムーズに統合できるようになったというか、頭のまわし方を覚えたというか。

 たまたまおもしろい仕事にめぐりあえた、というのもあって、コーディングが急速に楽しくなってきて、C++を覚えたらそれに拍車がかかりました。

 そして、「わたしはプログラマという仕事がとても好きなのかもしれない」と思えるようになっていた35才の時、仕事仲間に「きみをみてると、この人ってプログラマが天職だよなあ、って思うよ」と言われて、自分ってそういう風にみえるのか、とびっくりしました。

 高校生の時に単なる消去法で決めた仕事を、「喰っていかなきゃいけないから」という理由でやめられなくて、「仕事ができる人になるんだ」と働き続けた結果、よくわかってないのに選んだ仕事は「天職」になりました。

 その時に思ったわけです。「17才の自分には好きなことを仕事にできる意志も力もなかったけど、今の自分が意志をもって行動すれば、このまま好きな仕事を続けられる力を手にいれられるんじゃないか」と。

 今度こそ、「好き」で仕事を選ぶことを、自分に許してやってもいいかもしれない。「自分の稼ぎで喰っていく」という目標を「自分の好きな仕事の稼ぎで喰っていく」に変えてみよう。

 そんな決意は、今でもわたしを支えてくれています。

 ところで、40才になった時に計算してみたところ、30代の10年間で、4回手術して、合計で半年入院して、リハビリ期間も含めて1年半も仕事を休んでいました。

 そんな生活をしていたので、40才になるというのに貯金はほとんどないし、年金も未納部分が多いし(←だってお金がなかったんだもん)、自分の老後は大丈夫かいな、と思ったけれど、意外と悲壮感はなかったです。「借金せずにすんでるし、好きな仕事を続けられてるなんて、自分はラッキーだな」くらいに思っていました。

◆ そして、40代のわたしはいまだにプログラマで生きている ◆

 そんなこんなで46才になっちゃった現在、わたしはまだプログラマとして働いています。

 母親はわたしが30才の時に亡くなったんですが、ずっと「足の悪い娘を働かせなきゃいけないなんて」と嘆いていました。父親はそういったことを一度も言わなかったけれど、わたしが40間近になった頃、ぽつんと「おまえもそろそろいい年だし、足のこともあるし、あんまり仕事をがんばらなくてもいいんじゃないかな」と言いました。

 もしかして本心ではわたしを働かせたくないと思っていたのかなあ、と感じましたが、「でも、仕事が好きだからがんばりたい」と答えたら、「そうか。仕事が好きなのか。なら良かった」と言ってくれました。多分、20代の頃のわたしだったらそんなこと言えませんでした。「好きだから」とウソでも強がりでもなく言える自分になれててよかったなあ、と心底から思いました。

 足はたまに痛みますけど、状態は安定しているようです。「10センチの高さを落ちただけでも病院送りになる可能性があるから気を付けて」と注意されるくらい耐衝撃性能が低い足なので、油断はできませんけど。

 「スポーツはしない。旅行やレジャーも足に負担がかかるからあんまりやらない。よっぱらって暴れたりこけたりするのがこわいからお酒は飲まない。太ると足に負担がかかるからあまり食べない。少しでも体調を崩すと歩けなくなるので、できるだけ規則正しい生活をしている」という話をしたら、「そんな生活してたらストレスで死ぬ!」とか言われたんですけど、ストレスで死ぬ気配は今のところありません(苦笑)。

 そんなわけでわたしは「健常者」と「障がい者」のグレーゾーンを、杖を頼りによろよろと歩き続けています。不安や不満がないと言ったらウソになるけど、「好きな仕事で生活できている自分って結構、幸せな人なんじゃないの?」と思います。

 生まれた時の状況で、どうしようもなく決定してしまうものは確かにあります。けれど、それだけでその子の人生のすべてが決まってしまうなんてことはなくて、親をはじめとした周囲の人々が子供にどのようなメッセージを送るか、の方がよっぽどその子の幸不幸に影響を与えるんじゃないんでしょうか。

 わたしなんて父親から「かわいい」「好きだ」「大事だ」と言われ続けて育ちましたからね(←いまだに言われてるし)。そのおかげでこんな妙な感じに楽観的なキャラになりました(爆)。

 ところで最初の話題に戻りますと、わたしがプログラマという職業を選んだ理由は「足が悪かったから」です。以上。

我流言語習得術、あえて名付けるのなら、読書駆動習得術

2011/11/18 13:15:27

 ちょっと前にコーディングの進め方について書きましたが、今回はわたしなりのプログラミング言語の習得方法についてです。

 ちなみにこのやり方、はじめて言語を学ぶ方にはまったくおすすめできません。3つめ以降くらいでないと、まったく参考にならないんじゃないかと思われます。あと、かなり迂遠なやり方なので、とりあえずコード書きたいという方には不向きです。

 と、注意書きをしたうえで本題に入りましょう。

 まず、本を買ってきます。できるだけ厚い本を選びます。その言語をデザインした方が書いた本だとなおよいです。「分厚くて言語仕様を網羅した本を1冊だけ」というのが原則です。

 その本を1ページ目から行儀よく読みます。ページを飛ばしたり、おもしろそうなところから読むということはせず、「分からない」と考え込んでしまったり、前に戻ったりもしないで、「ふ~ん。こういうのがあるんだね」くらいの軽さでさら~っと読み進めます。

 この場合、重要なのは、「○○(例:C++)の書き方の方がエレガントじゃないかな」とか考えないことです。今までの嫁(=習得言語)はすべて里帰りさせるぐらいの気持ち(←本当に里帰りさせないように!)で、「今、アタックしている子が世界で一番の美人!」くらいの気持ちで読みます。「この本の著者は世界で一番の賢者!」くらいの気持ちもあると、なおよいです。疑惑は吸収速度を鈍らせます。疑うのは後でやればいいので、この時点では無条件で信じてみましょう。

 本を最後まで読むと、言語仕様を理解できるできないにかかわらず、その言語の思想というか目指しているものがなんとなく見えてきます。言語デザイナー自身が書いた本は特にそこらへんがはっきり出ます。

 全体像がおぼろげにつかめたところで、今度は「この文法はおもしろいな」とか「こういう仕様ははじめて見た」といった部分について記述しているところを読み直します。言語仕様の中でも特徴的と思える部分をピックアップして読み返していると、最初に一巡した時のイメージが補強されて、「この思想を記述するために、こういうやり方をとったのかなあ」ということがわかってきたりします。

 そうやって、ひととおり納得できたような気がしてきたら、また1ページ目から順序よく読んでいきます。今度は丁寧に、わからないところは何度も繰り返して、全体をもう一度、読み直します。

 ある程度、自分の中でのイメージが固まってきたところで、ようやくググってネットの情報をあさります。ここにいたるまで、わたしはいっさいWebを利用しません。あくまでも買ってきた1冊の本の中をグルグルします。

 一般的に、言語を習得するには、たくさんの人のコードを読むといい、とされていて、わたしもそれには同意しますが、初期段階では最初に選んだ1冊に載ってい るコードだけを読むようにしています。わたしが不器用なだけなんでしょうが、慣れてない言語でいろいろな種類のコードを並行して読むと、頭の中がいろいろと混乱す るので。

 Webの情報を読んでいると、「あっ、あれはこういう形で応用できるのね」とか「あれ? こんなことできるの?」とかいろいろでてきますが、ちょっとでも疑問が湧いてきたらそのたびに最初の1冊に戻って、関係する部分を読み直し、「これはわたしの解釈が間違ってた」と思うのなら自分の考えを軌道修正し、サイトの情報が納得できないようなら、別のサイトを探してみます。

 そうやって、本で得た情報を補強もしくは補正し、「この言語でコードを書きたい!」というわくわくが盛り上がってきたら、ようやく開発環境を整えて、コードを書き始めます。

 ここからは以前、書いたコーディング術にしたがって、コードを書いて動かして修正してをガンガン繰り返し、失敗例を積み上げていきますが、迷って動けなくなった時は本に戻ります。本に戻っても進展がなかったらネットを頼ります。本が絶対的に正しいとは思っていませんが(絶対的に正しいものなんてないと思う)、スタート地点を1つに決めておくと、迷子になりにくくなるような気がします。

 というわけで、本を読むことをベースにするので「読書駆動」と名付けてみました。

 現在のところ、わたしが仕事で使ってきた言語は1ダース以上です。よっぽど特殊な言語でないかぎり、そこそこ動くものをつくる程度でよいのなら、3日もあればマスターできます。

 そういう、さっさと文法を頭にたたきこんで、コードを打ちまくっていれば覚える、というのもありですけど、その言語のデザイナーが何を理想としているのか、何を美しいと感じているのか、何を不要だと思っているのか……そんなことを考えながら、じわじわとアプローチしていくやり方も楽しいものです。

 まあ、仕事のために急いで言語を覚えなきゃいけないことが多いので、こういうのんびりしたこと、あんまりできないんですけどね、実は(←いろいろとだいなしだ)。

 ちなみにこの習得術、最大の弱点は、最初の1冊を選び間違うと悲惨なことになる、ということです(苦笑)。

機械に弱い女

2011/10/26 10:30:04

 一般的に「女は機械に弱い」とされているらしいです。当然のことながら、世の中には「機械に弱い男」も「機械に強い女」もいるわけですが、わたし個人に限っていえば、自他ともに認める「機械に弱い女」です。

 子供の頃からメカものが苦手で、カメラもビデオデッキもまともに扱えませんでした。ちなみに、いまだにケータイがまともに扱えず、しょっちゅう電話を受け損なって、折り返しをするはめになります(←要するに、基本機能すら使えてない)。

 いったい何が悪いのかと考えてみたんですけど、いちいちパニくるのがよくないと思うんですよ。

 子供の頃からメカものに対する成功体験がほとんどないので、ちょっとしたことであわてふためいて、こわがって、あげくに「こんなもの扱えなくても生活できるしっ!」とかいう逃避行動にはしってしまい、結果、スキルがまったく向上しないわけです。そのうえ、それをどうにか克服したい、という気持ちがまるっきり起きないものだから、事態はまったく好転しません。

 SNSやゲームサイトのアップデートが行われた際に、「どうすればいいのかわかんない」「どうにかして~」「いや~、もう元に戻して~」という発言が、あちこちから噴出し、ネット界隈でバカにされるという現象をたまにみますが、プログラマとして「いやいや、ちょっと落ち着こうよ、きみたち。落ち着いてやればそんなむずかしいことじゃないよ。多分」とか思うわたしも、家電相手には似たような行動をとっているわけです。我ながら情けないです。

 しかし、そんなわたしはコンピュータという名の機械に囲まれて仕事をしています。

 業種的にハード的な問題にぶち当たることがあまりないので、周囲にはなかなか気づかれないんですが、ふとしたことでそういうメカおんちっぷりがバレてしまい、「だって、機械は苦手なんだよ~!」と叫ぶと、ほぼ100%の確率で驚かれます。

 その際、半分くらいの人は「まあ、プログラムを書く才能と、機械を扱う才能は別だからね」と納得してくれますが、残り半分の人は「ソフト屋でも、ハードをちゃんと扱えないとダメだろ」と怒ります(←そして、7割くらいの人が「なんでこの業界に来た!」と言う)。

 「テレビドラマのシナリオライターがテレビの構造について詳しくなくちゃいけないってことありませんよね!」という反論をこころみたこともありましたが、「それとこれとは話が違う!」と言われて、まったくそのとおりなので「ごめんなさい」と謝ってみたり。

 ちなみにこの言いわけ、業界外の人は「へえ、そういうものなの」と素直に納得してくれるので、いつも便利に使ってます。

 世間一般的には、プログラマはみんな機械に強いと思われているらしく、わたしの職業を知られると「わたしは機械が苦手だから絶対になれないわ」とか言われたりするんですけど、ケータイすら満足に使えない人が20年以上も生き延びていられたりするので、メカオンチはプログラマになれない、ということもないと思います。

 とかわたしが言っても、言いわけにしかならないんですけどね(苦笑)。

我流コーディング術、あえて名付けるのなら、失敗駆動開発術

2011/09/21 11:03:31

 隣の席に座っていた若手のプログラマに「コーディングしてる時、何を考えてますか?」と質問されたことがあります。しばらく考えてみた結果、出た答えは「5行先に書く予定のコード……かな?」でした。何故そんな質問をしたのか訊いたところ、他のプログラマは手を止めて考え込んでいる時間が結構あるのに、わたしはのべつまくなしにキーボードを叩いているので、「なんでこの人、手が止まらないんだろう」と不思議に思った、と言われました。

 わたしはコードをタイプしはじめたらほとんど手を止めません。考え事は手を動かしながらやります。

 とにかくずんずん進みます。「ここ、どう書けばいいのかなあ」と迷うことも多々ありますけど、手は止めません。どんだけへっぽこなロジックでも、どんだけださい変数名でも、とにかく打ちます。もっといい手がありそうな気がする時でも、その場でそれしか思い浮かばないのならそそまま書いてしまいます。なんにも思いつかない部分はすっとばします。調べなきゃいけないことが発生した場合、簡単に答えがみつかりそうなことは調べますけど、ちょっと時間がかかりそうな時はやはりすっとばします。

 コードを先に先にと進めながら、迷っていた部分についての解を探します。解がみつかったら、引き返して、迷って書いた部分を修正します。

 そんな感じで、主に5行先のコードを考えつつ、書いたコードを検証しつつ、迷ってる部分の解を探しつつ、変数等のネーミングの妥当性に悩みつつ、全体のロジックに穴がないかを検討しつつ、ひたすらキーボードを叩き続けます。めちゃくちゃ忙しいです。

 そんな荒っぽい書き方をしているので、最初のうちはかなりボロボロなコードになっていたりするんですが、気にせず突き進みます。まあ、人にはみせないようにしますけど(笑)。

 打つ手が完全に途絶えることもあります。その時は、わざわざ遠くの自販機までジュースを買いに行くとかして、取りあえず歩きます。それも、若干スピード速めで。指のかわりに足をしゃきしゃき動かしていると、打つ手がひらめいたりするんです。

 そうやってノンストップでコードを打ち続けていると、定時になるころには集中力が燃え尽きているので、さっさと帰ります。この燃え尽きっぷりがなかなかに悲惨なので、大抵のリーダーはつきあいはじめて1カ月もすると、気安く残業を頼んでこなくなります(苦笑)。

 ちなみにわたしは基本的に8時間睡眠です。とにかくやたらとよく寝る人です。

 朝イチの時間帯は、前日に「あとで調べておこう」と思っていたことを調べたり、迷っていた部分のコードを見直します。一晩、寝ると、何かが整理されるものらしく、調べものにしてもある程度、的が絞れるようになるし、前日にはこんがらがっていたものがすっきりしてみえたりするのです。

 ここらへんの時間帯は比較的、のんびりめに行動してますね。コーヒーを飲みながら、ゆっくりと考えます。

 そうやって、前日分の宿題を片付け、仕様書を再確認し、コード全体を大ざっぱに読み返し頭の中でロジックを再調整したら、また定時になるまでひたすらキーボードを叩き続ける、というのがわたしの基本的なコーディングのすすめかたです。

 そんな様子が周囲の人たちには異常行動(笑)にみえるようなんですが、わたしだって最初っからこんなやり方をしていたわけではありません。

 昔、リーダーに「一を聞いて十を知る、って言葉があるけど、おまえの場合、十まで納得しないと一から動き出さないな」と言われたことがあって、その時は「そういう性格なんだから仕方ないじゃない。ちゃんと締め切りは守れてるし問題ない」という考えだったんですけど、何年かたってから「このままじゃダメな気がする」というふうに変化したんですね。

 全部、納得できたところから動き始めようとすると、どうしてもスタートに時間がかかってしまいます。スケジュールに余裕がある時はいいんですけど、短納期の場合、出遅れ分を取り戻すのは大変です。「これからは短納期の仕事が増えていきそうだし、このままだとプログラマとして食べていくのはむずかしいんじゃないか?」と考えた結果、「一しか分からないんなら、一だけで動き出そう。材料がそろわないとかぜいたくいってる場合じゃない。とにかくなんでもかんでも試してみて、そこから納得できる材料をみつけだそう」と決めたんです。

 「失敗しても気にしないようにする」と自分に言い聞かせても、エラーが大量発生するとヘコんでしまって、「やっぱりもうちょっとじっくり考えてから……」という気持ちがどうしても出てきます。そんな感情をふっきるために、とにかく悩む時間を自分に与えないようにしないと、と思って、「手を止めないこと」を意識しながら、キーボードを叩きつづけました。

 そういったことをなかば意地になって続けているうちに、失敗作をつくらないように注意深くやっているよりも、失敗作をつくりまくってる方が楽しいと感じるようになりました。

 どれだけ失敗を重ねても、1つの成功さえ生まれれば、すべて帳消しになります。というか、「ふっふっふっ、ついにゴールにたどりついてやったぜ」的な達成感が上乗せされます。いつしか「また失敗した……」というネガティブ思考が、「NGパターン発見! 1つ賢くなった!」というポジティブ思考にすりかわっていました。われながら単純です(笑)。

 結果として、やり方を変えてから、仕事のスピードもあがりましたし、集中しやすくなったせいかバグもかなり減りました。なによりコーディングをするのが楽しくなりました。

 というわけなので、タイトルに書いた「失敗駆動」というのは「失敗を糧にして前に進む」ではなく「失敗を楽しみととらえて、それをエネルギーに走り回っていれば、いつかはゴールにたどりつくさ」という意味だったりします(←なんか変態さんっぽいぞ!)。まあ、仕事でやっているんですから、当然、しめきりまでにゴールにたどりつく、というのは必須条件なので「いつか」ではマズいんですけど(苦笑)。

 ソフト屋さんでよかった、と思うのは失敗が自分の中でおさまっているうちはほとんどコストがかからないことですね。ハード屋さんだと材料費とかいろいろありますから。

 ところでこのやり方、一歩間違えると、同じところをぐるぐるしてるだけの永久ループ状態になってしまいます。失敗は許容しても、同じ失敗を繰り返すことは許さないように、自分を戒めつつ、キーボードを叩き続ける毎日です。

@IT Special 注目企業
@IT Special ラーニング

エンジニアライフ 最新の投稿コラム

@IT自分戦略研究所 新着記事

エンジニアライフ スポンサー

コラムニスト プロフィール

ひでみ
キャリア20年超。今はちっちゃな会社でプログラマやってます。定年までプログラマのまま居座るつもりです。

2012年5月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

バックナンバー

月間バックナンバー

検索

Powered by TypePad
- PR -
@IT Special 注目企業
インデックス

@IT Special ラーニング