島までは遠い 〜サークルアラウンド株式会社代表佐藤のブログ〜

佐藤正志@サークルアラウンド株式会社のことが少しわかる場所。プログラマーを育てるトレーナーとして、現役のソフトウェア技術者として、経営者の端くれとして、想うことをつづる。

メンバーの仕事の遅延後の私のコミュニケーション

f:id:ms2sato:20160123143132j:plain

はじめに

togetter.com

これを読んで「先輩側が悪いんだ」「バッファが甘いからだ」などと意見が出ていますが、元々は「質問はありか?」ということなので、YES派の私なりの考えをまとめてみようと思いました。実際に私の現場では新入社員に対してこういうことを聞きました。ヒアリングの場に使いやすいように投げかけ質問調でまとめます。

ただ、思い起こすと結構経験を積んでからも見積もり失敗とか間に合わないとか恥ずかしい状況も引き起こしている自分なので、ホント「恥を忍んで」という感が否めません。そんな私も小規模ながらチームを率いて何人もの後進の面倒を見なければならない状況下で、こんな風に悩みながら色々とやっているよってことで。

私ならこんなヒアリングします例

「いつ、『間に合わなさそう』と思った?」

どこかの時点で気づいているはずです。なので、まずそこを確かめた上で「その時にどうすると良いと思う?」と続けて聞いてみます。たいていは「相談するべきだった」のような回答をくれるのではないかな〜と思っています。そういう回答でなかったとしても、一緒に考えてみる時間にします。

そして私としては「何の相談もなく締め切りに遅れる」よりも「事前に相談される」方が何倍も良いし「間に合わないと思ったけど、間に合います」という再修正がある方が良いということを強調します。相談しにくい状態は避けたいのです。

それは「遅れることが事前に分かってさえいれば、自分なら手を打てることが沢山ある」ケースが多いからです。助けてあげることはもっと上位の人ならできる場合が多いですし、仕事の信頼感がこういう連携から生まれたりもすると思います。

「何に思ったより時間かかった?」

何がしか予想外のことが起こっていて、時間がかかっているはずなんですよね。その時のことを確認します。

  • 技術的な問題でいわゆる「ハマってしまった」(実力不足も含む)
  • 割り込みの出来事

大抵こんな感じのことが確認できるのではないかなぁと。想定よりどれくらいのダメージがあったのかも聞いてみたりします。

「相談して良いタイミングはあった?」

上記が整理された状態でこの投げかけがあると、おそらく時間がかかったところの話が出てきたりするのではないかなと。その時にどんな相談があったほうがいいかはこちらから提示してもいいかと思っています。例えば以下のようなことでしょうか。

  • 「この問題に1時間以上ハマってるので助けてください」
    • そのために「1時間悩んだら聞いていい」とか言っておきます。どれくらい難しいかを判断できる経験値が無いことが多いからです。
  • 「この問題に結構時間がかかりそうですが、かけてもいいですか?」
    • 時間を無言で浪費されるより許可を求めてもらう方がいいです。そのために遅れる可能性があることをこちらは了承しないといけませんが。
  • 「思ったより1日くらい長くかかってて、終わりが来週前半までかかりそうです」
    • いわゆるリスケの希望を出してもらいます(できれば最後の手段にしてほしい。それまでに相談されたい)。

相手に伝えておきたい心構え

  • 予想外になってしまって遅れることは必ずある
  • 大事なことは「遅れる事実」「どれくらい遅れそうか」を事前に伝えること
  • 事前にそれを伝えることがシッカリできれば信頼が維持される場合は多い(むしろ高まったりする)ので、恐れず相談して良い

相談される側の心構え

  • 自分に余裕がないと色々と失敗することが多いので、できれば余裕を持った状態を維持する(難しいよね)。
  • 相談がしやすい雰囲気作り(相談された時「あぁん?」とか言わない)
  • 大事な内容は「大事なことだから厳しく何度も言う」と前置きしたり、その背景を話してあげる。

最後に

だめだ。書けば書くほど以前の失敗を思い起こして胸が痛くなる...。自分も努力します。 できれば具体的な「自分はこうしているよ」が皆で共有されてより素晴らしい対応ができると良いなと思い、書いてみました。

