プログラミングにおける趣味と仕事の違い。

同じプログラミングなんだよね。ベンチャーのIT企業でも、上場IT企業でも、JAVAだったらJAVAだし、C言語だったC言語なので、同じプログラミングをしているわけだ。そして個人の趣味でやってるプログラミングも同じなわけ。

じゃあ、趣味と仕事の違いってなんなんだろう?って考えると次の3点かなって思う。

1.バグがないことの保証

2.セキュリティ

3.チーム開発

バグがないことの保証

仕事で組むシステムはバグがあったらいけない。会社というのは信用がとても大事なので、個人の趣味とは全然違うわけだ。お金がかかっているのでね。そして会社が作るシステムというのは重要性が高い。例えば医療システム、金融システム、不動産システムとか。金融システムにバグが多いと、社会に影響があるから、金融庁から注意警告を受けるらしいよ。だからバグをなくさないといけないの。

バグをなくすためには、設計をしっかりする。基本設計書、詳細設計書、DB設計書などを書く。そして、たくさんテストをする。単体テスト、結合テスト、負荷テスト?などなど。

まぁ、設計書を書くのはSEの仕事なので、開発者としては、テストの仕方をしっかり勉強しておこう。PHPだとPHPUnitとかある。SeleniumとかHeadless Chromeとかでテスト自動化とか。まぁ、これらを取り入れている企業はまだ少ないけど。

セキュリティ

セキュリティも大事。簡単に言うと、「ユーザーが入力してサーバに送った情報は全て疑え」ってこと。バリデーションってやつだね。数値しか来ないところにちゃんと数値が来ているかと、文字列が来た場合にはそれ以降の処理はせずに、エラーを返す。

Laravelを含めてフレームワークは元々バリデーションとか、危険なテキストをエスケープするような仕組みが入ってたりするから、これらの仕組みとか使い方をちゃんと理解しておくこと。

まぁ、セキュリティに関する分厚い本があるので、これをちゃんと読めばいいよ。「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践」て本ね。

チーム開発

会社でやるプログラミングはほぼ必ず複数人でやるよ。僕が経験したプロジェクトだと、C言語の車載システムなんかは、100人レベルの規模間だったと思う。小さくても、プログラマーは5人はいたかな。

そこで大事なのは「読みやすさ」ね。このコードは何をしているのかを適切にコメントを書くとか、変数や関数名はスネークケース(snake_case)とキャメルケース(camelCase)をどっちにするかちゃんと決めて一貫性を保つとかね。

本で言うと「リーダブルコード」とか「コードコンプリート」とか「クリーンコード」とかを読めばいいよ。

あと、同じ開発者同士のコミュニケーションを大切に。例えば、お昼ご飯を一緒に食べたり、たまに世間話したり。一言で開発者と言ってもデータベースに詳しい人もいれば、フロントエンドに詳しい人もいれば、サーバサイド、サーバインフラに詳しい人もいるので。

自分が頑張って作った関数を実は他の人がすでに共通関数化してたりするからね。

以上、参考にされたし。