ブックマーク / ryoasai.hatenadiary.org (13)

  • アマゾンにおけるソフトウェア開発の仕事について感じたこと - 達人プログラマーを目指して

    ちょうど、先日アマゾンのオープンハウスというイベントでお話をさせていただく機会があったのですが、開発者向けの20日のセクションだけで90名近くの方々にご参加いただきました。平日にもかかわらず、多数の方々にご参加いただき、どうもありがとうございました。 私自身は、昨年秋にSIerからアマゾンに転職してまだ半年ですが、この機会にアマゾンにおけるソフトウェア開発の文化や考え方について、ブログでご紹介できる範囲でまとめてみたいと思います。 私は、ずっとブログに書いてきたようにSI業界からの転職だったのですが、一般的なSIerにおけるソフトウェア開発の考え方や手法といろいろな面で違っているということは予想していたというか、もともと覚悟の上での転職でした。それでもやはり最初のうちはあまりにも大きな変化に自分の仕事のスタイルを合わせるのにいろいろと苦労しました。基的には転職したての頃に抱いた感想(転職

    アマゾンにおけるソフトウェア開発の仕事について感じたこと - 達人プログラマーを目指して
    daiksy
    daiksy 2012/04/23
  • ソフトウェア技術者軽視のシステム開発を続けるのはもう限界かもしれない - 達人プログラマーを目指して

    つい先日、富士通がグループで抱える3万人ものSEを再教育して、職務転換を行う計画であるというニュースを知りました。 富士通の3万人SE職務転換大作戦は成功するのか? - GoTheDistance 一つのシステムを複数の企業などが利用するクラウドサービスがこのまま普及すれば、顧客の要望を聞いて個別システムを作り込むSEは仕事がなくなり、余剰人員問題が顕在化するからだ。 クラウドの普及により、オーダーメイドでシステムをゼロから構築する必要がなくなり、そもそも顧客からの要件をまとめてシステムを設計するSEの仕事が不要になったり、基盤を構築、運用するエンジニアが不要になるということは、最近になってよく言われることであり、特に新しいことではありません。もちろん、クラウドの普及によって、これらの伝統的なSEの仕事が少なくなり、人員が余るという議論は間違いではないと思います。 ただし、一方でより質的

    ソフトウェア技術者軽視のシステム開発を続けるのはもう限界かもしれない - 達人プログラマーを目指して
    daiksy
    daiksy 2012/01/25
  • Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して

    Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型はエントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない

    Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して
    daiksy
    daiksy 2012/01/05
  • staticおじさんとオブジェクトおじさんはお互いに分かり合えるようになるかもしれません。 - 達人プログラマーを目指して

    先日書いたstaticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指してのエントリに、なんと、みながわけんじ氏ご人よりコメントを頂きました。もともとは一般のstaticおじさん達(英語ではstatic ojisansという感じ)に向けて書いたのですが、思いがけず、元祖staticおじさん(The static ojisanあるいはMister staticといった感じ)ご人からのご意見をいただき、当に嬉しく思います。 オブジェクト指向の再利用性と非オブジェクト指向の関数やサブルーチンとの違いを明確に示していないから いろいろ理屈を込めても無駄ではないでしょうか? 誰かが作ったクラスを継承して再利用したところで、バグが少なくて、メンテナンス性がいいものができるでしょうか? そんなものをあてにするより、天才が作ったクラスライブ

    staticおじさんとオブジェクトおじさんはお互いに分かり合えるようになるかもしれません。 - 達人プログラマーを目指して
    daiksy
    daiksy 2011/07/29
  • staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して

    何が良いプログラムかという点はもちろん人やコンテキストによって異なりますが、少なくともプログラマーとしての私の信念としては、 機能拡張や変更が容易なプログラム 単体試験によって正しく動作することの検証が容易なプログラム どういった内容が記述されているか理解しやすいプログラム といったものこそ、「品質の高い」プログラムが持つべき性質として、まず真っ先に挙げるべき事項であると考えています。もちろん、前提として顧客の要件に従うということは大切なことです。しかし、一般に要件は長期にわたって変更されるものですし、使い捨てのプログラムを除けば、プログラムを長期にわたって保守するコストという点も見過ごすべきではありません。したがって、ユーザーの目には触れない上記の性質をもっと重視すべきだと思うのです。 DRYの原理 上記のような性質を満たすプログラムを作る上で大切になってくる原理として、DRYの原理とい

    staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して
    daiksy
    daiksy 2011/07/03
    これは素晴らしいエントリー。
  • プログラマーの成長を考えないSIerの仮説は間違っている - 達人プログラマーを目指して

    Java EEや.NETCOBOLやVB6よりも当に生産性が高いか? - 達人プログラマーを目指してのコメントで 熟練者も居ることは理解しているが、開発をする上で熟練者ばかりを集めることはできない。このため初心者側にレベルを合わせざるを得ない。 というコメントをいただきましたけれど、これは実に典型的なSIer(の上司)の考え方ですね。SIerの仮説と呼んでもよいくらいですね。とにかく、この仮説の前提となっているのは プログラマーのスキルレベルは一定で成長しない プログラマーは容易に交換可能なリソースである プログラマーは単純労働者である というモデルです。とにかく、この仮説がはびこっているから、いまだにSIerのフレームワークは「初心者側にレベルを合わせざるを得ない」という思い込みで作られていることが多いのでしょう。 COBOL(の初期の)時代ならまだしも、少なくとも現在の開発環境にお

    プログラマーの成長を考えないSIerの仮説は間違っている - 達人プログラマーを目指して
    daiksy
    daiksy 2011/06/06
  • 普通のSI会社では評価されにくいのだけど、多くのシステムは研究熱心な技術者の小さな発見と工夫の積み重ねによって支えられているのでは? - 達人プログラマーを目指して

    昨晩遅く、id:backpaper0さんの以下のツイートが目にとまりました。 staticでない物の内部クラスは暗黙で外側のインスタンス(エンクロージングインスタンス)のthisにアクセスできる仕様なので、newを使った普通のインスタンス化の方法では決して外部のインスタンスが存在しない状態でnewできないようになっています。つまり、内部クラスのインスタンス化にはエンクロージングインスタンスの存在が前提となるというのが私が長年Javaのコードを書いてきた中での常識でした。 実際、エンクロージングインスタンスの外側で内部クラスのインスタンスを作成する場合、以下のようにnew演算子の前にエンクロージングインスタンスを書かなくてなならない仕様となっているため、これがnullでは決して内部クラスが生成できないように構文上工夫されています。 public class Outer { private

    普通のSI会社では評価されにくいのだけど、多くのシステムは研究熱心な技術者の小さな発見と工夫の積み重ねによって支えられているのでは? - 達人プログラマーを目指して
    daiksy
    daiksy 2011/05/01
  • 普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選 - 達人プログラマーを目指して

    以前はJava EEの普通のWebアプリケーションで、JavaScriptはあくまでも利便性のために補助的に使うものという認識がありましたが、さすがに最近では普通の業務系のSI案件でもテーブル表示や入力補助などで高度なAjaxライブラリーの使用が当たり前のように求められるようになりつつあります。サーバーサイドのJavaScript技術といったものもありますが、そういった新しい技術を使わないまでも、ごく普通にある程度大きなJavaScriptの作成が必要になってきているということです。 もちろん、JavaJavaScriptはその名前にかかわらず、来全く別の言語です。しかし、意図的に似た構文でロジックが書ける*1ため、兄弟の言語として認識している人も意外に多いのではないかと思います。しかし、使用できるライブラリーに違いがあるという点が一見してわかる最も大きな違いですが、基的な言語の文法

    普通の業務系PGには意外と知られていないJavaとJavaScriptの相違点10選 - 達人プログラマーを目指して
    daiksy
    daiksy 2011/04/25
  • 日本のSI業界でこそ、専門の技術者の必要性がもっと見直されるべきではないのか? - 達人プログラマーを目指して

    Twitterでフォローさせていただいている@chok12jaさんのつぶやき がきっかけで、外国人の視点から日のSI業界の問題について分析した面白い英文の記事を見つけました。 How the Japanese IT Industry Destroys Talent | Japan -- Business People Technology | www.japaninc.com [ThinkIT] 第2回:なぜ日IT業界ではスーパーSEを育てられないのか (1/4)(New 日語訳が見つかりました。) 2007年に書かれた記事なのでもう4年も前に書かれたものですが、日頃から私が感じてきた業界の問題点について鋭く批評を加えており、非常に共感する内容が書かれていました。ブログの主な読者の方々にとっても興味深い内容だと思いますので、ここで簡単に内容について紹介させていただきたいと思います

    日本のSI業界でこそ、専門の技術者の必要性がもっと見直されるべきではないのか? - 達人プログラマーを目指して
    daiksy
    daiksy 2011/04/05
  • 想像以上にガラパゴス化した日本のIT業界? - 達人プログラマーを目指して

    出版されている技術書のタイトルやネット上での情報を元に、なんとなくシステム開発で使われる技術が国によって差があるように感じるということを、これまでいろいろな記事で書いてきたのですが、はたして実際のところはどうなのでしょうか?300年前なら、Manningのin actionシリーズの表紙に描かれている人物*1のように国ごとにいろいろな衣装があって多様な文化が存在していたのでしょうけれど、文明化された現代では、服装もべ物もそれほど違いがないというところがあります。IT業界は文字通り情報を扱う産業なのですから、世界中の最新の情報が集まってきてしかるべきなわけであり、どの国でも大差がないはずという推測もできないわけではありません。 あくまでも目安なのですが、Google Insights for Searchというサービスを利用すると、単語の検索回数を地域ごとに集計することで、各地域でどういっ

    想像以上にガラパゴス化した日本のIT業界? - 達人プログラマーを目指して
    daiksy
    daiksy 2011/01/28
  • エンタープライズ開発者が負け組として軽蔑される日本のSI業界って - 達人プログラマーを目指して

    ブログの記事に対して多くの皆さんからいただいた意見を総合すると、技術力のあるトッププログラマーにとって現状の日のSI業界での仕事というのは、働き甲斐のない、魅力の少ない仕事として認識されているという残念な事実を思い知らされます。 オブジェクト指向の基すらいまだにきちんと使いこなせない開発の現場 技術について勉強した知識をほとんど活用できないし評価もされない 無駄なドキュメント作成などに対する膨大な単純作業を強いられる いわゆる3K職場と言われるような過酷な労働と低い賃金 20年以上も前の仕事の進め方からあまり進歩が見られない 多重下請け構造によりユーザーに直接価値を提案するような仕事が難しい 多くの業務アプリケーション開発現場における体験を通して、以上のようなことが語られているということを考えれば、「業務アプリケーションのプログラマーは負け組だ」という意見が出てくることも当然のことか

    エンタープライズ開発者が負け組として軽蔑される日本のSI業界って - 達人プログラマーを目指して
    daiksy
    daiksy 2011/01/20
    やりたいなー。業界のリファクタリング。
  • グルーポンのおせち事件を受けてSI業界が本当に教訓とすべきこと - 達人プログラマーを目指して

    共同購入サイトのグルーポンでバードカフェというお店が販売したおせちの話題がネットで大いに盛り上がっています。 痛いニュース(ノ∀`) : グルーポンの割引で買ったおせち料理が酷すぎると話題に - ライブドアブログ 痛いニュース(ノ∀`) : グルーポンおせち騒動で、「バードカフェ」社長が辞任発表 - ライブドアブログ ネット上のネタとしてだけでなく、最終的にNHKのニュースでも取り上げられたみたいです。 http://www.nhk.or.jp/news/html/20110103/t10013172511000.html 昔なら、こういう事件があっても中毒事件でも起こさない限りここまで大きな話題になっていなかったかもしれませんが、正月早々、ネットの怖さを思い知らされた感じですね。以前なら消費者もこうした商品を購入してだまされたと思っても泣き寝入りで我慢してしまう人も多かったかもしれませ

    グルーポンのおせち事件を受けてSI業界が本当に教訓とすべきこと - 達人プログラマーを目指して
    daiksy
    daiksy 2011/01/10
  • Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して

    プログラミングと設計は来切り離せないものなのではがすごい反響だったのですが、結局この記事で私が言いたかったことは、 Java EEなどの現代的な開発環境はCOBOLなどの古い言語を使った開発とは根的に設計の手法が異なる 多くの現場では未だに古い設計手法を使っているため、オブジェクト指向などの最近の開発環境のメリットが活用できず、低い生産性にとどまっている。 ということに要約できると思います。ただし、どうして、Javaではオブジェクト指向で開発しないといけないのか、どうして昔ながらの伝統的なやり方を改め、新しい設計手法を採り入れないといけないのかと疑問を持たれた方もいらっしゃるかもしれません。ここでは、開発手法と生産性の問題について、もう少し掘り下げて検討してみたいと思います。 レガシー言語の生産性 最近のCOBOLでは、オブジェクトやスタック変数すら使えますが、ここではCOBOL85の

    Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して
    daiksy
    daiksy 2010/12/03
  • 1