メインコンテンツへスキップ

インターンのナナ

陈天(ArcBlock 研发副总裁)
ArcBlockブロックチェーン研修

著者: 陳天(ArcBlock 研究開発担当副社長)

出典: 程序人生(ID:programmer_life)

私がインターンに求めるのは、学習能力に加えて十分に長い実習期間である。「十分に長い」とは、少なくとも 2、3 か月だ。それより短いと、価値ある仕事に貢献し始める前に、インターンは好意的な評価を手にして去ってしまうことが多い。

ナナは当初 6 月初めに実習を始める予定だった。しかし、学校の EAD(Employment Authorization Document)手続きが呆れるほど非効率だったため、最終的な出社は 8 月初めになった。この夏は 3 人のインターンを採用したが、1 人は早々に去り、もう 1 人は結局来なかった。だからナナにも大きな期待はせず、むしろ少し気が重かった。大学 3 年生になるばかりの子が、4 週間で何をできるというのか。

それでも、彼女と 4 週間の計画を立てた。彼女は dApp のアイデアを持っており、私たちもインターンに自社 framework で簡単な dApp を作ってほしかったため、話はすぐにまとまった。題材は街中の自動販売機だ。設備提供者、設置場所の提供者、運営者、商品供給者など複数の当事者が、契約に従って最終利益を分配する。しかし現状では、運営者が提供する売上データを信じるほかなく、真偽を検証できない。これは広告収益分配にも似た典型的な audit trail の場面だ。従来の広告分配では、広告主が運営者を信頼しないため、impression 発生時に独立した第三者の tracking server へデータを送り照合する。この種の用途には、ブロックチェーンで表現された ledger がまさに適している。

課題決定後の計画はこうだった。第 1 週に要件と基本構造を設計し、必要なブロックチェーン知識と Forge framework を学ぶ。第 2 週に audit trail を送るための主要 smart contract と大量データを生成する simulator を作る。第 3 週にデータを使った webapp を作り、請求照会と売上表示を実現する。第 4 週に webapp を磨き、良好なユーザー体験に仕上げる。同時に毎週、作業を紹介する短い動画を撮り、その台本を整えてブログにする。この「同時に」は marketing/PR チームの要望だった。私は時間の無駄だと思ったが、dApp 開発が完成しなかった場合も動画とブログを成果として残せるため、却下はしなかった。

正式な実習前に、ナナはすでに私たちの文書の大半を自発的に学び、製品を自在に説明できていた。これは予想を大きく超えていた。研修でも理解が速く、いつも考えさせられる質問をした。時期にも恵まれ、北京チームの新メンバーとほぼ同時に入ったため、2 週間の体系的な elixir と blockchain の研修にも参加できた。以前 Python と Django で簡単な webapp を作った経験があったので、同僚 Riley に託し、python sdk の学習と利用を支援してもらった。

まもなく、私の一日のかなりの時間が彼女の質問で埋まった。アーキテクチャと設計、smart contract の構成、実装、デバッグについて多くを尋ねた。たとえば商品の売上 audit trail を誰が送り、何を含め、その後 ledger の状態をどう更新し、どうログを確認するかなどだ。smart contract は elixir で書くため、問題を理解した後、コードを書くには少なくとも elixir の一部も学ぶ必要があった。

第 1 週の進捗は予想より少し遅かったが、私はすでに彼女を評価し始めていた。仕事は整然としていて、細部まで丁寧だった。毎週の動画は、私には余裕があれば力を入れればよい付加的な成果に見えた。しかし彼女は木曜夜までに台本を書いて私に確認を求め、金曜には何度も撮影と修正を繰り返した。当初はデザイナーの Echo が大幅に磨いていたが、後に彼女は Echo から技術を学び、iMovie でほぼ完成した動画を渡すようになった。品質は毎回高く、Echo の作業はほとんど不要だった。

第 2 週には軌道に乗った。smart contract のデバッグを終え、意味のあるデータを作る simulator も完成した。その過程で sdk から framework まで一連の問題を発見し、チームへ報告した。

第 3 週、私は忙しく、日中はあまり支援できなかった。webapp の方針だけ簡単に確認した。彼女は plotly の dash を使いたいと言い、dash が flask ベースの可視化ツールで拡張性にも大きな問題がなさそうだったので任せた。やがて新たな問題に直面した。チェーン上のデータは信頼できるが、便利に表示できない。これは offchain のロジックであり、index db と組み合わせる必要があると説明した(forge 自身も index db を提供しており、私たちはより使いやすくする方法を検討し続けていた)。

第 3 週の土曜、私はいつものように会社で仕事をしていた。彼女も出社し、一日中作業して夜 8 時近くに第 3 回の動画を完成させた。その完成度は想像以上で、形式や構成だけでなく、概念と思想への理解と説明が優れていた。たとえば check と verify の違いを、空港の保安検査の二段階に例えて transaction の light check と full inspection を説明し、複雑な話を一気に具体化した。

