プログラマyasuhoの隠れ家

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

世の中の半分ぐらいの人はプログラマになれるそうです

逆に言えば40%もの人にプログラミングの素質があるということで、それはけっこうスゴイことなんじゃないの!?専門性を必要とするソフトウェア以外のエンジニアや芸術家・音楽家なんかはそんなに高くないでしょ!?こりゃもうみんなプログラマになっとけ、って感じなのでは :)

ふたこぶラクダという名前で知られている有名な論文がある。この論文では、60%の人間にプログラミングの素質がないと推定している。

本の虫: 60%の人間はプログラミングの素質がない

ちなみにうちの息子(小学校高学年)にscratch教えたら、他の人のプログラムとかチュートリアルとか見て、あっという間にプログラム作れるようになってました。いいなー。その柔軟な脳みそ欲しい^^;

息子やいろんな人を見てると

プログラムが出来る出来ないの差って興味があるかないかっていうのが出発点になっているような気がしました。ここが最初の分岐点。

で、次のステップは、プログラマにとって重要な「教えなくても勝手に自分で調べたり試したりしてモノにしていける」かどうかで、それはコンピュータを使って自分のやりたいことが明確になっているかどうかなのだと思います。「これを実現したい」->「じゃあどうすればいいか」->「なるほどこうすればいいのか」->「じゃあこれを実現するには」というループが自然にできている人は覚えるのが早いです。

あとは何か分からないことがあった時にアドバイスをくれる人も重要かな。それも答えを教えるんじゃなくてヒントをくれる人がいい。そうすれば理解した喜びを味わえて、学習のモチベーションが上がり、どんどん学んでいけます。

「好きこそ物の上手なれ」とは、昔の人はよく言ったものです。

コンピュータさえあれば

自分の望むものを作ることができて、結果がすぐに分かる。作り直すのに部品屋さんに行く必要もない。何かを作るという点において、コンピュータソフトウェアほどお手軽なものはないと思います。慣れるとパズルゲームのようで、とても楽しい。パズル好きの人はきっと気に入ると思う。

世の中の半分ぐらいの人は素質があるわけですから、あなたもぜひプログラミングを初めてみては!? :)

あなたはなぜプログラマをしているのですか?

子供向けプログラミング講座が大人気らしいですね。私も妻によく「息子にプログラミング教えてよ」と言われます。

でも、こうも言われます。「息子は絶対プログラマにはしない」と。なぜかと聞くと「遅くまで仕事させられるわりには給料が低い。業界自体がブラックだから」だそうです…

「スタートアップならハードワークは当然」「この業界では定時帰宅なんてムリ」…

ワタミの失敗〜「善意の会社」はなぜブラック企業の代名詞になったか(新田 龍) | 現代ビジネス | 講談社(1/2)

妻の認識は大体世間一般の認識と一致しています。IT業界は大方ブラックというのが通説になってますね。ネットで検索すれば多くの「IT業界の悲惨な現状」を目にすることができます。さらに「そんなのはウチに比べれば全然大したことはない」と、不幸自慢大会が始まります(笑)パロディ漫画のネタも枚挙にいとまがありません。

確かにそういった側面があるということは否定しません。下請けであるが故に無茶な仕様変更に対応せざるを得ないケース。大企業であっても見込みの甘さからデスマーチに突入するケース。残念ながらそういったことは少なくありません。

でも

IT企業の全てがそのような状況というわけではありません。バブル経済の時代、私も基本給より残業代の方が多いということもありましたが、現在は長引く不況により、多くの企業は残業代を削減する方向へ向かっています。会社にもよるが、昔のようなムチャな残業は全体としては減っている印象ですね。

加えて近年はフレックスタイム制など、作業時間を比較的自由にできるようになってきました。まだまだこれからではありますが、だんだんとプログラマの価値を企業が認識してくれるようになってきてはいます。

あなたはなぜプログラマをしていますか?

