ぎんさんマインド

いちエンジニアの思考とか趣味についてつらつらと書いてみるかもしれない。

情熱プログラマを読んだ概要とか感想とか ~ その1

 

https://www.amazon.co.jp/dp/4274067939/ref=cm_sw_r_tw_dp_U_x_hzAMDbHXEA1MR

 

アウトプットすることにより、自分の中に強く考えを馴染ませるためにこれを書く。

プログラマの人生は選択の連続である。それでいて先の見えにくい職でもある。
その選択続けて行った時、時に自分はこのままでいいのか、これから先どう進めばいいのか不安に思う時もあるだろう。
そういう時にこの本を読む。

ただやっぱまとめてみて長かったから、いくつかに分けていく

 

はてブよくわかってないマンだから概要を引用として書く。

その下に自分の今の考えを書いていく

 

はじめに(時代や背景など)

この本が書かれたのは2010年、プログラマの世界は時代の流れが早い。
この時代はアメリカならウォーターフォールからアジャイルが切り替わり始めた時期なのだろう。
日本じゃおそらくほぼなじみがなかったのではないか?(私はその時代働いてないからわからないが)
言語的にはJavaが主流、時点で.Net系だろうか、業務システムとしてなら大いにわかる。Java6くらいかな?私が触れ始めた7や8はまだ出てないと思う。
そんな時代の背景で、この筆者は昔ジャズミュージシャンをやっていた。そこからプログラマへの転向をしている。中々に異質なキャリアだろう。
プログラマとして勉強して大学のシステムを見たりマネジメント周りの仕事でJavaのプロフェッショナルを探すためにインドへ行ったりもしている。
そんな中で今(本を出した当時)はRubyをメインで仕事をやっているようだ、Railsでもまだまだ新しい。3いくかいかないかだろう。
Rubyが好きで楽しいって言うのは私もとてもわかる。

イントロダクション

タイトルの通りこの本はプログラマの情熱を、熱意を語りかけるものであり、自分の中にあるそれらの感情を呼び起こすために利用したい。

 

私自身も新卒で入った会社がよくある中小のSIerでかなり古い技術を使っていたので、初っ端から熱意のない環境に入ってしまった人間だ。
もしもその時にこの本を読んでいたら人生が変わったかもしれない、だがそれは過去のことであり
今を考えるならば、この経験があるからこそ、この本への理解が深まるという一つの指針になると思った。

 

この本によって熱意が呼び覚まされ、結果として評価が上がり年収が上がるかもしれない。年収が上がることによってよって幸福になるかもしれない、だがそれは目的に対する手段であり、この本で示すものは幸福でやりがいのあるキャリアである。 

 

これは私の経験のないこと、これから先を示すこと。私自身まだまだ評価されにくい立場なので、評価が上がり幸福になった際にもう一度読む。道を踏み外さないために。

 

失敗はレーダーに映らない

筆者は「食うためのコードを書きます」を持論にした人の本を読んだ。だがそれは目標が低く良いとは思えなかった。
別の本屋で「エクストリームプログラミング」の本を読んだ。これにとても感動し、会社のCIOに売り込んだ、
その結果XP immeresionコースに行けた。それはとても良い経験だった。そしてもっとこの環境にいたくなった。
そのためにはどうするか。自分がその中の一人になれば良い。それから公演をしてその中の一人になった。
このエピソードで大事なことは何か、熱意が人を大きく動かし、目標は常に高くあることである。

 

自分のものにする

会社は好意だけで自分を雇っているわけではない。雇うのにはコストがかかるし、それに見合うだけの利益を出すからこと雇っている。
そして利益とは何か、自分のパフォーマンスであり、彼らはそれを評価する。
自分のキャリアをライフサイクルとして考える。自分自身のスキルを売り込むまでのサイクルを考えていく。その場合は
1. 市場を選び
2. 製品に投資し
3. 実行に移し
4. 製品を売り込む

となっていく。その経緯をこの本で説明する。

 

 一章 市場を選ぶ

技術は自分自身への投資、どういうキャリアを描くのか多くの場合流れに身をまかせるだけになってしまっている。
会社からJavaをやれと言われ、その技術を形成するように。
自分を会社として考える、自分はヒットする商品を作らないといけない。だがそれの決定権を他人にまかせるのだろうか?そんなことなんかしたいはずがない。
もっと慎重に自分で考えるはずだ。それと同様に自分のキャリアについて、もっと考えるべきだ。
その中で、自分の売り込むサービスとは何か、誰に売り込むのか考える手助けとして第一章を提示する。

 

先んずるか、やられるか

