プログラミングの勉強を順を追って、勉強していくことは面白くないので、はっきり言って辛いだけです。
まず、「行動」を起こして、目に見える成果物を残すことで、結果が目に見えます。
そうすれば、「自分でも出来るんだ!」と達成感を得られるので、勉強もさほど辛くなくなりますよ。
本記事を読むことで、以下のメリットが得られます。
- 「行動」を優先度高に意識することで、成果物を残せるようになる。
始めてのWEB開発業務で最初に何をしたか
僕が、一番最初にWEB開発業務をした時のお話です。
事前にWEBに関する勉強も何もしていない状態で入社しました。むしろ「WEBって何?」レベルw
ようそんな奴に仕事を与えてくれたなと感謝してもしきれません。
そんな中で、最初の業務でやったことは「開発環境の構築」でした。
ですが、XAMPPなどの手軽な開発環境ではありません。
VMWareという仮想化環境、今でこそ、皆さんに馴染みのある方は「VirtualBox」だと思いますが、当時はVMWareが主流?だったような。(※当時、初心者過ぎてわからん)
とりあえず、VMWareで仮想化環境の中、Linuxディストリビューションをインストールしつつ、いきなりCUIでLinuxコマンドを叩きながら、Apache、MySQLなどWEBアプリケーションサーバーを構築していたのであります。
意味?当然わかりませんまさおです。
なので、何をしているのかわからず、何で必要なのかもわからず、結果としては、今になっては何をやっていたのかわかるのですが、非常に効率が悪かったのであります。
わからないので、楽しくないですよね。
で、挙句の果てに業務外で勉強する気にもなりませんでした。だって楽しくないもん。
そんなこんなで1年が迎える時に、ようやく頭を打ち続けて「能動的に勉強しなければスキルは身に付かない」と気付く時がありました。
そこから土日も図書館に通い続け、HTMLとCSSから、勉強をする様になりました。
とりあえず作ってみる
今、当時の自分を思い返すと、勉強も非常に効率が悪かったです。
なので、この記事を読んでくれているユーザー様には声を大にして言いたいですが、HTMLやCSSなどの教科書をやりながら、「とりあえず作ってみる」ということが非常に重要です。
以下、ツイートしました。
WEB開発は、「とりあえず作ってみる」という行動が大事。陥りやすいのが、教科書を順番に覚えようとして、結果、成果物がない状態。
— ふわふわしょうちゃん@WEBエンジニア/マネジメント (@FuwaFuwaShoChan) October 20, 2020
HTMLだけでもささっと覚えたら、とりあえずWEBサイト作ってみましょ。そしたら、必要な機能が出てきます。必要に応じて、後から知識をつければ良いのであります。
勉強は楽しくないもの、というのは、どうやら日本の教育文化がそのように感じさせているようですね。
なので、他国に比べると、社会人になってからも勉強する人が全体の6%という非常に少ない数値になっています。
僕は、義務教育時代は勉強する目的がわからなかったです。親にも学校の先生にも、勉強することでどんなメリットがあって、なぜ継続させることが重要なのか。ということすら言われた記憶にありません。
なので、勉強に興味がなかったし、しなかった。
ですが、過去の経験から努力というものの意義に気づき、今は勉強の大切さが身に染みてわかります。
勉強は自分の「無形資産」となって貯蓄が出来るものです。
辛くても、それ以上の利益があるのであります。ぜひ、勉強を継続してください。
話がそれました。スミマセン。
とりあえず、ある程度、最初の知識を詰め込んだ後は、「WEBサイトを作ってみる」という行動をとることで、成果が目に見えてきます。
それは、小さな達成につながるので、「もっとこんなものを作りたい」という欲求を促すものになります。
なので、勉強だけして何も残らないよりも、何かWEBサイトを作り(行動)しながら、行き詰った時点で、勉強する。の繰り返しが非常に効率的なのだと感じています。
機能はなくてOK。静的ページで、最低限動くものを
僕が、WEB開発業務で意識していることも、「実際に動くものを作ってみる」ということを実践しています。
頭の中でごにょごにょ考えるのが嫌いです。僕は「とりあえずやりましょうや」タイプです。
なので、設計書を書く目的は、頭を整理するためです。
機能の洗い出しもざっくりでOKです。
HTMLとCSSで最低限動くものがあれば、
「こんなページが必要で、レイアウトはこんな感じだよね。で、とりあえずのページは揃ってます?」
で、話を進めることができます。
そして、顧客にも実際画面を触ってもらうことで、よりイメージが鮮明になります。
ついでに「間違った方向へ進んでいないか」の確認もできるので、一石三鳥なのであります。
ですが、この手法が使えない環境もあります。
作業書を作ったり、要件定義書を作ったり、資料を作るだけで大変な手間で、効率が悪く、全然楽しくありませんでした。
それが合う、合わないは人によります。
僕は、スピーディにガシガシ作って、ガシガシ修正していく開発スタイル(むしろ建築と違って、すぐに実験・修正可能なことがWEB開発では大きなメリット)だということは、その過去の経験から気づきました。
なので、自分に合った開発手法を取らせてくれる環境を探すことも大切です。
機能の洗い出しと、その一つの機能をどう実装するか
さっさと作れるページだけでも、先に完成させていると、より明確に機能の洗い出しが可能になります。
極論、WEBページのボタン上に自分がわかるように、どんな動きをしてもらいたいのか書いておくのでもOKだと思います。
ちなみに、僕はコメントアウトで記しています。
また、プロダクトオーナーがいて、常にWEBページを触ってもらえるなら良いですが、そうでない場合は、資料にして確認する必要もありますね。
その場合は、エクセルなどに機能リストを書き出せばよいだけです。
要は、常に行動を最優先していれば、次にやるべきことが明確に見つかるのです。
頭の想像だけで、機能を全部書き出すことは難しいですよ。なので、ウォーターフォールでは要件が漏れやすいと考えています。
プログラミングの処理を一気に書くことは不可能です。
「一つの処理をどう実装するか」まで詳細化しないとコードを書くのは難しいです。
目の前に静的ページがあり、イメージを具現化されている状態であれば、「この場所にこんな処理が必要だな」というのは、鮮明にイメージできます。
後は、必要なコードを書いたり、ググったりして、乗り越えるのみです。
その繰り返しで、スキルを身に付けていくことが、最も効率的なのではないかと僕は思います。
必要に駆られない、知識は忘れますよ。
以下、ツイートです。
プログラミングを理解するとは、文法などの「役割」の理解と、「ググれば、コードを書ける」あたりだと思います。まるっとコードを覚えるのは、長い時間やり続けなければ、難しい。
— ふわふわしょうちゃん@WEBエンジニア/マネジメント (@FuwaFuwaShoChan) October 17, 2020
人間は忘れる生き物です。恋だって、時が経てば忘れるじゃないですか。
そりゃ勉強頑張っても、細かい知識は忘れますぜ
WEB開発も、とりあえず作ってみるという「行動」が一番です。
人生も行動って言われていますよね。ぜひ実践しましょう。
まとめ
- 勉強はHTMLと必要に応じたCSSだけで良い。
- とりあえず静的ページを作る行動をとる。
- 後は、「調べながらプログラミング」でスキルはついてくる