Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

どうかプログラミングに向いてないと思わないでほしい。そしてプログラミングがキャリア化した功罪の話

プログラミングに興味がある人たち、どうか「自分はプログラミングに向いてない」と思わないでほしいです。

たしかに「プログラミングスクールに通ってるから」良いスキルがあるわけではないし、スクールよりも好奇心のほうが重要なのは僕も同意です。 というか基本的な考え方はたぶんこのツイートをしてる方と、僕は同じだと思います。僕もうっかりこういうことを言うこともあります。

実際、本当に大好きで休日もプログラミングしてしまう人のほうが、スキル面で伸びが早いのも当然でしょう。 でも「休日にもプログラミングしてしまう」ほど好奇心を持って好きになるにも時間はかかると思います。

漠然とした好奇心があっても、「のめり込むほどやりたい」と思えるまでは学びが必要 だからです。 そして、もはや今のプログラミングに関する産業は単純なスキルで済まない広さがあります

「のめり込むほど好き」になれるのはまだ先のこと

何ごとも始めたては正直よく分からないものです。 自分に向いてるかどうかや、本当に好きなのかなんて分かりません。

僕自体も昔はそうで、最初プログラミングをした12歳のときも「面白いけど僕のイメージするビッグなことはどうすればできるのだろう」という虚無感があったのを覚えています。その12歳の年末年始はたぶんゲームをしてたと思います。

でもプログラミングでできることが増えて、作れるものが増えていくうちに「今作ってるものを早く完成させたい」、「もっと良いものを作りたい」という執着ができはじめました。当時はゲームを作るのがただ面白かったときでした。 今くらいずっとずっとのめり込むようになったのは、プログラミングでの繋がりができたり、成長の先が見えるようになった18歳や19歳になってからです。

僕もプログラミングを始めてから「年末年始にやるほど」になったのは6年を要しています。 まだプログラミングスクールに通ってる人や、触り始めて半年や1年の人は「向いてる向いてない」や「このすごそうな人が言うほど僕は好きじゃないな」など判断しないでください。

ただあなたが興味があってやりたいなら、まずやってみてください。いつやっても良いんです。 夢中になれたらラッキーってだけです。そのちょっとした気持ちを大事にしてください。 向いてる向いてないなんて正直どうでも良いんです。

プログラミングがキャリア化した功罪

ただ僕が子どものころ熱心にプログラミングしていたときはまだ牧歌的で、プログラミングでキャリアなど考えずにただ好きを追求できました。当時のITがすごいと言えば、僕が知っていたのはオンザエッヂ(というか堀江貴文)くらいで、まだ一般的には関係ない世界でした。

たぶん元のツイートをした方は、面接などをするときに「プログラミングスクールで学んでます(エヘン)」という人を見てきて、自分の感覚との違いにズレを感じたんでしょう。 プログラミングがキャリアとして認知されて色々な人が学ぶようになった一方、キャリアとして整備されたことで「仕事として」のみ興味を持つ人が増えたということです。

これは仕方のないことです。 気持ちとしては僕も「好奇心がある人間でないと」と思うことは正直多くあります。 でも先述したように、本当に好きになるタイミングは遅れてやってきます。 仕事のためだけに始めたけど、いつの間にか死ぬほど好きになった という人が出てくるかもしれません。 その可能性を僕は潰したくないんです。

むしろ、好奇心が持てなくても良い

むしろ、プログラミングへの好奇心が最終的に持てなくても良いです。

第一に、物事の好き嫌い、向き不向きはある程度まで習熟しないと分かりません。 これは世の中の残酷なところではありますが、向き不向きや好き嫌いなんて最初は分からないものなんです。

でももし向いていなかった、好きになれなかったとしても、良いんです。 なぜならキャリアとして十分成り立つのが今のソフトウェア産業だからです。

「いやプログラミングに真に興味ないやつと仕事したくない」と思うかもしれませんし、僕も半分同意です。 でもたとえば「プログラミングが分かるマーケター」や「プログラミングが分かるマネージャー/リーダー」はエグいほど重要です。むしろ先鋭化したプログラマーこそ、そういう人に支えられています。 もしそこまでプログラミングを好きになれなくても別スキルと掛け算で超重要人物になれます。ご安心ください。

そしてそもそも休日にプログラミングしない超優秀エンジニアはいます。文殊堂 とか映画ばっかり見てますよ。

ただもしあなたが「プログラミングのスターっぽくなってGAFAでガファガファしたい!でもプログラミングにはぶっちゃけ熱中してない(けど僕かっこいいでしょ、ドヤ)」と思うならあんまり向いてないです。あと、僕は友達になれそうにありません。