どの技術に投資すべきか、画期的システムで盛り上がる技術や、常に地盤を固めて着々と上へと進めていく技術もある。
時代と言語の盛り上がり方を考えれば想像しやすいだろう。その上でどの知識に投資するのが大事かを考える。
ただ大事なことは、古いシステムは死ぬだけじゃない。新しいものに代替されるということ。
その上で、荒削りだが新しい考えに投資すれば代替物が出てきた際の知識の先行投資にもなりうる。
古いシステムならば、それらを切り替える必要も出てくる、そこに対してのニーズもありうる。
これらを考えた上でどこを狙う?

まずすべきこととして、テクノロジーを年代別で分けてみる。若年層中年層老年層という風に。
若年層の多い技術はこの先盛り上がる可能性が出てくる。必要なのは触れた技術が横一線になることである。

 

自分の知識はRubyや.Net、Javaも少し触れてる分、中年層老年層部分の知識もあるかもしれない。
新しい技術は最近よく出てるので、どれに投資すべきか迷ってるところもある。今ならgolangだろうか?少し触れてはいるがどうだろうか?
代替することを考えた場合はRailsを極めた上で、それに移り変わるものが出た際に、それを学んでいくのがベストと考える。
その上ですべきことは、まずはRailsを極めて、その上で新しいものが出たらそれに食いついていく。
今と同じかな?Ruby楽しいし、新しいものも見てて楽しいから苦ではないな。

 

需要と供給

Web出始めの頃は簡単なWebページを作るだけで大儲けができた、だがその後その能力を持つ人が溢れて競争が怒った。
それによってかかるコストも減っていった。需要と供給の一般的な相関図である。
アメリカはWebデザイナが溢れてきて、彼らは職を失わないか不安だ、だが需要は増大していく。その場合はどうなるか
コスト競争になった場合は給料はどんどん減っていく、それは絶対避けるべき。
言語別に見ていくならば、これは需要が大きいが供給が少ない。これは需要が少なく供給が多いなども見えてくる。
これは国によっても異なる。インドあたりはいい例だ。よく分析し、市場の不均衡を付き、スキルとフットワークで生きていけ。

2019年現在であるならばgolangが需要が大きく供給が少ないものの例としてあげれるかな?
スピード感を持ってスキルを得れば大金を得られるというのもわかる

 

コーディングは武器にならない

ただコードを書くだけなら他の人に任せたってできる。オフショアでもなんでもいい。
筆者の会社にはDBに全く今日にのない集団のDB管理チームがあった、ギークな人間は彼らを下に見ていたが、
ビジネスに必要だからこそそれでも食いっぱぐれなかった。これは重要な考えだ
ただのプログラマーでも、顧客の言葉に合わせて説明できれば、それはスキルになる。
そして顧客はそういう人に仕事を与えたく思うものだ。
自分がどの分野で働くかは慎重に決めるべきだ、そして、考えてない場合は今すぐ考えよう

私自身仕事を受ける立場なので、あまり考えて生きては来なかったが、この辺の考えは重要だと感じる。
転職なんかしようとすると、どういう業界がいいとかありますか?なんて聞かれることもあるし。
ただその考えを決めるには得ている知識が足りなすぎる。他の業界の人の話を多く聞き、じっくり考える必要があるだろう。
私はその手の友人が少ないので、すぐに始めるのは難しいな。。。

 

 

一番の下手くそでいよう

プロジェクトにおいて一番下手くそな立場にいればもちろん自身はなくすだろう、だが上手い人たちと一緒にいることで、自分も上手くなってくる。
だが逆もある、筆者がインドにいた際は言葉がインド英語になってしまった。集団心理というやつだ。
だがこれらの影響はとても大きい。自分の周りにいる人たちが、自分のパフォーマンスに影響を与える。仲間は慎重に選ぶべきだ。

今すぐ始めよう。
自分が一番下手くそな環境に入ろう。ボランティアのプロジェクトを探そう、
そのプロジェクトのTODOリストを観察し、バグフィックスからコーディングを学んでいこう。
この時は周辺のコードを観察し、よく真似るようにしよう。
これをパッチとして出せば上手くいけば取り入れられるし、その環境に入ることができる。

 

私もOSSに入ることを今すぐ始めるべきだと感じる節。

 

自分の知性に投資しよう

注力すべき技術を選ぶとすると、どうしても仕事が多い方に目がいってしまう。考え方の一つとしてはいいが、それだけではよくない。
Javaプログラマがたくさんいたとしても賢くない人だってたくさんいる(そんな本を出して挑発した人がいた。)
たくさんいるJavaプログラマから優れた人を探すならどうすればいいか考えた。
SmalltalkJavaとは全く違うプログラムを経験した人を探すようにしてみた、そしたらJavaのいい所悪い所をよく理解したダイヤモンドの原石がたくさん見つかった。彼らは自分でそれを学習し、そしてプログラミングが好きだった
ここから導けることは何か。機会は自分で掴むものだ。そして学習するならば、今とは全く違う言語を勉強すべきだ。

