SlideShare a Scribd company logo
1 of 14
仕事の現場から
~ これから開発者となる人へ ~

      株式会社 エフワン
           小野 修司
MVP for Visual Developer – Visual C#
システムを構成する要素
   開発したプログラム
       プログラムが動作する環境を含む
           ハードウェア
           ソフトウェア
           ネットワーク

   データ
       入力データ
       出力データ

   利用者
       利用する人がいなければシステムを構築する意味は
        ない
システムを開発するとは?
   顧客が抱えている問題を解決する方法を提案す
    ること
       ソフトウェア産業は「サービス」産業である
       問題を解決するという「サービス」を提供する

   必ずしも全ての問題をプログラムが解決しなく
    ともよい
       そもそもプログラムが解決できるのは問題の一部分
        でしかない
       運用する人の動きも含めてシステムを考える
システムのライフサイクル(生
   存期間)とは(1)
   開発
           要件定義
           基本設計
           詳細設計
           プログラミング
           テスト
           リリース


       開発のサイクルを繰り返す開発方法論もある
       開発者のモチベーションをいかに高めるか、が最近
        の
        開発方法論の着目点
システムのライフサイクル(生
   存期間)とは(2)
   運用
         保守
         改修



       開発期間より運用期間が長い
           ハードウェアのリースに合わせて 5 年というのが
            よくあるパターン
       バージョンアップにより、一つのシステムは
        そのライフサイクルを終了する
           ただし、システムの目的や機能は引き継がれる
システムの要件は誰が定義する
      のか
   何が必要かよくわかっているのは顧客
       ただし、顧客はコンピュータの専門家ではない

   顧客とコンピュータの間を取り持つのが開発者
       顧客の問題を解決し、満足させることが重要
       顧客の問題をきちんと聞きだす必要がある
       顧客の考えを鵜呑みにするのではなく、専門家とし
        てのアドバイスも必要
       できないことはできないときちんと説明し、対案を
        含めて提案する
       顧客の使う言葉の意味を確認しながら話をすすめる
システムを開発するのに必要な
         知識とは
   プログラミングの知識だけでは満足のいくシステムはで
    きない

   業務に関する知識が最も重要
       業務知識が足りない場合、顧客の持つ知識をいかに引き出せる
        かがポイントとなる

   動作環境に対する知識も必要
       マシン管理(サーバ、クライアント)
       データベース
       ネットワーク
       セキュリティ
       Web ( HTTP ): Web アプリケーションの場合
実際の開発現場では
   最先端の技術を使ったシステム案件は少ない
       業務で使うには実績があるという安心感が必要
       顧客、開発側ともにリスクは背負いたくない
       既存の機械で利用したい、という要望も多い

   開発要員の知識に左右される場合も
       現時点では Java や VB6 なら開発できる人が多い
       会社として人を育てたところなのでその分を回収し
        たい
       .NET での開発は今伸びてきている
開発チーム
   規模によっては一人ですべてを行う場合も

   チーム編成する場合も現状では役割がきちんと別れていることは少
    ない
       プロジェクトマネージャ
       チームリーダ
       プログラマ
       テスター
       環境構築(サーバ、ネットワーク、 DB )

   最近はチームメンバーの意欲(モチベーション)を高めることに重
    点をおいた開発方法論も多く語られている
       アジャイル

   チーム内でうまくコミュニケーションをとることが重要
       問題点ほど早く報告して手当てをする必要がある
チーム内コミュニケーション
     のコツ
   同じことは何度も繰り返し聞かない
       メモをとろう

   質問をするときは回答(選択肢)を用意する
       自分がどこまで理解できているかをきちんと提示する
       選択してもらうだけならすぐ回答が返ってくる

   上司、先輩はうまく使おう
       上司、先輩の持っている知識をうまくひきだそう
       上司を通して交渉してもらうという考え方も必要

   問題は早めに報告する
       早い時期なら対処にかかる作業も小さくて済む
       取り返しのつかないことになるのが最悪
技術的な知識を獲得する方法
     (1)
   技術はどんどん進歩する
       全体を見渡せる広く浅い知識が必要
           メーリングリストなどで技術的な言葉に慣れるというのは知識を広
            げる取掛かりとしてよい
       興味のある分野は深く突っ込んで
           興味があることの知識が増えるのは「楽しい」

   最初は書籍で体系だった知識を身につける
       基本が理解できていないと応用は利かない

   掲示板やメーリングリストのやりとりのコツ
       文字だけのやりとりの怖さを理解する
       自分の状況をきちんと説明できるよう心がける