周りの意見とかどうでも良い

というか、件のツイートとかを見て一喜一憂する必要なんてないんですよ。

  • プログラミングスクールから始めてすごいエンジニアになった人がいたら夢ありませんか?
  • 休日にプログラミングしない超優秀なエンジニアいたら逆にカッコよくないっすか?
  • 途中からマーケティングに興味を持ってプログラミングスキルを持ったまま転向したって人のほうがストーリー感じませんか?

プログラミングっていうのはもう「ピコピコ大好き少年・少女が大きくなりました」って時代じゃないと思うんですよ。 自分と同じ経緯や好奇心を他人に求めるって、すごい視野を狭める結果になると思うんですよね。 組織の多様性も失われるので、結果的に弱くなるとも思います。まだこういう感覚の人結構いるので危ない気がしています。

そもそも「雇われること」を前提に自分の時間を差しだすって僕はダサいと思ってますので、自分の気になることから突っ込んで行けばいいと思います。

最終的にプログラミングを好きになれなくても、あなたには好きに生きる自由があるんですよ。

他にオススメの記事

blog.hirokiky.org

blog.hirokiky.org

blog.hirokiky.org

伸びてるっぽいので、宣伝

僕が代表取締役の会社として開発しているShodoもぜひ覗いてみてください。

shodo.ink

