機会は自分で作る--フルスタック目指すならプログラミング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 記事を毎朝メールでまとめ読み(登録無料)

  • このエントリーをはてなブックマークに追加

この記事を読んだ方に

連載

CIO
IT部門の苦悩
Rethink Internet:インターネット再考
インシデントをもたらすヒューマンエラー
トランザクションの今昔物語
エリック松永のデジタルIQ道場
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
「企業セキュリティの歩き方」
「サイバーセキュリティ未来考」
「ネットワークセキュリティの要諦」
「セキュリティの論点」
スペシャル
ざっくりわかるSNSマーケティング入門
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell EMC World
AWS re:Invent
AWS Summit
PTC LiveWorx
より賢く活用するためのOSS最新動向
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
米株式動向
日本株展望
企業決算