「できる人の仕事のしかた」を立ち読みしてみた

できる人の仕事のしかた

できる人の仕事のしかた

たまたま娘をベビーカーにつれてショッピングモールに行ったとき
本屋の入り口にあった本を手にした。

娘がいるのでずーっと読むわけにはいかなったのだけど、
たった数十ページ読めた部分の中のエッセンスは
仕事の考え方として、とても意味のある内容だと思った。

この本だったかなともうろ覚えだし(でもたしかこれ!)
全部を読んでるわけではないのだけど
思い出せる部分だけメモしておく。

失敗に学ぶ

失敗を何度も繰り返してはいけない。

自分の失敗であればあの時あーだったなと
思い返すことで学習し回避することができるだろう。

だが他人の失敗から学べとよく言うが
実際に他人の失敗から学ぶことはできるのだろうか?

これはかなり難しいことと思う。

なぜなら失敗のショックは経験できないからだ

それに失敗談を聞いてもことこまかな状況は経験、想像できないから
どうしてそうなったかは深く心に刻まれにくいのではと思う。

そこで本書ではどう言ってるか?

人の失敗を手伝うことで失敗の原因を探る

これはすごくいい

エンジニアの仕事をしてて障害とかはいやなんだけど
よく言われるのは「炎上案件で鍛えられた」
ということ。

自分の仕事に置き換えると
(他人の)障害を通して自分の学びにしてしまうというのは
とてもいいなと思いました。

仕事でのオンリーワンとは

自分にしかできないような仕事がしたい
選ばれるような仕事がしたい
と思う人は多いだろう。

オンリーワンの仕事ってなんだろうなと思うと
自分がパッと思いつくような仕事でも
オンリーワンじゃんと考えてしまう。

でもなんか違うんだよ

そこで本書では

組織にとって有益であり、自分にしかできないことが
オンリーワン

そうなんだよな!
組織にとって有益」じゃないと
変なことやってるただの無駄なオンリーワンなんだよな

すごく納得してしまった言葉でした。


となると組織の全体感としてどこに向かってるのかを
把握することがとても大事だなと再認識しました。

PLAZMA Data Platform Day: TD Tech Talk 2018 行ってみた

イベントに申し込んでるのを当日思いだし行ってみた。

メモを書いておく。

PLAZMA Data Platform Day: TD Tech Talk 2018
techplay.jp

Infrastructure for autoscaling distributed system 佐々木 海 - Treasure Data, Inc.

  • トレジャーデータで使ってるプラットフォームなど、つらかったことなど解決したことなど
  • 主にAWS使ってる
  • PrestoとHiveを主に使ってる
  • メタデータをPlazmaDB 主データはS3に置く。
  • Hive 0.14
  • 全部で250兆くらいのレコード(だったと思う)
  • 1053trillion record/月 1兆件か
  • 14million query/月 1400万か
  • 20PB/月
  • プレストのワーカーのスケールの話
  • ワーカー増やして分散させると、クエリのタスクフラグメントやジョイン処理を分散できるので早い
  • S3のデータ読み込みもパーティションで分割して読み込めるので読み込みも早くなる
  • スケーリングするときにステートを残さないようにする。バージョンアップが難しくなるから。
  • クエリを失敗させずにスケールインが難しかった
  • amazonのコードデプロイでデプロイ
  • EC2インスタンスを自動で構築
  • デプロイ用のファイルをまとめておけばコードデプロイでやってくれる
  • グループごとconfigurationごとにデプロイが可能
  • クラスターの立ち上げ時間が短縮できた
  • lifecyclehook :クエリ実行中を判断して自動でインスタンス停止してくれる
  • Target tracking scailing policy:目的の使用率を達成するために自動で必要なインスタンスをオートスケールさせる
  • スケールアウトはすぐやるがスケールインは保守的なのでインスタンスは減りにくいことがわかった
  • 今後どんなクラウド環境でもオートスケールできるようにすることを目的としたい

