フリーランスのプログラマーがスキル向上を目指すためには、大きく2つの方向性があります。まずはこの2つの方向性のどちらを選択するのかを決めることが重要となります。
2つの方向性とは、「プログラミング言語を極めていくこと」と「プログラミングだけではなく、より上流工程のキャリアを目指すこと」が考えられます。いずれの方向性を選択するかによってプログラマーとしてのスキル向上を目指してやるべきことが異なります。
対応できる状態になるために最も大切なことは、まず1つのプログラミング言語を徹底的に習熟することです。1つの言語を基礎からしっかり身に付けていれば、当然作業効率が向上します。
また習熟した言語に関係する別の言語の習熟スピードも向上します。その結果、あらゆるプログラム言語に対応することが可能となっていきます。
なぜあらゆる言語に対応できることが大切なのかを考えます。理由は、システム開発を行う際、その用途や種類によって開発言語は変わります。業務系システムではJava、C++、Cなどが主に使われ、Web系システムではPHP、Ruby、Python、Perlなどが使用されることが多くなります。
そのため、フリーランスのプログラマーが複数言語の知識を持ち合わせていれば、それだけプロジェクトへの参画機会が拡大します。
「上流」へシフトしたい場合には、まず「上流」にはどのような種類があるのかを知った上で、自身の強みや関心にあったキャリアプランを描くことが大切になります。上流へシフトするためには、いずれの階層へ進む場合でもお客様のビジネスについて理解することが求められますので、業務知識を習得することが必須となります。
別途、プロジェクト管理に進みたい場合は、プロジェクトスコープ、コスト、スケジュール、品質、リスクなどの項目について管理・コントロールする必要があります。ふりランスの方がこちらを目指す場合には、PMBOKなどプロジェクトマネジメントの基礎の学習が必要になります。
つまり、フリーランスのプログラマーにとってのキャリアプランは前者のスキルの深さを追及するか、後者のスキルの幅を広げるかのいずれかになると言えます。
2つの方向性とは、「プログラミング言語を極めていくこと」と「プログラミングだけではなく、より上流工程のキャリアを目指すこと」が考えられます。いずれの方向性を選択するかによってプログラマーとしてのスキル向上を目指してやるべきことが異なります。
プログラム言語を極める
まず、前者の「プログラム言語を極める」ことについて紹介したいと思います。ここで「極める」と使っているのは、「あらゆるプログラム言語に対応できる」という意味合いです。対応できる状態になるために最も大切なことは、まず1つのプログラミング言語を徹底的に習熟することです。1つの言語を基礎からしっかり身に付けていれば、当然作業効率が向上します。
また習熟した言語に関係する別の言語の習熟スピードも向上します。その結果、あらゆるプログラム言語に対応することが可能となっていきます。
なぜあらゆる言語に対応できることが大切なのかを考えます。理由は、システム開発を行う際、その用途や種類によって開発言語は変わります。業務系システムではJava、C++、Cなどが主に使われ、Web系システムではPHP、Ruby、Python、Perlなどが使用されることが多くなります。
そのため、フリーランスのプログラマーが複数言語の知識を持ち合わせていれば、それだけプロジェクトへの参画機会が拡大します。
上流工程を目指す
「上流」という単語も2種類あり、システム開発の上流工程という意味合いでは、企画、要件定義、設計など開発(プログラミング)から見て前工程に自身のスキルをシフトさせていくことと、システム構成の階層であるアプリケーション、インフラ、プロジェクト管理などのどこにシフトするのかにもよります。「上流」へシフトしたい場合には、まず「上流」にはどのような種類があるのかを知った上で、自身の強みや関心にあったキャリアプランを描くことが大切になります。上流へシフトするためには、いずれの階層へ進む場合でもお客様のビジネスについて理解することが求められますので、業務知識を習得することが必須となります。
別途、プロジェクト管理に進みたい場合は、プロジェクトスコープ、コスト、スケジュール、品質、リスクなどの項目について管理・コントロールする必要があります。ふりランスの方がこちらを目指す場合には、PMBOKなどプロジェクトマネジメントの基礎の学習が必要になります。
つまり、フリーランスのプログラマーにとってのキャリアプランは前者のスキルの深さを追及するか、後者のスキルの幅を広げるかのいずれかになると言えます。