プログラマー になる為に必要な プログラミング以外 の知識・スキル
小学校の科目に取り上げられているプログラミングですが、現在エンジニアが不足しているので、これからプログラミングを学習して、就職や副業、フリーランスで活躍したいと考えている方も多いと思います。
プログラマー はリモートでの作業も可能なのでコロナ禍の現在、働きやすい職業かもしれません。
そんなプログラマーになるためにはプログラミングの知識・スキルはもちろんですが、プログラミング以外 の知識・スキルもあればより仕事を受けやすくなります。
今回はプログラマーに必要な(あれば尚良し) プログラミング以外 の知識・スキルについて紹介します。
プログラミング以外の知識-システム開発について
プログラマーの仕事はシステム開発ですが、システム開発と一言で言っても様々な工程があります。
システムの規模によっても異なりますが、主にある工程は下記の8つとなります。
要件定義
システム開発の依頼者にヒアリングをし、どのような機能や要素が必要かを全て洗い出し、すり合わせを行います。
この時点で認識がずれていると、完成したシステムは依頼者の考えていたものとは異なるシステムとなってしまうため、綿密に行う必要があります。
また、この時点でシステム開発にどの程度の時間がかかるか、どの程度の規模のチームが必要かを確認し、見積もりなども行います。
実際の現場では
小規模の案件に多いのですが、ヒアリングを行い、設計を考えプログラミングをしている段階、またはテストをしている段階で、仕様変更が入ることがあります。
これはプログラマにとってはかなり厳しい、内容によっては、一からやり直しの域に達するものもあります。
外部設計
要件定義で洗い出したものを元にUI(ユーザーインターフェース)を設計します。
ユーザーが利用しやすいUI(見た目)になっているかなどの確認を行います。
手書きやダイヤグラムなどを利用して作成してもいいですし、WebアプリケーションであればHTMLで簡単にコーディングするのも良いと思います。
HTMLでコーディングする際は、モックとしてWeb上に公開し、依頼者にブラウザ上などで確認してもらうことができます。
内部設計
要件定義で洗い出した内容とUIを元に、プログラミングのロジックを考えたり、必要な機能の詳細な内容、DB設計など、開発者側のための設計を行います。
内部設計はSEが担当したり、プログラマーが担当したりと現場によって様々です。
プログラミング
内部設計でできたものを元に実際にプログラミングを行います。
ここで プログラマー の出番となるのでプログラミングのスキルが必要となります。
単体テスト
実際にプログラミングした内容が、要件定義で求められている基準を満たしているかの確認を行います。
テストは細かい機能ごと(モジュール単位)で行います。
結合テスト
単体テストで機能ごと(モジュール単位)でテストを行ったのち、それらの機能を結合し、問題なく動作するか、データの受け渡しなどに問題がないかの確認を行います。
総合テスト・運用テスト
単体テスト、結合テストが完了したらシステム全体のテストを行います。
要件定義で求められた基準を満たしているか、正しい結果が出るか、または、処理速度に問題はないか、Webアプリケーションなどでは、多くのアクセスに対応可能かなどのテストを行います。
運用・保守
システムをリリースしたのちも、より快適に利用できるようアップデートを行ったり、要望によっては機能を追加したりします。
また、テストで発見できなかったバグ対応なども行います。
実際の現場では
規模の小さいシステム開発(一人で全ての工程を行うなど)では「要件定義」「プログラミグ」「総合テスト・運尿テスト」「リリース」と色々と端折って行うことも多いです。
プログラミング以外の知識-開発方法
また、開発における方法も主に2種類存在しています。
ウォーターフォール
先ほど紹介した「要件定義」〜「運用・保守」までを順に行ってきます。
内部設計中に、プログラミングを行うなど、各項目の完了前に次に進むことはありません。
大規模のなシステムの場合は、開発からリリースまで非常に時間がかかります。
アジャイル開発
「ウォーターフォール」と比べ「アジャイル開発」はスピード感があります。
各工程を同時進行的に行い、ある程度まとまった機能を作り上げ、リリース、また別の機能を追加してリリースと稼働に入るまでの時間が早くなります。
また、随時変更への対応なども行います。
プログラミング以外 の知識-コミニケーション能力
これはプログラマが行うかは現場によって異なると思いますが、依頼者とのヒアリング、アジャイル開発では常にすり合わせなど、相手がある内容の業務があります。
この業務を行うにはそれなりのコミニケーション能力が必要となります。
また、チーム開発の場合は、他のプログラマーとの連携も必要となるのでコミニケーション能力が必要となります。
プログラミング以外 の知識・スキル
このように、プログラマーになりシステム開発に従事するには様々な工程や手法があるのでプログラミングだけできれば良いといった環境はあまり多くはないように思います。
スキルとして身についていなくても、知識としては持っておきたい事項が色々とあります。
フレームワークの利用
プログラミング言語によって、様々なフレームワークがあり、このフレームワークを利用することで開発の速度を早めたり、複数人での開発をスムーズにまた、プログラマーによる完成度のばらつきをなくすことができます。
プログラミング言語を習得したら、フレームワークも学習することでより守備範囲が広くなり受けられる案件が広がります。
このサイトでは、PHPのフレームワーク「Laravel」を紹介していますので参考にしてください。
またプログラミンでは「PHP」を「未経験の為の PHPプログラミング 講座 ゼロから始めるPHPプログラミング〜初級から実践編までを網羅〜」として初級・中級・上級・実践の内容で解説しています。
プログラマーとしてフリーランス・副業で活躍する
プログラミングのスキルに加えて、これらの知識・スキルがあれば様々な案件にトライすることができると思います。
フリーランスや副業で行える案件紹介サイトへ実際に登録・面談などを行った情報もあるので参考にしてみてください。
S.E->お勧め記事;
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- Shopify APIを利用して在庫管理を行う
- PHPフレームワーク「Laravel」Bladeテンプレートを利用する
- CrowdWorks いつの間にか「プロクラウドワーカー」になっていた
- Panic Nova 購入から1年が過ぎライセンスの更新時期の注意点
- PHPフレームワーク「Laravel」ファイル構造
- CrowdWorks 提案後、受注に繋がりました。提案〜契約までの流れを解説
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- フリーランス・副業で案件を受注〜リモートワークだから求められるスキル〜