2020年代に向けたDeNAの分析基盤 松木 秀憲 - DeNA

  • DeNAのAIシステム部
  • サービスを軸にサービスを改善しさらにAIの研究開発
  • 各部門にアナリストがいてその人のために分析基盤を提供してる
  • 分析基盤の今
  • 社内でログフォーマットを決めてETLしやすいようにする
  • システム構成
  • サービス(アプリケーションサーバー、DBスナップショット)→ログゲートウエイにログを集める
  • fluentdを使って集める
  • fluentd安定している 優れたツール
  • HadoopHDFSとして使ってる
  • 少しHive使ってる
  • サービスごとにログゲートウエイからインポートする
  • HadoopからEmbalkを使ってGoogleBigQueryかHPVerticaにインポート
  • いまはBigQueryへ移行中
  • Verticaは容量課金 1TBまでは定額、1.1TB使ったら2TB分の料金みたいな感じ
  • Embalkはプラグインが豊富で使いやすい
  • yamlで書くのでプログラミング的に使いやすい
  • BigQueryとVerticaに検索できるArugusを内製。自分たちの要望を細かく反映できるから
  • スケジューラ
  • jenkins たいていのことができてしまうので他に移りにくい
  • Digdagが魅力的
  • yamlで設定できる
  • こまかいタスク定義ができる
  • 並列処理が可能
  • でも権限管理がしづらい
  • 運用
  • 仕様者向け技術サポート
  • なんでも相談を受けるようにしてる
  • 相談はslackで受けることが多くなってきた
  • AI基盤の今
  • AWS/GCPを使ってる
  • GPUを使いたいときに使う
  • Infra as Codeを徹底
  • Terraform, itamaeを使う
  • プロジェクトが始まると一週間で基盤を提供してほしいとかある
  • 今後のAI基盤
  • クラウドネイティブ
  • サービスに合わせて分析基盤もクラウド
  • アナリスト向けには既存と同等のUXを提供
  • 分析基盤にとどまらない基盤
  • 便利なUXを提供
  • データ分析、AI、Kaggleなどあつかう多様なデータを対応する
  • より安全な権限分離
  • AWS/GCPアカウント など
  • Amazon sagemaker  jupyter が使える
  • マルチメディアデータを扱うAI基盤
  • 動画、静止画も扱う基盤を対応したいと思ってる

ヤフーにおけるHadoop Operations 安達 寛之 - Yahoo! JAPAN

  • 120PB にHadoop保管 4100ノード
  • マルチビッグデータドリブンカンパニーを目指す
  • Hortonworks 2.3 +Ambari 2.4
  • 主に使ってるのは1500ノード
  • HDFSは37PB 60TB/day
  • マルチテナント環境
  • 2,3万ジョブ/day
  • Hadoopチームの変遷
  • バージョンアップ自動化、運用ツールの自動化など →DevOpsの加速、ユーザーサポートの強化
  • Hadoop運用の自動化、クラスターバージョンアップの自動化してきた
  • これまで12人x10時間 で作業 利用者も使えない状況だった
  • ambari使って各ノードにコマンド実行
  • ansibleも使う
  • ansibleでまずMaster系をVerup
  • 並行してTool、clientとworkerをVerup
  • セキュリティ対応の自動化
  • 適切にデコミッションしてからセキュリティ対応してリコミッション
  • HiveもLBで使うノードを制限してセキュリティ対応
  • 不良ノード対応の自動化
  • 数百台数千台あるとよく壊れる
  • dmesg からハードウエアのエラーを検知してスコアリングして
  • 自動でサービスアウトさせる
  • 今後
  • データセンター建設中
  • ErasureCodingに期待
  • NameNodeの負荷対策
  • HDFS Federationに期待
  • Infra as Code できてないところがあるので対応する
  • 個別変更をしない。自動化が大変になる

リクルートライフスタイルが考える、万人に使ってもらえる分析基盤の作り方 山田 雄- リクルートライフスタイル

www.slideshare.net

  • カスタマーセントリックで基盤を作る
  • collect システムが人に合わせる
  • ユーザーアンケートをするなどして使う側の気持ちにを理解する
  • 基盤を使う立場になる、データを使うチームと同じグループになる
  • confirm
  • ユーザー自身も気づいていない本音を探りあてる
  • 対応時間でレベル分けする。なぜその要望をあげたのかwhyを考える。
  • create
  • 売り上げを上げないと予算がつかない
  • 運用コストを下げる
  • 障害が起きた時にべきとうせいを確保
  • なるべくクラウド使う
  • ユーザーが使いやすいIFを用意
  • ユーザー教育のための動画コンテンツを用意
  • check
  • 効果の検証
  • KPIを設計する
  • ユーザーアカウント数、レスポンス時間、bot使用回数など
  • continue
  • 進化ができる基盤
  • DataLake構成 S3でやってる
  • いいサービスがでてきたときに柔軟に対応できるようにする
  • 透明性が大事
  • ただしい情報が整理されててわかりやすくする
  • 分析基盤の構成
  • BigQueryやOracleなど
  • SPSS、Tableuなどで分析
  • Oracle ExaData ホットペッパーなど
  • Redshift 事業データ web行動ログなど
  • Redshift Spectrumを活用
  • BigQueryへもデータ流してる
  • TrasureDataも使ってる
  • テーブル数 4000
  • クエリ数 2万/day

懇親会など

  • リクルートライフスタイル山田さん
    • データ全部クラウド化とか考えてたらすごくお金かかりませんか?
    • リクルート一括で契約している枠があるのでそうでもないかも
  • Yahoo 安達さん
    • セキュリティでkerberos使ってます?どうやって導入しました?
    • →自分が入ってきたときにはすでにkerberos入ってた。

