見出し画像

IT業界未経験、業務で使えるWebプログラミングを独学で習得するために必要な勉強のポイント。

最近、プログラミングを覚えて稼げるようになろう!というプログラミングスクールのCMをよく見かけるようになりました。
コロナの影響なのか、リモート勤務がしやすいIT業界への転職や就職を希望されている方も増えているそうです。

私はプログラミングスクールに通ったことはないので、スクールの良し悪しは分かりません。
しかし、プログラミングスクールを卒業した方を採用した経験はあります。

その経験を通して、システム開発の業務に、本当に必要なことを習得していないなと感じることが多々ありました。

「プログラミング」という言葉がピックアップされがちですが、システム開発の業務には、どちらかというと読解能力、応用能力、コミュニケーション能力の方が必要になります。
プログラム言語を書ければ、仕事を継続的にもらえる、稼げる、というわけではありません。

プログラム言語の習得自体は、基本さえできていれば良いのではないかとすら思います。
私はそこまでプログラミングのスキルは高くないながらも、Webサービスをやアプリを自分一人で開発してきています。

基本がわかっていれば、言語は調べながら作ればなんとかなるものです。

きれいで効率の良いプログラムを書くことも大切ですが、業務においては、クライアントの要望を汲み取って、きちんと納期を守って、品質がそれなりに良いシステムを提供することが一番大切です。
プログラミング職人みたいなことよりは、まず顧客満足度が一番大切なのです。

この記事では、プログラムを業務で行う上で必要なスキルを近道で習得し、現場ではどういったことは求められるのかについてまとめてみました。

私はWeb制作会社の経営に携わっているので、あくまでもWebプログラミングにおいて必要なこととなります。
スクールに通わずに、これから独学で業務に通用するようなプログラミングを身に付けたい、プログラミングで稼ぐにはどのようなスキルが必要なのか?と考えている方の参考になればと思います。

構文は基本的なことだけ。
開発したいものを作るための技術を学ぶこと。

学習するというと、参考書を買ってきて、1ページ目から順番にページをめくっていき、書籍に書いてあるコードを打ち込んで実行させる、ということを延々とやる方がいます。

私も最初はそうでしたが、業務で通用するようなプログラミングを習得したいと思うなら、基本的な構文のみ把握して、作りたいものを具現化することを目的に、調べながら作り出すことが一番の近道です。

判定(if、switch)、繰り返し(for)、四則演算と代入ができれば、たいていのことはできます。データベースを扱うSQLについても基本を覚えればOKです。
まずは手を動かして作ってみることが大切です。

作りたいものがない、思い浮かばない、という方も多いと思いますので、Web制作の業務においてよく開発する内容を紹介します。

・お問い合わせフォーム
・CMS(コンテンツの一部分を更新できる機能)
・掲示板のようなコミュニティースペース

Webサーバで運用するようなシステム開発においては、企業相手だと上記のような内容がもっとも多いです。
基本的にはWebサイトの制作があって、そこに付随するシステムを構築するようなことがメインです。

ですので、上記の3つの開発がきちんとできれば、簡単なWeb制作案件程度の業務であれば通用するでしょう。

フォームについては基本中の基本なので、まずはどこかの会社の問い合わせフォームと同じ内容で良いので、自分で作ってみることをお勧めします。
CMSについてはWordpressなどを利用して開発することも多いですが、たまにスクラッチ(※1)で開発する依頼もあるので、基本的には開発がゼロから開発できるスキルを身に着けておくべきです。

とりあえず、サイトのお知らせを登録して表示できるような簡単なCMSを作ってみると良いと思います。(サイトデザインはきれいではなくて良いでしょう)

※1 ライブラリーなどを使わずにほぼゼロから開発すること

プログラムの基本はINとOUTです。
入力された情報をサーバに保存して、ユーザーの見えるところに表示する。
CMSや掲示板などはまさにその基本中の基本です。

入力された情報をデータベースに保存して、表示すべき内容を条件に応じて表示する、という基本ができていれば、あとは応用すればいかように組み立てることはできます。