勉強会の内容が被るのはアリだとしても、イベント内容文章のパクリはダメじゃないでしょうか。

はじめに

偶然これを見つけてしまって「見覚えのある文章だなぁ」と。

megalodon.jp

私のところでやっている「プログラミング相談所」の文章が一部そのまま利用されているではありませんか。私が書いた文章なので当然見覚えありますよね。

circlearound.doorkeeper.jp

思うこと

勉強会の内容自体にオリジナリティがあるとかではないので、同じ趣旨の勉強会が開かれるのは仕方ないと思いますし、自分としては大歓迎な事なんです。そうやってプログラミングの初学者の人がどんどん登っていける場所が増えたら良いなと思っています(当然ですが、トレーナーとしての腕では誰にも負けたくないと思っているので、そこで差をつけたいというのが自分の負けん気とか自惚れみたいなものです。そういう本質的な競争がしたいです)。

ただ、内容とか投げかける文章に関しては自分たちで考えて書いておくべきではないでしょうか。ここまであからさまに内容を取って行かれるのはあまり面白くないですし、主催者側の倫理感が疑われると私は思います。

システムを作れるようになる為に少しずつこなそう

f:id:ms2sato:20160108223033j:plain

はじめに

新年一発目にどんな内容を書こうかと思ったのだけれど、なかなか決めることができずに時間が過ぎてしまいました。 一番伝えたいことをエントリにしたかったのですが、どうしてもまとまりません。

そんな時以前バズった記事がちょっと目に入って、メッセージよりもエピソードを伝えたいと思い直して、過去の体験を書きます。 codeio.hateblo.jp

以下の話は実際に僕の過去の現場で体験したことです。勉強して越えるべき壁について何か理解が進めば幸いです。

Aさんという人

私と彼は、ある会社の契約社員と中途入社の社員として出会いました。当時彼は26歳。私が28か9くらいの頃です。「ある学校でJavaのWEB開発を一年間学んで来た。」と言っていました。

当時の開発のリーダーが面倒をみることになって暫くしたある日、雑談していると「Aさんが活躍するのはだいぶ難しい」というような話を聞きました。どうやら本当にシロウトに毛が生えた程度の実力しかないようだと言うのです。

ヒアリング

開発についての理解度や今の実力を知るために、リーダーさんと私で業務後にいろいろと聞いてみる時間を作りました。ホワイトボードに擬似的なコードを書いてみたり、知っている言葉を確かめてみるようなことです。

わかったことは、自身で考えたコードを書くことはできませんし、Javaの参照(超基本です)への理解すらも出来ていないということでした。彼の性格から考えて手を抜くようなタイプではなく、真剣に学んでこういう結果になっているという事だろうと理解しました。

これには私とリーダーさんは頭を抱えてしまいました。そもそもの見えている世界が違うようだと認識したのを覚えています。

アプローチ

私は当時毎日出社するような事はなく自由な出社を認められていたので、暫くはそのリーダーさんについて仕事をしている姿を見かけていました。たまに昼ご飯を一緒することはありましたが、その後どうしているのかを聞く機会はなかったです。そんなある日、何かのきっかけで二人だけでランチに出る時がありました。多分下記のような趣旨の会話をした気がします。

私「最近どう?結構大変なんだろうとは思うけど。リーダーさんに面倒見てもらってる?」
A「…最近放置されています。かなりキツイです。」
私「質問したら答えてもらえるとかではないの?」
A「質問しにゆくと不機嫌になってしまうので、なかなかできません。」
私「oh...」

当時のリーダーさんはかなり職人肌の人だったので「背中で学べ」「勝手に登ってこい」「自分で調べろ」という方でした。私の伝える「育てる事が出来ない組織は沈むだけなのだから、うまく育てる事を考えないとダメだ」という事に反対はしないまでも、実践はなかなか難しい様子でした。その後様々な経験を経てだいぶ色々と考え方の変わった方なので、当時はまだまだ若かったという事でしょうか。

「このままではまずいな」と感じた私はリーダーに掛け合ってAさんを私の下に付けてもらう事にしました。 当時の会社はかなり自由度の高い扱いを認めてくれていたので、正社員でない私にもそのような形を認めていただけました。リーダーさんは既に匙を投げていたので丁度良かったのかもしれません。私と彼は考え方が違うので、私も結果を見せるしかないと考えていました。

