読者です 読者をやめる 読者になる 読者になる

プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

昔X68000というパソコンがあった

じゃあ「すごく良いお店で閉店して欲しくないお店」を閉めさせないようにするにはどうすれば良いのか? 答えは簡単です。ちゃんと通えば良いんです。

「予約の取れない店」が3年で閉店に追い込まれる理由 (cakes) - Yahoo!ニュース

X68000というパソコンがあった。

そのパソコンはCPUからアーキテクチャに至るまで、今までにない全く新しいコンピュータだった。当時としては広大なメモリ空間がフラットに扱えるモトローラMC68000をCPUとして採用し、多くのスクリーンモードを持つ高機能なグラフィックプロセッサを搭載したX68000には、私を含めて多くの人が衝撃を受けた。

X68000 - Wikipedia
X68000は死なず? ~20年の時を超えて筐体復刻の動き~|APPREVIEW

非常に話題性はあったのだが、専用モニター込みで500,000円(!)という、当時のPC-9801 2台分ぐらいの価格で、購入に至った人は多くはなかったと想像している。私はソッコーで予約し、発売日にゲットしましたが :)

そんな状況に加えて

新しいアーキテクチャであったため、ソフトの発売本数も極端に少なく。ゲームソフトが出るたびに何か買ってたような気がする。よく当時のことを振り返って「X68000がなくなってしまわないようにユーザが買い支えていた」という記事を見ることがあるけど、ぼくの感覚ではみんなX68000で動くソフトウェアに飢えていたという感じがある。

そう。ぼくらユーザは、X68000の性能をフルに活かした、未だ見たこともない映像とサウンドに期待してソフトを買っていたんだ。あの美しい画面とサウンドを堪能したい。そんな感じだったと思う。心のどこかで「まあマイナー機種だから、なくなってもしょうがないよね」って、どこか冷めた目で見てた。

そのうち徐々にソフトの販売本数も増えてきて、X68000は黄金期を迎える。PC界がDOS/VWindowsへ移行していく中で、X68000のソフトウェアは徐々に減り始め、それと共にX68000を使うことも少なくなっていった。起動しなくなったとはいえ、本体は今でも実家で眠っている。

どんなにハードウェアやアーキテクチャが優れていても、ソフトウェアがなければどうにもならないという、至極当たり前の昔話。

記事を見て

そんなことを思い出しました。

ぼくは「空気を読め」という言葉がキライだ

ぼくは「空気を読め」という言葉がキライだ。

学校で職場で、その他あらゆる所で聞く/あるいは感じる「空気を読め」という言葉/雰囲気。言語化されることは少ないけど、以前学校の先生が生徒たちに向かって言っているのを聞いてあ然としたことがある。たぶんその先生は「今すべきことは何か考えろ」って意味で言ったんだろうけど、「空気を読め」って言葉を使っている時点で、ふだん生徒にどう接しているかが垣間見れたような気がした。

同様にぼくは学校がキライだった。常に予定調和を求められ、みんなと違うことを良しとしない雰囲気に息が詰まりそうだった。今思えばあれは刑務所のようだったな、って思ってたら、ネットで同じことを考えてる人がいて安心した覚えがある :)

これは社会人になっても変わらない。わりと個性的な人が多い会社の人たちにすら「アイツは変人」と言われる始末(笑) 会社が期待するような社員ではなく、ソフトウェアエンジニアであることにこだわり続け、会社を何度か渡り歩いて、現在に至る。

周りからは「アイツは空気の読めない奴だ」と思われているだろうな。でも、人生の選択による結果を他人のせいにはしたくないんだ。人生はそんなに長くないのだから、失敗だとしても自分が選んだ道を進みたい。

こんな変人を雇ってくれた/くれている人々には本当に感謝している。ワガママなやつでスイマセン^^;

厚切りジェイソン「空気を読むな、自分で考えろ」SLUSH ASIAで日本人の悪習をぶった切る - ログミー

人はなぜコメントを書くのか

コメントを書かないっていうのはちょっと極端な気がするけど、私もコメントは少なめ。

筆者が勤めている会社では、原則、プログラムにコメントを書かないのがルールです。

