👨‍💻

【復習】エンジニア3年目、案件で学んだことを振り返る

に公開

はじめに

今開発しているシステムが4月末で一旦落ち着いて、来月から保守運用に入ることになりました。
振り返ると1年と3ヵ月間何度も炎上してかなりキツかったです泣
シニアエンジニアが居ない状況で開発をしたので、振り返るとかなり「もう少しこうしておけば良かった、、」と思う事が多々ありまして、今回は私が実際に案件に入って感じた事や反省点についてブログを投稿させていただきます。
至らない点もあるかと思いますが、ご意見・ご感想をいただけると嬉しいです。

技術選定

バックエンド:C#
フロントエンド:HTML&CSS、JavaScript、jQuery

復習フロントエンド

1.idとclass両方にcssを付与してしまった。
しまぶーのIT大学【CSS #3】にて、CSSには詳細度という概念がありidは詳細度が高く後々上書きする時にややこしくなるのでclassを使うべきと習ったので、次回からは気を付けてclassにのみ付与します。

2.ボタンやラベルのサイズを感覚的に作成してしまった。
ドットインストールにて、webデザインで長さを決める場合、16pxをベースにする事が多い
長さを決めるときに迷った時は16pxの倍数か、その半分の8px、さらにその半分の4pxの倍数にするといったルールにしておくと、統一感のあるデザインになる。と後ほど学習しました。次回からは16pxを意識して作成します。
また、アトミックデザインの手法を用いて、ボタンサイズやラベルサイズを予め決めておくべきだったと反省しています。

3.divを多用してしまった。
divを多用してしまうとコードが読みにくくなるので、次回からはSectionタグを使用し奇麗に固まりを纏めます。

4.if文のネスト構造が複雑で、条件が値の一致に基づいている場合、保守や仕様
変更があった際に、switch文を使用すべきだった。
else ifがかなり長くなってしまい見にくくなってしまったので、次回からはelse ifが長くなる場合はswitch文を使用するように意識します。
switch文であまり実装しないので、サンプルコードから慣れようと思います。

5.HTML要素(tableやdiv)の要素にcssを付与してしまい、共通のCSSと競合が起きてしまった。
HTML要素にはcssを付与しないように気を付けます。

6.!importantを多用してしまった。
しまぶーのIT大学【CSS #4】にて、!importantはカスケードの普通の挙動とは異なってしまうため、特に大きなスタイルシートでCSSに関わるデバッグが困難になるため、基本使用してはいけないと学習しました。次回からは使用しないように気を付けます。

復習バックエンド

1.C#の基礎力向上
難しい実装をする際にAIにかなり頼ってしまった。
せっかく複雑なアルゴリズムを使用する実装をする機会があったのに、AIに任せっきりにしてしまいもったいなかったなと今は思っています。(当時は必至でそんな余裕はありませんでした。)
paizaとかudemyとかを使ってもっとC#の基礎を身に着けて次回からは、自分の力で実装できるようにします。

復習フロントエンド&バックエンド

1.JSの関数名と変数名、C#のメソッド名と変数名を感覚的に付けてしまった。
※これを凄く反省している。
案件始める前に上司に命名する時はアルファベットでも良いと言われたので、アルファベットで命名していたのですが、後ほど、実装したコードを確認するとアルファベットで書いてあったり英語で書いてあったりしてカオスコードになってしまい、かなり読みにくいコードになってしまった。
次回からは当たり前だが英語で統一し、仕様変更時や保守運用の事も考えて読み手に優しいコードを記述します。
今リーダブルコードというより良いコードを書くための書籍を読んでいるのですが、案件が始まる前に読んで置けばと後悔しています。
最低限英語で意図が明確に伝わるように命名すべきでした。

復習その他

1.システムを実際に使用する人の事を意識すべきだった。
UI/UXについてもっと配慮すべきだったと思っています。
例えばボタンにカーソルが当たった時にカーソルが変わるだけでなく、少しバックグラウンドカラーを暗くしたり、色がキツイ箇所に対して、使い手の事を考えてもっと優しい色に調整しませんか?と提案すればもっとより良いシステムを作れたのでは無いかと作っていて思いました。ただ要件定義書に従って作るだけではなく使用する人の気持ちを汲み取って提案する事が出来れば良かったなと思いました。次回からは気になる事があれば積極的に提案します。

2.英語力を向上させる。
正しい命名が出来るように、コードを早く読めて理解する為に、英語力を向上させます。

3.定期的にリファクタリングを行う。
週に一回、隔週に一回はリファクタリングをするように心がけます。
しまぶーさんの動画や、同期のかなり出来るエンジニアとペアプログラミングをした時に「え!?まだ、リファクタリングするの」って何度も思った事があるのですが(動けばいいじゃんって思ってました。)
今振り返ると一度でも良くないコードを書いてしまいそれを許してしまうと後々振り返った時にカオスなコードになってしまい、もう戻れない状態になってしまうんだなぁと反省しています。次回からはもっと意識すべき事だと思っています。

5.パフォーマンスを考慮する。
レスポンス速度を早くして欲しいとかなり言われたのですが、パフォーマンスを意識してコードを書いていなかったので、次回からはその辺りについても意識します。

6.セキュリティを意識する。
セキュリティについて悩んでいる。先輩に「このコードだとセキュリティが甘い」と言われたのですが、「じゃあどうしたらセキュリティの高いコードが書けるのだろうか」と先輩に相談してみたのですが、正確な回答が返ってこなかったので、悩んでいる。セキュリティに関する知識が甘いので何冊か読んでみます。セキュリティが甘い仮システム(掲示板)を作ってみて実際にハッキングをしてみたいとは思っています。

7.db設計ミスると地獄を見る。
複数のテーブルから値を引っ張ってきたり、カラムとカラムを比較して一致していたら値を返すような
実装をした時に、db設計をした人を憎く感じました(笑)
自分がdb設計をする時はかなり神経質に設計をしようと思っています。

最後に

色々反省点や気になっている点は多々あるのですが(HTMLのクラス名をBEM式で書けば良かったとか、でもチーム全体でBEM式統一は出来なかったやろうなぁとか)
何とか仮段階ですが形に出来たので、良かったです。
炎上してメンタル的にも働き方もキツイ時期が多々ありましたが、実力的に3年目ですが5年目ぐらいの力が身に付いたのではないかと思っています。
次回はモダンな言語で開発がしたいと思っているのですが、中々田舎に住んでいるので難しそうです泣
でも挫けずに、個人開発で簡単なアプリでも作ってみようかなと思っています。
早く次の案件に入ってより良い作品を作りたいと思っています。

Discussion