※本記事は、ChatGPTによる意訳+翻訳を活用し、レイアウト調整したものです。
※元記事を見て、内容がズレていないか査読するようにしています。
※感想は、オリジナルです。
原文
As a Developer: What to Do and What to Steer Clear Of - DEV Community
意訳+要約
開発者として: 何をすべきか、何を避けるべきか
ソフトウェア開発者として成功するためには、技術力だけでなく、日々の習慣や心構えも重要です。以下に、開発者としてのキャリアで「すべきこと」と「避けるべきこと」を簡潔にまとめました。
すべきこと
- 継続的な学習: 技術は常に進化しており、新しい技術やツールに触れ続けることが重要です。学び続ける姿勢は、あなたのキャリアを大きく成長させます。
- UX(ユーザー体験)の重視: ユーザーの使いやすさを考慮した開発は、製品の成功に直結します。UXを意識することで、ユーザー満足度を高め、プロダクトの価値を最大化できます。
- リファクタリングの習慣化: コードの品質を保つためには、定期的なリファクタリングが必要です。コードの可読性や保守性を向上させることで、将来的な開発が容易になります。
- クリーンコードの実践: クリーンコードの原則を守り、シンプルで理解しやすいコードを書くことが、プロジェクトの成功を支えます。これにより、チームメンバー全員がコードを容易に理解し、協力しやすくなります。
- コミュニケーション能力の向上: 開発者として、技術的なコミュニケーションはもちろん、チーム内での円滑な対話も重要です。意見の共有やフィードバックを受け入れる姿勢は、プロジェクトの成功に繋がります。
避けるべきこと
- 自己過信: 自分の能力を過信せず、常に謙虚な姿勢で学ぶことが大切です。技術の世界は広く、自分がすべてを知っているわけではないことを認識しましょう。
- 無駄な完璧主義: 完璧を求めすぎると、プロジェクトが停滞することがあります。必要なところで妥協することも時には重要です。
- 過度な残業: 長時間働くことが常態化すると、パフォーマンスが低下し、最終的にはバーンアウトしてしまいます。健康を維持するためにも、適度な休息を取ることが必要です。
- 健康管理の怠り: 開発者は座り仕事が多いため、身体を動かす習慣を持つことが重要です。運動不足や不規則な食生活は、長期的に健康を損なう原因となるため注意が必要です。
- セキュリティ対策の軽視: セキュリティの基本を無視することは、致命的なミスにつながります。適切なセキュリティ対策を講じることで、プロジェクトやユーザーのデータを守ることができます。
- 孤立: チームやコミュニティとのつながりを避けるのは、成長の機会を逃すことになります。積極的に交流し、フィードバックを受け入れることが重要です。
ChatGPTへのQA
Q:セキュリティ対策の軽視と言われても、知らないものは対策立てようがない気がしますが、どうすればいいでしょうか?
確かに、セキュリティ対策を「軽視してはいけない」と言われても、その対策自体を知らなければ、実行することは難しいですよね。セキュリティ対策の重要性を理解し、具体的な方法を知ることが必要です。以下に、その点を考慮した見解を述べます。
セキュリティ対策を知らない場合のリスク
知らないことは対策が取れないという点で、開発者は無意識のうちにセキュリティリスクを抱える可能性があります。このリスクは、特にセキュリティが専門外の開発者や、小規模なプロジェクトで顕著です。たとえば、基本的なセキュリティプロトコル(認証、暗号化、データ保護など)に対する理解が不足していると、脆弱性を作り出してしまうことがあります。
セキュリティ対策の基本を学ぶ
まずは、セキュリティの基礎知識を学ぶことが重要です。開発者として最低限知っておくべきセキュリティ対策には以下のようなものがあります:
OWASPトップ10: Webアプリケーションにおける最も一般的な脆弱性とその対策を示したリストです。これを学ぶことで、典型的なセキュリティリスクを理解し、回避策を講じることができます。
基本的な暗号化技術: データの暗号化とその管理方法(SSL/TLS、AES、RSAなど)を理解することは、セキュリティ対策の第一歩です。
認証と認可: セキュアなログインシステムやアクセス制御の基本原則(OAuth、JWTなど)を学ぶことで、ユーザーの認証情報を適切に保護できます。
セキュアなコーディングガイドライン: 開発時に考慮すべきセキュリティガイドライン(インジェクション攻撃の防止、エラーメッセージの管理、ユーザー入力の検証など)を実践することが重要です。
継続的な学習とセキュリティ文化の形成
セキュリティは一度学べば終わりではなく、常に進化しています。そのため、最新の脅威や対策を学び続けることが求められます。業界のセキュリティブログやフォーラムを定期的にチェックする、セキュリティ専門家と交流を持つ、セキュリティに関する勉強会に参加するなどして、知識をアップデートすることが効果的です。
また、チーム全体でセキュリティ意識を高める文化を形成することも重要です。セキュリティを担当する専門家がいる場合は、その人と連携し、定期的にコードレビューを行うことも一つの方法です。
セキュリティ対策のためのリソース
セキュリティトレーニング: オンラインで提供されるセキュリティトレーニング(Pluralsight、Udemy、Courseraなど)を利用する。
セキュリティツールの活用: 静的解析ツールや脆弱性スキャンツール(例えば、SonarQube、Veracodeなど)を使用して、コード内のセキュリティ問題を自動的に検出する。
Q:ここで上げられている「すべきこと」を継続してやるのは難しくないですか?
おっしゃる通り、「すべきこと」として挙げられている項目を継続して実行するのは、現実的には非常に難しいと感じることがあるかもしれません。以下にその難しさと、それを乗り越えるための考え方を整理してみます。
難しさの背景
継続的な学習
- 難しさ: 技術の進化が早く、新しい技術やツールが次々と登場するため、常に学び続けることはプレッシャーがかかる。時間的な制約もあり、すべての新技術を学ぶのは非現実的です。
- 対策: 学習の優先順位をつけ、すべてを学ぼうとするのではなく、現在の仕事やキャリアに最も関連する分野に集中することが重要です。また、毎日少しずつ学ぶ習慣をつけることで、長期的に効果を得ることができます。
UXの重視
- 難しさ: エンジニアは技術的な部分に集中しがちで、ユーザー体験を考慮するのが後回しになることがあります。また、デザイン部門との連携も必要で、これがスムーズにいかないことも。
- 対策: 小さな段階からユーザーの視点を取り入れる練習をすること、または定期的にユーザーフィードバックを取り入れるプロセスをチームに組み込むことが有効です。少しずつでもUXに対する感度を高める努力が求められます。
リファクタリングの習慣化
クリーンコードの実践
- 難しさ: プロジェクトの納期やスピードが重視されると、クリーンコードの実践が後回しになることがあります。また、チーム全員が同じ基準を持つ必要があるため、合意を取るのが難しいことも。
- 対策: コードレビューのプロセスを通じて、クリーンコードの実践を日常的な習慣にすることが有効です。定期的なディスカッションを行い、チーム全員で基準を共有することで、実践がスムーズになります。
コミュニケーション能力の向上
- 難しさ: 技術的なスキルに集中しすぎると、コミュニケーションスキルの向上に意識が向かなくなることがあります。また、技術的な議論において意見の対立が起きると、コミュニケーションが難しくなることも。
- 対策: フィードバックを積極的に受け入れる姿勢を持つこと、また意図的にチームとの対話を増やすことで、コミュニケーション能力を向上させることができます。定期的なチームビルディング活動も効果的です。
乗り越えるための考え方
スモールステップの実践
全ての項目を一度に完璧に実行するのは難しいため、最初は小さな一歩から始めることが大切です。例えば、一日の学習時間を10分から始めたり、コードレビューの際にクリーンコードの原則を一つだけでも取り入れるようにするなど、少しずつ習慣化していくことが有効です。優先順位の設定
すべてを完璧に実行するのは難しいため、今の自分にとって最も重要なことに集中することが必要です。その時々のプロジェクトのフェーズや、キャリアのステージに応じて、どの「すべきこと」を優先するかを決めることが大切です。継続するための環境づくり
周囲の人々と共に学び合う環境を作ることで、モチベーションを維持しやすくなります。例えば、同僚と学習目標を共有したり、技術的なディスカッションを定期的に行うことが推奨されます。
感想+雑記
一人で黙々と作業しているのは、少し危険性を感じる。
とくに、経験値が薄い人は。
無駄なことして時間を浪費してないか、ものすごく不安になる。
チームでの開発となると、やはり、一人で全部カバーするのは、無理がある。
頼れるところは他の人に頼るくらいでいいと思うんだよね。
ただ、その頼る回数を減らす努力をする必要があるけど。
すべきことは、個人でなんとかできることが多いけど、避けるべきことは、一人だと気づきにくいものだと思ってる。
日々振り返りして、アンチパターンを覚えることと、他人に指摘してもらえる環境が大事だと思う。
日々、日記をつけるしかないな、こりゃ。