2023/01/06
こんにちは。NWエンジニアが経歴の主ですが、実際に本業プログラマをやってみて求められたことを書いてみます。これからプログラマになろうとしてる方の何かの参考になればと思います。厳選して選定した本も参考に載せてみます。
sponsored link
Git
まずはGitですね。VBA開発だと過去バージョンをファイルごとバックアップしていましたが、チーム開発となるので所々、断片的なコード修正が多発します。同じタイミングで同じ場所を触ると、支障がでます。コンフリクトといいます。
ローカル・リモートのリポジトリの概念を把握できてないと、「なにそれ?上書きしちゃいそうで怖い」ってなっちゃうので、初歩的なことなのでしょうが、それだけに質問も恥ずかしいので予め予習が必要です。
本の選定理由:
GUIツール(SourceTree)での説明が中心となってるため、コマンドライン含めて覚えるならもう一冊読むといいです。(ネットで十分かも?)余裕があるなら他のでもよかったかもです。綺麗でしたし筆者は時間がなかったので、一旦これで間に合わせました。
SQL
常識かもですね。ただ、書籍に書かれてるような美しいDB設計でなかったり、ER図すらない会社だったので、ずっと改修、転用にて引き継ぎされてきたSQLが妥当かどうかも評価できる水準だといいですね。メンテナンスで単純にパラメーターを置き換えすればよいだけかと思ってると、そのコード全体が自分の責任になっちゃうので怖かったりします。
単純なJoinでも書籍のように、いつもマスターキーでのみjoinできてるわけではないです。そういったときにどのような動作をするかわかってないとこれまた怖い思いをします。積算となって重複レコードが大量に発生します。そうなってくるとパフォーマンスも含めSQLの書籍も一冊二冊じゃとうてい歯が立たないので、多読が必要になります。
本の選定理由:
SQL書籍の中では、恐らく最難関と思われるジョー・セルコの本を翻訳、兼、カバーしてるミックさんの本で統一してます。
初級者、中級者、上級者の順です。
「SQL使えますか?」「使えます」と言いたいところですが、SQLには人生を捧げられるくらい奥が深いということがわかります。PHP開発等の実務だけで使えてる方が、この中級書の内容を完全に理解できているようには思えないです。この本は難して読むのに時間がかかりましたがとても参考になりました。初級と中級にはもう一冊中間がほしいですね。逆に上級とされる実践入門のほうが読みやすい所が多々ありました。
こっちは設計です。SQL徹底しないとは違い、まだすらすら読みやすいですね。
Linux(Bash)
NW技術者として運用コマンドはある程度把握してましたが、開発現場に実際いくと把握すべきコマンドがかなり違いました。本一冊まるまる読んで知識を体系化しておいたほうがいいです。環境変数ガー、cronガーってなります。結局それで全容がわからないと、システムエラーのリカバリ対応ができません。
正規表現しってるよ?って思っていてもawkコマンドだけで本一冊分の深さがあったりします。見落としがちなコマンドでlocateが使える環境か再確認しておくと効率が全く異なります。
本の選定理由:
他にも素敵な本はありましたが多少古く、スクリプト側の本とうまく分離して体系化できていたのでこの本にしました。
Bashスクリプト
普通の開発言語の経験があっても、かなり独特な部分があるので、きちんと把握しないとプログラム欠けません。ifコマンド一つにとってもif [ ・・・の「 [」の部分がbashにとってはただの引数の一つだったりします。標準入力、標準出力、エラー出力について明確に把握できてないとエラーログすら読めないです。
変数の代入一つにとっても=のあとにスペース有りだと動かなかったりします。また関数つかって構造化してやる!って思っててもbash業界はワンライナー方式が流行っていたり、関数作らないところも多々あるようです。ユニケージ開発とかやってたりすると、本三冊ほど把握しないといけなさそうです。
「shell芸」という界隈があってqiitaとかなんかで情報が得られたりします。ひたすら|(パイプ)で接続する方法等で、構造化プログラミングとはまた違った方面の開発力がつきますよ。
本の選定理由:
先と同様にうまくLinux側の本と分離して体系化できていたところがメリット。
Docker
配属先が導入していたら、知っておかないとメンテナンスもできないです。アパッチのログどこにあるの?ってなっちゃいます。Dockerも奥も深いですし、配属先の企業も使いこなせてるわけでもないのでどの程度、組織として活用できているのか質問できる水準でないとわけがわからなくなります。Docker自体は超効率的な仮想化ツールです。
本の選定理由:
超入門のような優しい本は今の所、存在しません。その中でも比較的入門者向けだったのがこの本でした。
PHP+Composer
たまたま職場のフロントがPHPでした。7年くらい前にPHPは使ったことがあったのですがバージョンが変わると廃止になってる関数がいっぱいありますので、比較的新しい知識で挑んだほうがよいです。社内独自のフレームワークを使っていたりしますので、クラス内でどの関数が何をしているのか即追跡できる水準が求められます。Composer?なにそれ?で入ったもので初日から開発環境構築で躓いてしまいました。
本の選定理由:
他言語経験があれば、PHP自体は難しいことはないので、一冊で深部までマスターできそうな領域の本がこれでした。完全に初心者の方は別の優しそうな本で、もう一冊読んでからのほうがいいと思います。
Composerは別に調べる必要はあります。また、自作のMVCモデルのあたりで難易度にムラが発生しています。そのあとに簡単な関数の章があったり、セキュリティの箇所など読みにくいです。なのであまりおすすめできる本でもないです。
VSCode
配属先がこれでした。色々できることも多く、奥が深めなので使いこなすまで多少時間がかかります。使いこなせると効率に差が大きくでそうなので覚えておくといいです。WinMergeで同じファイルを開いて編集して保存をしていても、すぐに読み込み直してくれていいですね。
書籍は今の所なさそうですね。qiitaで寄せ集めましょう。
まとめ
配属される現場は、まぁ、たいていプロジェクト的にピンチだと思われるので、そういった時にこれらを同時にキャッチアップを求められると辛いです。ゲーム業界とかわかりませんけど、管理人の場合は基幹システム開発だったので、それ用の用語の把握も同時に求められます。一つ一つの知らないことをキャッチアップすること自体はなんてことないですので、少しでも余裕があれば予め潰しておくとよいですよ。連日残業だと睡眠を削る以外に対策も打てません。
「ネットあるのに書籍にお金払うの?qiitaで十分」って方もいらっしゃいそうですが、なるべく体系的に吸収しないと(一般的とされる)基本的な領域と独特な研究領域が曖昧になります。また基本的な領域については一個でも知らないところがあるとlocateコマンドもそうですが効率格差でかなりまずい事になりえる場合もあるはずです。(実際3年業界にいて知らない方もいらっしゃいました。)
あと、本ではまとまって体系化されていることが重要で、全体的にある程度責任感のある教科書的な本がよいです。(基本的な領域ににない情報と思われる=エンジニアとして質問が許される。難易度が把握できる等)。逆に逆引き形はネットに任せたほうがコピペ含め、早くてよいかなと考えてます。