編集部からのお知らせ
量子コンピューティングへの注目
特集まとめ:高まるCISOの重要性

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

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

2014-11-25 07:00

 ここで当社の若手が現在進行形で経験している例を紹介する。既存の業務システムと連携して、帳票出力の機能をクラウドサービスのAmazon Web Services(AWS)上に構築するという案件がある。そこへ若手を1人アサインし、システム構築のすべてを任せている(もちろん、すべてのアウトプットをレビューし、いつでもサポートできる体制は整えている)。

 まずは環境構築である。AWS上に新規にEC2(サーバ)を立てるが、既存システムとのやり取りが発生するので、セキュリティグループ(ファイアウォール)設定が必要でとなる。Linux上でのセキュリティ設定も必要である。プログラミング前には顧客とやり取りしながら要求整理とシステム仕様を詰め、ゼロからプログラミングする。

 データベースは既存環境があるためゼロからの構築ではないが、業務システムのテーブル仕様を理解しながらSQLを組まなければならない。デザインはそれほど凝る必要はないが、既存システムとの親和性や利用上で誤った操作をしないことを考慮しながら実装しなければならない。

 この案件ではプログラミングの経験を大きく積め、それ以外のセグメントのスキルも、ある程度は経験を積める。それほど難易度の高くない、小規模なシステムをクラウド上に構築する案件を、丸ごと経験させることは、フルスタックを目指す場合でのスタートには非常に適している。

飽きたら他のセグメントへ

 5000時間も過ぎ、プログラミングに飽きた頃には、別のセグメントの上達を目指すとよい。大抵の場合、プログラミング経験の道中でOSやミドルウェア、ネットワーク、デザインのいずれかは、そこそこ経験していることだろう。興味がある順でよいので、一つずつ使いこなせるレベルまで上達させていこう。

 この時点でプログラミングスキルは深く身についているので、次のセグメントでの「使いこなせる」レベルへ到達するまでの考え方を、まったく想像できないことはない。このため、プログラミングに比べて上達のペースは速くなる。

 スキルをスタックしていく際の注意点は、教科書や他人から教わった内容を、そのまま「正しい」と鵜呑みにせず、自分の頭で考え、仕組みを腹落ちさせながら進むべきだ。構築するシステムによって、利用するプログラミング言語やデータベースは異なるし、技術の進歩はとても早いため、新しい技術が次々と登場してくる。

 毎回違う技術を丸ごと頭に入れるのは不可能なので、ポイントを抑えて、どこが同じでどこが違うかに当たりをつけられるようにする。そのためには基本的な仕組みの十分な理解が肝要である。そして、それを応用することは、いつの時代でも、どのセグメントでも変わらない。

 フルスタックの話題からは逸れてしまうが、どこかのセグメントにどっぷりハマってしまい、飽きそうもないのであれば、スペシャリストを目指した方がよいだろう。5000時間かけても飽きたらず、ずっと熱中し続けられる人はスペシャリストとして生きた方が幸せだろうし、そういったスペシャリストはさまざまな分野で重宝される。フルスタックを目指すのであれば、実は飽きっぽい性格の方が向いていると考えられる。

スタックするのは「技術」だけではない

 技術にのみ強ければそれでよしかというと、そういう話でもない。やるべき作業を黙って粛々と実行するような職人気質は求められていない。作るべきモノの方向性を最初に合意しても、要求は変化したり、モノを使いだしてから別の要求が追加されたりもする。

 このような要求へ適切に対処するには、状況を精緻に捉え、他者への情報提供と確認などを常に意識しながら調整し続けなければならない。その実現には、以下のようなスキルが求められる。

  • 利用者のニーズやサービスレベルを正しく把握する“理解”スキル
  • 技術選択の際にメリットとデメリットを他者へわかりやすく話せる“説明”スキル
  • 進捗状況を都度提示し、方向性にブレがないかを確認する“報告”スキル
  • 組織の風習や意思決定経路を把握し、利害関係者の意見を集約する“取りまとめ”スキル
  • 自分だけで解決しきれない問題が発生した場合に、他者へ素直に助けを求められる“依頼”スキル

 エンジニアは設定したテーマをなんとか解決するために必死になって脇目も振らずにまい進することがある。しかし、時間をかけて頑張り、念入りに仕事へ打ち込む姿勢は美徳ではない。投下する時間とシステムの価値向上のバランスを考えて、予定通りに終わらせる方が優先度は高い。

 以前、数千万件のデータを集計してレポートする機能を開発会社へ依頼した。開発着手前に、性能要件で「レスポンスは時間がかかる箇所でも10秒以内」と定義していた。開発者は頑張り、データベースにて効果がでそうなインデックスを考えたり、本番機を間借りして夜中にデータのロードと検証を繰り返していた。時には5人体制で徹夜し、何とか10秒の壁を突破できないかを試行錯誤していた。

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

特集

CIO

モバイル

セキュリティ

スペシャル

NEWSLETTERS

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

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

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