機会は自分で作る--フルスタック目指すならプログラミング5000時間

藤原崇 (ウルシステムズ)

2014-11-25 07:00

 前回は、スキルがフルスタックに求められる背景、単一のスキルのみのエンジニアより、マルチなスキルを持つエンジニアが人気となる構図を説明した。そして、現場ですべてを素早く正確に遂行する「1人でなんでもやってくれる人」が「フルスタックエンジニア」として呼ばれる。“やってくれる”を大きくとらえると、以下のようなアクションの実行である。

  • 機能やサービスレベルを理解し、複数案から最適なシステム構成を考えられる
  • 各種手配をおこない、システム構築に必要なリソースを揃える
  • 手を動かして環境を構築、プログラミングをし、システムを作り上げる
  • 求められるレベルへ改良を重ねられる

 では、具体的に何のスキルをどれぐらいスタックすればよいのか。今回は若手エンジニアがフルスタックを目指すにあたって、どうしていくべきかに触れる。

どこまでやればスタックしたと言えるのか?

 システム構築全体を考えるとOS、ミドルウェア、ネットワーク、プログラミング、デザインの5つのセグメントがスタックするべき範囲である。また、各セグメントで「使いこなせる」レベルを目指していくべきだ。「使いこなせる」レベルとは、各セグメントにおいてどうすべきかという考えを自分で持っており、他人に対して堂々と主張できるレベルを指す。

 「使いこなせる」レベルとは、どこまでのことなのか。各セグメントについてもう少し具体的な例を交えて説明する。

 プログラミングではJavaを例にするが、命名(パッケージ名、クラス名など)に一定のルールを持たせ、いくつかのクラスを読めば他クラスの役割を簡易に想像できるなど、可読性と可予測性に配慮することがあげられる。機能追加が予想される箇所は、あらかじめ抽象クラスやインターフェースを作成しておくなど、追加開発の生産性に配慮できることも必須である。「自分が書いたソースコードは他人がメンテナンスする」という、お作法が身に染みついているのである。

 また、QCDのバランスを意識してテストのスコープを決められ、何故そのスコープなのかを説明できること、パフォーマンスを意識しなければならないポイントに鼻が利き、パフォーマンスやハードウェアリソース使用効率を意識したプログラミングができることも必要だ。

 ミドルウェアではOracle Databaseを例にするが、プログラミングと同様に可読性の高いテーブル設計やSQLを記述できることが最低限必要だ。また、DBはパフォーマンスのボトルネックとなりやすいため、常にパフォーマンスを意識したテーブル設計やSQLを記述し、パフォーマンスチューニングはできるようになっておくべきである。この際は、実行計画を参照するだけでなく、システムビューやAWR(Automatic Workload Repository)レポートなど製品個別の各種レポートを駆使して、素早く適切な原因調査と、問題解決するための十分な引き出しが求められる。

 デザインでは、可読性や操作性を考慮しての情報やボタンの配置と、どのような技術を利用すればどのような操作性が実現できるかを知っていれば十分だろう。「色や形で購買意欲を掻き立てる」という専門的な話は、それだけで一つの仕事として成り立つ。それは専門のデザイナーに任せた方がよいだろう。色や形は巷のウェブサイトを閲覧して、どのようなデザインが多いかをチェックし、認識しておくぐらいで問題ない。

 OSやネットワークは、クラウドサービスの発展など技術のコモディティ化によって意識しなくてよいタイミングが増えてきた。今後も、その傾向は続くであろう。ひとまずはクラウドサービスを利用して環境構築し、それらを使いこなせるレベルにしておき、今後の動向にあわせて、必要と判断すれば深く学ぶとよい。

 これらを身に着けるには、クラウドサービスの利用をお勧めする。サーバ構築が容易であり、比較的取り組みにくいOSやネットワークを詳細まで意識する必要がなく、またさまざまなプログラミング言語やミドルウェアを扱う経験を積みやすいためである。

まずはプログラミングに5000時間

 スタックすべきスキルは多岐に渡る。このため、どこから着手するかを考えすぎて集中できなかったり、幅は出たが深みが出なかったりする場合が多い。初めからすべてを網羅的に身につけようとするのではなく、まずは何か一つの技術を深く身につけて、そこから周辺の技術にも目を向け、スタックする範囲の徐々な拡大をお勧めする。

 まずはプログラミングをスタックする。ビジネスニーズをシステムで実現するにはプログラミングは必須スキルであるためだ。パッケージ製品を利用する場合でも、プログラミングの経験をしっかり積んでいるかどうかで、製品内の仕組みに対する理解の深さが変わってくる。

 具体的な時間に触れると5000時間はかかることを覚悟しなければならない。この時間を費やせば「使いこなせる」レベルまで到達できるだろう。プログラミング言語にはPHPやPython、Scalaなど色々あるが、やはり、制限がある静的型付き言語のJavaおよびSpringまたはJavaEEを利用したシステム構築は経験しておいた方がよい。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ホワイトペーパー

新着

ランキング

  1. セキュリティ

    「デジタル・フォレンジック」から始まるセキュリティ災禍論--活用したいIT業界の防災マニュアル

  2. 運用管理

    「無線LANがつながらない」という問い合わせにAIで対応、トラブル解決の切り札とは

  3. 運用管理

    Oracle DatabaseのAzure移行時におけるポイント、移行前に確認しておきたい障害対策

  4. 運用管理

    Google Chrome ブラウザ がセキュリティを強化、ゼロトラスト移行で高まるブラウザの重要性

  5. ビジネスアプリケーション

    技術進化でさらに発展するデータサイエンス/アナリティクス、最新の6大トレンドを解説

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]