NO IMAGE

今プログラマに求められる技術

プログラマとしてコードを書く人の観点ですと

技術というよりも能力って感じのイメージでしょうか。

  1. 概念やコンテキストを理解する力
    • アーキテクチャの設計や考え方に興味関心があり議論に参加ができる
    • スコープを切り分ける時に無駄のない仕組みの技術の考え方ができる
    • チームやプロジェクトで同じ景色で概念を見通すことができる
  2. コードを論理的に書く能力
    • 無駄のない処理フローチャートをコードで表現ができる
    • その場しのぎのコードを書かない
    • チームとしてコードを書く時に全体感を見通して論理的につなぐことができるコードを意識できている
  3. コミュニケーション能力
    • 必要な要件を満たしているか、満たすためのクリティカルパスは何かを意識ができる
    • 問題点を見つけた場合にすぐにレポートやトラブルシューティングができる。
      • 問題のレポートをすぐに伝達できる
      • 被害を最小限に抑えるための改修や行動ができる
    • チームや多人数プロジェクトの場合、ネガティブな言葉を使わずに生産性の高いアウトプットができる
  4. 見積もり能力
    • 工数の見積もりが適切か見積もることができる
      • Aさんの見積もりだと1週間、Bさんの見積もりだと3日、実際は3日しかかからなかった。実際は1週間かかってしまった。プロジェクトへのインパクトを予算内かつ無駄なく貢献ができる
    • スケジュールへの工数落とし込みができる
      • WBSを引くために参考となるスケジュールや工数が見積もることができプロジェクトマネージャーへ連携ができる
  5. 言語の理解と仕組みの理解
    • プロジェクトで利用する言語の得意/不得意部分と不得意部分の対応策やベストプラクティスの理解理解
    • その言語のキレイにかけているライブラリや参考にする書き方などを熟知しておく
    • ライブラリや既存コードでよりベターな選択肢を選定をする能力
    • 一般的なアルゴリズムや仕組みを知っておく(ソートの仕組みなど)
      • バブルソート、クイックソートなどメモリ、処理ステップ数など意識ができるかどうか
      • 会員登録をする場合に、最低限必要の情報や抜け漏れがないかいろんなコンテンツを熟知しておくなど
      • 課金系コンテンツを作る場合に一般的な遷移や処理フローが意識できコーディングに落とし込める
  6. OSとプロセスの動き方への熟知
    • LinuxベースやWindowsベースで動作が異なる場合があるので熟知しておく
    • パフォーマンス観点でCPU/メモリの使用量を意識してコードが書ける
    • 大きなファイルやデータを扱う場合Disk I/Oのパフォーマンスも意識できる
      • I/O waitがボトルネックとなった場合に原因はなにか?など突き止めることができるなど
  7. パフォーマンス向上施策に対する知見を持っておく
    • 一般的なキャッシュの仕組みや概念などは同じアーキテクチャでクリアできるので一般的な使い方をよく理解しておく
    • データベースや共有資源に対してオーバーヘッドを意識することができる
    • メモリサイズを意識してオンメモリで処理できる限界やバランス感覚を意識することができる
  8. ネットワークへの知見
    • 最近はネットワーク経由でのデータやりとりやプログラミングが多いので理解する。必須は以下
      • TCP/IP・UDP
      • HTTP(s)
      • DNSの仕組み
      • 一般的な配信データjson,xmlなどの形式をparseできる
    • ネットワーク越しのデータのやりとりは回数が増えるほどオーバーヘッドやリクエストの処理回数が増えるのでまとめて処理をするなどパフォーマンスを意識したデータ送受信フローを考える
    • セキュリティルールやアクセス権について対応ができる
      • 外部セグメントからのアクセスを制限できる知見がある
      • 必要なアクセス権限を持たせ必要以上にフルアクセスさせない
  9. セキュリティーへの知見(コードを書く上で)
    • 一般的に使われるクロスドメインの仕組み
    • CSRFなどの仕組みやクロススクリプト対策
    • SQLなどにインジェクションされない仕組みを使ったコーディング
    • IP/Portなどで制限をかけ必要最低限のルールで運用
    • 必要なログデータなどを判断して残すことができる
      • 課金決済/ポイント系は決済ログなど追えるような仕組み
      • アクセスログや問題のあるログをあとからチェックやフィルタをかけられるように残せる
      • マーケティング分析に必要なログデータを必要な時にすぐに準備や理解ができる
  10. ビジネススキルとマーケティング知識
    • WEB系だとマーケティングの広告などの仕組みを知っておく
      • アフィリエイトや広告での成果、機械学習系での最適化がかかる項目をしっておく
      • 広告のCPA/CPCから売り上げ粗利のROASなどの議論ができる
      • 広告費の無駄を減らすためのアドバイスと技術的アプローチができる
    • WEB系以外の場合(例えばtoB向けの経理/会計システムの場合)
      • 業界の最低限の知識を競合サービスなどを利用して確認できる
      • 一般的な会計や計算方法などを理解ができコーディングできる
      • 日時・月次・年次処理など締め処理や一般的に必要な集計処理を期待した上でデータの整理ができる

書き始めると無限に書ける気がしますね。

下に行くほど必要なさそうに見えますが
プログラマとして理解しておくと話が早く
一緒に仕事をしてほしいと求められることが多いと思います。

NO IMAGE
最新情報をチェックしよう!
>プログラミング 独学

プログラミング 独学

本当にプログラミングを学びたい人のためになるブログにしたいと思っていますので、些細なことでも気が付いたのであればご報告いただけると幸いです。

CTR IMG