わかる。静的動的、コンパイル言語、スクリプト言語、それらが異なるものをやると大いに勉強になる。
私もC#Javaのような静的なコンパイル言語からRubyに映ったので、とても勉強になったし、好き嫌いも変わってくる。

 

親の言うことを聞くな

文化として親の言うことには素直に従うべきだと言うのがある。
だが親の忠告は子ども不安なものから遠ざけるための言葉であり、不安の先に自分の目指すものがあるならばその考えとは対立する。
また、親とは時代が違う。親の世代は仕事とは辛いもの、休日に楽しいことをするものだった。だが今は違う。
安定した企業で順々に出世していったとしても、それによって自分が成長できるとは限らない。
それを感じれなかった筆者は転職した。

 

万能選手になろう

昔はウォーターフォールのように工程を大きく分割してきた。だが今は違う、アジャイル的に柔軟性を重視した考え方が大事だ。
もしも問題が起きたら誰に相談しようと思うか、問題は多岐に渡るものだ、そしてそれらを柔軟に対応できる、いろんな知識を持った人が重要視される。
それはOS,コード,RDBMS,ネットワークそれぞれから分析し問題を探せると言うことだ。
ウォーターフォール的に考えるならば、コーダーは設計が終わるまで暇をするしかない。設計者もコーディングが始まればお役御免だ。
それこそ無駄なことだ。解雇されるのが怖いならば汎用性を上げていかなければならない、それには対局を見ることこそ大切だ。
万能の選手は滅多に存在しない。そこに価値がある。
万能の選手はいろんな局面からアプローチできる。そこで、自分のスキルをリスト化し、考えていくことも必要になる。
例えばリーダーやマネージメント職ならば、人を動かして、なるべく自分はコーディングに触れないことがよしとなるだろう。
だが、時にはリーダーが徹夜してバグを直したりすることもある。そう言う能力も必要とされる。

この本が出た時代はウォーターフォールからアジャイルに切り替わり始めたあたりだろう。その考えが大きく出ている。
そのため、現代に合わないところもあるだろう、環境の違いもある。日本的ならば、万能選手でとりあえず仕事を投げられても給与は増えないところもあるだろう。
だがその上でもいろんな知識を得ておくのは大事だと思う。私もバックエンドエンジニアとしてやっていこうとしているが、隣接した技術は得ておく必要があると思ってるし、そこから広げていく必要も将来的にはあるだろう。この考えは大事にしたい。

 

スペシャリストになろう

Javaスペシャリストを探していた時に自己評価の高い人はたくさんいたが、メモリ管理まで理解している人は少数だった。もちろんそんな知識はなくても書けることは書ける。
だが、もしも医者に病気を見せる時に、医者が使っている機械が何をするのかわからないとかいっていたら、病気を見せるだろうか。
プログラマとしても同じだ、使っているものを隅々まで知っていて、何を聞かれても返答できるような人間こそスペシャリストだ、そんな人間になろう。

今は私はRuby on Rails で仕事をしているが、中身に関して完璧に理解しているとは言えない。
幸いにも中身は一通り見れる状態なので、今は一つ一つ理解しようとしている最中。使っているものに感謝も込めて貢献したいしね。

 

自分の人生を他人任せにするな

将来どう言う道に進みたいか、JavaEEのアーキテクト?それはよろしくない。キャリアはビジネス、特定の会社に依存したキャリアを形成していくのはとてもリスキーだ。
そのソフトウェアのプロフェッショナルになろうとしても、コードが公開されていなければいずれ壁にぶち当たる。
やるのならばオープンソースのプロフェッショナルになろう。

汎用性の高い知識で生きていこうと言う考えは私の根底にあるので、私がこの項目で得られることは少ない。
最近はオープンソースが主になってきているので、時代的な違いもある。
だが、いろんな見方で物事を観察し、自分で将来を決めるようにはするべき。

 

愛せよ、さもなくば捨てよ

情熱がある人間はできる人間に見える。大学のIT学科はそのような人が多い場所だと思い働いた。
だが実態はそんなことはなかった、何をするのかわかっていない人がたくさん、そういう人は将来が見えていない人、ゲームを作るためだけに学科に入った人なんかばかりで、普段はゲームしたりバンドしたりなんてことばかり。
大学はいい環境だ、だがなぜそう言う人ばかりなのか、それは情熱だ、後々才能も出てはくるがまず情熱を持って行わなければ進めない。
やるべきこととして、2週間簡単な日記をつけよう。その日起きた時のやる気を10点満点で採点する。休みたければ1点だ。その結果を見て、低かったら将来を再検討してほしい。

私も低い時はあるしその時は方向転換を考える。これは多くの人に実践してほしいことなので、広めていきたい。もしくはこの本を進めたい。

 

 

 

とりあえず一章だけ、続きは後で