最後の週、webapp が形になった時点ですでに皆を驚かせた。その後も公開製品のように磨き込み、データ生成には faker を使い、webapp の css を調整し、カレンダーでレポートの期間を選べるようにした。木曜の all hands meeting で、チーム全員が見事なデモを目にした。

@

4 週間の実習を終え、ナナは次の成果を残した。

質の高い vending machine dApp

dApp の作り方を一歩ずつ紹介する 4 本の高品質な動画

4 本の engineering blog

複数の重要な issue

そして何より、社内 BBL「Forge: the bad, the bad and the ugly」

この BBL は、ほぼ初心者の開発者として Forge で dApp を作る際に遭遇した問題を率直に語ってもらうため、私が依頼した講演だ。外部向け動画が良い面を紹介する以上、内部での批判を飾る必要はなく、the good, the bad and the ugly から the good を外した。4 週間で開発者として経験したすべての問題と不満をまとめ、共有し、文書にもした(多くは彼女が bug を報告した時点で修正されていた)。

私たちにはどんなインターンが必要か?

ナナの実習は間違いなく大成功で、本人を含む全員の予想を超えた。彼女はコードだけでなく多方面の知識と経験を得て、才能を確かめ伸ばし、貴重な人生経験を積んだ。私たちは先の成果を得ただけでなく、この実習を通じて新たな考察と振り返りへの窓を開いた。

最も重要な問いは、次のナナをどう見つけ、その力を引き出すか、偶然に見える serendipity をどう再現可能な仕組みにするか、ということだ。

20 日余りの観察と交流から、彼女には次の特徴があると気づいた。

第一に、取り組むことへの情熱(passion)。

passion は使い古された言葉で、どんな応募者も仕事や業界への熱意を誠実そうに語れる。しかし passion は会食でも作文でもなく、行動に根差す。ナナは実習前に製品を体系的に独学していた。たとえるなら、すでに技と心法を身につけ、あとは導きだけを待つ状態だった。これが学ぶことへの passion だ。dApp 開発では深夜 1、2 時まで取り組み、目標を達成するまで諦めなかった。これが実行への passion である。

第二に、よく考え、表現する力。

生活でも職場でも、表現力の重要性は必ず上位に入る。優れた表現力には、概念の理解、内容の抽象化と具体化、思考の論理性と整理、そして親しみやすさが表れる。考える人が必ずしも表現上手とは限らないが、複雑な問題を解きほぐして説明できる人は必ずよく考えている。ナナの動画を見れば、それが分かる。

第三に、学習能力。

ナナの学習能力には感服した。実習期間の記述から、読者も同じ結論に達するだろう。彼女の動画を一つずつ注意深く見たが、それだけでも短期間に見違えるほど成長したと感じた。

第四に、素朴さ。

若い女性に「素朴」という言葉は合わないかもしれないが、より適切な言葉が見つからない。裕福な家庭だと思うが、普段の服装はとても自然で簡素で、私の Costco スタイルにも通じる。素朴であれば、他事に気を取られず、自分が重要だと思うことへ心を集中できる。

だから、こうした特徴の一部または全部を備える人が、次のナナなのかもしれない。

インターンにどんな挑戦を提供すべきか?

ナナの経験では、本来 2、3 か月かかりそうな挑戦を 1 か月に圧縮し、動画やブログなどマーケティング関連の追加作業も課した。当初は大きな期待をしなかったが、能力が高いほど責任も圧力も成果も大きいこと、適切に段階化された仕事は予想外の成果を生むことを事実が示した。

彼女の主な仕事は次の要素で構成された。

  1. app を開発する
  2. 動画で app 開発の過程を振り返る
  3. 開発で学んだことを文章にする。

第一の仕事だけでも重圧だったはずなのに、彼女は 3 つを同時に高品質で完成させ、1 つだけに取り組む場合より少し多くの労力で、より大きな達成感と満足感を得た。この 3 つは「土を一層まき、固め、また一層まく」ような関係だ。意図せず加えた 2 と 3 が 1 を引き立て、週単位の反復を促した。build(app 開発)- measure(動画を作り、学んだことを他者へ説明して理解を検証する)- learn(文章でまとめる)という feedback loop を実践し、毎週らせん状に前進した。

3 つを同時に行うもう一つの利点は、影響力が高まることだ。インターンの仕事はしばしばブラックボックスで、学校や教師は評価書以外に何も知らない。採用側が目にする履歴書も、有名か無名かを問わず会社で何らかの技術を使い、何らかの成果を出したという定型文ばかりだ。私たちは偶然にもこの制約を突破し、ソーシャルメディアでブラックボックスを透明にした。ナナたちの実習を容易に見せ、理解してもらい、際立つ可能性を高めた。この経験を経て、彼女は今後の授業や成長も同じ方法で示すかもしれない。

ナナと過ごした貴重な学習経験から、過去のインターン活用の得失を見直し始めた。今後はインターンと共に、面白く、挑戦的で、自己実現につながる実習計画をより良く作っていきたい。

このページに関わるもの

用語

  • ブロックチェーン

    記録を暗号学的に結び付け、共通の検証・合意形成ルールに従って取引履歴を確定する分散台帳。