スキルが上がっても開発は楽にはならない
この記事で言いたいこと
個人的に「デザインパターンを勉強することで開発が遅くなった」「頭でっかちになるので勉強しないほうが良い」とかいう発言をたまに聞く。スキルアップが開発の障害になることもある、という主張である。この発言に対するアンチテーゼを俺は主張したい。
- 「スキルが上がっても開発は楽にはならない」
スキルを上げることで得られるものは何か
端的に言うと本を読む、設計を学ぶ、プログラミングを学ぶ、プロジェクトマネジメントを学ぶ...などなどエンジニアが学ぶことで得られることは何か。
- 良い設計と高い生産性
- 技術的負債の削減
この結果、何が起こるかと言うと以下の通りである。
- エンジニア本人の幸福度のアップ(負債のない快適な開発)
- 副作用的にまわりのエンジニアの不幸の回避(幸せっていいよね)
- 会社の利益への貢献(開発に金がかからない)
エンジニアの幸福度は我々にとっては非常に重要である。技術的負債に苦しむ現場は多い。
ただし以下のマイナス要因もかかえることになる。
- スキルが上がることにより、解決しないといけない問題のレベルが上がる
これが「スキルが上がっても開発は楽にはならない」最大の要因であり、誤解されているところではないか。楽になるためにスキルアップしているわけではないのを肝に銘じる必要がある。
スキルを上げることでもっとも重要なこと
ただ個人的にもっとも重要なのは「会社の利益への貢献」であり、持続可能な企業は利益を上げ続けなければ実現不可能である。会社が利益をあげられないことの不幸は筆舌に尽くしがたい。社会人としての責任感を考えたときに、「デザインパターンを覚えると開発が遅くなるから勉強はあえてしない」など言語道断である。自分の観測範囲では会社の利益への貢献に対する意識が低いエンジニアが多いのではないか。ひどい場合になると牛歩戦術をとっているエンジニアさえいる。
誤解の原因
「デザインパターンを勉強することで開発が遅くなった」「頭でっかちになるので勉強しないほうが良い」という言説の誤解の原因はどこから発生しているのか?それは単なる過程である。学習によるパフォーマンスの低下は学習初期にある単なる過程であり、そこで歩みを止めてしまえば害悪しか残らない。要するにそこで止めてしまうエンジニアが多いのではないか。「毒をくらわば皿まで」、皿まで食らう覚悟が社会人に求められる。
現実世界
スキルアップには限界があり、また逆にキリがない。自分のライフワークバランスを考えたときに、どこかの地点で手を打つ、というのはそこまでおかしな話ではない。みんな仕事以外にも生活がある。でも俺は戦略的に高いところに限界設定してるけどね。
スキルアップした結果自分がどうなったのか
個人的には自分のスキルは上の中あたりだと思っている。自分がスキルアップした結果、どうなったか挙げてみたい。
- 学習、実践を繰り返すことで実践能力が上がった
- 実践能力が上がった結果、本を読むだけでそこそこ本に書いてあることができる
- 知識ベースで自明なことが増えた
- 自明なことが多いため試行錯誤が減った
- 試行錯誤がないのでまわりから仕事が簡単に見える(ただし全然楽ではない)
- 作業時間が極小なので残業しなくて良い(幸福度の実現)
- 設計で悩むことが増えた
それでも、俺の仕事は難しいし、全然楽じゃないですって。楽じゃないのはみんな一緒。
Discussion