私もWebサービスをゼロから開発したことが何度もありますが、CMSや掲示板を作れる程度のスキルがあれば、十分に開発することはできます。

ライブラリーやプラグインに頼りすぎはNG。
まずは自分でスクラッチで開発してみる。

昨今では様々な便利なライブラリーやプラグインもあるので、スクラッチでゼロから開発する必要はほぼなくなりました。
しかし、これからプログラミングを習得するという意味においては、ゼロから自分で開発してみることを強くお勧めします。

あるものを利用して効率よく開発することは業務において大切なことですが、それは基本スキルがあってのことです。
業務の開発でプラグインやライブラリーなどに頼りすぎて、プラグインやライブラリーがなければ、実現は不可能と断定してしまったり、プラグインの仕様に沿った仕様でしか開発できない、という方を時々見かけます。

クライアントの要望をプラグインやライブラリーなどで解決しようとして、改修の汎用性がなかったり、やりたいことへの応用が効かなかったりすることが往々にしてあるのです。

エンジニアで、途中で開発案件を投げちゃう(諦めちゃう)方もいるそうです。これはまさに在りものに頼りすぎて、スクラッチで開発する力が足りないがために、行き詰ってしまうのではないかと思います。

私の会社に入社したスクール出身の方も、習ったのはライブラリーを使ったり、テンプレートエンジンを使った開発手法のみで、ある程度型がある状態からしか開発ができませんでした。
いざ開発をお願いしても、やはり応用力が効かず、結局先輩社員がゼロから開発しなおすということがありました。

便利なライブラリーやプラグインはフルに活用すべきだとは思います。
ただ、それはプログラムのロジックの組み立てができて、初めて便利なものとして使いこなせるようになるのです。

個人で好きなものを作る分には仕様を変えれば良いかもしれませんが、業務においては、仕様に対してスキルを応用する力が大切です。
ですので、最初は自分で一からスクラッチで開発して、自分でロジックを組み立てることを習得すべきなのです。

仕様を読解する理解力を身に付ける。

業務においては、仕様を理解してそれを形にする能力が一番求められます。
仕様をきちんと理解することの方が、いくつものプログラム言語を記憶して把握していることより大切です。

クライアントが何をしたいのか?どういう目的でシステムの開発を依頼してきているのか、をきちんと読み取ってロジックを組み立てられる。

プログラムというと理系をイメージされる方も多いと思いますが、どちらかというと文脈を読み取って、物語(ロジック)を構築する、文系の能力を求められることの方が多いように感じます。

業務未経験の方がプログラミングをする際に一番躓くのが、仕様の通りに作るというところです。
それなりに業務経験があれば理解できるところでも、最初は仕様を誤解して解釈してしまったり、躓くことが多いです。

クライアントによって、伝え方もドキュメントの様式も異なるので、いかに相手の要望や希望を読み取りかというところが肝になります。

検索力を身に着ける。

業務の現場では、プログラムの構文を記憶していることなど、たいして役には立ちません。
なぜなら、たいていのエンジニアはGoogleなどで検索したソースコードの使えそうな部分だけをコピペして開発しているからです。

私も同様で、一からすべて手で打つなんていうことはまずしません。
基本はネット検索したコードや過去の自分のソースのコピペです。

プログラム言語を知っている、記憶しているというよりは、やりたいことに対して、解を探し出せる、検索能力の方が重要です。

大きな会社ではOJTと言って、先輩社員が手取り足取り教えてくれるところもあるようですが、私が所属しているような小さなWeb制作会社のレベルだと、細かく教えてくれるような人はいないと思います。

ですので、エラーで詰まった時、やりたいことに対して構文が分からない時に、検索して自分で答えを探し出せるという能力は一番大切です。

とにかく個人開発が一番の近道。

業務に就いていない状況で、仕様理解力や検索力を身に着けるには、個人開発が一番の近道です。
スクールでは、課題を出してくれるのかもしれませんが、業務においては課題を出してくれる人はほとんどいません。