技術的な知識を獲得する方法
     (2)
   定点観測による知識獲得
       継続してみることで、今何が話題となっているのかを確認でき
        る
       Web サイト
            ニュースサイト
            技術サイト(例)
                  MSDN (日本、米国)
                  TheServerSide.NET
                  DevX.com
                  CodeProject
            掲示板(例)
                  @IT
                  GDNJ
                  Ailight
       Blog 、日記、 mixi
       メーリングリスト
            users.gr.jp
技術的な知識を獲得する方法
     (3)
   ネット上の検索を利用するときの注意
       嘘とはいわないまでも一面的な情報だったりする
       何が書かれているのか咀嚼してから利用する
           サンプルプログラムがあったら、ドキュメントやリファレンスを元に何が行われてい
            るのかを自分で納得いくまで確認する
           実際に動かしてみて、小さい変更を加えて再実行する、という作業を繰り返すのが理
            解するのに一番の早道

   仲間をつくろう
       仲間のがんばりに触発されてモチベーションが高まる
       勉強会、オフラインミーティングに参加することから仲間ができてくる

   情報を発信する ( 人に教える)
       まとめることが自分の知識の整理になる
       新たな視点を教えてもらえることも多い
       Web サイト、 Blog 等を活用する
           自分で開設する
           人の掲示板、 Blog に書き込む
開発者に最も必要なこと
   人ときちんとコミュニケーションできる能力を身につけ
    る
       対顧客
       対上司、同僚
       ネットを介したコミュニケーション

   コミュニケーション能力とは
       相手が伝えようとしていることを正しく理解できる能力
       思い込みを極力排除して人の話を聞く(文章を読む)

   すべてコミュニケーションからはじまる
       システムというのはある意味、人とコンピュータとのコミュニ
        ケーションであり、開発者はその仲立ちをつとめる

More Related Content

Similar to 20050809

アジャイルマネジメントとは?
アジャイルマネジメントとは?アジャイルマネジメントとは?
アジャイルマネジメントとは?Kiro Harada
 
ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~
ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~
ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~Takaaki Yano
 
Salesforce R&DとソーシャルとEngineer Happiness
Salesforce R&DとソーシャルとEngineer HappinessSalesforce R&DとソーシャルとEngineer Happiness
Salesforce R&DとソーシャルとEngineer HappinessRyoji Osawa
 
Itca yammer提案110615
Itca yammer提案110615Itca yammer提案110615
Itca yammer提案110615伸夫 森本
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発慎一 古賀
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程Hidetoshi Mori
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門陽一 滝川
 
今、おさえておきたい DevOps
今、おさえておきたい DevOps 今、おさえておきたい DevOps
今、おさえておきたい DevOps 智治 長沢
 
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”Anhui Opensource Software Inc.
 
研究を基にしたオープンソース開発チェックポイント
研究を基にしたオープンソース開発チェックポイント研究を基にしたオープンソース開発チェックポイント
研究を基にしたオープンソース開発チェックポイントRecruit Technologies
 
e-Learning Design for Teacher
e-Learning Design for Teachere-Learning Design for Teacher
e-Learning Design for TeacherSunami Hokuto
 
20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道
20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道
20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道Osamu Takazoe
 
Introduction of KOTATSU-MODEL in Requirement Development
Introduction of KOTATSU-MODEL in Requirement DevelopmentIntroduction of KOTATSU-MODEL in Requirement Development
Introduction of KOTATSU-MODEL in Requirement DevelopmentKent Ishizawa
 

Similar to 20050809 (20)

アジャイルマネジメントとは?
アジャイルマネジメントとは?アジャイルマネジメントとは?
アジャイルマネジメントとは?
 
Xp2
Xp2Xp2
Xp2
 
Scrum"再"入門
Scrum"再"入門Scrum"再"入門
Scrum"再"入門
 
Xp2 2014版
Xp2 2014版Xp2 2014版
Xp2 2014版
 
ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~
ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~
ソーシャルメディアに順応したチームを作るために~業務で利用する社内ソーシャルメディアの可能性~
 