感想など

  • Big data のプラットフォームの運用の話はだいたい成熟してきた感がある。
  • S3にいれてRedshiftやAthenaでどうにかするとか、オンプレで頑張るとか。
  • オンプレは中身のセキュリティ上クラウドに入れられないとかあるみたい。
  • Hadoopのバージョンアップはやっぱどこも大変らしい。そうだよね、あんなでかいデータサーバーをスタンバイでもってるなんて無理だろう。
  • YahooはHorton使ってるそう。しまったなあ、MapR, cloudera とか何使ってるか聞いておけばよかった。
  • DeNAリクルートライフスタイルのアナリストとのやり取りは、あーやっぱ分析者として使う側を考えてUXの向上を考えないとなーと思った。
  • リクルートライフスタイル山田さん
    • こんなことありませんか?
    • 分析T「機械学習、データ分析で改善して賞金xx得ました!」
    • →基盤T「それ分析基盤があってのことやろ…」
    • あるあるすぎて、笑ってしまったwwwwわかりみが深い!
  • 無料のコーヒーがスタバだった。TresureDataお金もってるなーと思った。
  • あんまスタバのコーヒーはおいしいと思えないが。。
  • 懇親会で講演者の方に話しかけやすかったのはラッキー
  • 懇親会 軽食だったけどうまい!
    • 注意事項に【飲食のみを目的としたご応募・ご来場はご遠慮ください】
    • わかったwww

KIRKLAND (カークランド) シグネチャー スターバックス ロースト ハウスブレンドコーヒー 907g

KIRKLAND (カークランド) シグネチャー スターバックス ロースト ハウスブレンドコーヒー 907g

【シェル】ヒアドキュメントのEOFの前にスペースは入れてはいけない

みたいです。

これはちょっとハマりました。

ヒアドキュメントとは

ヒアドキュメントという機能を知っていますでしょうか?

簡単に言えば複数行で文字列を表示させる機能です。


Qiitaで探すといっぱいでてきます。
詳しい機能は下記など、いろいろ探してみてください。
qiita.com


ざっくり使い方

コマンドは下記のように使えます。

$ cat << EOF
> aaa
> bbb
> ccc
> EOF
aaa
bbb
ccc

シェルスクリプト

もちろん同じようにシェルスクリプトで使うこともできます。

eof_test.sh

cat << EOF
aaa
  bbb
ccc
  ddd
EOF

でなにが問題か?

functionで使ってみる

function内で使おうとすると、下記のようにインデントを入れて使いたくなります。

eof_test.sh

function hoge() {
  cat << EOF
  hoge
  EOF
}
hoge

でこれを実行するとエラーになります。

