2021-03-26先が見えない世の中。自宅でも高収入を得られる仕事としてプログラマーに注目が集まっています。副業プログラマーになるべく、プログラミングの勉強を始めた方も多いのではないでしょうか。プログラミングに慣れ、なんとなくスキルが身に付いた気がしてもプログラマーとして自信を持つのは難しいです。「どのレベルなら客を取れるか?」判断に迷う人もいるでしょう。実は「動くものを作る」だけであれば、プログラミングの難易度はそれほど高くありません。商用プログラムは「プログラムが正常動作しないパターンをどれだけ減らせるか」「動かない時に適切な処置ができるか」が重要なのです。プロとアマの違いは「エラーにどう向き合うか」にあると言えます。無数にあるイレギュラーに対処するエラーとは動作が止まってしまってしまう、または意図した結果にならない動作や状態を指します。Webのお問い合わせフォームの場合。必須項目を入力せずに送信ボタンを押した際、そのままフォームが送信されてしまうのは正しい動作ではありません。「必須項目が未入力」というエラーとし、フォーム送信を中断するのが正しい動作と言えるでしょう。このような分かりやすいエラーであれば対処方法と合わせて仕様書に記載されると思います。プログラマーは仕様書にも表現されていないシステムレベルの「イレギュラー」にも注意を払わなければいけません。イレギュラーとは、例えば以下のようなエラーのことです。ファイルが壊れていてデータの読み書きに失敗するディスク容量がいっぱいでファイルが保存できない他のユーザーがファイルを開いていて読み書きできないサーバと通信できない、または途中で切れてしまう処理中にハードの電源が切れるPCのスペック不足で想定時間内に処理が終わらないなどなど。上げ始めたらキリがありません。プロジェクトによっては、このようなイレギュラーケースも仕様に盛り込まれますが、プログラマーの作業範囲として言及されないケースも多いです。?「こんなのどうしようもできないし、パターンも上げきれない!」と思いませんか?しかし、実際にこれらの問題に正しく対処できるのが「プロ」と呼ばれる職業プログラマーなのです。プロ的な考え方と視点を持てば「プロ」になれるどうしたらアマチュアプログラマーを卒業し、プロになれるのでしょうか。重要なことはプロ的な考え方と視点を持つことです。「if文の反対条件の時はどう動くのだろう?」「ループが無限ループするパターンはないだろうか?」といった点を気にするクセをつけましょう。イレギュラーケースをコードレベルで検討できるようになるよう訓練するのです。現在プログラマーとして会社に属している方であれば、実際の現場を通してそのような考え方や勘所を学んでいけるのですが、副業プログラマーでは難しいと思います。そこで、私が思いつく範囲でプログラミングで意識すべきポイントをまとめてみました。これらの点に気を付けながらプログラミング学習を続けてみてください。ファイルの読み書きに失敗したらどうなるか?Webアクセスなど、ネットワークに繋がらなかったらどうなるか?Webからのファイルダウンロードなど、通信中に通信が切断されたらどうなるか?時間がかかる処理中にタスクキルされたり、電源OFFされたらどうなるか?プログラムが二重起動されたらどうなるか?複数ユーザーから同時アクセスされた場合どうなるか?モバイルアプリの場合、プログラム実行中に電話がかかってきたらどうなるか?いかがでしょう。ファイルやネットワークなど、プログラムの外側の要素とのやりとりがポイントになっていることにお気づきでしょうか?設計がしっかりしていれば、プログラム内のデータ(クラスや変数)で不整合が起こる可能性は低いです。それよりもユーザーの行動や実行環境など、外的要因からイレギュラーケースに発展するケースが圧倒的に多いのです。繰り返しになりますが、重要なのはイレギュラーケースに気づける「視点」です。解決策は検索するなり、自分で考えるなり、ケースバイケースでどうにかすれば良いのです。課題に気づけなければ解決策を調べることもありませんので、視点が育たない→プログラミングテクニックの引き出しが増えない→自信が持てない、という悪循環に陥ってしまいます。プロによるコードレビューも効果的プロ的な視点を養う上で、現役プログラマーによるコードレビューを受けてみるのも効果的です。コードレビューはココナラのようなスキル売買サイトでも見つかりますし、私でよければ個別にご相談を受けつけています。(お問い合わせフォームからご連絡ください)上述の視点の話だけでなく関数分割の考え方や名前のつけ方など、テクニック的な要素も合わせて指摘してもらえるので成長しやすいと思います。あれもこれもと指摘の量が多すぎて頭がついていけない可能性もあります。それでプログラミングが嫌いになってしまったら元も子もありません。ある程度自信が持てたタイミングで受けるか、「甘め」「辛め」など、レビューの質についてリクエストしてみることをおすすめします。焦らず、自分のペースで楽しくプログラミングを学んでいけるといいですね。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。30代未経験でSE(システムエンジニア)になるために必要なコト在宅ワークができる、手に職がつくなどの理由から、IT業界に注目が集まっています。SE(システムエンジニア)という仕事を知り、興味を持たれた方も多いのではないでしょうか。IT業界で20年ほど働いていて、プログラマーの仕事が「きつい」と感じる人にはある程度の共通点があるなあと感じています。先に結論を書いてしまいますが、どんな仕事もそうですが、未経験でいきなり活躍できるほど"あまい"世界ではありません。プログラマーは前提となる基礎知識が多くハードルが高いと思います。長野県在住のエンジニアとして、たまにIターン、Uターンの相談を受けます。今回はその疑問にお応えしてみたいと思います。【プログラミング教育】家庭学習はナンプレが最強!今年度から小学校でプログラミング教育がスタートします。「ウチの子はついていけるかしら?」「プログラミング教室に通わせた方が良いのかしら...」と心配されている親御さんも多いのではないでしょうか。