Salesforce R&DとソーシャルとEngineer Happiness
Salesforce R&DとソーシャルとEngineer HappinessSalesforce R&DとソーシャルとEngineer Happiness
Salesforce R&DとソーシャルとEngineer Happiness
 
Quality characteristics
Quality characteristicsQuality characteristics
Quality characteristics
 
Itca yammer提案110615
Itca yammer提案110615Itca yammer提案110615
Itca yammer提案110615
 
Devsumi2013 community
Devsumi2013 communityDevsumi2013 community
Devsumi2013 community
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
今、おさえておきたい DevOps
今、おさえておきたい DevOps 今、おさえておきたい DevOps
今、おさえておきたい DevOps
 
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
微博(ウェイボ)スタイルで始める社内ソーシャル リアルタイム”ほう・れん・そう”を実現する ビジネスログツール “Crowdroid for business”
 
研究を基にしたオープンソース開発チェックポイント
研究を基にしたオープンソース開発チェックポイント研究を基にしたオープンソース開発チェックポイント
研究を基にしたオープンソース開発チェックポイント
 
e-Learning Design for Teacher
e-Learning Design for Teachere-Learning Design for Teacher
e-Learning Design for Teacher
 
社内勉強会(Git)
社内勉強会(Git)社内勉強会(Git)
社内勉強会(Git)
 
20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道
20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道
20141010 マイクロソフト技術と共に目指すフルスタックエンジニアへの道
 
About Beat Communication
About Beat CommunicationAbout Beat Communication
About Beat Communication
 
Introduction of KOTATSU-MODEL in Requirement Development
Introduction of KOTATSU-MODEL in Requirement DevelopmentIntroduction of KOTATSU-MODEL in Requirement Development
Introduction of KOTATSU-MODEL in Requirement Development
 

More from 小野 修司 (20)

20140322
2014032220140322
20140322
 
20121215
2012121520121215
20121215
 
20120616
2012061620120616
20120616
 
20120609
2012060920120609
20120609
 
20120425
2012042520120425
20120425
 
20120128
2012012820120128
20120128
 
20111203
2011120320111203
20111203
 
20110607
2011060720110607
20110607
 
20100313
2010031320100313
20100313
 
20100224
2010022420100224
20100224
 
20100218 lt
20100218 lt20100218 lt
20100218 lt
 
20100218
2010021820100218
20100218
 
20091207
2009120720091207
20091207
 
20090711
2009071120090711
20090711
 
20090606
2009060620090606
20090606
 
20090418
2009041820090418
20090418
 
20090328
2009032820090328
20090328
 
20090212
2009021220090212
20090212
 
20081003
2008100320081003
20081003
 
20080630
2008063020080630
20080630
 