人によって理由は違うと思うけど、多くの人はプログラムを作ることに喜びを感じているから、プログラマをしているのではないですか!?

初めて作ったプログラムが動いた時の喜び。ずっと分からなかった問題の原因が分かった時の爽快感。苦労して作ったソフトウェアがリリースされた時の達成感。そういう気持ちがあるから、プログラマを続けているのではないですか!?

別にウソを言えとは言いません

でも不幸な現状を嘆くだけではなく、できれば前向きな提案もして欲しいのです。プログラミングに興味を持つ若い人たちに、希望を感じさせるようになって欲しいのです。

そして、嬉しいことがあった時は、ぜひその気持ちをシェアして欲しいのです。プログラミングって、こんなに楽しいんだよって :)

転職って、運だと思う

求職者は求人票を見て、この企業に入ったらどんな環境で開発するのか、どんな人達とどんなふうに働くのか…というように「そこで働く自分」をイメージします。情報が少なすぎる求人票では、「どんな会社かわかりにくい」と不安に思われてしまうのです。

なぜエンジニアを採用したい企業が、転職志望者を不安にさせる求人票しか作れないのか? - paiza開発日誌

ほんとこれ。人事の採用担当者と開発者、全然話してないでしょ、って感じの求人情報が多すぎる。エンジニアは採用部署がどんな開発をしてるか、どんな人を求めてるのか、開発環境はどんな感じなのか、ということを知りたいのに、そういう情報が全く書かれてないと、受けてみようかって気もなくなっちゃうよね。言語の経験は何年かとか、TOEICは何点かとかより、どんな業務をしてて、どんなことができる人を求めてる、って書いた方がイメージしやすいと思う。

面接にしても、課題を与えてコーディングさせてみるってところも多いんだけど、あれってどれだけ意味があるんだろうか。技術者なら少し話せばその人のスキルは大体分かるだろうから、むしろ全く知らない分野の担当になったとしたら、どのくらいの期間でどんなふうに技術を学ぶかとか、トラブルシューティングをさせてみて、問題解決のためにどんなアプローチをするかとか、そういうことに時間を使った方がいいと思うんだけどなあ。まあ私は採用担当じゃないけど(笑)

会社が求めてる人が分からない状態で入ってしまうと、お互い不幸にしかならないよ。マッチング大事。

そういう意味で、募集する側としても、どんなことをしたいのか、どんな環境が好きなのかということをアピールすべきだと思う。それも正直に。面接の時だけ猫をかぶって、後から「こんなところだとは思わなかった」ってなるのはイヤだよね。

以前、エンジニアの方々に転職方法について聞いてみたことがありますが、この業界は優秀な方ほど、求人経由ではなく縁故で転職される方が多いです。エンジニアの場合、縁故による転職の割合は他の職種と比べてかなり高くなっています。

ぼくは全然優秀じゃないけど、これまでの転職は全部縁故だった。コネクション大事。

上司やイヤだったとか、会社がブラックだったとか、ネガティブな理由で転職する場合であったとしても、会社の人全てがキライだったわけではないだろうから、前の会社の人とのコネクションは作っておくことをオススメします。将来きっと役に立ちます。

転職って

「運」だと思うのですよ。

会社が社員に期待すること。社員が会社(職場)に期待すること。のマッチングは凄く難しくて、会社に入ってみて初めて分かることも多々ある。しかも外からはなかなか分からない。そこはもう「運」しかないと思う。さらに全てにおいて満足できる職場なんてあり得なくて、最終的にはどこかで妥協点を見つけざるを得ない。

タイミングも重要。「自分にとって理想の職場」が見つかったとしても、その時会社が人材を募集しているかは「運」でしかない。

「運」はいつ降ってくるか分からない

だから、自分が職場に望むこと(望まないこと)を日頃から明確にイメージしておくって大事なことだと思う。そして、それを継続してアピールし、実践し続けることで、だんだんと自分の理想に近づけていけるんじゃないかって、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