トレーニング

基礎

まず本当に簡単なプログラミングをしながら理解度を上げて行きました。コンソールから動かせる簡単なコードを何度も書いたり、ファイルに出力するCSVの扱いなどを学んでみました。

そうする中で効果的な関数の使い方、コレクションクラスの理解などを勉強しています。勤勉な彼だったので、私からの提案に応えようとよく努力してくれました。「ここで結果を出さなければ会社を出て行くしかない」と本人も感じていたのでしょう。確かお盆休みの間も「宿題としてxxxを勉強してきます」という意欲的な生徒でした。

題材

少し学んだところで社内で利用するツールを作成する提案を会社にしました。当時社長が欲しがっていた「製品が売れたことがパッとWEBで見てわかる」というものでした。仕組みは忘れてしまいましたが、CSVのファイルでinputを行って、グラフにアウトプットするものでした。ポイントとしては下記を意識しました。

  • なるべく仕様が小さいこと
  • 皆の目に触れるもの(改善要求が出やすい)
  • 利用シーンの明瞭なもの

私の意図としては下記です。

  • これまでの練習が活かしやすい要素技術でできていること
  • 成果を会社のメンバーに見せることができること(成長を感じ取ってもらえなければ次の仕事は貰えないと考えた為)
  • 設計が分けやすく、彼の仕事の単位を小さくできること

実装

流れとしては、下記のような形でした。

  1. なるべく小さな単位で関数を私が切り出す(全てユーティリティクラスの関数です。オブジェクトをマスターさせるのは早いと思っていました)
  2. 仕様を彼に伝えて実装してもらう
  3. テストはコンソールへの出力で行う

結合はバラバラに作られた関数を繋げるロジックを書いてもらうことでした。「ちゃんと繋がって、魔法みたいだ」と言われたのを覚えています。関数へ切り出された部分を実装している間は彼には全体が見えていなかったので当然かもしれませんが、慣れた私たちにとっては当たり前のことですよね(^-^)。

結果

そうしてこのプロジェクトは成功して、確か一ヶ月程度で望むものが完成し、リーダーなど周囲からフィードバックを得て改善してゆくような形も取れるようになりました。プロジェクトの担当者としてのポジショニングと、少しは書ける人となったことが自信に繋がり、リーダーの元へ戻って行きました。

「あの時声かけてもらえなかったら辞めてました」

と、何かのタイミングで聞いて、うまいタイミングで行動できて良かったなと思いました。このことを通してリーダーの考え方にも変化が見られ、成長を促す方法について色々と考えてくれるようになった事も成果になったと思います。その後リーダーさん自身も人を育てる分野の会社に一時期身を置くことになるのですから、世の中わからないですね。

その後

その後は私の直属ではないものの、朝飯を食べながらAさんの作業を見つつ、抱えている問題のヒアリングと解決への糸口を伝えることはしていました。暫くして私は現場を離れることになったのですが「もう大丈夫だろうな」と感じていたのを覚えています。

一年もするとリーダーの右腕として信頼されるようになったと聞き、本当に嬉しかったです。

おしまいに

最初に学んだことだけで自分の実になって活躍できることは少ないと思います。ですが、諦めずに積み重ねてゆくことで成長できるのではないでしょうか。一度は現場で匙を投げられてしまうようなAさんでも、信頼を勝ち取る技術者になれる道筋があるということです。

私はそれまでにもOJTで何人か面倒を見ていましたが、Aさんとの体験は今のマインドや方法に強く残っている出来事です。私はただそれを何度も繰り返したくて今の仕事を続けているのかもしれません。

Aさんのその後はわかりませんが、良い体験や出会いをして現場で活躍されていることを祈っています。

世代の断絶を防ぐことが知識の継承に繋がるのかもしれない

blog.tinect.jp

