サカナ未遂

プログラミング、筋トレ、子育て

"「納品」をなくせばうまくいく"を読んだ

ソニックガーデンの倉貫さんの「納品」をなくせばうまくいくを読みました。

 

リーンスタートアップを土台に、エンジニアがいない会社に必要な技術を提供する仕組み、ビジネスモデルを提唱しています。

わざとだと思いますが、タイトルは若干大げさにつけているかなぁと。
納品がなくしてうまくいくわけがない!と内容を読まずに批判する方もいることでしょう。
私も銀行の巨大な勘定系システム担当していたこともあるので、納品しないなんてありえない、と思って、なかなか読んでみようと思わなかったですが、、、

でも読んでみるとタイトルに嘘はなくて
「納品をなくせば”すべて”うまくいく」とも「”すべての”納品をなくせば~」でもない点がミソですね。
これは本の中でキチンと説明していますが、このビジネススタイルが適するのは、スタートアップ企業など、ビジネスが決まり切っていなく、顧客の要望などによって方向転換(ピボット)を繰り返す必要がある企業が対象です。

仕様を決める→作る〜、の開発フローだと、サービスを開始後にユーザーの反応が悪かった場合、修正に時間もお金もかかり、
・企業は時間とお金が無駄になる
・エンジニアはせっかく作ったものがすぐに仕様変更させられる。
・エンドユーザーは使いたいものではない
とみんなが不幸になってしまします。
そのためにシステム納品ではなく、毎日どういう機能が本当に望むものかを検討し、追加していくことでサービスを日々進化させていくことが必要とされます。

そういった柔軟に開発を続けていくモデルを「納品がない」ソフトウェア開発と名付けて実践されています。

お金を稼ぐだけなら、人材派遣や一括受注、あとは運用や仕様変更で追加料金をとるなどが効率がよいのでしょうが、本当に顧客やその先のエンドユーザーのことを真剣に考えたら、納品をしないという選択が最適解のような気がします。

また働く場所をとわず、残業しないなど、エンジニアのパフォーマンスをあげるための理念はすばらしいです。
エンジニアが最高のパフォーマンスを出せる環境を会社が提供することで、結果的に、顧客の満足につながっていく。よいサイクルを生み出すための取り組みなのだと思います。
社員のスキルと人間性を信頼しているからこそできることだと思います。


プロを目指す人のためのRuby入門 の著者の伊藤淳一さんもソニックガーデンですね、このレベルの技術者がごろごろいるソニックガーデン、きっと日本のソフトウェア開発の新しい基準になっていってくれると思いす。 

 

 

Go言語でechoサーバーを作る

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

という本で、現在HTTPの歴史を勉強しています。

HTTPの挙動を確認するにあたり、Go言語でechoサーバーを作る方法があったので備忘録。 ソースは以下のようになります。

package main

import (
    "fmt"
    "log"
    "net/http"
    "net/http/httputil"
)

func handler(w http.ResponseWriter, r *http.Request)  {
    dump, err := httputil.DumpRequest(r,true)
    if err != nil{
        http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
        return
    }

    fmt.Println(string(dump))
    fmt.Fprintf(w,"<html><body>hello</body></html>\n")
    
}

func main(){
    var httpServer http.Server
    http.HandleFunc("/",handler)
    log.Println("start http listen :8080")
    httpServer.Addr = ":8080"
    log.Println(httpServer.ListenAndServe())
}

上記コードを記載したファイルをserver.goとし、 go run server.goで実行します。

すると、mainメソッドが呼ばれ、localhost:8080でリクエストが来るのを待つ状態となります。 それから、ブラウザで、http://localhost:8080にアクセスすると、handerの処理が呼ばれ、画面に「hello」の文字が表示されます。

このserver.goとLinuxcurlメソッドを使ってHTTPの挙動を学習中、RealWorldHTTP、良書です、皆さんも是非!

超電導ナイトクラブについて

今まで読んだ小説で、一番好きなものを選ぶとしたら、村上龍の「超電導ナイトクラブ」をあげます。

 

初めて読んだのは20歳くらいの時で、以降数年ごとに読み返しています。

 

超電導ナイトクラブと呼ばれる、ボディビルダーのママがやっているバーにハイテックの常連が夜な夜な集まり、最先端の技術から下ネタまで、まとまりなく議論し、時に起こる問題にハイテク技術を使って解決を試みる、という内容です。

 

村上龍節というのか、前半は丁寧に描写し、物語を構築していくのですが、後半になるにつれ、物語自体が暴走し、ラスボス級のキャラがあっけなく死んだりして終わります。

 

なんでこの本が一番なのかとちゃんと考えてみたのですが、この本に書かれている禍々しく混沌とした場所に憧れているからだと思います。

頭良すぎてクレイジーになった人間とか、なんかぶっ飛んでる人間や、危ない匂いのする場所に憧れていて、でもそんな場所なくて、あっても近づかなくて。

だから小説の中に求めるのだと思います。

自分の行けない場所につれて行ってくれて、あってみたい人に会わせてくれるのが小説なのでしょうかね。

 

最近、あまり小説を読む時間がないですが、また時間を見つけて読みたいですね。

 

サイドバーにGitHubの草を生やしてみました。

ソニックガーデンのプログラマーの伊藤淳一さんのブログで、サイドバーにGitHubの草を載せた記事を読んで真似してみました。

blog.jnito.com 

とはいえ以前作ったゴミリポジトリがたくさん入ったアカウントとは別に、最近新しく作ったアカウントを載せたため、全然草が生えてない状態ですが、、、

だた公開したことで、もっとアウトプットしなくちゃという意識にもなるので、プログラムを書き続ける一つのモチベーションにもなります。

