プログラマとして語り継ぎたい10の言葉
祝! エンジニアライフ10周年! おめでたい!
ということで、10をキーワードにしたコラムネタを考えた結果、これまでプログラマをやってきてなんだか記憶に残ってる先輩や同僚の言葉を書き連ねてみよう、という謎の発想に至りました。
どなたかとネタかぶりしてないとよいのですけど......ドキドキ。
1.バグのないソフトウェアは存在しません
専門学校で最初に教わったことです。
当時は「しょっぱなから絶望を教えるとはどういうことだ」と思ったんですが、今では、最初に教えるべきことだな、と思っています。
プログラミング教育の教科書にぜひとも載せていただきたいです。
バグを認めつつ否定する、という矛盾と格闘することが、プログラマとして生きていくうえで大事な心意気だと思っています。
2.コードを書いてる時は、自分は天才だからちゃんと考えれば絶対できる、と思え。デバッグをしてる時は、自分はバカだから絶対つまんないミスしてる、と思え
先輩に言われた言葉です。
「それじゃあ二重人格じゃないですか」と言ったら、「プログラマは二重人格ぐらいでちょうどいい」という答えがかえってきました。
多重人格はともかく、感情の切り替えがはやい人はプログラマに向いてるような気がします。
「なんでこんな頭悪いバグだしてんだよ、オレ~!」とか呻いていた1時間後に「このロジックすごくない? オレすごくない?」と上機嫌になるような人が、メンタル的には最強適性だと思います(←こういう人は実在する)。
3.C/C++が一番好きとか言うプログラマはみんなマゾ
「Stroustrupの『プログラミング言語C++』からC++に入って挫折しなかったやつもマゾ」とも言われました。
わたしはドMらしいです......。
4.プログラマなんていつまでも続けられる仕事じゃないよ
これは複数の人から聞きました。語り継ぎたいわけではないんですけど、記憶に残るというか、ずっとひっかかっている言葉です。
経験2,3年でやめていくプログラマは数多いです。そういう人たちはだいたい「自分はプログラマに向いていないと思います」と言います。そういうのは、プログラミングは誰もが適応できるものじゃない、とあきらめています。
でも、10年くらいプログラマやってて、ちゃんとしたコードが書けて、そこそこ楽しそうにやってたのに、「これ以上、続けられない」と言ってやめてく人がいるのは、なんだかもやもやするわけです。
なんか10年目くらいで先のことを考えた結果、「これ以上は無理!」ってなるらしいんですが、それがよくわかりません。
いろいろな理由があるとはわかっていますが、どうしても「いつまでも続けられない仕事」とはわたしには思えず、30年もプログラマを続けています。
でも、先のことを考えても絶望しないわたしの方がマイノリティらしいんですよね、う~む。
5.プログラマって時代の最先端っぽく思われてるけど、やってることは家内制手工業だからね
これは同僚が言った言葉です。「家内制手工業」という表現はなんだか腑に落ちます。
ドラマとかでおしゃれなオフィスでアーロンチェアに座って、ディスプレイを4枚くらい並べて、キーボードをカシャカシャやってるプログラマの画がでてきたりしますが、囲炉裏ばたで身を寄せ合って黙々とわらじを編んでいる画の方が、プログラマっぽいイメージです。
異論は認めます......ていうか、誰かに異を唱えて欲しいです(←プログラマはかっこいい職業だ、と思いたい気持ちはある)。
6.考えろ。思考を惜しむとバカになるぞ。バカなプログラマはいらないぞ
なんかやらかして怒られた、とかではなく、わたしが書いたコードを読みながらぼそっと言われました。かなり怖かったです。
同時に「わかるんだ」と思いました。実のところ、途中で疲れちゃって「まいっか」と思って提出したコードだったので。
プログラミング言語には感情を伝えるような語彙はまったくないんですが、それでも伝わってしまうものがあるんですよね。「あっ、ここから混乱してるな」とか「なんか楽しそう。この人、この系統のコード書くのが好きなのね」とか。
7.あってるけど美しくない
プログラマじゃない人には伝わりにくい言葉かもしれません。強いて言えば「正解だけど、その上があるよね。そこ目指そうよ」みたいな意味です。
コードレビューではじめてこれを言われた時は「なに言ってるんだろう、この人」な感じだったんですけど、数年後には自分も言うようになっていました。
慣れというのはおそろしいものです。
だいたい、日常会話で「美しい」って言葉あんまり使わないですよね。「きれい」ならともかく。
でも、「美しいコード」と「きれいなコード」は違うような気がしますね。なんとなく。
8.昨夜、小人さんが出たんだよ。『小人の靴屋』って知ってるだろ? あれ! 仕事おわらなくて徹夜でなんとかしようとしたのについ寝ちゃって、でも、起きたら書いた覚えのないコードが打ってあったんだ!
すみません、先輩。本気か冗談かわからない顔でそういうこと言わないでくれますか? めっちゃ不安になるんで。あと、その"小人さん"は先輩だと思います。わたしが帰る時、先輩しか残ってなかったので。
と、その時はいなしたんですが、その後、わたしの元にも"小人さん"は現れました。
いや、ほんとに現れるんだな、小人さん。
9.無事に明けたね
2000年問題対応でドタバタがあったものの、なんとかトラブルなく年越しができて、正月明けに出勤したら、そんな言葉がきこえてきました。
"無事"を守るためにたくさんのプログラマがたくさん働いていました。その働きが報われたことに、みんなほっとしていました。
「何もしてないのに壊れた」という言葉に悩まされるエンジニアは多く、「何もしてないのに壊れるわけないだろ!」という叫びがよくきこえてきますが、実際には「何もしてないと壊れる」社会なんですよね(まあ、PCの場合はだいたい「何もしてない」と言ってる人が何かやらかしてますが)。
技術が発達すれば、誰かがまじめに働いていないと無事を維持できない、という状態から脱却できるのかもしれませんが、今のところはまだ一部の職業の人たちが全力で守っていかないといけなくて、プログラマもそこに含まれているわけです。
正直なとこ、「大変な仕事選んじゃったな」と思います。
10.自分で説明できないコードを1行たりとも書くな!
社会人になって2,3ヶ月くらいの時に言われたと記憶しているんですが、いまだにプログラマとしてのわたしを支えてくれている言葉です。
プログラミングコードはすべての行に意味や意図があるべきで、1行たりともそういうものをないがしろにしてはいけない、という意味だとわたしは解釈しています。
でもいまだに徹底できてなくてバグだして、「ああ、説明できないコード書いてたわ」ってなります。情けないです。
この言葉、「自分で説明できない」ってところが重要ですよね。これが「わからない」だったら1行も書けなくなりますよ。
コメント
elcaminoreal255
#4以外、すべて激しく同意。
仲澤@失業者
では、じしいのリザルトを
1. ですね。
2. 天才的なバグが仕込んであると思ってます(10.を見よ)。
3. ってか、お子様向け言語は我慢が大変。
4. いつまでもやれてるし、楽だし。
5. よみびとしらずの文筆業かも。
6. そんなコードにいちいち大脳使ってんじゃねーよ。
小脳で書け。反射神経で書けるだろうがヨ。
7. バグってるけど美しい方が好き。
8. 小人さんは友達(確信)。
9. 次は2038。けど多分死んでるな>>自分。だれか見届けてくれ。
10. 他人に見つかるようなバグを書いたら切腹(みっともない)。
でした。
kaie
やはり似るもんなんでしょうか(笑)
1.について、完璧を求めすぎるあまり作業が進まなくなってしまった僕に先輩が
「99%不具合のないOSに、僕らが作ったソフトがのって、何しでかすかわからんユーザーが使うんだから、まともに動いてる方が奇跡なんだよ」と言われましたねぇ
4.は認めたくないなぁ(汗)
7.は同じ思いの人がいたのかとちょっと嬉しく思いますね。
綺麗事ではなく、本当に美しいと思えるものやことを成したいのかもしれません。
yukinag
いやー 真理ですね。
ひでみ
こんばんわです。ひでみです。
いつもたくさんのコメントありがとうございます。
elcaminoreal255さん
できれば#3も同意しないで欲しいです。。。。
仲澤@失業者さん
「よみびとしらずの文筆業」はすてきな表現ですね。
そうか……プログラマもある意味文筆業か……。
kaieさん
そうですね。このコラムの感想を方々からいただいて、プログラマを続けている人たちは、同じようなとこでつまずいたり、似たような感情や体験を重ねてたりするらしい、と感じました。
かなりうれしくて、このコラムを書いてよかった、と思いました。
yukinagさん
すべて実感のこもった言葉ですからね~。うっかり真理をついちゃうんでしょうね(笑)。
Marbou
こんばんは。
還暦プログラマです。
高校時代の8080機械語からやってます。
今では、経営・営業・提案(ハード含む)・ヒアリング・要件定義・設計・・プログラミング~全行程やってます。
現在も”C”言語で画像解析を書いてますよ。(あまり進んでませんが)
今思うとコンピュータを介して自分の存在意義を求めているのかもしれません。
特に ”美しいコード” は大共感です。
美しいコードが書けたときはとても充足感を感じます。(M?、ナルシスト?、笑)
見やすく、簡潔で、詳細仕様見なくても分かるコメント、実行速度を意識したコード、バグの出にくい書き方、ネストが少ない、変数名や処理名の名付けセンス、他人が読むことを前提にしてる(メッセージ、主張が読める、熟慮が見える)、等々
皆さん忙しい仕事ですが、決してやっつけ仕事にならないようお願いします。
大量のプログラムが世の中を支えていますので。
まだまだプログラマやりますよ!!