プログラムにコメント書かない文化もあるよって話 - NZ MoyaSystem

(ズボラだからだけどw)私も基本コメントはあまり書かない。自明であることを書いてもしょうがないしね。「なぜこんなことをする必要があるのか」っていう時に補足として書く。私のコメントの書き方についてはこんな感じ

あと上記記事に書いてないこととして、ソースコードの可読性を上げるため、自明であっても処理ブロックや関数/メソッドごとにコメントを挟むことはよくやる。コメントが全くないソースコードは、なんか窮屈に感じる。まあ好みだとは思うけど。

コメントを書く理由としては

ソースコードの可読性を上げるため、ということになるんだろうけど、個人的には人がコミュニケーションを取りたいからなんだと思っている。誰かに読んでもらいたいんだよね。TODOやFIXME入れておいたり、「なんか分かんないけど、こうしなきゃダメ」とか「なんでこんなことしてんだよ!」とか書いたりね(笑)。コードを通じて会話したいからみんなコメントを書くんじゃないかな。ボクもそう。そういう欲求がなければ、わざわざ面倒なコメントを書いたりしないと思うんだよな。

そういう意味で、人のコメント読むのって好きなんだよね。「ああ、ここはこんなこと考えて書いたのね」とか見えるのが楽しい。無味乾燥なロジックに、書いた人の人間を感じて親近感が湧いてくると、ソースコードを読むことが楽しくなってくるんだ。

え、そんなの私ぐらいですか!? ^^;

プログラマとして普通にキャリアを積めるような業界になって欲しい

ソフトウェアエンジニアのキャリアパスが用意されていないことが最大の問題。

各所でプログラマー不足が叫ばれる昨今。にもかかわらず、企業で働くエンジニアの中には、勤め先の要請によって「開発業務(コーディング業務)」から身を引かねばならない人も少なくない。なぜ、このような矛盾が生まれるのか。エンジニアが「好きな開発」と「キャリア形成」をうまく両立させる方法はないのか?データ分析と著名人対談を通じて考える。

「コードで食っていく」は何歳まで可能か?エンジニア300人調査で見えた理想と現実 - エンジニアtype | 転職@type

もう何度もこのblogで言っているので細かいことは書かないけど、要はソフトウェア技術者として正当に評価されて、それに応じた給与をもらえるという企業が(外資系も含めて)日本には本当に少ないのですよ。

プログラマとして経験を積み、これからが楽しいところ!って思ったら「そろそろ下の面倒を見てね」なんて話が来る。従えばプログラミングは出来なくなるけど、給料は上がる。そのままプログラマを続けても給料は上がらず、下手すりゃ左遷。どうすべきかなんて明白だよね。それでもプログラミングしたい!っていうyasuhoみたいな変人しか残らない(笑)

やはりプログラマとして普通にキャリアを積めるような業界になって欲しい。単にプログラミングの仕事をしたいだけなのに、なみなみならぬ情熱と覚悟が必要なんて、業界が衰退していくだけだよ。

あと

これは蛇足だけど、つまらない作業でプログラマを疲弊させる企業多すぎ。スペックは大事だけど、大した機能じゃないのに、つまらない定型フォーマットで何十ページも仕様書を書いて承認を得なければならなかったり、自動化が困難なマクロバリバリのExcelシートをメンテナンスしたり。アジェンダの不明確な会議(それも一つや二つじゃない)に延々と付き合わされたり…

そういうことが仕事だと思っている企業が多いんだよ。支出を抑えて利益を上げるのが企業だと思うんだけど、なんか長時間労働する人がエライっていう風潮は何なんだろう。優秀な技術者ほど、時間をかけずに仕事を終わらせるもの。そういう人たちのパフォーマンスを最大限に発揮できる環境を提供すべきだと思う。

ともあれ

プログラマのことを理解し、パフォーマンスを最大限に発揮させてくれる企業が増えてほしいと切に願います。

なぜアメリカのソフトウェア企業が優秀なソフトウェアエンジニアに快適な開発環境と高額な報酬を提供しているのか。日本のソフトウェア企業におかれましては、ぜひ今一度考えて頂きたく存じます。いやマジで。