実務でスキルアップしていくということも考えられますが、業務では納期もありますし、それなりに品質が求められます。
今後もプログラミングスキルを上げていくという意味においては、自分で課題を作って、自分で乗り越えていく力が実務に就いた後は大切です。

就職や転職をする際にも、スクールを卒業して「プログラミング能力を習得しました」というより、ひとつでも自分で開発したサービスやアプリの実績がある方が説得力があります。

採用面接をしていて、個人開発でアプリやサービスを作ったという、目に見える実績を持っている人材というのは、奪い合いになっているように感じます。
実績もあってこの人いいな、と思った人は次の面接では、もう他社から内定をもらっていたりします。

自分でアプリやサービスのアイデアを考え、仕様を作って実現化する、というプロセスは、業務におけるシステム開発でも必ず役に立ちます。

テスト評価業務は下積みではない。
開発するうえでも極めて重要。

エンジニアになりたいという方で、テストや評価などの業務を雑用とか下積みを感じている方も多いようです。
たしかにプログラミングをしたい、という動機で入社した方にとって、人が開発したシステムのテストをするだけの業務は下積みのように感じてしまうのかもしれません。

しかし、テスト評価の専門会社があるくらい、システム開発にとってはテストは重要な事なのです。

またテストをすることで、どんな判定パターンを意識してロジックを組まないといけないのか、こういうところでバグがよく発生するから自分が開発する際は注意しよう、など自分が開発をするうえで役に立つことだらけなのです。

仕様書を読んで、テストパターンをしっかり作れるようになったら、それはほぼ開発ができることと同等のことだと思います。

気持ち的にはチェックをする雑務のように感じるかもしれませんが、判定処理の基本を学ぶことが出来るので、業界未経験でシステム開発会社やWeb制作会社に入って、テストを任されても吸収できるものは必ずあるので、不貞腐れて転職しないようにしてほしいものです。

稼げるようになるには仕様を組み立てられるようになること。

システム開発は言語を知っていることより、仕様を考えられるようになって、初めて稼げるようになります。
クライアントはシステム開発のノウハウがないので、プロに依頼してきます。

クライアントはやりたいことや実現したいことだけを伝えてくるので、それを仕様に落とし込むことが一番大切な業務です。
仕様を組み立てられる人は、クライアントにも、制作会社の業務においても重宝されます。

会社からすると、給料を多く渡したいと思うのは、仕事を任せられる人です。
フリーランスにしても、クライアントから信頼を得て、継続的に仕事をもらえるのは、仕様を組み立てて、要望の形を構築できる人です。

実際の業務現場では仕様を提示されて、それを形にするだけのエンジニアがほとんどです。
エンジニア不足と言われますが、実際にはプログラミングをできる人は多くて、実務において経営者側が思うような活躍をできる方が少ないのではないかと思います。

プログラムを書けるというだけでは、なかなか稼ぐことは難しいです。
ぶっちゃけた話をすると、給料はマネージャーやディレクタークラスでプロジェクトを管理できる人でないと、そんなに高くありません。

今はクラウドソーシングサービスで安く開発してくれる方もいらっしゃるのと、海外に開発を依頼するという会社も増えています。
エンジニア不足と言いつつ、本当に業務の現場で必要とされるのは、プログラムスキルを持っていて、かつ仕様を組み立て、現場を管理できる人なのです。

プログラマーとエンジニアはこちゃごちゃにされがちですが、エンジニアという肩書を持ちつつプログラマーではなく、きちんと上流工程も把握できる人がこれからは稼げるようになるのではないかと思います。

***

プログラミングはひとつの手段にすぎません。
何度も繰り返すようですが、業務においてはプログラミングだけではなく、サーバの知識なども必要になります。

プログラミングが大好きという方であれば、とにかくプログラミングを突き詰めていけば良いと思います。

プログラミングをきっかけに開発の業務に携わりたい、稼ぎたいとなると、幅広い知識が必要になるので、プログラミングの基本を覚えたら、システム開発業務で必要なことを習得していくのが良いでしょう。

この記事が気に入ったらサポートをしてみませんか?