〜サークルアラウンド株式会社代表佐藤のブログ〜佐藤正志@サークルアラウンド株式会社のことが少しわかる場所。プログラマーを育てるトレーナーとして、現役のソフトウェア技術者として、経営者の端くれとして、想うことをつづる。2018-10-05燃え尽きない定年退職エントリに寄せてはじめにd.hatena.ne.jp最近週一くらいで更新しているのですが、今週も色々とキャッチーな話題はあったかもしれないけれど*1、このエントリーへの言及は今しかできない気がするのでしたいなと思ってキーを叩きます。私は著者とは2000年代のデブサミでのご縁で一回飲み会で同席したことがあるくらいです。特別濃厚な何かがあったりするわけではありません*2。Linuxにいらっしゃった吉岡さんが定年退職もなさいますよね。時間が経ったのだなと思います。Linuxにいらっしゃった時期が今の私と同じくらいの年齢だったので、あの頃とこれからに思いを巡らせるなどしてしまいました。私の心に残ったことを何点か触れさせてください「私たちには既にわからなくなってしまった過去のこと」を記してもらえること自体に価値を感じました。DECでの開発手法を拝読して、クールな開発手法は時代が変わってもそれ程変わらないのではないかと感じます。「デイリービルド」など、名前は聞いたことあったけれど...というものがCIとなって当たり前になっているのも再発見した気持ちでした。私が現場に出た頃はPCがシステム開発の当たり前になった頃で、いわゆる「オープン化」の流れのようなものがありました。この言葉は私の実感としては薄い言葉で、少し年かさの先輩が話してくれたような内容から「へーそうなんだ」という形で記憶しています。その頃に、開発のスタンダードというものがゴソッと代わり、PCが現場に入ること前提で色々と作るようになったらしいです。私も少し後に出てきたJavaのことを「おもちゃ言語だな」などと言っていたら、あれよあれよと言う間に業務システム開発のスタンダードになったのですから、おもちゃは侮れないなと振り返って思います。言う私も一時期はJavaのフレームワークを作る仕事を何本かやらせてもらえて、現場は徹夜上等のとんでもない働き方だったとは思いますが、それなりに魅力的な内容に携われる時代でもあったのでしょう。当時は30過ぎてプログラムを書いているのなんか頭がおかしいと言う風潮が日本にはあった、30までの若い人材は激務で使い倒されて、それを乗り越えられるようなコード書きにはマネージメントをさせるという流れが当時は特に強かったと思います。この言葉からもそれが伺えます。Netscapeのことは本当に驚きました。元記事で明言されていませんでしたが、この話はFirefoxが誕生する前身の話なんですよね。MosaicというWEBブラウザがあり、Netscapeが生まれ、後発のIEとの競争の末、オープンソースにするという決断をする。下記の記事が詳しいかもしれません。tech.nikkeibp.co.jp「オープンソースという魔法の粉を振りかければすべてがうまくいくわけではない」という言葉の通り、衰退していくことになったのは残念でなりません。その後もFirefoxとして今も私たちが利用するブラウザとして残っているのは、OSS化の功績であるようにも感じました。今多くの人たちはPC向けのシステム開発は基本的にはブラウザ上で動くものを作るのだと思っているかもしれませんが、以前は専用のクライアントソフトを開発する*3いわゆる「クラ・サバ」があったり、WEBブラウザ上のJSがAjaxやプロトタイプ志向オブジェクト指向で再発見される前で非力であるというような背景がありました。その為「今後のシステム開発はどのように進めていくべきなのか」というところが大きな話題だったりしたんです。「配布の容易さ」という面で有利なWEBであるけれども、「操作の快適さ」という面ではクライアントソフトには叶わないという、今のスマホアプリの開発と同じようなことを「PC上の開発をどうするか」というテーマで行なっていました。いうポジションが現れます。典型的な仕組みの一つとしてはブラウザにプラグインを入れて、そのプラグイン経由で当時のWEBよりもリッチなUIを提供するというような考え方です。thinkit.co.jp私はそういう中で、リッチクライアントを推進している会社に関わっていて、自分自身も理想の作り方を有志のメンバーと模索していました*4。2009年〜今デブサミのコミュニティ枠*5でLTさせてもらったのが2009年だったようです。初LTでこの大舞台だった気がします。発表者が事前に集まって顔合わせした時に吉岡さんとお目にかかったのでした。昔過ぎて記憶がおぼろげですが、楽しそうに話すナイスミドルだったという印象は強く残っています。その後はイベントに参加した時などお話しされているのを一方的に見かけているだけになってしまいました(ビビリィなんで自分から話しかけるの苦手でごめんなさい)。して10年近くの時がたっている中でも、ずっとコード書きとして生きていきたいなと改めて思った矢先に、冒頭のエントリを拝見して胸が熱くなってしまいました。私も35歳定年説などなんぼのもんじゃと思ってやっています。そのあたりは下記エントリへ。ms2sato.circlearound.co.jpおしまいにずっと現場でIT技術を扱い、定年などものともせずに一生成長を続けられるような素晴らしいロールモデルだと感じました。私も後進を育てながらそんな風に生きていきたいです。区切りまでには胸が熱くなるような何かを発信できたらなと願っています。遠くからですがご活躍を応援しています!*1:毎度のごとく「あれがダメこれがダメ」って言っているよね。お腹いっぱいだよ*2:おそらく吉岡さんの記憶に私はいないでしょう。エントリ書こうかなと*3:スマホのネイティブアプリのイメージが近いかも*4:まさかまだWEBページがあるとは。懐かしいけど気恥ずかしくもある*5:当時はそういうのがあって、デブサミは開発者コミュニティがかなり自由にブースを出したりできたんです。08:30Tweetもっと読むコメントを書く2018-09-28好奇心を持ってコード書いたりしたいんだ!はじめに「勉強が嫌いな」ではなく、プログラミングすることにおもしろさを感じていなかっただけではないか。確かにそう思ってしまう人はプログラマには向いていないかもしれない。自分がいつまでもこの知的好奇心を持ち続けることができるのかと自問自答するとイエスとは言えない自分もいるのだ。2018「あーこれそうだよなー」と感じて、その他のことも色々と考えてしまったので記しておこうかと。「プログラミングが楽しいと感じて、それを仕事にしていく」という流れはとっても良いと思っています。私は仕事の選び方を「お金を稼ぐ手段」という考え方よりも「生き甲斐」のようなところに置いているので、大金儲けできるけれど退屈な仕事よりは、お金は程々とか多少少なくても熱中できる仕事を選びたがっています。プログラマーに限らず世の中「仕事は仕事、プライベートはプライベート」と割り切った考え方の方は数多くいると思いますし、それは特に否定しようとは思いませんが、私自身の人生は「生き甲斐たる仕事」を中心に今まで進んできていますし、それがプライベートも侵食している状態がずっと続いていると思います。それを他人に押し付ける必要は無いとも思っています。仕事でのコードの書き方あくまで私や私のチームのメンバーはそうなっているだろうという話ですが、仕事では以下のような点から様々な意味で保守的に振舞っています。顧客が望むことが最優先であり、私たちの望みが仕事の中で果たされることは二の次である。納期があり、間に合わせようと仕事をしている。自分たちの書いたコードは自分たちが去った後も残っていき、別の人が扱う(ずっと関われそうなら別の考え方もありますが)。これってどうなるかと言うと「なるべく失敗しない選択をして、冒険せずにゴールにたどり着くこと」が至上命題であり、私たちがチャレンジをすることは減るという結果になりますよね。これが嫌なのか?と言われたらそんなに嫌なことではありません。安定して結果を出すの、すごく大事なことだと思っているんです。...というのがこの話の続きになります。これまでの流れや顧客の要望によって技術選定は狭まります。弊社はRailsを扱うことが多いのでRailsから積極的に離れることは今現在はありません。jQuery以上の何かを顧客が望んでいることも無いので、jQueryのコードを書きます。人がスイッチすることを可能にしたいなら同じ技術を皆が扱える方がやりやすいですし、やり込んでいる技術の方が単価も適切に設定できるという経営側の事情もあります。「顧客が喜ぶ」をモチベーションに仕事ができる人は保守的でも十分かもしれませんが、私はそれだけのタイプでは無いので、これはそれなりにストレスを溜めて進んでいるのだと最近気づきました。20代の頃にあった「今日もあのコードの続き書きたい!」という目覚め方をしていなかったですし「もっとこのコードの続き書きたかったのに!」という気持ちで寝付いてもいませんでした。私はプライベートでは言語や環境も興味あるものを選びたいですし、設計が気に入らなかったらリファクタリングしまくってみたいです。納期とか気にせずに全力投球したいだけです。この事に頭で考えた理屈なんて無いです(後付けでいくらでもメリットは出せますがそういうことじゃない)。やりたいだけなんですよ。最近golangとvue.jsとappengineで個人のサービスを作り始めたら楽しくて仕方ないです*1。いうワクワクする感じも必要だったんだと改めて気づきました。メンバーもそれぞれ自分のサービスを作るようになっていて、その話を聞くのも楽しいですし、相談受けてアドバイスしたりするのも楽しい*2。私たちは「勉強」や「努力」をしているのでしょうか?あまりそういう風に思っていない気がします。業務で言い渡してもいませんので「仕事」でも無いでしょう。好きなもの作って楽しんでやっていればいいんですよ。これはきっと文化みたいなものだと思うので、こういうことできる人は弊社にマッチすると思うし、できない人は離れていくと思います。合う人と集まっていろいろやったら楽しいですよ。老いることと向き合うただ、自分がいつまでもこの知的好奇心を持ち続けることができるのかと自問自答するとイエスとは言えない自分もいるのだ。これ、実はずっと不安でした。26歳の私は「劇的な成長もきっとできないし、淡々とやっていくだけなんだ。42歳の私は「あんまりそういうこと気にせず、全力投球のコード書いてればいいんじゃない?」と思っています。結局自分の本質的なところは変わってはおらず、ほじくり返せば一番感じやすい自分の核に出会える気がします。会社作ってここ数年はいろいろと自分に決め事を作り戒めていて、ほじくり返して解放することを避けていました。今の方がいいなぁ(笑)今の自分なら死ぬまで全力投球できる何かを探して続けられる気がします。コードを書くことだけじゃない楽しみも全力でやりたいです。若手を鍛えて自分よりも若くて凄い人をザクザク誕生させられたら、10年後とかメチャクチャ楽しいと思っています。おしまいに最近読んだブログの中にもすごく良い言葉があって首がもげるかと思いました。フツフツと湧いてくる好奇心を失わずに今後も生きたいです。楽しんでいるだけなのに、成長できるなんて一石二鳥過ぎてお釣りがいっぱいです。成長が鈍化している人は好奇心を失っている。毎日がもふもふ「知らないことを知る」というのもまた楽しいことだし、「難しいことを工夫して結果を出す」のもやはり楽しいことの一つなんだと思います。今の所「工夫して新しい何かを作り出す」が私の心を最も刺激してくれるのだと感じています。いつか変わるかもしれないけれど自分自身の変化にも興味を持っているので、それも楽しみです。一緒にもくもく開発するイベントやるんですよ。techdrive.connpass.com*1:この件はまたどこかで書きたいです*2:誤解が無いように書いておきますが、仮にこのサービスを毎日作っていることが仕事になったとしたら、遠くない将来私はこの事に保守性を感じ始めるんです。k8sも使いたいしElixirだってやってみたい。WebAssemblyをベースにして新しい言語とか作ってみたい。仕事はじめにms2sato.circlearound.co.jp前にこんなエントリ書いてたんですけど、結構ギリギリまで「言語で分けるか業界で分けるか」とか迷ってたんです。その当時はとりあえず言語軸で分けてみた書き方にしました。最近「SES」「自社開発」を比べている言説が結構多いように見受けられますが「この分け方ってザックリし過ぎじゃないですか?」って思ったので自分なりの表現をしてみたいと思います。例のごとく私は統計を取ったわけでも確かな情報を元に書いているわけでもなく、見聞きしたことと自分の経験から書いています。いうわけで「そうじゃねぇよ、こうだよ」というのがあったらどんどん出してもらえる方が、私もハッピーになれるのでよろしくお願いします。物事には必ず例外があると思うので、類型っぽくまとめることができたとしても「そうでないもの」は大抵あると思います。零細な会社は社長の力が強いので「分類としては何かに属しているかもしれないけれど、その実そんなことはない」という事がよく起こるのではないでしょうか。通常の倫理が働かずにとんでもないブラックとかも混ざっている可能性はあります。零細は良くも悪くも社長次第かと。「パターンで考えすぎるの危険もありますよ」ってことで一つ。結局一社一社違う事やっているので、最終的には自分で何かを見極める必要があるはずです。お金と余裕もう一つ前提を。会社経営の余裕は結果としてキャッシュの話になると思います。余裕のなさは以下のようなところの反映されるはずです。「余裕はあってもやらない・やれない」という文化的なものもあると理解しておくと良さそうです*1。会社で開発できる会社を書いてみます。調達をして、ビジネスが大きくスケールするのを目指しているのがこの界隈です。事業が小さいうちは全く余裕がありません。スピード優先で顧客を獲得していかなければキャッシュが無くなって会社は倒産しますし、VCの期待に応えられなければ次の調達が無いかもしれません。いう事情から「もっと働け、死ぬほど働け。」になりがちです*2。人数が少ないということは多様な業務を要求される可能性もあり、プログラマーとして雇われたけれどプログラミングだけではない様々な雑用をしているようなケースもあるでしょう。高い給金よりも、ストックオプションや向かっているビジョンような「会社の将来」をモチベーションにして動く事が多いです。会社制度も整っていないことが多いです。親切に何かを教えてもらえるような事を待つ人には向きません。誰にも教わらなくても自分で工夫して成果を出そうとするタイプの方がマッチしています。いい意味でギラギラしたエネルギーが必要な分野ではないでしょうか。大規模・メガ様々な苦難を乗り越えて安定を手に入れたスタートアップは、自分たちの事業から黒字を生み出してある程度の余裕を作っていきます。中心になる事業で会社が運営できている状態なので、さまざまなことに投資をしやすくなっているでしょう。知り合いに聞いている感じだと、良い意味でスタートアップらしさを失っていなかったり、創業者がそれを失わないようにアクションしたりする様子で、余裕はあるけれど切磋琢磨する環境を大事にされている様子が伺えます。基本的に受託の会社は小規模なスタートアップに比べれば余裕を作りやすいと言えます。シンプルに「依頼を受けて見積もりをし、作成して納品をする」というオーダーベースの製造の商売なので、見積もりを大きく間違えるような事が無ければ利益を出しやすいです。上手にやっている会社なら社内で仕事を教えながらうまく伸ばしてくれると思います。ここで紹介するのはお客さんから取ってきた仕事を社内に持って帰ってきて開発しているタイプの会社です。古式ゆかしいやりかただと思っていたのですが、ひょっとして今はSESとかの方が増えているのでしょうか?(ちょっとこの辺よくわかりません)お客さんがITわからない会社なら一次請けとして全てを決めてハンドルできるポジションです。逆にITわかる会社に対して二次請け的にうまく協力していくスタイルもあります。弊社は以下二つの両方をお客さんに合わせてやったりします。どちらかというと準委任にしてしまうのが多かったのですが、最近は請負もバランス良くいれていこうとしています。「こういう仕様のものをいつまでに納品で、いくら」と決まっているやつですね。マルッと全部引き受けるので責任も大きいですが自由もあります。新規の開発になる事が多いので、利用する開発の言語や環境の提案もしやすいですよね。新規の開発の経験的には一番増やせる業態ではないでしょうか。ちなみにこれで新規を作った上で保守で月額費用をいただいていく、というのが以前結構あったスタイルかと思います(ちなみに私が過去関係した会社では「保守はつまらないから作りしかやらない」という集団もいたりして、結構色々なスタイルがあるのかもしれません)。保守まで持っているような会社さんだと、最初は簡単なバグ対応やログ管理から始まって、徐々に新規開発のメンバーへステップアップできるような環境を作れる会社もありそうです。期限が決まっているのに納期直前にお客さんからの仕様変更を受けて大変な目に合うとか、営業がホイホイ「やるやる」って言ってきて社内リソースが全く足らずに大変な目にあうとか、過去あったりしましたね。いう会社は慢性的にそうなるので、注意ですよね。