ここで言っているのが経営者の様子なのでしっかり主題を捉えられているかちょっと難しいですが、ここ最近私に相談してくれた方の内容に似たようなケースが複数ありました。プログラマとしてキャリアをスタートして、その後マネージャとしてある程度のキャリアを積んだ方の中に、下記のような状況の方がいらっしゃる様子です。

  • 最近の開発のトレンドはキーワードレベルや概念レベルでは理解している
  • 実際に実践するレベルでは理解できていない
  • 現場の人達を自ら育てることがちょっと難しい

私と同じくらいの年齢かそれ以上くらいの方なので、業務系の開発が多かった時期にキャリアをスタートして、その後WEB系の流れが目立ってきた頃には現場を離れてマネージをしており、最近WEB系の現場を見るような立場になった、というような足跡である様子を伺っています。

  • GitHubや外部のCIを活用するような開発
  • クラウドを利用するインフラ
  • アジャイルな開発

というようなところがネックになる様子です。本来は世代の隔絶が無ければ少し上の先輩が間を埋めてくれると思うのですが、これが問題になるような場ではその間の世代が何らかの理由で抜けてしまっているのでしょう。

組織で物事を進める際のアドバンテージの一つは「集団でいることによる過去の知的資産の継承」だと思うのですが、それが難しくなっているということかと思います。工夫すれば現場の若い人たちが自ら学んでいく形を推進して物事を進めることができそうですが、これでは求められているスピード感に追いつけない、という事も多いのでしょう。

ノウハウの陳腐化が加速した結果だと思うのですが、ある程度世代の断絶を防ぐことがこういった問題を防ぐことに繋がりそうに思いました。組織は少人数で組み立てたいですが、このような視点も大事かもしれないと感じました。

一歩目を踏み出した人を応援しよう。過去のあなたもきっと同じだった。

f:id:ms2sato:20151125004600j:plain

yakst.com

素晴らしいエントリです。これを読んで感じたことを記しておきたいと思います。

まずは楽しみを応援してあげること

彼らには、プログラミングのとりこになるのにかけて、まずは何かを(何でもいいんだ!)学ばせて挙げよう。それから、彼らに現実を見せてあげればいいのだ。

そうなんです。拙くても良いですし、テクニカルではなくて良いんです。そしてもしも何かが動いてたら「おお!すげぇ!」って一言伝えてあげたら良いと思います。みんな初めてのシステムが動いた日のことを忘れてしまいます。過去の自分と同じ体験をまさに今している人をどうして貶すことができるのでしょう。

自分が初学者だった時にいて欲しかったような先輩に、私はなりたいと思うのです。

そもそも言語や環境をDisること自体に意味がありません

とかく「あの言語がxxだ」とか「あのフレームワークはxxだ」とか言う人が多い業界だと思いますが、そんなことで喧嘩することにはあまり意味がないと私は思います。やりたいことや学習の傾向に合った言語や環境はあるとは思いますが、普遍的なものなど無いはずです。PHPもRubyもJavaも、もちろんXも(Xにはあなたの好きな言語を入れてください)、長所短所があるだけですよね。

自分の手に馴染んだ道具で作ることも素晴らしいですし、新しい言語や環境にチャレンジすることも大切なことです。プログラマーとして歩み出したら、すぐに2-3の言語は使うはめになると思います。最初の一つが決定づけてしまうことなど殆どなくて、結局複数やってみて選ぶ時期があるはずです。楽しいと思えたら、複数浮気していくのも楽しめますよ。新しい言語はワクワクします。

成長しながら使い分けて行けば良いだけです。

私のことを言えば...

最初の言語はBASICでした。VisualBasicではなくて、BASICです。MSXをテレビに繋いで、autoを使って行番号を自動的に作りながらコードを書いていました。今私はBASICを使うことは全くありません。どこで使えばいいのかもわかりません。ですがBASICは私にロジックの書き方や考え方を教えてくれて、何よりプログラミングの楽しさを教えてくれた大切な言語です。

私はあの時感じた「うぉぉ!動いた!」という感動を一人でも多くの人に感じて欲しいのです。 それは本当に熱くなれる体験なんです。

今期ももう折り返しです。あと半年(会社編)。

はじめに

ms2sato.circlearound.co.jp

の続きです。最後は会社について。

会社について

個別トレーニング

ぼちぼちな成果でしょうか。「特別大人気ではありませんが、全く見向きもされない事もない」という状況です。

