自分が欲しいと思うものを開発してスキルアップ|熊本のITエンジニアよしハムコロリの実践的勉強法

経験談・失敗談

自分が欲しいと思うものを開発してスキルアップ|熊本のITエンジニアよしハムコロリの実践的勉強法

こんにちは。熊本でITエンジニアをやっているよしハムコロリと申します。
今回は、開発などのスキル向上の一つの方法について書いてみたいと思います。ITエンジニアとしてもっと知識を増やしたいとか、これからITエンジニアを目指す方に見ていただけたら幸いです。
※本記事にはアフィリエイト広告を掲載しています。

業務でできることには制限がある

現役のITエンジニアの方で、ソフトウェアを開発されている方もいらっしゃると思います。私もそうなのですが、仕事では役割分担があったりして、自分がやりたいと思ったところに必ず携われる訳ではないと思います。開発環境のベースソースを作ったり、テスト用サーバを構築したり…などなど。業務でできることには制限があるので、携われなかったところをやるには、自分の時間の中でやることになると思います。私は休日にやっています。

自分が欲しいものを考えてみる

自分の時間の中で何かを作ると言っても、「そもそも何作ろう…」ってなると思います。何か題材があれば良いですが、作るものに困ったときには、自分の生活の中で「こういうソフト(、アプリ、Webサイト)があればいいな~」を考えてみると良いと思います。私もこれまで色々(と言ってもそんなに多くはないけど)作ってきたのですが、その中の一つに、「自分用カラオケリンク集」というものがあります。
私はカラオケアプリで歌うのが趣味なのですが、当時そのカラオケアプリには「自分が歌った曲を検索して抽出する機能」がありませんでした(今はあると思います)。なので、自分が歌った曲を登録して検索できるWebサイトを作ろう!と思い立ったのです。

自分の時間の中でやるから自由

業務でやると締め切り、残業時間の制約などがある為、自分の思い通りにいかないことが多くあります。しかし、自分の時間の中でやる分には、全て自由です。時間を決めてがっつりやることも、状況に応じてゆっくりじっくり進めることもできます。
私の場合は、自由に作れるから、あえて開発工程に沿って、要件定義、基本設計、詳細設計、環境構築、製造…とやってみたことがあります。私の経験からするとほとんどの場合でデータベースを扱うと思いますので、「テーブルの設計」はじっくりやった方が良いと思います。ここの土台ができていないと後から毎回ここに戻ってこないといけなくなる為です。となるとテーブルの設計をじっくりやる為には、どういう画面が必要で、必要な入力欄、表示内容、ボタン…くらいは検討する必要があるので、結局「要件定義と基本設計(画面設計、データベース設計)」はある程度じっくりやった方が良さそうです。

業務で使っている言語やミドルウェアを用いると業務でも役立つ

当たり前ですが、業務で実際に使っているソースコードなどの資産を持ってくることは厳禁!です。ただ、業務でLaravelを使っているとか、業務でAWSを使っているとかあれば、業務で使っているものを使った方が既に持っている知識もありますし、この自作システムの開発の経験が、実際の業務で役立つこともあります。予習、復習のような意味合いを持っていると思います。
もちろん、知らない言語や環境に挑戦したい場合は、それでも良いと思いますし、得るものはたくさんあると思います。

たくさんのトラブルにぶちあたろう

おそらく、自作システムの検討~開発~リリースにおいて、数多くのトラブル(うまくいかないこと)が出てくると思います。サクサクいかないとやる気も削がれる…なんてこともありますが、このトラブルを1つずつ解決することこそ、スキルアップにつながる点です。1つでも多くのトラブルを解決することで「問題解決能力」を上げることができます。これは間違いなく業務でも役立ちます。例え全く同じ現象でない場合でも、「あれ、これって前うまくいかなかったやつと同様の方法で解決できないか?」って思えるようになるからです。自分の時間ですので、周りに左右されることもありませんので、果敢にトラブルに挑みましょう。今はインターネット上の文献も豊富にあり、AIに聞いたら高い精度で解決策を提示してくれると思います。

全て1日では終わらないことを念頭に置こう

作業をやっていると時間を忘れます。あと、ちょっとしたシステムでも軽く数日は掛かったりしますので、全て1日では終わらないことを認識して行った方が良いです。ただ、複数の日にまたぐと「あれ、前何やってたっけ?」と記憶が曖昧になり、モチベーションにも影響しますので、「直前は何をやっていたか」、「次何をやろうとしているか」のメモを残すようにしましょう。ちなみに、私はGoogleスプレッドシートを作ってその中に要件、テーブル設計、画面設計、課題(トラブル)一覧、メモのシートを作って開発を進めるようにしています。形式ばったものではなくフリーフォーマットで雑記レベルですw

やること多いけど、得るものも絶大

システム開発の開始(要件定義)~終了(リリース)までを一人でやらないといけないので、結構やること多いです。それだけ、得るものや気付くことも多いです。「あ~、この工程ってこんなに大変だったのか」とか新たな見方をできるようになるかもしれません。リリースできたときの喜びも大きいですので、是非チャレンジしてみてほしいと思います。
ここは人それぞれかもしれませんが、こだわるポイントとそうでないポイントを考えて進めた方が良いと思います。コーディング(実装)のスキルを上げたいのであれば、あまりデザインにハマり過ぎない様にするとか。道がそれると、これまたモチベーション低下に繋がりますので、割り切ってやった方が良いと思います。

さいごに

最後まで読んでいただきありがとうございました。毎回なのですが書きたいことがありすぎてどこで区切ろうか困りますw また、別の記事でより詳細などをお伝えできたらいいなと思います。自作システム開発については、例え途中で失敗したとしても、途中までやったことは自分の力になります。決して無駄なことは無いので挑戦してみてほしいと思います。コメントやお問い合わせはお気軽にどうぞ。もし共感いただけましたら、寄付もご検討いただけるととても励みになります。よかったらお願いいたします。

おまけ

例でご紹介したカラオケリンク集です。PHP(Laravel)で開発しています。最初はAWSに置いていたのですが、今はconoha VPSに移動しました(この移動もかなり勉強になりました!)。Dockerで構築することによって開発環境から本番環境への移行もしやすかったです。

自作カラオケリンク集


コメント

タイトルとURLをコピーしました