現在も多くの人がプログラミング学習を実践していますが、実務経験や実務レベルにおいて理解しておくとプログラミング学習の方向性や今後の学習内容に役立てることができます。
そのため、本記事ではなぜ実務を意識したプログラミング学習について解説していきたいと思います。
・実務経験とはなんなのか?
・なぜ実務経験が必要なのか?
・なぜ実務経験が重要なのか?
これらの内容に沿って、プログラミングの実務に対する悩みを解決していきたいと思います。
目次
そもそも実務経験とはなんなのか?
これははっきりとした定義があるわけではありませんが、プログラミングにおいて実務経験の有無はあらゆる場面で問われてきます。
実際に、エンジニア転職の場合でも、企業の人材募集要項に実務経験・開発経験の有無を記載する箇所などが存在します。
では実務経験あるいは開発経験とは、どういったものなのでしょうか?
実は、どの会社に所属してプログラミング業務に取り組んでいるのかは関係ありません。
重要なのは、プログラミング業務で関わっている製品・サービスにユーザーが存在しているかどうかです。
プログラミング業務の対価として収益を生み出している製品・サービスに携わっているかを意識する必要があります。
そのため、勘違いしてはいけないのがプログラミング業務に限っては単純にIT企業に所属しているからといって実務経験・開発経験があるエンジニアとは呼べないということです。
逆に言えば、たとえ企業に勤めていない場合でも、自身の製品やサービスを提供することによってユーザーに価値を提供した経験があれば、それは実務経験と言えます。
なぜプログラミング業務においてユーザーが存在することが重要なのか
プログラミング業務において、ユーザーの有無は非常に重要なポイントです。
例えば、プログラミングスクールで1年間通ってプログラミング学習していたと仮定しましょう。
そして就職・転職時に、そのスクールで与えられた課題に沿ってポートフォリオを作成しアピールすることになると思いますが、そのWebサイトやアプリにユーザーがお金を払ってくれるかどうかを考えなければなりません。
なぜなら、実際にIT企業に就職・転職した場合、社内のプログラミング業務で求められるのはユーザーからお金を払ってもらえるプログラムを作り出すことです。
そのため、自身で生み出したプログラムにおいてユーザーがいるかいないかは、全企業の目的である利益・収益を出すというポイントに大きく関わってくるわけです。
だからこそ、プログラミング学習においても利益を出すための練習をいかにシミュレーションであっても経験してきたかによって、企業に所属した後も活躍しやすいと考えられます。
どの程度の実務レベルが求められるのか?
おそらく、プログラミング学習を始めたばかりの人であれば、いきなり案件などを手に入れることは難しいです。
しかし、その中でも学習の過程でシンプルなアプリ・サービスを作成することになります。
そして、ネット上で自分のアプリ・サービスを公開してもユーザーがつかなかったり、利益が出せなかったりします。
ここで安心して欲しいのは、たとえユーザーがいなくても利益が発生しなくても、その取り組みはとても高い評価を受けることができます。
なぜなら、そのアプリ・サービスで収益化できたかどうかよりも、目標設定・達成目標を掲げてどのようにアクションしてきたかを評価してもらえるからです。
そのため、シンプルなアプリ・サービスであっても、その過程で得た内容がエンジニアとしての評価対象になるので、その取り組みにおけるレベルの高低差は関係ありません。
なぜアウトプット優先の学習方法を大事にするべきか?
多くのネット情報でも、ある程度のインプットを言語学習でできたなら、成果物を作成するためにシンプルなものでもいいからアウトプットしましょうと言われるのかについてです。
プログラミングの勉強をしたい!という人は、一定の割合でいきなりRailsやLaravelやDjango等のWebフレームワークを駆使して学習し始めます。
これ自体はとても素晴らしいことなのですが、複雑なアプリケーションを開発する目的で取り組んでいても、そう簡単によく目にするような誰もが利用するアプリを開発することはできません。
膨大な人材とお金と集客によるユーザー確保ができているからこそ、有名アプリは成り立っています。
複雑で高度なアプリ開発も取り組みたいと考える気持ちはわかりますが、個人では物理的限界も存在するため、シンプルなアプリ開発によってたとえ少人数でも価値提供の経験を積むほうが良いと思います。
そのため、複雑で高度なコピーアプリやコピーサイトの作成よりも、オリジナリティを含めたシンプルでユーザビリティあるアプリ開発・サイト作成を心がけましょう。
情報発信によってユーザーを獲得する
筆者も、まさに当ブログサイトにてPython関連の記事を公開していますが、いくつかのシンプルなコードを公開して、利用されています。
また、Twitter上でもブログ記事をツイートし、自身のプログラミング思考やPython記事の評価を受けるためにユーザーを獲得しています。
筆者の場合は、すでにプログラミングによって収入を獲得していますが、そうでない人もユーザー自体は獲得することができます。
たとえシンプルなスクリプトファイルのみであろうと、APIやスクレイピング関連で有用なものを作り出せば、ユーザーは反応してくれるはずです。
ツイッターでも、自身の学習状況から作成されたちょっとしたプログラムをツイートで紹介すれば、同じレベル感の人や興味・関心の高い人から連絡をもらえます。
そして、まずは価値提供が自身のプログラムでできるか判断するために、無償でお渡しするのもアリだと思います。
タダであれば、意外と快く受け取ってくれる人は多いです。
ミクロな視点ではなくマクロな視点を持つこと
少し小難しい話になるかもしれませんが、本来プログラミング業務はただ漫然とコードを記述していれば良いわけではありません。
開発・作成しようとしている成果物の全体像や、サービスにおけるバリューチェーンを理解しているかどうかでプログラミング業務の質も変化します。
本来何かを開発する場合は、大まかな工程として企画・設計・実装・検証・テスト・本番運用といった流れが組まれます。
開発手法によっても変化はしますが、工程の中でユーザーのフィードバックをもらい、アプリのアップデートをかけていきます。
プログラミング業務は、この工程の中の実装段階とフィードバック後の修正の繰り返し部分のみで、別工程の理解も深めなければ、エンジニアとしての価値は高まりません。
そのため、コードの記述ばかりに目を向けるのではなく、全体を把握した上でのプログラミング学習を心がける必要があります。
また、このような全体像を把握するマクロな視点を身につけることによって、ゴールから逆算した思考を獲得することができるため、全工程の理解度が高まってプログラミング思考も同時に成長していきます。
まとめ
ここまで、様々な見解で実務経験について解説してきました。
・実務経験とはユーザーに価値提供した経験
・シンプルな方法で価値提供の練習をすることで経験を積む
特に2つ目の項目は、今後エンジニアとして活躍したいと考えてプログラミング学習に励んでいる人に挑戦してほしい内容です。
たとえプログラミングスキルが高くなくても、本来のプログラミングの本質であるユーザーへの価値提供が理解できていれば、エンジニアとしての価値は断然上になります。
ぜひ、プログラミング学習を継続する際はシンプルで構いませんので、ユーザーへの価値提供を意識することをおすすめします。
また、そのための環境構築も取り進めていきましょう。