記事一覧

技術的な成長について考える




目次




技術的な成長について

ハロー、みなさん。エジソンです。

最近はお仕事の関係上、日々PHPと向き合っている僕ですが、PHPとの付き合いは、かれこれ2年ぐらいになり、且つこの2年間はPHPと継続的に向き合ってきました。

おかげさまで、日々PHPに関する知識が蓄積されています。

最近では、ComposerというPHPのライブラリ管理ツールにふれる機会がありまして、そのツールに対しての見識が深まり、何かの機会に有効利用しようと、虎視眈々とチャンスを伺っているような状態です。

CodeZine - Composerを使ってPHPのパッケージを簡単インストール

本連載では、Composerを使ったパッケージ管理を紹介します。PHPではデフォルトでインストールされているPEARがありますが、最近では、Composerというパッケージ管理ツールも使われつつあります。

例えば、JavaなどではMavenのようなツールでパッケージ管理をしたり、Rubyではbundlerといったパッケージ管理が使われるなど、現在では多くの言語でパッケージ管理ツールが使われています。 …


このように、今まで存在は知っていたが忙しくて向き合うことができなかった技術…、例えば Composer という技術を学ぶ過程を通じて、思ったことがあります。

それは、ある特定の技術を学ぼうとした時に、継続してその技術に触れ続けていなければ、思うように技術的な成長を得られることはできないんだろうなー、ということです。

たぶん、そんなことは当たり前の話で大げさに伝えるべきことではないように思いますが、あえて文章化することで、自分の考えをまとめてみようと思いました。

特定の技術に向き合う期間

特定の技術に対する成長を大きく得られる時間というのは年単位で必要だと考えています。

1年以上触れていると良いし、2年以上ふれていると尚良しで、それ以上ならもっと良いと思います。言ってみれば、当たり前の話ですね。

何故、そのように思ったかの根拠を示すと、それは、PHP初心者だった僕の2年間の経験により、見えてきたことだと言えます。

PHP初心者の2年間の経験過程

  1. 言語仕様が分からないので、言語仕様について学ぶ
  2. 言語仕様を学ぶ過程で、PHPの初心者向けの本を読んでみる
  3. プロジェクトで採用されているフレームワークの取り扱いについて慣れてくる
  4. PHPで用意されているライブラリ関数のラインナップを把握してくる
  5. 暇を見つけては、PHPのリファレンスマニュアルで使えるAPIはないかと情報収集する
  6. プロジェクト稼働中のバグ対応などをきっかけにして、フレームワークのマニュアルを熟読する
  7. 暇を見つけては、フレームワーク本体のソースを閲覧しはじめる
  8. PHPの良書を読んでみる
  9. PHPへの慣れにより作業スピードが上がり、時間を作りやすくなったので、その時間を利用してPHPのさらなる技術領域に踏み入れる
最後の項が重要かなと思うんですが、継続して特定の技術に触れていると、作業に余裕ができるので自発的に学びを得るチャンスが増えるということなんです。

もっと、効率的に作業しよう!とか、プロジェクト運用する上で有用な仕組みは無いだろうか?とか、そういった効率化のための技術的アプローチを求める余裕が得られるまでに成長するには、やはり年単位での継続が必要なのだろうということを、実感したわけです。

技術的成長曲線

実体験を元にして成長曲線を描いてみると、グッと成長する部分と、停滞する部分、これら2つの要素の繰り返しで成長していくとまとめることができます。





継続して特定の技術に向き合え無い場合もある

業務系ソフトウェアを開発するセグメントを想定した場合に、継続して特定の技術に向き合え無い場合があります。

それが起き得る背景を説明するために、まず開発スタイルの種類について語る必要があります。

業務系ソフトウェアの開発スタイルは2種類に大別でき、それは、自社プロダクトを開発する場合と、常駐型または請負型でプロジェクトに参画する場合の、2つです。

自社プロダクト開発

自社プロダクトの場合は、特定の技術に触れ続けるのは容易です。自社プロダクトの場合は、長期でプロジェクトが継続されることが予想されるからです。



常駐型または請負型プロジェクト開発

一方で、常駐型または請負型(他社から依頼されてソフトウェアを開発する)の場合には、特定の技術に触れ続けるのが難しくなることが多いです。

何故なら、プロジェクトの参画期間が契約で定まっているため、期間満了で契約が終了すると、そのプロジェクトを去らなければならなくなるからです。



このように、常駐型または請負型でプロジェクトに参画していると、特定の技術に継続して触れ続けているのは難しい場合があるのです。

例えば現在はPHPで、次のプロジェクトではJava言語が使われるという場合、PHPの知識が記憶として定着する前にプロジェクト終了という事態に陥ることもあるため、学習という視点で見た場合には非効率です。

では、どうしたら良いのでしょうか?

一番簡単で明瞭な解決方法は独学です。これなら、会社の業務遂行体制に関わらず、個人で能力を伸ばしていけます。

ただし、プライベートな時間を、独学の時間にどれぐらい割り当てられるかという問題もありますし、個人で独学する場合と仕事を通して得られる経験には質に差があるため、時間数と学習効果が比例していかないという可能性もあるかもしれません。

まとめ

ある特定の技術に対する、技術的成長には継続年数が重要で、グッと成長する部分と停滞する部分の2つの要素があるでしょう。

とはいえ、業務を通じて継続的に特定の技術を学べるかは運の要素も絡んできますので、独学についても検討していかなければなりません。


関連記事

このエントリーをはてなブックマークに追加

コメント

コメントの投稿

非公開コメント

プロフィール

EZOLABブログへようこそ。
EZOLABは、札幌のソフトウェア会社です。

http://ezolab.co.jp