このあたりに顛末を今後も綴ろうと思います。なかなか内容や成果が見えにくいところなので、少しずつでも情報を出せるようにして行きたいです。また、卒業や進級してゆく人たちの後押しになると良いと考えています。

私のイメージとしては、単純に一回鍛えて終わりではなく、その後もゆるく繋がってゆける環境が残せたら素晴らしいです。昔の武術の道場のような形に近いものを目指したいです。同じ文化を共有している同士(同じ流派とも言えるかもしれません)がいいコラボをできるような場が提供できればと妄想しています。

現実に少しずつ繋がってゆく形ができていると思うので、今後も楽しみです。

法人向けトレーニング

circlearound.co.jp

良いご縁をいただき、法人向けのトレーニングも行わせていただきました。もともと私はOJTからトレーナーをスタートさせている事もあり、とても楽しんでできました。基本的には会社から言われてやっているような方ではなく、技術力を高めたいマインドがある人たちに伝えていきたいので、そういった機会には今後も挑戦して行こうと思っています。

私の方で面接をさせていただくなど、質を高めるアクションをさせていただければありがたいです。

自社サービス

個別トレーニングでチーム開発をしたいという方に向けて、弊社自社サービスの開発に参加することを提供しています。実際の開発に加わることでGitHub-Flowを学び、今現場で行われている最新の手法を頭にインストールできます。ただサンプル的なサービスを作るのでは面白く無いので、私が日常的に利用できるものや、トレーニングの真髄をWEB上で再現するもの等が出来上がりつつあります。

受託業務

あるスタートアップの受託(リモート)をやったり、小規模なサービス開発の受託(持ち帰り)を請けることは続けています。私自身が現場に立ち続けることで、その知識をトレーニングへフィードバックし続けることが、弊社サービスの質を常に向上し続ける根幹であると捉えている為です。

トレーニングを卒業した後、即現場に立てそうな人であればお互いの同意の下、一緒に受託開発をするのは良い形であると思っています。先に自社サービスで十分チーム開発をしてから戦場に立つので、スムーズに移行できると想像しています。

(番外)ピクニック出社

「どこで仕事してもいいのだから、外でもいいよね」ということで、春や秋の過ごしやすい日には近所の公園でレジャーシートを敷いて仕事をするようなことを試しました。いつも部屋の中では息も詰まってしまうので、こういったことも挑戦していきたいです。

(番外2)シェアオフィス兼コワーキングの活用

一つの会社のメンバーが集まっているだけだと何かと閉塞感が出やすいと思いますが、現在はシェアオフィス兼コワーキングスペースを提供しているCASE Shinjukuさんへ入居している都合上、常に外部の方との場の共有が存在していて、風通しが良くなっている気がします。

業種が様々だったりするので、IT畑ばかりで固まらないイメージでいられるのも興味深い場所であると思っています。最近ここにゲストを連れ込みまくっているので、本当は二人しかいないのに無駄に盛り上がって見えている賑やかしが弊社のポジションです。

まとめ

個別トレーニングが中心になって、自社サービス、受託開発と、他の事業との連携が生まれています。どこまで行っても「人が成長し、育った人が活躍する」為のアクションを繋げているだけなので、多くのことを行ってはいますが伸ばす方向は定まっているはずです。

特にスタートアップの受託は本当に猛者と呼べるような人がいらっしゃったりするので、私自身もとても勉強になり、こういったもはや私だけでは辿り着けない高みを見ている人との仕事から、トレーニングへ一層フィードバックしていきたいです。

そんな経験からも、今後もトレーニング事業が拡大するシーンがあろうとも 「トレーナーは現役の現場で活躍するプログラマである」 というところを維持できれば良いと思っています。私のトレーニングのイメージはOJTなので、OJTの外注を受けるのが弊社のポジションであると認識してます(法人向けであればまさにOJT。個人向けであれば現場体験のようなところでしょうか)。

おしまいに

弊社の今を様々な切り口から度振り返ってみました。前半の種蒔きフェーズが終了しつつあるので、期の終わりへ向けて刈り取りをしていきたいと思っています。様々な方面からお問い合わせを頂いておりますので、いろいろとモノにしていきたいところです。

