プログラムを一人で書けるようになるには
1. 本記事のターゲット層
入門編からの抜け出し方が分からない人
リファレンスを読むことが苦手な人
自力でコーディングを行えるようになりたい人
SESにおいて保守案件から抜け出したい人
2. はじめに
先日、あることを質問されました。
「新しい技術を身に着ける際はどうやっていますか?」
長年やっていても自力でコーディングをすることが苦手であるということなんですね。
これは開発において、必要に迫られてリファレンスを読んで、自力でコーディングをする機会がないと仕方がないことだと思います。
しかし、独学で力量を磨くことは中々難しいですよね。日常においても疲弊し、余力もないほどに仕事を頑張っていると、なかなか難しいです。独学で勉強するにしても何をしたらよいか分からないことでしょう。
本を読めばいいのか?サイトを見ればいいのか?e-Learningサイトを利用すればいいのか?そのどれも違うと考えています。
たしかに、知識を身に着けるためには本を読んだり、サイトを見たり、e-Learningが必要でしょう。しかし、それで自力でリファレンスを読み、コーディングができるようになるわけではありません。
今回は、あくまで「私が思う」、自力でコーディングする力量を身に着ける方法を話したいと思います。
3. もっとも重要なこととは?
技術を身に着ける上でもっとも大事なことは、その技術を自分で試してみることにつきます。
それでは、自分でリファレンスを読み、理解した内容を自分で実装するためにはどうすればよいでしょうか?
その答えはまさに、自分でリファレンスを読み、理解した内容を自分で実装することになってしまいましす。
まあ、それでは話はそれで終了してしまいますねw
では、自分でリファレンスを読み、理解した内容を自分で実装するためにはどうしたらよいのでしょうか。
自分で作りたいものをイメージして、それを作るためには何が必要か考えることから始めます。
通常のシステム開発においても同じです。ただ、自分ではなく、誰かが作りたいものを作る違いがあるだけです。そのために、通常はヒアリングを行い、どのような技術が必要で、どのようなリソースが必要か考えていくわけです。
ただ、この記事を読んでいる方は、自力で何かを作ったことがないはずで、作りたいものがあれば苦労はしないと思います。**「でも作ったことがないからそれでも無理に決まっている!!」**と考えてはいませんか?
そんなことはありません。作りたいものがないから、何を作ればよいかイメージが沸かず、技術を活用しようとしてもそのイメージが沸かないだけなのです。サンプルソースを見ても、そこで使われているメソッドの使い方は分かるかもしれません。でも、イチから自分で実装しようとしても分からないはずです。
その理由こそ、「自分で考えて何かを作る」経験がないのが理由なのです。簡単なことからコツコツとやっていけば、必ず入門編を抜け出すことができます。
しかし、残念ながら時間は有限です。どこで自己学習の時間を作るかは、この記事を読んでいるあなたが決めるしかありません。出社してすぐの空き時間?昼休み時間?帰宅後?いずれにしてもどこかで時間を作るしかないのはたしかでしょう。
4. 何を作るか
今回、おすすめしたいのは商品管理システムです。余裕があればログイン画面にも挑戦すると良いでしょう。
<システムイメージ>
簡単ですが、システムの画面構成、DB構成は上記をイメージしています。これらに基づき、「自分ができる範囲」でできることをやってみてください。
入門編を脱することを目的としているので、一般的な開発手順とは異なるかもしれませんが、気にしないで大丈夫です。「自力でコーディング」が行えるようになることがゴールであり、一般的な開発手順を身に着けることを目的としていないからです。
5. Let's Try!
(1) まずは開発環境を整えるところからはじめます。
言語は何にするか、DBは何を選択するか。ローカルに展開?それともコンテナを使いますか?
学びたいものを選択し、それに合わせた環境構築を行うところからスタートします。
(2) DBにテーブルを作ってみましょう
(3) 簡単な画面(ボタンのみでもOK)を作成して、プログラムからDBにアクセスを試みてください
(4) 次にプログラムで作成したテーブルからデータ取得を試みてみましょう
現時点ではデバッグで確認するだけでも良いです。
(5) 画面のパーツを作っていきましょう。
サンプルソースを探して、それをマネしてみるだけでもいいです。すべての技術は模倣から始まります。模倣したものを改変してみることで、何がどのような挙動をするのか、徐々に理解していくことができます。
(6) パーツにイベントを実装しましょう。
データはどのパーツが、どのような挙動を行ったときに取得しますか?あるいは登録はどのようなときに行いますか?
ボタンクリックでしょうか。画面が表示されたときでしょうか。そうしたことを考えながら実装してみてください。
あるいは先に画面遷移をする機能を実装するのもよいと思います。
(7) 入力チェックやエラー時の処理を作ってみましょう。
分からない部分は、気にしないでも大丈夫です。開発経験が増えていくことで「こういうことも必要なのか」と知っていくものだからです。
全てのことを完璧に理解して、全てのことを完璧に予測をして開発をしている人などいないと思います。
6. まとめ
いかがでしょうか。簡単なことかもしれないですが、いざ挑戦すると時間がかかったのではないでしょうか。
これを段々大規模に、複雑にしていくと、段々力量も上がっていきます。
そのさらに先にいくとオープンソースのプロジェクトにも挑戦できるようになることでしょう。
右も左も分からないのは私でもあります。ので分からないということ自体に慣れていくことも大事だと思います。
もしアドバイスをするならば
(1)”「諦める」ことに慣れる”ですかね。
”分かる”状態になるまで”分からない”。そんなものです。
分かるまでもがく、あがく。できることはそれだけです。
(2)自分の壁を突破するのは外から何かを持ってくるしかない。と知る。
これは自分の限界を超える、壁を突破するには
以下のように自分の外にある何かを利用するしかないということですね。
・(周囲の、交流会に参加して、社内の)人に聞く
・Googleで調べる
・本を読む
・AIに聞く
・(あれば)サポートを利用する
自分で考える、調べる。それでも分からないときはそれぐらいしか手段がありません。