とか書いてたら、いいインタビュー記事があった。こんなblog読んでないで、こっちを読みましょう(笑)

生涯「エンジニア」として食っていくには何が必要?及川卓也氏×田中邦裕氏の答え - エンジニアtype | 転職@type

あなたの会社は、プログラマを大事にしてくれていますか?

大事なことは、その会社がプログラマを大事にしてくれるかどうか、ってことだよね。

プログラマーとして就職するならその会社の体質として技術理解度がどれほどかという点はしっかり見た方がいいです。

技術理解の浅い会社にプログラマーとして入社すると辛いよという話 - プログラミングとデザイン、スタートアップの話

モチベーションの高いエンジニア...

ガンガン働いてくれそうで、
放っておいても安心でしょうか?

安心してください。
簡単に下げられますよっ!

["エンジニアのモチベーションを下げる方法 - jfluteの日記]

記事を見てて思ったのは、プログラマが会社に対して不満に思うことの多くはプログラマであるその人の技術や能力に敬意を評しているかということではないかということ。

例えば

給与の額、残業時間の長さ、人間関係、といった部分はもちろん大事ではあるのだけど、会社や個人ではどうにもならない部分もある。人が誰かと関わって仕事をする限り、それらが全て完璧ということはあり得なくて、自分なりにどこかで折り合いつけるしかない。

でも、プログラマをリスペクトとまでは行かなくても、会社にとって必要な存在であり重要であるということを理解しているかどうか、だけは折り合いつけるべきではないと思う。単価が安いからという理由だけで若い人をこき使うといった会社は言語道断。その人のプログラマとしての技術と価値を見てくれる会社でないと、結局その人は不幸になってしまう。

とはいえ、会社が自分にとっていいかどうかは個人差もあり、自分の上司との関係だったりもするわけで、結局は人間関係に行き着くのかもしれない。自分の場合、人間関係は自分の努力でどうにもならない部分があるから社風を重視するようにしているけど、人間関係が大事ではないというわけじゃない。

しかしながら

会社がそういったかところどうかを見極めることは非常に難しい。というか、たぶん100%の方法はない。会社と社員との関係は、恋愛関係に似てると思う。最初はよく見えたんだけど、付き合ってみたら思っていた人と違った、なんてことは普通にあるよね。でもその人と付き合ってみないと、相性なんて分からない。

身も蓋もないけど、結局のところ会社は入ってみないと分からないのだ。様々な事情や人それぞれの考え方はあると思うけど、自分が合ってないと感じたら、積極的に配置転換や転職をすべきだと思う。個人的にはネガティブな感情で転職することはオススメしないんだけど、自分が壊れちゃったら元も子もないものね。

あなたの会社は、プログラマを大事にしてくれていますか?

プログラマって人と関わらなくてもいいの?

いやいやいやいやいやいやいやいや。

クライアントや、社内での打ち合わせの時に人と接する場面はありますが、いったん作業に取りかかると、自分一人で行う作業となるため、人と接する場面は少ないと言えます。

人と関わらない仕事ベスト15 孤独に一人で稼ぐ!

そんなことない。

この「作業」ってのは

文章を読むにコーディングやデバッグのことだと思うが、プログラマがその作業に費やす時間の比率は低い。もしここに多くの時間をかけているのであれば、それはプログラムの仕様が固まっていないのだ(書いてて胃が痛くなってきた^^;)

誰かが実現したいことをプログラムで実現するのがプログラマの仕事。その「実現したいこと」ってのは大抵曖昧で、プログラムのことなんて考慮されていないことが多い。仮にしっかりとした要求仕様があったとしても、それを作った人の意図を全て理解するなんてあり得ない。プログラムの細かいところを考えていくと、さらに疑問が湧いてくるだろう。そこには要求者との会話が必ず必要になる。

会話をしないでプログラムを作るとどうなるか。「コレジャナイ」ってなる。作りなおす。まだちょっと違う。時間はどんどん過ぎていく。やがてプログラムは他の誰かが作ることになる(これも書いてて胃が痛い^^;)

メールやチャットでいいんじゃないかって?

文章で伝えられることなんて、本人が思っているより、ずっと少ないよ。受け取り側は自分の考えや価値観で判断するしね。そもそも会話した方が早いことが多い。あとで言った言わないにならないよう、あえてメールにすることはあるけど、それは話した結果の確認であることが多いよ。

いずれにせよ、プログラマは人とあまり会話しなくていいということは断じてない。

あと

独立すると、会社に通ったり同僚や上司との付き合いもなくなりますので、ますます人と関わらずにすむようにすることも可能です。

独立したことはないけど、逆では。自分で営業とかプログラミング以外の仕事もしないといけなくなるでしょ。会社勤めより、ずっとコミュニケーション能力が必要になると思うんだけど、どうかな。

ふだん反論とかあまりしないんだけど、これを読んで誤解する人が出ないよう、あえて反論させていただきました :)