20050809

  • 1. 仕事の現場から ~ これから開発者となる人へ ~ 株式会社 エフワン 小野 修司 MVP for Visual Developer – Visual C#
  • 2. システムを構成する要素  開発したプログラム  プログラムが動作する環境を含む  ハードウェア  ソフトウェア  ネットワーク  データ  入力データ  出力データ  利用者  利用する人がいなければシステムを構築する意味は ない
  • 3. システムを開発するとは?  顧客が抱えている問題を解決する方法を提案す ること  ソフトウェア産業は「サービス」産業である  問題を解決するという「サービス」を提供する  必ずしも全ての問題をプログラムが解決しなく ともよい  そもそもプログラムが解決できるのは問題の一部分 でしかない  運用する人の動きも含めてシステムを考える
  • 4. システムのライフサイクル(生 存期間)とは(1)  開発  要件定義  基本設計  詳細設計  プログラミング  テスト  リリース  開発のサイクルを繰り返す開発方法論もある  開発者のモチベーションをいかに高めるか、が最近 の 開発方法論の着目点
  • 5. システムのライフサイクル(生 存期間)とは(2)  運用  保守  改修  開発期間より運用期間が長い  ハードウェアのリースに合わせて 5 年というのが よくあるパターン  バージョンアップにより、一つのシステムは そのライフサイクルを終了する  ただし、システムの目的や機能は引き継がれる
  • 6. システムの要件は誰が定義する のか  何が必要かよくわかっているのは顧客  ただし、顧客はコンピュータの専門家ではない  顧客とコンピュータの間を取り持つのが開発者  顧客の問題を解決し、満足させることが重要  顧客の問題をきちんと聞きだす必要がある  顧客の考えを鵜呑みにするのではなく、専門家とし てのアドバイスも必要  できないことはできないときちんと説明し、対案を 含めて提案する  顧客の使う言葉の意味を確認しながら話をすすめる
  • 7. システムを開発するのに必要な 知識とは  プログラミングの知識だけでは満足のいくシステムはで きない  業務に関する知識が最も重要  業務知識が足りない場合、顧客の持つ知識をいかに引き出せる かがポイントとなる  動作環境に対する知識も必要  マシン管理(サーバ、クライアント)  データベース  ネットワーク  セキュリティ  Web ( HTTP ): Web アプリケーションの場合
  • 8. 実際の開発現場では  最先端の技術を使ったシステム案件は少ない  業務で使うには実績があるという安心感が必要  顧客、開発側ともにリスクは背負いたくない  既存の機械で利用したい、という要望も多い  開発要員の知識に左右される場合も  現時点では Java や VB6 なら開発できる人が多い  会社として人を育てたところなのでその分を回収し たい  .NET での開発は今伸びてきている
  • 9. 開発チーム  規模によっては一人ですべてを行う場合も  チーム編成する場合も現状では役割がきちんと別れていることは少 ない  プロジェクトマネージャ  チームリーダ  プログラマ  テスター  環境構築(サーバ、ネットワーク、 DB )  最近はチームメンバーの意欲(モチベーション)を高めることに重 点をおいた開発方法論も多く語られている  アジャイル  チーム内でうまくコミュニケーションをとることが重要  問題点ほど早く報告して手当てをする必要がある
  • 10. チーム内コミュニケーション のコツ  同じことは何度も繰り返し聞かない  メモをとろう  質問をするときは回答(選択肢)を用意する  自分がどこまで理解できているかをきちんと提示する  選択してもらうだけならすぐ回答が返ってくる  上司、先輩はうまく使おう  上司、先輩の持っている知識をうまくひきだそう  上司を通して交渉してもらうという考え方も必要  問題は早めに報告する  早い時期なら対処にかかる作業も小さくて済む  取り返しのつかないことになるのが最悪
  • 11. 技術的な知識を獲得する方法 (1)  技術はどんどん進歩する  全体を見渡せる広く浅い知識が必要  メーリングリストなどで技術的な言葉に慣れるというのは知識を広 げる取掛かりとしてよい  興味のある分野は深く突っ込んで  興味があることの知識が増えるのは「楽しい」  最初は書籍で体系だった知識を身につける  基本が理解できていないと応用は利かない  掲示板やメーリングリストのやりとりのコツ  文字だけのやりとりの怖さを理解する  自分の状況をきちんと説明できるよう心がける
  • 12. 技術的な知識を獲得する方法 (2)  定点観測による知識獲得  継続してみることで、今何が話題となっているのかを確認でき る  Web サイト  ニュースサイト  技術サイト(例)  MSDN (日本、米国)  TheServerSide.NET  DevX.com  CodeProject  掲示板(例)  @IT  GDNJ  Ailight  Blog 、日記、 mixi  メーリングリスト  users.gr.jp
  • 13. 技術的な知識を獲得する方法 (3)  ネット上の検索を利用するときの注意  嘘とはいわないまでも一面的な情報だったりする  何が書かれているのか咀嚼してから利用する  サンプルプログラムがあったら、ドキュメントやリファレンスを元に何が行われてい るのかを自分で納得いくまで確認する  実際に動かしてみて、小さい変更を加えて再実行する、という作業を繰り返すのが理 解するのに一番の早道  仲間をつくろう  仲間のがんばりに触発されてモチベーションが高まる  勉強会、オフラインミーティングに参加することから仲間ができてくる  情報を発信する ( 人に教える)  まとめることが自分の知識の整理になる  新たな視点を教えてもらえることも多い  Web サイト、 Blog 等を活用する  自分で開設する  人の掲示板、 Blog に書き込む
  • 14. 開発者に最も必要なこと  人ときちんとコミュニケーションできる能力を身につけ る  対顧客  対上司、同僚  ネットを介したコミュニケーション  コミュニケーション能力とは  相手が伝えようとしていることを正しく理解できる能力  思い込みを極力排除して人の話を聞く(文章を読む)  すべてコミュニケーションからはじまる  システムというのはある意味、人とコンピュータとのコミュニ ケーションであり、開発者はその仲立ちをつとめる