はじめに
こんにちは! 私は、プログラミングの勉強を始めてから、半年後にITエンジニアとして働き始め、現在はフロントエンドとバックエンドの開発を担当している芝です。
入社してから3ヶ月が経過し、Laravelを使ったアプリ開発では、1つのタスクを1人で完結できるようになりました。趣味の筋トレを活かして、PHPとMySQL、フロントエンドにはTwigを使用して、ユーザーが登録やログイン後にトレーニング記録や目標を設定・管理できるアプリケーションを開発しました。
皆さんは今プログラミングを始めようとしているけれど、何から手をつけていいかわからないと感じていませんか??
このタイミングで、これまでのことを振り返りたいと思い、入社後の振り返りだけでなく、プログラミングの勉強を始めるまでの経緯や成長過程など、プログラミングを始めて半年程度の方や、「これからプログラミングを始めたい」という方に、役立つ情報をまとめました。
初学者の方々がつまずきやすい部分や、私がどのようにして学習を進めてきたかを共有していこうと思いますので、ぜひ読んで欲しいです。
※なお、私が学んだ言語は、HTML/CSS、JavaScript、PHPで、フレームワークやライブラリは、ReactとLaravelを使用しています。この記事はこれらをベースに記載しますので、ご了承ください。
プログラミングを始めてみて
☆きっかけ☆
私は前職で、人材派遣の営業職に就いていました。その時(ちょうど1年ほど前)、プログラマーやエンジニアという職業を募集している企業が多くあることに気づきました。他の業種と比較して、 「経験者はもちろん、未経験者でも給料が高く、募集も多い」 というのが、この仕事に対する第一印象でした。
私自身も転職を考え始めた時期であり、初めての転職活動だったため、さまざまな業種について知りたいと思っていました。そんなタイミングで「イメージ的には難しそうだけど、需要があり、キャリアアップも目指せる仕事だから挑戦してみたい」と思い、プログラミングの勉強を始めたのが、興味を持ったきっかけです。
☆勉強法と入社するまでの流れ☆
次に、誰もが悩む「勉強」に関する問題についてです。
あなたも、他の職業から、Webプログラマーへのキャリア転換を考えているかもしれませんが、初めは「何を学べばよいのか?」と悩むのではないでしょうか??
私も、最初は何を学べばよいのか、わかりませんでしたが、仕事の合間に、少しずつ時間を作って、勉強を始めました。
それでは、これから、私がどのくらいで、どのように勉強を始めたのかという体験談を書いていこうと思います。これから勉強を始めたい方や、勉強法を見直したいと思っている方は、ぜひ参考にしてみてください。
私は当時、人材派遣の営業職をしながら、プログラミングの独学をしていました。そのため、平日は1〜3時間、休日は3〜6時間を目安に時間を作り、勉強を始めました。最初は何から手を付けるべきか分からなかったのですが、たまたま、前職の同僚がITエンジニアに転職しており、その方から 「Progate」 というアプリを教えてもらい、これで勉強をスタートしました。このアプリは携帯でも学習でき、とても便利なので、初めて勉強する方には、特におすすめです。ただし、無料版では学べる内容が限られているため、有料版を利用する方が絶対に良いです。
Progateでは、HTML、CSS、JavaScript、PHPの内容を3周ほど繰り返しました。各言語を1周するごとに、配列やオブジェクトなどの基礎が、何となく理解できるようになってきたので、簡単な機能を作成しようと考え、YouTubeを参考にしながら、JavaScriptで 入力フォームを作成しました。その後、Reactに興味を持ち、YouTubeや公式ドキュメント、ChatGPT、Progateを使って学習し、筋トレ用の入力フォームを作成しました。
ここまでで、勉強開始から約1ヶ月半が経過しました。次に、面接用に成果物を作成する必要があったため、Docker環境でLaravelとReactを使い、筋トレの記録ができるアプリの開発を始めました。この時点で、Laravelを使ったアプリ開発を約1ヶ月行い、APIの詳細取得や一覧取得などが作成でき、アプリは6割ほど完成していました。その後、転職活動を行い、現在の会社から、無事に内定をもらいました。
内定をもらって入社するまでの期間(約2ヶ月)は、前職の引き継ぎ業務や引っ越し作業を進めながら、現在の会社が運営する 「無料PHPスクール」 に参加しました。このスクールは、週2回の講義が計8回行われ、予習や復習などの課題も多くありました。内容は、初心者向けでありながら、面接対策や成果物のコードレビューも行ってくれるので、基礎から応用まで学びたい方には、非常におすすめです。(※急に宣伝みたいになってしまい、申し訳ありません!)
ちなみに、この講義を受ける前の私は、成果物を作成していたものの、1つのファイルのコードを読むのも、難しい状態でした。Laravelも触ってはいましたが、PHPの基礎がまだ十分に身についておらず、条件分岐や繰り返し処理などの基本的な知識はあったものの、クラスやSQL文の理解は浅いものでした。
しかし、講義を受けた後は、講義で扱ったECサイトのコードを理解できるようになり、基礎知識も復習して深めることができました。結果として、生PHPで、オブジェクト指向かつMVCのWebアプリ開発ができるレベルに到達し、無事に入社を迎えることができました。
なお、PHPとTwigを使った成果物は、講義が終了してから作成し始めました。
下記に、Progateと「無料PHPスクール」のリンクを貼っておきます。
☆入社後☆
入社後は、「無料PHPスクール」の講師とメンターに携わりつつ、新人研修として、成果物の作成を続けていました。まず、講師業務についてですが、私が「無料PHPスクール」を受講していた時は、仕事をしながらだったためにリアルタイムで受講できない日もありました。
そのため、受講が終わった時点での理解度は、50%にも満たない状態だったと思います。そんな中、講師として教える立場になることに、不安を感じていましたが、この経験が、結果としてエンジニアとしてのレベルアップに繋がったと思います。
何が成長を早めたかというと、「アウトプット」 です。具体的にどのようなアウトプットを行ったかについて説明します。「無料PHPスクール」では、予習(講義で使用するコードの写経など)→ 受講(午前中に講師からの講義を受け、午後に生徒が写経したコードを説明)→ 復習(簡単なテストや講義動画の見直しなど)という、サイクルで進んでいきます。
この中で、私が特に効果的だと感じたのは、写経したコードの説明を行う部分でした。もちろん、すべてのステップが重要ですが、このアウトプットが、特に役立ったと感じています。
私自身、基本的に独学でプログラミングを学んでいたので、他人に対して自分以外が作成したコードを説明する経験はありませんでした。そもそも、自分のコードを説明することすら難しい状態だったため、他人のコードを説明するのは、さらに難しかったです。
しかし、この経験を通じて、プログラミングの知識や技術を深めることができました。また、独学では得られないマンツーマンでの指導や、コードの見方・読み方の学びも、大変有益でした。
講師側でも、同様にアウトプットの重要性を感じました。講師の業務自体がアウトプットであり、生徒へ教えるためにわからない部分を無くす必要がありました。そのため、動画の見直しや構文・コードの理解を深めることができ、最終的には、講義内容の理解度が70〜80%に達しました。
また、「教え方」にも工夫を凝らし、どうすれば、より分かりやすく伝えられるかを考えることで、伝え方のスキルも向上したと思います。この時点で、コードやエラーコードをある程度理解できるようになり、成果物としては簡単なログイン機能や、リレーショナルデータベースを使った機能を作成していましたが、完成度は50%程度だったと思います。これが入社後1ヶ月の状況です。
その後、自社で開発準備しているプロジェクトに参加し、LaravelとNext.jsを使ったバックエンドの開発を担当しました。最初に取り組んだタスクは、IDをULIDに変更するというものでした。ULIDはランダムな識別子を生成するIDで、通常のIDよりも、セキュリティが向上する点が特徴です。この変更自体は難しくありませんでしたが、初めてのチーム開発ということで学ぶことが多くありました。特に、コードの見やすさや一貫性を意識することが重要だと感じました。
また、Gitの使い方についても、学びがありました。「無料PHPスクール」でもGitを学んでいましたが、実際にブランチを作成してコミットするまでの作業しか経験していませんでした。チーム開発では、プルリクエストの作成やマージといった機能も初めて経験しました。これらはチーム開発でなければ経験できないものであり、Gitを使いこなせるようになったことで、スキルの幅が広がりました。
その後、再び「無料PHPスクール」の講師を務め、理解度は90%以上に達したと思います。生徒の中には、外国籍の方もおり、伝え方に工夫が必要な場面もありました。また、自社開発のアプリケーションでは、APIの作成に取り組み、コントローラーやアクションの作成、Postmanの使用、テストコードの作成などを通じて、Laravelの知識を深めることができました。さらに、チーム開発でよく発生するコンフリクトも経験し、その解決方法を学ぶことができました。
この時点で、成果物は、機能的にほぼ完成しており、プログラミングの知識がゼロだった約9〜10ヶ月前から、1つのアプリケーションを作成できるまでに成長し、チーム開発にも参加できるようになりました。また、スクールの講師としても、業務を任されるまでに成長することができました。
あなたも、もし今、独学で進めているなら、他の人に、自分の学んだことを教えることを意識してみてください。
最後に伝えたいこと
ここまで長く、さまざまなことを書いてきましたが、最後に、個人的におすすめの勉強法やポイントを、あなたに共有したいと思います。
-
何か作りたいものを決めてから、プログラミングの勉強をする
これは多くのサイトでも見かけるアドバイスですが、何か具体的な目標を持って学ぶことが、最も効率的で理解しやすいです。自分が作りたいものを決めてから、勉強を始めることで、モチベーションも高まり、学習の効果も上がります。 -
コーディングに慣れてきたら、チーム開発を意識して行う
コーディングに慣れてきたら、コードの見やすさや一貫性を意識して作業することが大切です。チーム開発を意識することで、他のエンジニアからの評価も高まり、作業効率も向上します。エンジニアとしての好感度を上げるためにも、コードの整然さに気を配りましょう。 -
Gitを使って成果物を作る
プルリクエストの作成などはチーム開発でないと難しいかもしれませんが、ブランチの作成、コミット、プッシュといった基本的な操作は個人でも練習できます。これらは実践で必ず使うので、早い段階で慣れておくことをおすすめします。また、作り直したいときに、1から環境構築をするのは手間がかかりますが、Gitクローンを使えば簡単に環境を再構築できます。私のように環境構築に手間取る方には、特におすすめの方法です!
これらを実践しながら、少しずつ成長していきましょう!
終わりに
ここまでお読みいただき、ありがとうございました。プログラミングを始めてからの経験を振り返り、あなたと共有することで、少しでもお役に立てればと思います。最初は何を学べば良いのか、どのくらい勉強すれば良いのか、といった悩みが尽きませんでしたが、目標を持ってコツコツと学び続けることで、着実にスキルを身につけることができました。
これからプログラミングを始めようとしている方や、学び直しを考えている方も、焦らずに自分のペースで進めていってください。学びの道のりは決して平坦でないですが、一歩一歩進むことで、必ず成長を実感できるはずです。
私自身、未だに学び続ける過程にあり、常に新しい技術や知識に挑戦しています。これからも成長を続け、さらなる高みを目指して努力していきたいと思います。また、あなたと同じように悩みながら進む仲間として、共に学び合い、成長していけることを願っています。どんな困難も乗り越えて、自分だけの道を切り拓いていきましょう。未来の自分を信じて、共に頑張りましょう!あなたのプログラミング学習が成功することを心から願っています!