開発者にはキャリアの教科書が必要だ

開発者にはキャリアの教科書が必要だ

ソフトウェア開発者は歴史の浅い職業で、ごくあたりまえの人が通るキャリア、があまりイメージできません。
これがたとえば建築家だと、たいていは大学の建築科を出て、デザイン事務所で下積みをする、などがメジャーなルートだと言えますが、ソフトウェア業界では学科はバラバラで、学校で学んだ専門分野とは全く別ということは珍しくありません。

また、陳腐化が早く、流動的です。一つの技術だけ長けていても、世の中の流行、盛衰で職を失う危険性は高く、不安定な面があります。

キャリアに対する業界で定まった道がない割に、労働需要は変化が早い。
よく言えば柔軟であると言えますが、何も準備なく受け身であると危険だということでもあります。

名著として有名な、『情熱プログラマー ソフトウェア開発者の幸せな生き方』はそういう業界で生きていくためのヒントを多く示しています。

メモ

唸ったところのメモです。本文から直接書いたものもあれば、要約したところもあります。

成長できる環境へ

自分自身にとって「一番下手くそになる」状況を見つける。仕事、ボランティアのプロジェクト…など。

発想を広くもつ

発想を切り替えなければならないような言語を学ぶ。
型付けの強い言語(Java,C#)ー強い型付け弱い言語(Smalltalk,Ruby)
オブジェクト指向プログラミングー関数型言語(Haskwell,Scheme)

実装の詳細を知る

スペシャリストとは、高度に抽象化された概念を扱うときに、その実装となるべき下位の詳細を理解しようとする人である。
医者の例が上げられていた。専門医だからといって、検査の手順に直接かかわることを上っ面だけ知っているということはまずありえない。
専門といっても、関連するトピックまですべて網羅していて、「専門」なんだ。1つのことだけできるということじゃない。
だがソフトウェア業界には1つしかできないことをスペシャリストといっていることがよくある。

ソースファイルのコンパイル時に何が起こっているか?
自分自身でコンパイラを書く
外部ライブラリをインポートする意味は?

なぜ、どうしてを考える

ある領域をさらに深いところまで掘り下げていくときに役立つ2つの質問ー

  • その仕組みはどうなっているか
  • そうなるのはなぜか

「なぜ」「どうして」のツリーをこれ以上進むことができなくなったら、十分に分析が進んだといえる。

練習する

同じプログラムをサイズを小さくするとか、短時間でコーディングするとか、さまざまな練習をやる。プログラミングコンテストの問題を解く。

自動化によって仕事を確保する

コードジェネレーターを作ってみる
MDAについて調べる、試す、応用する。

理解してもらう

開発日誌を書く。何に取り組んだかの説明、設計上の決定について理由、難しい技術的/専門的な決定の詳細を毎日少しずつ書く。

ブログを書く

ブログに書けそうなトピックのリストを書き出す。書く記事のネタになる。
10分か20分で書けそうなネタを探す。10項目で終わる。
毎日リストから項目を1つ選んで書く。

自分をマーケティングする

目立つためには、何かの課題に精通するだけでは足らない。

  • それについての本を書く
  • 1週間かかっていた作業を5分間に短縮するようなコードを作成する
  • セミナーやワークショップを開催することで、自分が力を入れているテクノロジの(地元の都市での)第一人者になろう。
  • 以前は不可能だと思っていたことを次のプロジェクトでやってみよう。

コネを作る

好きなソフトウェアのうち、1つの作成者に電子メールを送り、コンタクトをとってみる。
何らかの形で力になりたいと申し出る。
直接会う機会を探し、話しかけてみる。むしろ気まずいならなおさら、やってみるほうがいい。

新技術を知る

週に一度、最前線技術について調査し、時間を設けよう。スキルを養う余裕を作ろう。
新しい技術を実際に試してみる。

市場に気を配る

業界は変化が大きい。
技術系ニュースに目を透し、業界にさざ波を立てそうな新技術をチェックしよう。
アルファギークを追いかけよう。アルファギークとは、最前線の最先端情報を常に追いかけている超マニアックな人たちのこと。

自分をレビューする

信頼のおける同僚、顧客、マネージャに頼み、360度サーベイをやる。
プロフェッショナルとしての能力を図るうえで重要と思われる要素を10つほどリストアップしアンケートにする。

日記をつけるようにする。何の作業をしているか、何を勉強しているか、業界に対してどのような意見をもっているか書き残しておく。日記がある程度の期間分たまったら、古い日付の日記を読み返してみよう。今でも同じように考えてる?世間知らずだったと思うことはない?その頃から自分はどれくらい変わった?

トラップを探す

自分の選んだ選択肢に固執することで、キャリアが死に至る可能性がある。

キャリアの目標と、その目標を達成する正しい方法と信じていることを書く。
投資先として選んだ技術の最も価値のあるところや、選択するときに最も重要視しなければならない部分を書く。

一番嫌いな技術を選び、それを使ってプロジェクトを進めてみよう。

  • .Net vs. JavaEE
  • UNIX vs. Windows
    …みたいに、対立陣営があるだろうから、嫌いな技術を使って素晴らしいアプリケーションを作ろうとしてみよう。

ウォーターフォール式のキャリア計画はやめよう

求めるキャリアは変わる。
大きな目標を立てたら、それを常に見直すようにしよう。経験から学び、進みながら目標を変更していこう。

昨日よりよくする

実行したい困難な改善または複雑な改善のリストを作る。
リストのそれぞれについてどんな努力ができるか考える。
毎日見る。昨日は一昨日より努力できたか?今日はどうすればもっと努力できるか?

まとめ

絶え間ない学習、挑戦、情報収集、コネクション、マーケティング…‥われわれが取り組まなければならない大きなテーマはいくつもあります。

偉人たちがコンピュータを作り上げていったように、構造化して一歩ずつ取り組んでいきましょう。



貴島 大悟
WEB開発者