コンピュータの仕組みを学ぶにはどうしたらいいの?

さすが古くからコンピュータに親しんでいらっしゃる、すがや先生!本質を掴んでいらっしゃいますね :)

- 子供がプログラミングする意味についてどう思われますか。

 論理的に考えられるということと、仕組みを理解できるということが大事ではないかと思います。問題解決というか物事を判断して実行するときには、論理的に考えて冷静に行動すべきときがいろんな局面であるでしょう。また、物事のブラックボックス化に甘んじるのではなく、中身を理解することも重要です。例えば、Javaプログラミングでもライブラリを使うだけではなくて、その中身も理解しておくべきだと思います。そうでないと、いざというときに応用が利かないと思います。そもそも私自身、仕組みが見えないと嫌なんです。

(3/3)子どもたちにプログラミングを教えよう!イベントレポート - 自分が楽しい世界を知らせたくて描いた『こんにちはマイコン』:ITpro

子供達がプログラミングを学ぶ上では、両方学んだ方がいいと思うのだけど、前者はともかく、後者はなかなか難しいかなあ。

プログラミングの本質であるアルゴリズムや論理的な思考力という意味では、scratchとかがいいと思う。小学校四年生の息子にscratchを消化したら、ちょこっと説明しただけで基本的なところは出来るようになってしまった。きっと感覚的に覚えられる世代なんだね。いいなあ、脳みそが柔軟で :)

さて

コンピュータの仕組みとなると、どうだろう。昔はプログラミングの本の最初の方には必ずコンピュータの原理の説明がしてあって(今も書いてある本はあるけど)プログラミングを学ぶと、自然に学ぶことができた。ハードウェアが今よりずっと単純で分かりやすかったことも良かったのだと思う。BASICからI/Oを叩いて動きを確かめるなんてことも簡単にできた。基本的にコンピュータはハード/ソフト含めて全部自分の手のひらの中にあった、または個人でどうにか出来そうと思わせるぐらいコンパクトだった、というのは大きいと思う。

今はハードウェアもソフトウェアも高度化した。今のコンピュータは抽象度が上がり、中身は完全にブラックボックスだ。とてもじゃないけど、個人で簡単にできそうってレベルじゃない。今やアセンブラですら書いた通りのバイナリコードにならない…

プログラミングに限らず、コンピュータの動作原理を理解するには実践あるのみだと思っている。本を読んで完璧に理解したと思っても、実際に動かしてみると想像をつかなかったことが起こる。そこで初めて本に書いてあった「なんでこんな注意が書いてあるんだろ」が実感できる。いや、書いてないことの方が多いだろう。そういうことを繰り返すことで、初めてコンピュータは理解できるものだと思っている。

今コンピュータが学べそうなのは

Arduinoとかかな。でもLEDを光らせるぐらいだとちょっと地味すぎるし、とっつきも悪い気がする。IchigoJamあたりはいい線いってる気がするけど、ちょっと大きなプログラムを作るには容量が足りないかな。いずれもハードウェアに詳しい人のオモチャで、初心者が気軽にという感じじゃないんだよな。

そういう意味で

昔のパソコンの復活を希望します。

それが言いたかったんだろうって!?そらそうよ。yasuhoの脳みそは8bitで出来てるんで、しょうがないっす :b