今後ともよろしくご贔屓に!

今期ももう折り返しです。あと半年(自分編)。

はじめに

ms2sato.circlearound.co.jp

上記の続きです。人についての二つ目で私自身の事。

私の事

事業の中で「人にお願いする」事に慣れてきた

弊社の自社製品や受託のお仕事に外部からの人をアサインさせていただく事が増えてきました。もともと人に頼み事をするのは得意ではなかったのですが、最近ではそうやって外部の人と一緒に活動する方がうまく仕事が進むような気がしています。お仕事をお願いして報酬を支払う、という当たり前の事が安定してできるようになってきたのは大きな変化です。

開発だけではなくて、例えばPRに関する相談や、事務的な作業を少しずつ知識のある方やコストを割いてくれる方にお願いして外出しすることも始めています。できるだけ本来の事業に集中する時間を作らないといけないと感じます。放っておくと単純な事務作業が溜まってしまうのです。これに埋もれると、あまり効果的な価値を生まない事を日々続けないといけなくなってしまいます。

弊社の構成はまだ私自身がプレイングマネージャーとして牽引しなければいけない状況ですので、その時間を作る為にも人へのお願いをもう少し続ける必要があるでしょう。

時間がある程度決まってきた。良くも悪くも。

もともと始業や終業、出勤日、リモートワーク日等、全てが決められていない弊社です。私は基本的に「一番効率よく仕事できる時に、成果を出せる形で働けば良い」と思っています。ただ、メンバーの齋藤が朝出勤する時間を概ね決めているのもあり、合わせられる時は合わせるようにし始めました。

そうすると「あれ?なんか自然に同じようなリズムで働いている?」となってきて、そもそもその時間帯が効率良いのか考えなくなってしまったような気がします。これが良い事がどうかまだよくわかっていませんが、新たな変化として生まれた事です。でも、効率が悪そうな日はやはり時間をずらして働いています。例えば前日に会合があったりするとアルコールのせいで午前中の脳がスッキリしていない時がありますが、そういった時は思い切って午後から働くような事も多いです。

技術のウェイトが下がってきた

自分の技術の馬力で一点突破しなければならない状況が最近減ってきた様子です。下記のような要因だと思っています。

  • 関わるメンバーの成長(社内・社外含め)
  • 受託の請け方をマルッと受ける形よりも、ポイントで活動できる形に変えた事
  • トレーニングへの傾倒(実際のトレーニングもありますが、先の為の準備やいわゆる「種まき」も含んでいます)

簡単に投げだせなくなった。

以前のように取締役しかいない状況ではありません。私が事業を投げ出す事は、メンバーや関係してくれている方の仕事がなくなってしまう事を意味するので、そう簡単に「やーめた」とはできません。もともと全く投げ出す気は無いものの、責任感もいいプレッシャーになっていると思います。投げ出すような状況にしないための思考をするようになりました。

ずっと走り続けられる為に、燃えすぎて燃え尽きないように、メラメラずっと火を灯す自分であるように、以前よりも意識が強くなっています。

体調管理についても、倒れる事など無いように、妙だと思ったら迷わず休息を入れるようになりました。とは言え、完全な休日というのは私はあまりやりません。多分そのリズムがちょうど良いのでしょう。

家について

今、いわゆるルームシェアをしているのですが、一緒に暮らすメンバーが事業に関わるようになってきたり、毎日コードを書く事に注力している人が一緒にいたりするので、素晴らしい環境だと思います。

これももう少し続けて、次のステップへ移っていきたいです。

毎日ワクワクしている。

今期は本当に楽しんでいる気がします。主に下記のような要因ですね。

  • 人の成長が感じられる環境である事(自社メンバー・トレーニング受講生・家族)
  • 蒔いた種がいくつか発芽しそうな事(主に自社の企画)
  • 良いタイミングでよい方からお声掛け頂ける事

おしまいに

毎日仕事ばっかりしているのですが、遊ぶように仕事しているのでとっても楽しいです。昔に比べてそう簡単に自分の船が沈むと思わない心境の変化もあって、これをどういう形でもう少しだけ拡大するのかを考えるのもワクワクしています。