と言うことで、来年の今頃には草ボーボーになってるよう頑張ります。

 

 

 

エンジニアのためのキャリアパスを読んだ

最近発売され、話題になっていたエンジニアのためのマネジメントキャリアパスを読みました。

 

エンジニアとしてまだまだ技術的に未熟なので、ソフトウェアよりの勉強ばかりしているのですが、自分の年齢を考えたときに、マネジメントについても知見が必要になってくると思い、購入しました。

 

この本は、題名の通り、エンジニアのマネジメントキャリアパスについて書かれています。

メンターから始まりテックリード、人の管理、チームの管理、管理者の管理、経営幹部、文化構築と、各職責ごとにどのように振舞うべきかを教えてくれます。

あくまでエンジニアのキャリアパスであって、他の業種のマネジメントとは異なりとにかくどの職責でも技術に関しては、おざなりにしてはいけないことを強調しています。

 

特に印象的だったのはブリリアントジャークについてです。

ブリリアントジャークとは、

自己中心的で周りから恐れと嫌悪の入り混じった気持ちを抱かせる。

技術力は高いがそれにしがみつき、技術力以外は認めない

仕事はできるのでやめさせるのは至難

 

こう言うエンジニアってたまにいる気がしますね。

これの解決策は、第一に雇わないこと、だそうです。

(しっかり対応策も書いてありますよ)

 

なかなかのボリュームなので、全部読むのはそれなりに時間もかかりましたが、とにかくマネジメントは最初から誰でもできることではなく、向上させる必要があることがわかりました。いきなりできる人なんでそりゃいませんよね。

とても実践的な内容が書かれているため、昇進することがあれば、また読むことになりそうです。

 

ポモドーロテクニックを実践中

最近、試してみたい技術が多くなってきて収集がつかなくなってきました。

積読本も多く、消化しなくちゃと思いつつ、良さそうな本があれば買ってしまします。

 

今はRubyRuby on Railsを中心に勉強していますが、フロントエンドも面白そうなのでTypeScriptとReactも少しずつ勉強しています。

Reactの次はVue.jsもやりたいし、またGoはこれからも需要が伸びるはずなのでそろそろやりたいと思いつつ、DockerやAWSLamda、Firebaseなども押さえておきたいと思う今日この頃。(CIツールやwebpackもまだまだ未着手)

時間がいくらあっても足りないです。

 

ウチは妻もフルタイムで働いているため、家事は折半しています。

私の一日は

・朝5時半起床

・6時に子供を起こし、家族分の朝食を用意する。

・自分の昼食の弁当を作る

・子供を着替えさせ、保育園に送り出す。

・出勤

・17時半定時なので、18時半ころ帰宅(残業はほぼないためだいたいこの時間)

・子供をお風呂に入れる

・晩御飯作る(妻と半々)

・食器洗う(妻と半々)

・洗濯(妻と半々)

・子供の寝かしつけ(パパとじゃないと寝てくれない)

ちょっと家事が多い気が、、、、

まあこれ全部終わって、だいたい21時くらいから自分の時間になります。

起床が早いので23時半には寝たいので、だいたい2時間くらいがパソコンに向かえる時間となります。

で2時間あっても、妻と会話することもあるし、SNSみたりして、結構集中できない場合もあり、思うように進まないことが多いです。

 

そこでポモドーロテクニックを試してみることにしました。

ポモドーロテクニックは以下のサイトを参考にしました。

www.lifehacker.jp

25分集中、休憩を繰り返すことで、短いダッシュを繰り返し生産性をあげるテクニックとのこと。

今週から始めてみたのですが、結構いいですね。

25分タイマーをセットし、その間は対象の勉強以外のことはしなよう意識するだけで集中力が上がるような気がします。

また今まで1〜2時間技術書読んでたりしてましたが、時間を区切ることで、25分で自分がだいたいどれくらい技術書を読めるのか、コードはどれくらい書けるのかわかるようになってきました。

なので、30分くらい暇があれば、どれくらい作業を進められるか感覚的に掴めるようになるので、簡単な工数見積もりの精度が上がるような気がします。

まずはこのテクニックを使い、1日に2つの技術書を読んでいくようにしています。

25分、2セットで1つの技術書を読んで、次の2セットで別の技術書を読む。

これで集中して2冊を進めていっています。

しばらくはこのまま進めてみようと思います。

 

 

 

リーン・スタートアップを読んだ

ソニックガーデンの倉貫さんのブログが好きでよく読んでいてリーンスタートアップというものに興味を持ったのでエリック・リース著のリーン・スタートアップを読みました。

 

新しいことを始める場合に、成功させるために何をするべきか、どのようにすれば失敗する確率を下げることができるか、また失敗しても被害を最少にできるかなど、サブタイトルの通り、ムダのない企業プロセスについて書かれた本です。

 

顧客の本当に望むものを作るため、小さくはじめて検証しフィードバックをもらいながら製造していく。

そうして出来上がったものが本当に顧客の欲しいものであり、顧客が求めてないものは全て無駄な機能であり、時間とお金の無駄であると。

 

事業を進めるために、仮説を検証し、事業が成功しているかどうか定期的に調査し、正しければそのまま続け、誤っていれば方向転換(ピボット)を行うことが必要。

 

また色々な起業家たちの成功した背景を探り、そこから何が成功の秘訣になったかも書いてあります。

また成功談の裏にはそれより遥かに多い数の失敗した起業家たちがいることにも言及しています。

 

起業家だけでなく、社内での新しいプロジェクトを立ち上げる場合にも有効な手段だとも書かれています。

最初にガチガチに仕様と工数を決めてしまうウォーターフォールの開発に従事している自分としては、このような顧客ファーストな開発手法に憧れますね。