yaotti's diary

Software is Eating the World

技術/組織としてどうスケールするか at GitHub

会社をスケールさせていくために組織面,技術面で何を行ってきたか.以下簡単なまとめ

組織面

従業員をよりhappyにするために,面白い仕組みを導入している.ミーティングがない,オフィスに来なくても良い.やりとりはpull requestとcampfire.
他にも組織として強くなるために,個人に依存しすぎない(知識共有を促進する),internal talk(tech talkみたいなのかな?それとも普通の会話?)は将来の従業員のために全て記録する*1,など.

技術面

  • 自動化可能なことを手作業でやり続けることによるコストは,手間だけではない.新規メンバーに学習コストが発生することになる.
  • masterブランチは常にデプロイ可能な状態に保ち,1日に5~30回デプロイを行なっている.
  • 意味のあるメトリクスをグラフ化しよう.全体でのレスポンスタイム平均がXXXms,というのは意味がない.
  • リリース以降今までインフラがどう変遷してきたか.ナイーブな実装だとストレージを無駄遣いしていたので,net-shardというCoWっぽい形で節約できるように変えた.


最後の"Continually refine your process + workflow"は心に留めておきたい.

ハッカーのためのハッカソン

毎日blog書くつもりだったけれど綺麗に3日坊主になってしまった.

1/4, 1/5はWantedly開催のHackathonに参加してきた.目的は「エンジニアのスキルがわかるようなプロフィールを作る」こと.
ハッカソンの様子など詳しくはこちら:) ウォンテッド超絶ハッカソン!! - ウォンテッド 航海日誌
そして2日間のハッカソンにより出来たのがこれ.

GitHubの情報を使って,ある人が使っている言語やフォロワー数などがグラフで見られるようにするサービス.自分がpublicな活動を全然してないなーとか,あの人はruby書きまくってるなーとか.
ログインなどは必要ないのでGitHubアカウントを持っている人はどうぞ.
Hackedly

Qiitaとしても各エンジニアがどういうスキルを持っていて,どれだけコードを書くのか/書けるのかをユーザーページで表現できるようにしたいと思っているので,今回のハッカソンは色々発見があり楽しめました!:)

顧客開発プロセス:アントレプレナーの教科書

年末年始はアントレプレナーの教科書
を読んでいる.方法論をきちんと学ばないといけないな,ということで技術書以外にもアンテナを張るようにしています:P

この本の前にはThe Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses
を読んだのだけれど,
「スタートアップ=自分達のアイディアを元にとにかく頑張って素晴しい製品を作り,それが使ってもらえると成功,そうでなければ失敗」
という自分の既成概念が壊された.
自分達のアイディアや仮定を頻繁に検証し,進んでいる方向が正しいのか間違っているのか常にチェックすることで無駄を減らす.時間と手間をかけて優れたサービスを作っても,誰にも使われなければ意味がない.
この本(アントレプレナーの教科書)では,新製品の開発プロセスはどう進めていくべきかということがより詳しく書かれている.

GitHub: 幸せに最適化する組織

以前id:naoyaさんにOptimizing for Happiness // Speaker Deckを教えてもらって以来,GitHubがどういう組織なのか,どう働いているのかに強い興味を持っている.

上記スライドに書いてある内容から自分の気を引いた部分をまとめると

  • 会社はお金を稼ぐためにあるのではない
    • チーム,顧客など人々の幸せを追求するのが最も良い
  • 小さく初めて大きくしていく
    • 最初の2年は10人以下だったが,2011年は14人→47人に!
  • 日々の生活にある残念なことを技術で解決しよう
  • 熱狂的なファンを作れ
  • highly-connected, flexible micro-structureな組織
    • 組織構造がピラミッドやグループではなく,密に繋がったグラフ構造

など.

GitHubberによるQ&Aやエントリなど

これから組織を作るという人は参考にしてみてはどうでしょうか.

英語アウトプット用にGitHub pageを利用する

要件は以下

  • セットアップが簡単
    • とりあえず書き始めたい
  • 自分のドメインが使える
  • markdown記法が使える
  • コードハイライト機能
  • ローカルファイルに書き,投稿という流れが出来ること
    • ブラウザで長文書きたくない&ローカルにも残しておきたい

ということでGitHub Pages(+Jekyll)を利用することにした.
jekyllで作る簡単GitHub Pages - T.I.D.を参考に.
Hiroshige Umino

習慣にしたいこと

具体的に行動していくこと/習慣にしたいこと

英語でoutput

英語inputは普通にやるようになってきたので,outputを意識的に続ける

  • lang-8
    • 日記を書く
    • 目的: 日常会話で必要な語彙を増やす
  • Langrich
    • 目的: 定期的(毎日)な会話の練習
  • yaotti.github.com
    • 技術ブログを英語で書く
    • 目的: 英語圏にアウトプットする,技術の話を英語でできるようにする
  • Genius app
    • 目的: 上記の練習で知った単語,フレーズを自分のものにする(speaking/writingで使えるようにする)

日本語でoutput

  • このblogを毎日書く.1行でもよしとする
    • 2011年を振り返る - nokunoの日記 "ブログは2011年1月1日から毎日更新を続け,12月20日まで休まず記事を書くことができました." すごい…
    • 目的: 自分のため.何をやってきたのか,何を考えていたのかを記録したい

その他

  • 計画を立てて過ごす
    • やることだけではなく,簡単に見積りも立ててみる.
    • 目的: pivotal trackerでの見積り精度を上げる(いまは適当すぎる)
  • コードを大量に読む
    • 書く方はどうせやるので,inputを怠らないようにする

個人的な部分では,とにかく英語に時間をかけていく.

2012年,意識しておくこと

あけましておめでとうございます.
一年の計は元旦にあり.2012年何に気をつけていくかをメモしておく.

「プログラムを書く」から「サービスを開発する」へ

何事においても、完璧に到達するのは、 付け加えるものが何もなくなった時ではなく、 削るものが何もなくなった時である。(アントワーヌ・ド・サン=テグジュペリ)

Goodはやらない、Bestに集中する(cookpad)

良さそうな物を作り続けるのではなく,無ければならないものだけ作るように考えを変えていく.
良い機能をたくさん持っているサービスが良いサービス,ではない.

shut the fxxk up and write some code.

毎日朝から晩までプログラムを書き続けるということはできないけれど*1,会社という形を作っても書き続けていきたい.

自分の過去や先人に学ぶ

過去の自分
様々なポイントにおいてどう考え,その結果どう行動したのかを残していく.
先人
理論を体系的に学ぶ.プログラミングに限らず,仕事の進め方などにおいても車輪の再発明をしない.我流/なんとなく,は大体うまくいかない.

ひきこもらない

知らない人と話すのが苦手なのだけれど,そうも言ってられないので頑張る.積極的に人に会う.頑張る…


今年もよろしくお願いします.

listening: NON-STOP NYAN CAT!