eof_test.sh: 行 7: 警告: ヒアドキュメントの 3 行目でファイル終了 (EOF) に達しました (`EOF' が必要)
eof_test.sh: 行 8: 構文エラー: 予期しないファイル終了 (EOF) です

なのでEOFがある行の行頭スペースを除けばOKです。

function hoge() {
  cat << EOF
#cat << EOF ←この行も行頭スペースなしにしてもいい
  hoge
EOF  # ←この行頭スペースを省く
}
hoge

これがzshで実行すると…?

でここが核心なのですが、たまたまこのようなスクリプトzshで実行してたんですね。
zshで実行するとエラーログがこんなのでます。

eof_test.zsh:7: parse error near `\n'

なんのエラーなのかわからない!!!(ToT;;)


shで実行した場合はこんな風にでます。

eof_test.sh: 行 7: 警告: ヒアドキュメントの 3 行目でファイル終了 (EOF) に達しました (`EOF' が必要)
eof_test.sh: 行 8: 構文エラー: 予期しないファイル終了 (EOF) です

なので、あーEOF付近のエラーだなと推測がつくのですが
zshは全然どこが悪いのか推測がつかなかったので
かなり時間を浪費しました。


しかもエラーが出た時は数百行のスクリプトのかなり上の方にEOFを書いてて
エラー指摘の行が一番最後だったので、エラー原因を探るのにかなり苦労しました…。



このことが誰かの役に立ちますように。。。



入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

新しいシェルプログラミングの教科書

新しいシェルプログラミングの教科書

Hiveでpartitionはテーブル定義と紐づいているようだ

Hiveのテーブルにカラムを追加した時に
追加したカラムがスッカスカでデータが取れないことがあった。

結論から言うと、パーティションが変更前のテーブル定義と紐づいてるから
追加カラムの値が取れなかったってこと。

なのでパーティションを作り直すと追加カラムのデータが取れた。


そのことを知見として書き留めておこう。

データ

こんなデータ

hoge_data.tsv.gz (↓タブ区切りね)

id	name
001	hoge
002	fuga
003	mohimohi

最初のテーブル定義

パーティションは適当、でもこれがくせもの。
external じゃなくてもいいかも、たぶん。

name カラムが無いことに注意。あとから作る。

create external table if not exists hogehoge_table (
  id     string
)
partitioned by (
  version string
)
row format delimited fields terminated by '\t' null defined as '' stored as textfile
location '/hoge/test.db/hogehoge_table';

フォルダ作成

hdfsに下記のフォルダを作っておき、hoge_data.tsv.gzを入れておく。
/hoge/test.db/hogehoge_table/version=1234

パーティション作成

Hiveを起動して下記コマンド。自分はbeeline使ってるけど、普通は何使うんだろう?

alter table hogehoge_table add partition (version="1234");

SQL

でさっそくSQLを実行してみる。

select * from hogehoge_table where version="1234";

hogehoge_table.id    hogehoge_table.version
001                           1234
002                           1234
003                           1234

予想通りに取れる。

カラムを追加する

alter table hogehoge_table add columns (
  name     string
);
select * from hogehoge_table where version="1234";
hogehoge_table.id      hogehoge_table.name         hogehoge_table.version
001                                                    1234
002                                                    1234
003                                                    1234

→name 列が取れてない!

パーティションを削除してもう一回作る

alter table hogehoge_table drop partition (version="1234");

alter table hogehoge_table add partition (version="1234");

もう一回SQL実行

select * from hogehoge_table where version="1234";

hogehoge_table.id   hogehoge_table.name   hogehoge_table.version
001                         hoge                    1234
002                         fuga                    1234
003                       mohimohi                  1234

→name列が取れてる

結論


でもな、impalaではこんなことは起きなかった。
なんでだろうね。

参考

別の人も同じこと起きてるみたい。

bigpicture.pl


Hiveのwiki見るとSQLの書き方が書いてある。
LanguageManual DDL - Apache Hive - Apache Software Foundation

ALTER TABLEの時にPARTITION入れればいいのね。

ALTER TABLE table_name [PARTITION partition_spec] ADD COLUMNS (col_name data_type ...);

プログラミング Hive

プログラミング Hive

  • 作者: Edward Capriolo,Dean Wampler,Jason Rutherglen,佐藤直生,嶋内翔,Sky株式会社玉川竜司
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2013/06/15
  • メディア: 大型本
  • この商品を含むブログ (3件) を見る
ビッグデータ分析・活用のためのSQLレシピ

ビッグデータ分析・活用のためのSQLレシピ

数学検定を受けてきました。

f:id:suganoo:20180417130602j:plain
準1級です。
高校レベルの数学です。

なんでー高校レベルかよっと思ってましたが、
卒業してから20年近くたってるので、解放はほぼ忘れてました。

数列、ベクトル、行列、極限、楕円曲線/双曲線、微分積分・・・・

去年の秋から取り組んでましたが、やってみると
計算のやりかたなんかけっこう覚えてるものですね。

数学好きでよかった。

なんで数学検定?

高校生まで数学は好きで得意だったのですが、
学生時代はバイオ系の学部だったのであまり数学をやらず、
それがすごーく心残りだったんです。

うーっ.....偏微分とか高度な数学やってみたい!

っとこの20年考えてました。


また、機械学習やデータ分析、人工知能とどんどん新しい技術が出てきてます。

その根幹は数学や統計学です。

そういった分野の仕事もしてみたいなー
でも経験がない。どうしよ?っと考えて

おそらくnumpy,pandas,scikit-learnやRやDeep learning
ツールでしかないから覚えてもいつかは新しいツールがまた出るだろう。
(当然できたほうが有利だけどね)
また子供が小さいから、勉強の時間もとれない。

だったら、先に数学をしっかりやっておこうと思ったのです。

なので早く1級の分野がやりたい!

試験はどうだったか

4/15が受験日だったのですが、1次試験はなんとかなったものの
2次試験が半分くらいしかできなかった。。。


はやく答え合わせしてみたい。

たぶん結果はダメだと思うので、次回7月の試験を目指します。

それにしても試験時間中、数学解いてるのが楽しかったなあ。

使った参考書など

U-CANの数学検定準1級ステップアップ問題集 (ユーキャンの資格試験シリーズ)

U-CANの数学検定準1級ステップアップ問題集 (ユーキャンの資格試験シリーズ)

1冊を何度もやるのは飽きてしまい、2冊読み通しました。
どっちか1冊でいいでしょう。

ためせ実力!  数学検定準1級実践演習

ためせ実力! 数学検定準1級実践演習

この最後の3冊目の参考書はなかなかレベルが高くて
問題解いてて楽しかったですよ。


うん 数学力を今後の業務のアピールにしたいなあ。
さーまた頑張ろう

30代以上で子供がいて家事もしてるエンジニアは今後どうやって勉強するべきか

f:id:suganoo:20180403125030j:plain
自分は去年2017/6月に娘が生まれた。
そして今年2018で37歳になる。

けっこう家事はやってる方だと思うんだけど
プライベートの時間がかなり減った。

男という生き物はどうしても家事を嫁さんにやらせがちと聞くので
結婚した時に家事はなるべく率先して家事をしようと思った。
別に嫌いでもないし、食べることや料理が好きだったし
家のことを自分でコントロールしているというのはなかなか楽しいものだ。

夫婦共同生活が始まり、家事をなるべくやるようになったが
プライベートの時間やお勉強時間がかなり減った。

そして子供が産まれてさらに時間が減った気がする。
産まれた直後は寝る時間も減ったが、今はなんとか夜は寝てくれている。


自分はITエンジニアとしてやってきたい。
だからこそお勉強はしたい。

じゃあ休みの日に本を読んだり、プログラミングの勉強をして
家事や育児のことををほうっておいて
ひとりでMacBookを開いてるのもすごく気が引ける。


結婚して、子供が産まれて自分の時間が減ったことは
嫌ではないし、しかたのないことだし、
むしろ独身だったころにはない楽しい充実した時間が増えてはいる。

だけどもだからといってお勉強のインプットが減ってしまうのは悩ましく
知識欲が満たされないというのもフラストレーションだし
今後の仕事も心配になるし、モチベーションがあがらなくなるのがもっと心配だ。


ここ数年で様々な新しい技術が出てきた。
データ分析、機械学習、AI、仮想化技術、仮想通貨......
新しい分野が出てきては優秀な若手がtechyなアピールをして
それを見るたびにすごい若手だ、と思うと同時に
うらやましく、そしてうすら寒い焦りの気持ちが湧いてくる。


20代のころはわからないことだらけで
時間は無いといいつつも振り返ると今以上に時間は取れていたので
週末はプログラミングコンテストやってみたり、資格の勉強したり、
StartUpWeekEndに参加したり、中古PCでLinuxサーバー構築してみたり、
ネットワーク/アルゴリズムを勉強してみたり、などなど興味のある限り
手をだして勉強して、勉強会にも行ってた気がする。


だけども、今はもうそんなことはできない。

そう思うと焦燥の念が出てくるがこれはもう落胆するのではなく、
自分のやり方を進化させるべき時なのだと考えることにした。


そこでいろいろ考えてみたこと試してることを書いてみる。
誰かの役に立てば幸い。


強くなる分野を決める

なにがしたいのか?どんな分野に強くなりたいのか?
をすごく自問自答する。なるべく狭くね。
そんでその分野を勉強して磨きをかける。

興味をもった分野なんて絶対誰か第一人者がいる。
興味ある分野を調べると必ずすごい人がいて
あぁ自分は大したことないのだなと自己嫌悪するけど
得意な武器があれば、年齢とともに増えるがっかり感を減らすことができる(気がする)。

得意な武器を持っているほうが
環境が変わっても、どんな分野にいっても
通用するはず(だとも思ってる)。


インフラエンジニアとして強くなりたい。
いまのところ。

今のところ、Go言語、インフラ知識、数学かな。
あと趣味として語学。

なんかこれだけでもちょっと多いような気も。
まあいいや。
でもとりあえず、この3つの分野なら興味もあるし
深めていきたいと思っている。


やらないことを決める。

中途半端な知識とかしかなければ若手にまかせていいし
自分が強くなれそうもない分野に時間をかけても
そんなにメリットが多くない気がする。
やっぱり得意分野に注力したほうがいいでしょう。


自分ならRubyjavaはやらないと決めた。

この2つはプログラミングスクールとかいっぱいあるし
年齢、仕事の経験から今からやっても勝てそうにない。

Ruby は書けるが、やる機会がほんとに少なくなったので
すっぱりやめる。
Ruby on Rails とかできたら、需要高そうだし
いろんな会社で働けそうだし、自分でwebサービスとか
作れそうだなと思ったけど、うん、やめる。

転職するときに副業とかできないかなと思って
rails に手を出したことがあったけど
ぜんぜん伸びなかったしね。

javaはできる人を見てると玄人すぎて
勝てる感じがしないし、mavanとかEclipseとか
javaに付随する技術が多くて独学習得するには俺は無理。。。
javaでできたプロダクトは多くて心苦しいけど
うん、やめる。


あでも、仕事で使う必要になったら別だけど。

やたら手を広げないで、深めることを目標としたい。


あと夕方19時以降の勉強会は出ない
出られないのが現実だけども
単位時間あたりの効果は薄い。

その技術は何が問題として存在し何を解決するのか

新しい技術が出てきたとき、まあかじって
勉強してみようと手を出すことがある。

ほーん、まあこれxxxの業務で使えそうだなと思って
やってみたら、メンテナンスが煩雑になってしまい
枯れたこれまでのものを使っとけばよかったというのがよくある。

それで知見がたまるというのはいいのだけども
やっぱりなんの目的でそれを使うのかが
わからないと有効活用ができないでしょう。


CIツールみたいなpythonライブラリを前任者が使っていたことがあった。
データ加工をスクリプト上で書いて、それを定期実行できるというもの。
データ加工クラスをスクリプト上で同時並列とか定義できたり、
データ加工タスクの関係性をブラウザ上で見ることができる
とかの機能メリットがあったのだけど、
実際やってることが、1,2ステップしかなくて
結局jenkinsでよかったじゃんってことがあった。


他にもデータ処理を流行りのScala+Spark使って処理できそうじゃんと
やってみたら、時間間隔が長くてAmazon S3 + SQSでよくねえ?とか


何のためにそれを取り入れるのか?が大事。


例えばDockerはそれまで何が課題で、どんなメリットがあるのか?とか
考えて使えるのがいいよね。

原理的なところを重点的にやる

機械学習人工知能の仕事をやってみたい。

ただ自分の経験だとHadoop使ったことあるとか
python, Goが使えるだけで
コアな部分は未経験だからアピール材料が乏しく行けそうにもない。

じゃあTensorflowとかAnaconda, jypiterを勉強しようかと
思っても時間もお金もない。

たぶんだけど、ああいうツールは現場で働いたり
したらそんな習得は大変ではなく
もっと大事なのは数学的なところじゃないのかと思ってる。


だからこそ数学(数学検定)をもくもくと通勤電車で読んでいる。

あまり時間が確保できない状況だからこそ
その技術のコアな部分を勉強するのがいいのではないか。

例えば、ビッグデータのカラム指向について
カラム指向のDBは中身がどうなってるのか?とか
GoogleのDremelの論文を読んでみるとか
時間がないなりに原理的なコア技術を読んでおくのが
あとあと効いてくると思っている。

なるべく本で勉強する。

昔の人間なので紙の本が好き。
ぱっとみどこまで読んだかわかるし
読了後に達成感がある。

電子書籍だと読みながらどこまでこの内容がつづくのだと
疲れてくるし、本ではないから読むこと自体すぐに忘れて
kindle内積読が増えるのが難点。

お勉強には紙の本の方が効率的な気がする。

読もうとする本を吟味してから読み始める

やたらめったら興味のある本に手を出してたこともあるけど
やらないことを決めるように、吟味して本を選ぶ。
時間は有限だからね。

Code Completeの下巻をがんばって読もうかと思ったけど
時間と得られる知識を考えて、下巻はやめた。

あと読む前に本の「はじめに」と構成目次をよく読んでおくのはおすすめ。
読む前から、著者のほんんんとーーに言いたいことは何なのか?
を頭をこれまでの3倍くらい振り絞って想像してから読み始めると
吸収が全然違う。

この作業はおすすめ。


online コースを利用して勉強する

勉強方法を工夫する。
Udemyをやってみたが、電車の中でも動画が見れて
学べるのでなかなかよかった。

他にN予備校とかprogateをやってるけど
会社の昼休みでもちょこちょこできるから
すきま時間に学ぶことができるからいい。

もうちょっと時間が確保できるようになったら
couseraとかもやってみたいところ。


onlineコースの勉強はおすすめ。

資格取得を利用する

漏れや偏りなくその分野を知るためにはとても効率がいい。

人工知能機械学習のために数学をやり直したく
数学検定を目標としているが
あの膨大な数学をコンパクトにレベル分けしてくれて
分野別に広く網羅的に学べるのはすごく効率がいい。


過去にネットワークスペシャリスト資格も勉強していたが
すごく網羅的にネットワークの知識が吸収できてとてもよかった。
(結局6回くらい落ちてあきらめた)


ただ30すぎて実用的でない資格にこだわるのはよくないとも思えるので
資格の効果をよく考えよう。


休日の朝から勉強する

お勉強の時間を確保するために、仕事から帰ってから
睡眠時間を削ってお勉強するのは、やっぱりあんまり得策ではない。

30すぎるとほんと体力なくなってきて睡眠時間が大事になる。

なので夜は23:30過ぎたら本を開くことなく
さっさと寝ることにしてる。

で時間を確保するために、休日の朝の1時間でも30分を
読書にあてて勉強するとかなり効率がいいことに気付いた。

金曜の夜であっても24時前に寝るようにすれば
けっこう休日でも起きられる。

睡眠時間がしっかりとれていると
やっぱり語学の物覚えもよくなってることに気付く。

プラスアルファとしてそのまま洗濯機をかけて
朝食をしっかり作っておくと奥さんからほめらるかもしれない。
「当たり前じゃない」ってね。

長い通勤時間を逆手に取る

片道1時間かかってるけど、ほんとこの往復2時間は貴重な読書時間。

よく職住接近とかいうけど自分は意志が弱いし
家族がいる中で家で勉強時間を確保するのはすごく難しいのではと思う。

まあ人それぞれなんだけど
通勤時間は有効活用したいよね。

あと通勤時間のスマホを使用厳禁にする。
これだけでかなり集中できる。

完全には無理でも週3日でもいい。
貴重な自分の時間はなるべく確保したい。



それにしても家の近くにサテライトオフィスができたりしたらいいなあ。

仕事の方向性を変える

エンジニアとして働いてると技術知識を偏重してしまい
できる人と言えば、すごい技術を持った人と考えてしまう。

それもそうなんだけど、技術は業務が良くなってくれないと意味がない。

なので今やってる業務知識をつける、どう使いやすくなってほしいか?
をもっと突き詰めて考えたほうがいいだろう。

社内で情報共有のためのWebサイトを作るために、rails がいいのかPHPがいいのかなんて
どうでもいいし、メールでもいいのかもしれない。
なんなら手書きの掲示板でもいいかもしれない。

要するに何を解決するのか?を考えていくと
もっとできるエンジニアになれる(はず)。

そうすれば知識ではない部分が鍛えられるし。



雑多に所感を書いてみたけど、どこか矛盾があるかもしれないし
明日には気が変わるかもしれない。

他にお勉強hackはどんなのあるだろうかね。

技術者派遣でまともな仕事に就くにはどうすればいいのか

しばらく前のことだけど
増田のこんな記事がバズってた。

ちょっと長いのでざっくりしか読んでないけど。
anond.hatelabo.jp

自分もこれまでずーっと技術者派遣で働いている。

転職を2回ほどして、なかなか技術的な仕事してるので
この記事だといわゆる技術者派遣の強者側に立っているのかもしれない。
今の仕事内容は充実してるし、そんなに不満もない。

どうやってこちら(強者)側になれたかと言われても
自分でもよくわからない。

「強者」というのもおこがましいけど
雑用的な仕事しかしてない人から見たらそうなのかも。



思い起こすと自分が20代だったころを思い出すと
この記事ほどではないが、あんまりいい仕事した思い出は無い。

お台場のビルの一室でひたすらガラケーのテストをしていた。
エクセルに試験項目があって、ただひたすら試験項目を消化していた。

毎日毎日同じような試験をし、2年が過ぎた。
その間何度も転職を考えたけど、スキルが無いなーと躊躇して転職しなかった。

すごくよくない呪いにかけられていたのだけど
「3年は働くべき!」
もうこれほんと悪!
この呪いのせいで大事な2年もしょうもない仕事に費やしてしまった。
あんな仕事にこだわるんじゃなかったなあと、すごく後悔している。


その間、いつ開発現場に行けてもいいように手当り次第勉強をしまくった。
せめて資格を取ろうとして、基本情報、ソフトウエア開発者、オラクルはゴールドまで取った。
(oracle使ったことないのに)
さらに会社の研修施設でJavaの勉強もしてた。

当時の会社がブラック会社だったとはいえ、資格手当が充実してたのがモチベーションだった。
上の3つで毎月3,4万資格手当がでてたような覚えがある。

ちゃっかり社内規定でいくら出るのか調べといて、オラクルゴールドは取得まで20万近くかかるけど
何か月いたら採算とれるなーとか考えて取得してた。


その後社長が不祥事を起こして、あーもうやめようと思って
2社目に転職できた。


転職できた理由は定かじゃないけど、
理系の院卒、資格も取ってた、TOEIC820もやってたからかな思える。
まあ、テスターの経験しかないけど、ギリ(当時)29歳の20代の若手。

転職先もほんとたまたま大手の人材会社のインフラの案件があって
たまたま自分が組み込まれた。

そう思うとやっぱ資格なのかな。
魅せるアピールができてたからよかったのだろう。
当時はね。


しかしながら記事にあるような不運案件はかわいそうとしか言いようない。
自分もちょっと間違えればそっち側になりそうだったと思うと恐怖でしかない。

なんだろね今だと資格よりもプログラミングスクールとかあるし
そういうのやるといいのかな。
サポートが充実してて効果的だろう。

うん俺の答えとしては
しょうもない仕事はさっさとやめて
魅せる学びをやって転職したほうがいいなと感じた記事だった。
全然具体的じゃないね。

魅せる学びって結構大事だなとわかった20代でした。

語学の学習は自分が成長した気分になれる

f:id:suganoo:20180419191013j:plain

気分転換に語学を学んでます。

フランス語、ロシア語、アラビア語です。

フランス語は学生時代にたまたま第二外国語で選んだ言語なのですが
けっこう真面目に勉強してました。
そのままなにもやらずに忘れてしまうのも癪だなあと思い
10年近くだらだらとやってます。

そんでNHKラジオの語学テキストを見たときに
ロシア語を読んでみると「なんか行けそう!」っと勘違いしたので
ロシア語もほそぼそとやってます。

あの巻き舌で言うなんとかーちぇとかいう単語とか、聞き心地がなんとも楽しいんですね。


またフランス以外にフランス語が通じる国と言えばアフリカなのですが
北アフリカの国ではフランス語とアラビア語公用語になってることが多い。

単語的にも共通するのもいくつかあるそうです。

そして、あのにょろにょろした文字なんでしょうね?
どういう意味なんだろっと興味がわいてきてしまったので
アラビア語も始めてしまいました。

それにアラビア語を話せる人は4億人もいるのに
そんなに日本ではやってる人が少ないようにも見えるので
それも動機。

やっとこさとこアラビア文字が読めるようになってきた。

語学の勉強楽しい

語学の学習っていいですよね。

なにがいいかって、ただテキストを読んで少しでも単語や格変化を覚えれば頭がよくなった気になれるところ。

そんな覚える作業なんて数分、数十分でできるし、そんだけでちょっとした達成感が味わえる。


逆に通勤中に数学とかプログラミングとかの本を読んでても
(数学)「わかんねーーーー。。なんでこんな式展開になるんだよ。。。」(10分以上悩む)
(プログラミング)「なるほど、あれ、でも手元にターミナルないから試せない!
やってみたけど知らんエラーが出まくる」(数時間経つ。。)

とかなって、徒労に終わることが多い。

この徒労感がなんともつまらないんですよ。


ただデメリットとして
語学の学習がはまってくると
やらなきゃいけない/やるべきプログラミングなどの学習がどんどんおざなりになってきてしまうところだ。

最近は通勤時間がほとんど語学のテキストを読んでしまっている。
そんなことやってる場合じゃないんだよなあ。

んー悩ましい



まあ英語以外の第二言語も学ぶと楽しいですよというお話

こういうサイトを参考にしてみるといいかも
www.weforum.org

「Linux のしくみ」を読んでみたけどかなりいい本

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

linux の中身を理解するのはかなりややこしい。
そんな本はないなと思ってたけどありました。

思い起こせば10年以上前、自分で古いノートPC買って
Ubuntuとか入れてみたなあ。

そんで、よしカーネルを理解しよう!と思って
カーネル関係の本を読んで挫折した覚えがよみがえってきます。

Linuxカーネル2.6解読室

Linuxカーネル2.6解読室

Linuxカーネル解析入門 (I・O BOOKS)

Linuxカーネル解析入門 (I・O BOOKS)

↑この本読んで挫折した。いい本ではあるけど。


インフラの仕事をしてると、障害で
「あれメモリが足りないんじゃ?」とか起きてて
先輩がメモリのキャッシュをとばしたりしてて解消してたことがありました。

echo 3 > /proc/sys/vm/drop_caches

こんなコマンドもなにやってんのかなーと疑問に思ってました。

そんなところの、キャッシュメモリやページキャッシュの内容が書かれてたりします。


また以前に紹介したこの本にもメモリのところは書かれてます。
suganoo.hatenablog.com



またタスクスケジューリングのところは
Goで並列処理を考えるときのCPU数の検討で役に立ちました。


今回もおすすめです

「プログラミング言語 Go」を読んでみた

えーっとしばらくぶりに更新します。

サボってました。

いろんな読みたい本を読んでたり、子育てや家事をやってると
あっという間に一週間が経ち一か月が経ってしまうなあ。

今回もGo言語の本を読んでみました。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

Go言語の本でいいのないかなとググってみると
いろんなところで、海外のサイトでも、この本が紹介されてました。

で また会社の上司に買って―とお願いして買ってもらいました。

この本は約400ページをボリュームがあるものの
Goで必要にな内容が大体のってます。

特に自分のような初心者には、go test? ベンチマーク
とかいった機能も使い方含めて説明があります。

前半は型などの説明で退屈です。
ですが、インターフェーや、関数値の扱い方もきちっと説明されてて
後半からほーほーふむふむとなってきておもしろくなり
理解を深めるにはとてもいい内容が書かれてます。

時間があったら、サンプルコードを写経して
テストとかベンチマークテストとかやってみたかった。

あと rune 型?なんだこれ、初めて聞いた型でした。
もうちょっと勉強しなきゃなあ。

かなりおすすめ。