この記事はShodo (https://shodo.ink) で執筆されました。

PyTorchでn次元のTensorからn-1次元のTensorを使ってインデックスする

PyTorch でn次元のTensorがあったときに、n-1次元のTensorを使ってインデックスする方法です。 以下のように a というTensorと、 idx というインデックスがあったときに、 answer を取る方法です。

a = torch.tensor([
    [100, 200, 300, 400],
    [500, 600, 700, 800],
])
idx = torch.tensor([2, 3])

# 欲しい値は以下
answer = torch.tensor([300, 800])

方法のコード

>>> a.gather(1, idx.unsqueeze(1)).reshape(idx.shape)
tensor([300, 800])

一旦 idx.unsqueeze することで次元の数をあわせてから、 .gather を使ってインデックスしています。 正直これがベストかわからないので、うまい方法があれば教えてください(僕はPyTorch初心者です)。

欲しいケース

transformersのMaskedLMモデルを実行した結果から、元のセンテンスの各文字がどんな値だったかを取得するのに必要でした。 上記の aresult = model(...) として result.logitsidxinputs = tokenizer.batch_encode_plus(...) として inputs.input_ids です。

この記事はShodo (https://shodo.ink) で執筆されました。

朝食の解はやっぱりカロリーメイト(チョコレート味)だった

僕はなるべく同じものを食べたい人間で、長いことほとんどカロリーメイト(チョコレート味)を朝食に食べてきました。 でもここ数年は完全食が面白いと思い、思いついたときに朝食や昼食として試していました。

  • COMP
  • BASE BREAD
  • ゴールドスタンダード
  • INゼリー
  • フルグラ

でも結局は、カロリーメイト(チョコレート味)が一番良かった

一番美味しいし、簡単に食べられる。 夏場の暑いときはこれからもINゼリーも食べるだろうし、気まぐれにフルグラやチョコワ、菓子パン(ベルギーチョコ蒸しケーキとかランチパック)も食べると思う。美味しいからね。 でもやっぱり定番としては、カロリーメイト(チョコレート味)には僕の中で勝つものがないと思う。

BASE BREADのメープル味は結構好きだった。ただ賞味期限や買いやすさという点でカロリーメイトには勝てないし、何よりチョコレートを食べたい。 BASE BREADのチョコレートはメープルほど美味しくないし、食べやすくもない。

もちろんカロリーメイトは小学校のころから親しんでいる味なので安定感が違うというのはあるけど、そうと言っても美味しいものは美味しい。食べたあとの胃腸の快適さや体調も一番良い気がする。 長期保存用のカロリーメイトも水分が少なめで悪くはないけど、でもやっぱりオリジナルが一番シックリくる。

年も変わってこれからは、あんまり新しいのに挑戦しなくて良いかなと思っています。 新年って、みんな新しいことやろうとするじゃないですか。 でも僕としては、そんなにコロコロ変わってもしょうがないと思うんですよね。

この記事はShodo (https://shodo.ink) で執筆されました。

「価値あるもの」を作らない。VRにある価値ではない「なにか」

f:id:hirokiky:20201230150332p:plain
VRの世界

僕たち製品やサービスを作る人は、常に「価値あるもの」を作ろうとしています。 人にとって何か価値があるものを提供して、それに対する対価を得るのがビジネスや事業と考えられます。

ここで難しいのは「価値」というものの意味するところです。

僕もよく「人の抱えている課題を見つけてそれを解決してあげれば価値になる(良いビジネスになる)よ」と言っています。でも「価値」という言葉を使って考える場合、どうしてもマインドが「普遍的に良いもの」を求めてしまいませんか?僕はこれを恐れていて、特定の視座に固定されてしまうように思います。要するに 価値だけ考えると、しょうもないものしか作れないのでは と危惧しています。

VRChatにある「なにか」

VRChatを考えてみましょう。 VRChatはVRのゴーグルを付けて、好きなアバターに変身して友だちとお話するサービスです。 正直言って VRChatに"普遍的な"価値はありません が、僕の心を掴む「なにか」があります

ちょうど丸1年ほどVRChatをやっていますが、そこには便利さや利点を超えた「好きである」という感覚があります。 VRChatは正直ダメなサービスです。高い機材がないと楽しみは半減するし、導入も分かりにくいし、一番楽しい部分を味わうにはコミュニケーションの障壁を乗り越える必要もあります。 実際にプレイヤーのプレイ時間を見ると「すぐやめる」か「ドハマりする」かの二極化するようです。 でも面白い。これは何でしょう。

イメージしにくい人は、黎明期のニコニコ動画2ちゃんねる、同人文化を考えてください。 そこに普遍的な「良いコンテンツ」はありませんが、ただ何か面白い熱量があったと思います。

たぶんVRChatは一部の人しかハマらないと思いますし、「キメェ」と思う人もたくさんいるだろうと思います。 でもそれこそが、何か新しいものである証明だとすら感じます。

VRChatに今僕が感じるのは、その熱のようなものです。

f:id:hirokiky:20201230145445p:plain
VRChatで友だちと飲む僕(真ん中が僕です)

熱を重視する

僕は「課題解決」と「価値」を重視してWebサービスを作ってきました。 でもいよいよそのモノサシを踏み外すときなのかもしれません。

もちろん現実的な課題が解決されることは最重要です。 ですがそれだけでなく「熱」というものも大切ではないでしょうか。

  • 何か新しい、これは面白いぞと思えるもの
  • 自分のこと、自分ができるんだ、と思わせてくれるもの
  • 未来を感じて熱狂してしまうもの

もっというと 「熱」を普遍的「価値」に昇華できること が良い事業開発なのかもしれません。 熱はまさに「芽」のようなもので、それを大衆に向けた普遍的な価値へ変えられることが魔法の杖の仕組みなのかもしれません。

価値とは何か、熱とは何か

改めて価値というものを考えれば、広くて便利すぎる言葉に思えます。 経済学的な効用価値の意味を考えれば、上記のような「熱」や「好き」も価値の1つと表現できます。

ですが僕は、やっぱり「価値」という言葉には危うさを覚えています 。 個々人がその言葉を感じるとき、どうしても普遍的で、交換可能な良さであるという文脈が尾を引いてしまいます。 それは製品やサービス同士を、比較表やスペックシートを使って比べるような貧相な発想しか産みません。

「好き」の大きさや熱量で考えてみましょう。あなたは自分の作ってるものに熱中してますか?熱中してくれる人はいますか?

価値をシッカリだしつつ、そこには熱があるのか「好き」があるのか、魂が震えるのかを今一度大切にしてみましょう。

VRChatで僕と握手!

f:id:hirokiky:20201230145216p:plain
Vketを歩く僕

この記事はShodo (https://shodo.ink) で執筆されました。

自分の言葉で本当に考えて生きているのか

大人になってくると、どうにも他人の言葉をうまく使って、脳死のまま生きていられるのが恐ろしいと思っています。 これはここ5年くらいでジワジワと感じていて、非常に危機感があります。

ありませんか?

たとえば「大手ってそういうもんだよね」とか「寒くなってきたから体に気をつけてね」とか、当たり前なパターンとしての言葉をただ繰り出しているような感覚です。脳も心も動いていません。ただ学習されたパターンに応じて、最適化された点数稼ぎをしているだけです。まるで自分の口を「他者から見た自分」という人格が乗っ取っているようです。

もちろん言葉や思考というものは他人から盗んできたものを継ぎ接ぎしているようなものなので、自然といえば自然なことです。ですがどうにも完全に脳死状態でも生きられる、そして楽がゆえにそうなろうとしている危機感もあります。

僕は自分の頭と心と魂で、本当に考えているのでしょうか?

ティージョブズ1995というインタビューでの一幕を紹介します。

ビジネスの世界では物事が深く考えられていません。 AppleⅡで工場を使ったとき、標準原価という概念を知りました。 まず標準原価を割り出し、定期的に実際原価との違いを計算するという慣習でした。 それは何?と人に聞いても、「そういうものだから」と皆んな言っていました。

でもそれは、実際にはコストがどれくらいになるのか分かっていないので標準原価を一旦割り出し、定期的に実際原価との差異を解消するというものでした。 しかしMacのラインではすべてを自動化して、リアルタイムに正確にコストを割り出せるようにしました。

(意訳、中略してるのでちゃんと見たい人は以下のDVDを買ってください。下のリンクから買ってくれると、僕がRedbullを飲んで生産性が上がって世の中が良くなる手伝いができます)

以前、この話を見たときは「ふーん世の中バカばっかだな。俺はそうならない」と思っていましたが、今になるとこの罠にあっさりハマりそうで怖いです。自分の言葉として理解して納得しないかぎり、本当にそれが必要なのかも知らないままになります(実際に必要のないウンコちゃんなことでも)。 人とコミュニケーションを取っていても、最適化された問題ないやり取りをしているだけで、本当のコミュニケーションをしていない罠もあると思います。

大人になるというのは、自分という人格や体が、心を離れて勝手に生きられる状態のことなんだと思います。 他人や社会が求める僕という人格を作って、それに人生を明け渡して緩やかに死んでいくことなんでしょう。 でもそれは、僕には本当に緩やかに死んでいるのと同じに感じてしまいます。まるで体が徐々にロボットになっているようです。

今一度、何かを話すときや考えるときに、これは本当に僕という人間の魂から出た答えなのかを気をつけたいです。 そこにどんな僕が居るのかは分かりませんが、自分の魂と体の乖離を小さくするよう心がけて生きています。

この記事はShodo (https://shodo.ink) で執筆されました。

原稿のレビューお願いします!が伝わらない? - Shodoに通知機能を追加しました

Shodoに通知機能を追加しました

「よし!原稿が書けたしレビューしてもらおう」となったとき、こんなことはないでしょうか?

  • 「レビュアーさんにレビュー依頼するのって面倒だな…」
  • 「あれ?チャットでお願いしたけど話題が流れてしまったな…」

執筆にまつわる連絡に時間が取られたり、集中が途切れてしまうのはストレスになってしまいます。 コミュニケーションの大変さは仕組みで解決してしまいましょう!

Shodoでは新たに通知機能を追加して、執筆・レビュー依頼、コメントのやりとり、チェックリストのアサインが通知され、個別での連絡の必要がないようにしました。

これにより Shodo上のやり取りだけでレビュー依頼や執筆依頼の連絡が可能になりました

詳しくはこちらの記事をご覧ください

blog.shodo.ink

この記事はShodo (https://shodo.ink) で執筆されました。

モチベーションを時間経過で考えてみる - 起業して満足はやめよう

今日は雑談枠です。

モチベーションという言葉を使うとき、そのときどきの高さで考えがちです。 僕も「モチベーションが上がらない」なぁとボヤいたりはよくします。

でも実際は「モチベーション」というのは、もっと時間経過で考えるものなのではと思いつきました。

よくあるモチベーションのイメージは以下のようにピークとしての波がある感じでしょうか。

嘘のモチベーション

このピークの高さを自分に求めたり、他人に求めるのは危険でしょう。 これは単に「どのくらい今その気になっているか」という話で、嘘のモチベーションなのではないかなと思いました。 見た目上の数値は一瞬高いのが怖いところで、私も気付かずに陥りがちです。

モチベーションというのはもっと時間経過で考えるべきです。 たしかに一時的な気持ち的な高まりは必要ですが、グラフとしては以下のようにするのが目標です。

目標値としてのモチベーション

グラフの目標値に維持できている状態が「モチベーションが高い」ということです。 フィードバック制御をイメージするとわかりやすいです。 必要なのは根本的なアプローチで、なぜそれをやりたいのかや、執着心のようなものが必要そうです。 がむしゃらにアクセルを踏み続けるのでなく、より高い位置で維持する制御です。エンジンそのものをアップデートしたほうが良いときもあるでしょう。

僕も起業からまだ数ヶ月ですが、「起業する」という目標を達成してしまった恐怖があります。 スタートラインに立つことで、ある意味何かを達成したような気持ちになってしまうのは危険です。 たしかにピークとしての「モチベ」が今ずっとMaxであるわけではありません。ですがそこから漸近する目標値を高く設定して、それを維持していくことこそが本当のモチベーションなのではないでしょうか。

この記事はShodo (https://shodo.ink) で執筆されました。