こんにちは。
最近、SOFT SKILLS ソフトウェア開発者の人生マニュアルを読んでいるので内容を忘れないように学んだことを要約したメモを載せます。
このエントリは完全な個人のメモです。
お勉強のためにこの本を読んでいるので、内容を覚えるためにSummarizing(サマライジング)を行います。
この本は71章立ての7部構成です。
第2~18章が第1部
第19~26章が第2部
第27~35章が第3部
第36~48章が第4部
第49~55章が第5部
第56~64章が第6部
第65~71章が第7部
となっています。
第1章はどこにも含まれていませんが、この本の構成や内容について記載されています。
それぞれの部で扱っているテーマは以下の通りです。
第1部 キャリア
第2部 マーケティング
第3部 学習
第4部 生産性
第5部 お金
第6部 健康
第7部 精神
このエントリでは第1部、エンジニアのキャリアについての前半を記載します。
第1章 あなたが呼んだどの本ともこの本が違う理由
第1章はこの本の内容について、おおまかな説明が書かれています。
いいソフトウェア開発者の定義
この本の「いいソフトウェア開発者」とは、プログラミングができるということだけではなく、キャリアのマネジメントや人生の楽しみ方、心や体の健康などのバランスがとれいる人のことを指します。
この本の内容についての説明
この本は上記のような「いいソフトウェア開発者」になることを目指した内容になっています。
プログラミングやエンジニアリングについての記載はほどほどに、エンジニアの「人生」にスポットを当てて各部ごとに以下のような視点からアドバイスを貰えます。
第1部 キャリア
第2部 マーケティング
第3部 学習
第4部 生産性
第5部 お金
第6部 健康
第7部 精神
第2章 スタートから派手にいこう!
第2章では自分のキャリアに対するマインドセットを変えることをテーマにしています。
事業者のマインドセットを持とう
私もそうですが、我々の大半はどこかの企業に所属して会社で仕事をして給料を貰っています。そのため、自分は会社の一部でお客様は開発の発注元だと考えがちです。
しかし、一旦ここで考えを改め、自分のことを事業者だと思うことにしましょう。自分を事業者だと考えた場合、商品は自分の持つスキル、お客さんは自分を雇っている会社ということになります。
※日本のお偉いさんがよく言う「一人一人が経営者の視点に立って仕事をするように」のような糞みたいな内容ではありません。彼らは会社の経費や工数を以下に削減してコストを下げて会社に貢献するかを考えろと言っていますが、そんなものは管理職が考えればよいのです。
事業者マインドセットを持つべき理由
事業者は自分の製品やサービスを常に改良しています。
自分のことを事業者だと考えるようになると、より利益を生むために自分の製品やサービス(エンジニアの場合、自分の持つスキル)をより良く改善するモチベーションになります。自分のスキルが陳腐化していたり応用が利かなかったりすると顧客がつかなくなってしまうからです。
また、より多くの利益を生むためにはマーケティングも重要になってきます。企業も、どんなに良い製品を作っていても存在が世の中に知られなければ売り上げは伸びません。
マーケティングについては第2部で説明があります。
まずは自分のことを事業者だととらえ、以下のようなことを意識しましょう。
・自分が提供するサービスの売り方
・サービスを向上させる方法
・サービスのニーズ
・サービスの専門化
・サービスを広く知ってもらう方法
など
やってみよう
①企業は自社のサービスや製品についてどのように差別化・宣伝しているか考えよう。
→Nikeなんかは見た目にもわかりやすいテクノロジーを数多く開発し、それを大々的にPRしている。宣伝方法は雑誌広告やポスター、有名選手に着用してもらうなど様々。
②自分が提供するサービスを雇用主に一文で説明するなら、どんな一文になるか。
→LinuxやJava、C言語の基礎知識があり、コミュニケーションが取れるエンジニア。※正直この課題はかなり厳しい。特に売りになるような文言が思い浮かばない。
③自分のキャリアを事業ととらえることで、仕事、資産運用、顧客の探し方にどのような影響が出るか。
仕事
→自分のスキルアップにつながる仕事を積極的に探すようになる。
資産運用
→自分の製品をよりよくするために投資をするようになる。(書籍の購入や開発環境の整備など)
顧客の探し方
→今のところ、履歴書を書いて企業に送付するのが一番確率が高そう。いずれはOSS活動や勉強会の講師、講演会に登壇などして名前を売って企業から声をかけて貰えるようにになりたい。
第3章 未来について考える
第3章はキャリアの目標設定についてです。
目標を設定する必要性
目標を設定しないままキャリアを積むのは、目的地が無いのに船に乗って大海原へ出るのと同じようなことです。
運がいい人は偶然大陸に辿り着くこともあるかもしれませんが、そうでない人は海の上で野垂れ死にます。
キャリアにおいても同じです。
目標の立て方
まずは心の中に大きな目標を考えましょう。
会社の役員になりたいのか、自分の会社を立ち上げたいのか。
大きな目標はそこまで具体的でなくてもOKです。
大きな目標を決めたらそこから逆算して小さな目標を決めながらそこにたどり着くまでの大まかな道筋を立てましょう。
これをすることでその道筋から大きくそれるようなことがなくなります。
目標の再設定
定期的に自分の目標を見直して更新するのが望ましいです。
目標を見直す期間はあらかじめ決めておくことがおすすめです。
短期間の目標、長期間の目標それぞれ見直すことが理想です。
やってみよう
①自分のキャリアの大きな目標を最低1つ描き出す。
→以下の3つ。
・給与所得以外の収入で生計を立てる
・所属する企業を好きに選ぶ
・人から尊敬されるエンジニア
②大きな目標を分割し、月/週/日に対応する小さな目標を設定する。
→難しい。。。どれも今のままでは無理なのでスキルを伸ばす方向で考える。
日 : 毎日必ず本を最低1回は読む。量は問わない
週 : 学んだことをまとめて、公開する
月 : 月1冊くらいのペースで本を消化する
③毎日見えるところに大きな目標を張り出す。
第4章 社交術
第4章は仕事におけるコミュニケーションのことについての内容です。
ソフトウェア開発者の仕事
ソフトウェア開発者の仕事はコードを書くだけではありません。
コードを書くのは実は限られた時間で、人と話したりコミュニケーションをとっている時間が大半です。
直接的な会話やメール、会議だけではなく、仕様書の作成やドキュメントの作成などもコミュニケーションに含まれます。
ソースコードでさえ、人に理解させるために書くようなものです。
決して批判をしない
批判は必要のない亀裂を生みます。
相手は人間なので、批判はモチベーションを下げるだけの結果を招きます。相手のモチベーションを引き出したいなら批判をせずに褒める方が効果的です。
また、批判された人間は批判してきた人間の意見を素直に聞き入れてくれなくなります。自分の意見を通すにはまず相手の意見を聞いた方が効率が良いです。
批判をしないことは相手のためではなく自分のためなのです。
相手の立場になる
よく言われがちな言葉ですが、大事なことです。
これをすると、相手が「自分は軽んじられている」と感じなくなります。そうすると相手は自分に対して友好的になります。
何かを提案するときも相手の立場に立って、それが相手にとってどう有用なのかを説明しましょう。
何としても議論を避ける
我々は理屈が通っていれば自分の意見が通ると考えがちですが、それは大きな誤りです。
人間は感情的な生き物です。みんな大人の皮を被った子供です。
子供相手に理論を訴えても無意味です。
毒のある人との付き合い方
関わっても良いことは一つもありません。可能な限り接触を避けましょう。
どうしても関わらなければいけない場合、感情的にならず必要最低限に済ませましょう。
やってみよう
①一日中仕事をしていた日に、その日あった人を記録しよう。電話やメールも含める。何人と接触したか。
→ざっと50人くらい。
②デール・カーネギーの「人を動かす」を入手して読もう。
→今読んでる本が読み終わったら。。。
③次議論に巻き込まれたとき、議論をひっくり返す方法を考えてみよう。また、議論から降りてみるのもいい。ただ議論を降りるのではなく相手に強い賛同を送ってみよう。
第5章 面接をハッキングするコツ
第5章は面接についてです。
知り合いを作って推薦してもらう
入社したい会社の中に一人以上知り合いを作りましょう。
方法は何でもOKです。SNSを活用してもいいでしょう。
そしてある程度人間関係を築いたらその人に推薦してもらいましょう。
自分の名前を売る
名前の売り方は第2部で取り上げます。
今すぐ転職したい場合は?
可能であれば面接よりも先に面接官に連絡を取り、そのあともできる限りフォローアップしてみましょう。
例えば、応募する前にいくつか質問をしてみたりしてもいいでしょう。
今からできること
今転職を考えていなくても、以下のことは今すぐ始めた方がいいです。
・スキルを磨く
・人脈作り
やってみよう
①働いてみたいと思う会社と、その会社にいる知り合いのリストを作る。
→とりあえず働いてみたいのはGoogle、Amazon。知り合いはいない。
②知り合いのいない会社がある場合、その会社の中の誰かと会う計画を立ててその人と人間関係を築こう。
③少なくともひとつの地域のユーザーグループを見つけて参加してみよう。そしてできる限り多くの人に自己紹介をしよう。
第6章 雇用形態:三つの選択肢を理解する
この章ではエンジニアとしてどのように働くかの選択肢と、それぞれのメリットやデメリットの説明をしている。
三つの選択肢
会社の従業員
独立系コンサルタント
アントレプレナー
それぞれの選択肢に、それぞれメリットとデメリットがある。
どれを選ぶべきか
ほぼすべての人は、最初は会社員になるべき。リスクが最も低く、スキルを磨くことができる。
その気になれば会社員をしながら独立系コンサルタントやアントレプレナーになる準備もできる。
やってみよう
①三つの選択肢それぞれに当てはまる知人や名前を知っている人のリストを作る
会社員:大多数
コンサルタント:Mさん
アントレプレナー:結城浩さん、まつもとゆきひろさんなど
②コンサルタントやアントレプレナーのキャリアパスに乗っている人に合って話を聞く
第7章 あなたはどのタイプのソフトウェア開発者か
第7章は仕事の専門性についてです。
専門性の重要性
「Javaプログラマー」というだけではその人が何の仕事をしていて、何ができるのかわかりません。
専門性を持つことで雇用のチャンスが少なくなると思うかもしれませんが、実際は逆です。専門性を持った方がより多くのチャンスに恵まれます。
専門性は狭ければ狭いほどいい。専門性は後からでも変えられる。
専門分野の例
・ウェブ開発
・組み込みシステム
・OS
・モバイル
・フレームワーク
など
専門分野の選択方法
選択方法のヒント
・今まで仕事で一番苦痛だったことは何か。今後その苦痛を解決することを専門とする人間になれるか
・誰もやりたがらない、誰もスキルを持っていない分野はないか
・カンファレンスやユーザーグループでよく話題になるテーマ
・同僚やOtack Overflowなどであなたが良く答える質問はどのようなものか
注意
1つのことしか学ばなくていいということではない。
色々なことを学んでおくのはキャリアにとって非常に有意義です。
やってみよう
①ソフトウェア開発者の専門分野を思いつく限りリストアップしよう。広い範囲から狭い範囲に進み、どこまで限定的になれたかを確かめよう。
②自分の専門分野は何か。特にない場合、どの分野なら専門にできるかを考えてみよう。
→特にないけどAndroidアプリ開発かな。。。
③転職サイトに行き、自分の専門性が必要とされる職を探してみよう。その後さらに細かい専門分野で探して見て、有利になるか限定的になりすぎているかをみてみよう。
第8章 「どの会社も同じ」ではない
第8章は所属する会社の選び方についてです。
会社の分類と説明
大まかに以下のように分けます。
・小さい会社
・中規模の会社
・大企業
それぞれの規模の企業についての説明と、そこで働くメリット・デメリットの説明があります。
大まかに私が元々持っていたイメージと同じでした。
企業の選び方
それぞれの会社にそれぞれの文化があります。誰にでも当てはまるような選び方は存在しません。
なので、自分に合った環境は自分で選びます。
採用を承諾する前にその会社のエンジニアに話を聞きましょう。
やってみよう
①どんな環境で仕事をしたいか考えよう。それはどんな規模の会社なら合うだろうか。
→難しい。安定は欲しいけど、新しい技術とかには触れていたい。
②地域の会社や今まで働いた会社のリストを作り、それがどの規模なのかを考えよう。
→大企業2社で働いたことがある。
第9章 出世階段の登り方
第9章は万年平社員にならないための方法です。
責任を引き受ける
収入はいつでも責任に追いついてくるそうです。
私は逆だと思っていました。
昇格・昇給したら責任がついてくるのかと思っていました。
どうしたら重い責任の仕事に付けるのかの方法も書いてあります。
例えば、以下のようなものです。
・古いアプリケーションの保守など他の誰もやりたがらないことをやる
・チームの新メンバーの支援
・ドキュメントの保守
など
自分の存在を主張する
出世するためには重い責任を引き受けたり、結果を出すだけでは不十分です。
自分の頑張りを上司に知ってもらわないといけません。
まずは日報を書きましょう。
そして週の終わりにはその日報をまとめ、週報として上司に報告しましょう。頼まれていなくてもやりましょう。
また、上司と定期的に面談をするのもいいでしょう。
勉強会を開催するのもおすすめです。
勉強する
スキルと知識を磨き続けることも必要です。
以前よりもスキルや知識が伸びていることが明確ならば昇給の判断の基準になります。
資格の取得なんかもわかりやすくておすすめです。
また、マネジメントや経営などソフトウェア以外のことも勉強しましょう。
そして勉強していることをアピールしましょう。
問題を解決する人になろう
たまーに会社にいるスーパーマンみたいな人を目指しましょう。
難しいけど。
昇格のチャンスが皆無の場合は?
どんなに頑張っても評価されない、昇格できない場合どうしたらいいでしょう。
会社を辞めましょう。
やってみよう
①今の仕事で今すぐもっと責任を負えるようになるための方法は?
→運よく開発アイテムの責任を一つ持っている。
②現在の上司に自分はどれくらい知られているか。もっと知ってもらうために今から始められる具体的な行動は何か。
→日報と週報を書く。勉強したことのサマリを発表する。
③勉強のために何をしているか。勉強するに値するものを考え、それを学ぶプランを作ろう。
→Androiを支える技術を読む。まとめる。発表する。
まとめ
第1部の前半の内容はこんな感じです。
これで約半分なので一旦ここで区切ります。
第1部の後半の内容はこちら。
おわり。