フルスタックエンジニア見習い

フルスタックエンジニア目指しています

本:巨像も踊る

読書

読書好き

突然だが、本が好きだ。 どのくらい好きかというと、偏差値で言うと55くらいだ。 一時期西村京太郎にハマった時期もある。

最近は、オライリー本やプログラミングの本が中心で、 たまにテクノロジー系のビジネス本を読む。 今日は最近読んだ一冊を紹介したい。 (古い本なのでアフィリエイトではないことがわかっていただけると思う)

紹介

巨象も踊る

巨象も踊る

20年ほど前、IBMは経営難で潰れかかっていた。 (実際にはつぶれるほどではないが、大赤字だった) その時にCEOとして招聘された、ルー・ガースナーの自叙伝である。 大企業特有の「社内政治中心」、「官僚的」、「顧客を見ていない」会社だったIBMが どのようにして復活を遂げたかを記している。 以下、備忘的にメモ

経営哲学

CEO当日の会議で提示されたメモに全てが集約されている。 (そのまま載せるのはどうかと思うので抜粋・編集)

  • 手続きではなく原則で経営する
  • 市場が全てを決める
  • 社内政治を弄するな
  • CEOは戦略の策定を実施する

これが繰り返し述べられている。 自社について考えさせられる。。。 (特に、社内政治・戦略の策定の部分)

文化が重要

他に気に入った点が、文化が会社そのものであるということである。 それは明文化しても強制しても意味なく、作られていくものということを述べている。 前例・慣習・意識、そういった言葉が文化という言葉に集約されている。 IBMでは「縦割り」すぎるほど縦割りの組織で、さらに顧客を全く見ていないような会社だったらしいが、 文化を変え、意識を変え、組織を変えて復活した。

その他

  • 自分のビジネスを知ることが重要(変な買収をしない)
  • CEOが積極的に社員に発信する
  • 集団を評価する。経営幹部は会社の業績を中心に査定される。

所感

  • 本に「eビジネス」のことが書いてあったが、今の「コグニティブコンピューティング」をどう思っているのか、またワトソンやBluemixについてガースナー氏がどう思っているのかを知りたい
  • ガースナー氏は、日本で言う「プロ経営者」。日本にこのような人がどのくらいいるだろうか。
  • やはり自社と照らしわせると、、、、

いつ勉強するか?

今の状況

  • 所謂Developerとして開発に従事
  • Architectとして設計にも参加
  • 後輩のメンター的役割も一部こなす
  • ただし全体を完全に見渡せる感じにはまだなっていない

今の知識

  • 正直知識・技術が足りない。たりなさすぎる
  • 開発の当たり前(お作法)を学んでいる
  • OSS等もいろいろ調べて名前は知っているが、使いこなせるものは少ない。

勉強の必要性

  • 当然ある。が、あまり時間が無い。
  • 本で勉強するのもなんか微妙だし、やはり手を動かすしかないと感じる

結論

普通のことを書いただけでした。

内製開発を当然にするために

一般的な話です

ユーザ企業の開発

いわゆる一般的なユーザ企業の開発≒進捗管理 である。

開発部隊は基本的に仕様書を書いて(これも書かないこともある)、 毎週のミーティングでベンダから進捗を聞く。

ベンダがベンチャーであれば仕様を徐々に固めていく「アジャイル」 というやり方がとられることもあるが、それでもやっていることは進捗管理である。

そしてそれを持って「私が開発しました」と社内的にはなる。

内製開発

その中で内製開発をしようという声が上がることがある。(例えば有名な日経新聞の例等)

そうすると何が起きるかというと、

  • 進捗管理をしている人に比べて開発に時間がかかる
  • 余り評価されない
  • 結果内製をしたがる人が減り、全員進捗管理となる

である。(かなり主観込)

さらに、内製しはじめは当然開発力がそこまでないので進みが悪くなる。

競争力をつけるために

しかし、それではノウハウは外部にしかたまらないし、何より他社と競争できない。 内製開発にしていくために必要なことは

  • 取捨選択
  • 我慢

だと思う。

全て内製にするべきなのか?このPJは必要なのか?といった取捨選択と、 一時的に効率が落ちることに我慢することが重要だ。

そして最終的に内製開発が当たり前という「文化」を築く必要がある。

sbtのディレクトリ作成スクリプト

sbtの推奨ディレクトリ構造を作成するスクリプトを作った。 既にいろいろあるみたいだが、Interenetへの接続口がない環境(まさに今仕事している環境がそう)でも 実行できるように自作した。

#!/bin/bash

project_dir=${1:-./}

cd ${project_dir}

read -p "Input project name (default=testpj): " project_name
project_name=${project_name:-testpj}
read -p "Input version (default=0.1): " version
version=${version:-0.1} 

if [ -e ./${project_name} ]; then
  echo "project ${project_name} is already exists."
  exit 1

else
  mkdir -p ${project_name}/{project,target}
  cd ./${project_name}
  mkdir -p src/{main,test}/{resources,scala,java}
  echo "name :=\"${project_name}\"\nversion :=\"${version}\"">build.sbt
  echo 'object Hi { def main(args: Array[String]) = println("Hi!") }' > ./src/main/scala/hw.scala
fi

誰にもみられたくない、でも見てほしい

矛盾

自分の考えの整理=ほかの人に見られたくない

でもブログを言う媒体で書いている以上多くの人に閲覧してもらい人気者にになりたい (アフィリエイトで大儲けしたい)

いろいろ考えた結論

  • 技術的な内容や調べたことを書いていって、検索してもらう
  • 閲覧数を上げる
  • 一般の記事もみてもらい、FBをもらう

まずほかの人に興味を持ってもらえるような技術的知識を得る所からだな。。

プログラムの勉強方法

表題でぐぐってみた

等がでてきた

私が思う効率的な勉強方法

個人的な性格のせいかもしれないが、必要に迫られないとプログラムなんて学べないと思う。

  1. 何らかの課題(実現したいこと)がある
  2. いろいろと調べながら実装する
  3. つまずく
  4. 2-3を繰り返して動くようになる
  5. 動くようになったが想定より遅いなど問題が発生する
  6. また調べる ・・・

のように実際にこなしながら覚えていくものかな、と。 デザインパターンなどは少しかけるようになってからでないとイメージ出来ない。 ※ただし複数の言語がかけてすぐに馴染めるなら別かもしれない

で、今

を勉強したいと思っている。 Scalaについてはあえて必要に迫られるように自分を追い込んでいる最中。

プラグラムを書くときのお供

やっぱりカフェイン

欲しくなりますよね。 私も例外ではありません。 家ではもっぱらネスプレッソ

ネスプレッソ Lattissima Touch(ラティシマ・タッチ)レッド F511RE

ネスプレッソ Lattissima Touch(ラティシマ・タッチ)レッド F511RE

会社でもコーヒーをよく飲んでます。

頭も使うので

甘いものも食べたくなっちゃう。 - チョコ - 大福 - クッキー

等、よく食べちゃいます。 しかも途中でやめられない。

そうすると太る

ので、週2回ペースくらいでスポーツジムに行っています。 筋トレよりプールがお気に入り。

ただ、それでもお腹周りが気になってきている。。。