タグ

考え方と開発に関するigrepのブックマーク (15)

  • 糞コードは直すな。 - Qiita

    とりあえず落ち着け。 みなさん、毎日なにかしらのコードを読み、開発する日々を送っていると思います。そんな中で、 糞コードは死ぬべきである!!絶対に直すべき!! という感情に取りつかれてしまうことがあると思います。自分の技術力に自信のある人ほど、無理やりにでも直そうと試みると思います。それがどんな修羅の道か。そして、糞コード修正がどんな道を歩むのか。この記事では糞コード修正の罠とありがちなストーリーについて書きたいと思います。 ビジネスとしてのプログラムは質的に糞である 例えば、「携帯電話の利用料金」のプログラムがあります。 「携帯電話 透明性高め料金値下げを」という記事もあるように世の中の携帯電話の料金プランはかなり複雑です。例えば、auだと「auでんき」といった電気料金とパックされた電話料金プランがあります。また、「auスマートバリュー」といったプランもあり、家のインターネット回線をa

    糞コードは直すな。 - Qiita
  • システムの複雑さはどこから来るのか – Out of the tar pitを読む - Uzabase for Engineers

    Uzabase Saas Product Divisionフェローの矢野です。 この記事は、Rich Hickey(プログラミング言語Clojure作者)のプレゼンテーションSimple Made Easyへと繋がっていく、Ben MoseleyとPeter Marksによる「Out of the tar pit」というシステム設計について論じた論文の内容について説明したもので、ユーザベースのSaas Productでのテック発表の一つとしてプレゼンしたものを、ブログとして再度まとめたものです。プレゼン自体は25分くらいでしたので、おそらくこの記事の方がプレゼンよりも詳しいと思います。 ソフトウェア危機 ソフトウェアは質的に複雑 ソフトウェアの複雑さはどこから来るのか? 複雑さは、別の複雑さを産む 複雑さを分類する 当に必要な複雑さと、そうでないものがある どうやって複雑さを扱うのか

    システムの複雑さはどこから来るのか – Out of the tar pitを読む - Uzabase for Engineers
    igrep
    igrep 2021/06/13
    本当に必要なのは「ユーザーの入力」だけでそこから要件上計算しないといけないものが「必須のロジック」で、それで求めた結果を保存したり表示したりするのは付随的な複雑さ。センサーの入力もユーザーの入力の内?
  • ZOZOTOWN作り手のマインドセット(エンジニア編/マネージャー編) - Qiita

    はじめに 弊社では、大きな1つのサービス(ECサイト)をたくさんの部署が協力しながら運営しています。 2012年4月に新卒入社して以来ずっと同じサービスに携わっている自分が、開発チーム内でサーバーサイドエンジニアとして意識してきたこと、そして今はマネージャーとして意識していることを簡単にまとめてみました。 エンジニアとして意識していたこと 1.1/3の法則 1/3の法則とはスケジュールを立てる際に、全体の時間の過ごし方を「設計」「開発」「テスト」それぞれ1/3ずつで分配するという方法です。 ただし、順序は問わずです。 全体の開発の中で、まずモックアップ的に実装することをフェーズ1、プロダクトとして出せるレベルまでクオリティを高める実装をフェーズ2とすると、それぞれのフェーズ内で1/3の法則を適用させます。 入社後しばらくは、コードを書くことが楽しくて「とにかく手を動かして作りまくるぞ!」と

    ZOZOTOWN作り手のマインドセット(エンジニア編/マネージャー編) - Qiita
    igrep
    igrep 2019/09/11
    いい話だ。しばらくチーム開発をほぼやってないのでうらやましい
  • あなたの開発、Hype(誇大宣伝) Driven Development になっていませんか? - Qiita

    去年ですがmediumで話題になっていた記事にHype(誇大宣伝) Driven Development(HDD)というものがあります。 国内でもこれで失敗している例をよくみかけますし、とても共感したので紹介できればと思います。 翻訳ではなく、自分なりに噛み砕いて個人的な考えなども入れています。 概要 HDDとは一言でいえば、技術選定という重要なプロセスを他人任せにしてはならないという啓蒙です。 誰かが良いと言っているという理由で技術選定をしてはいけません。 例えば以下を理由に技術選定するのは Hype Driven Development(HDD)です。 ・すごく偉い人がおすすめしていた ・カンファレンスですばらしい技術だと紹介されていた ・新しい技術だ ・人気が急上昇している ・超有名企業のA社が導入した その技術は自分たちのどんな問題を解決してくれるのか。 開発の規模に、自分たちのス

    あなたの開発、Hype(誇大宣伝) Driven Development になっていませんか? - Qiita
    igrep
    igrep 2017/03/24
    逆にHDDしてもらえるぐらい広まるソフトウェア、作りたい。
  • ソフトウェア開発で得た教訓22箇条 | POSTD

    1. 小規模なものから徐々に拡張していく。 私は日頃、新たなシステムを作るにせよ既存のシステムに機能を追加するにせよ、必要な機能すら殆ど持たないようなとてもシンプルなバージョンを作るところから始めるようにしています。そこから当初予定していた機能まで、段階的にソリューションを拡張していきます。私は初めから細部にわたって計画をできたことはありませんが、代わりに開発を進めていく中で新しく見つけた情報をソリューションに役立たせます。 私はJohn Gallの、この言葉が好きです。 “複雑なシステムというのは、往々にしてシンプルなシステムから発展したものだ。” 2. 同時に複数のものを変えない。 開発中にテストが失敗したとき、あるいは機能がうまく動作しなかったとき、1つだけ変更すれば、問題発見が格段に容易になるでしょう。言い換えるなら、短いイテレーションを行いなさいということです。1つずつ変更を行い

    ソフトウェア開発で得た教訓22箇条 | POSTD
  • 「開発しない」という越境 #DevLOVE - assertInstanceOf('Engineer', $a_suenami)

    このエントリは DevLOVE Advent Calendar 2014 「越境」 の5日目です。 つい先日申し込んだのに予想外に早くバトンがまわってきました。笑 前日は @azumi さんの「【マンガ】旅行サービス開発のデザイン現場へ。種を持ち帰る『越境』の旅」でした。まさかマンガとは!笑(楽しく読ませていただきました。) @azumi さんは産業技術科学大学の人間中心設計プログラムにいらっしゃるのですね。弊社の社員も現在通っていて、一緒に学んでいるようです。 さて、僕は昨年に引き続き今年も DevLOVE Advent Calendar に参加させていただきます。 昨年のエントリはこちら。 現場の反対はまた別の現場 #DevLOVE - assertInstanceOf('Engineer', $a_suenami) 自己紹介 すえなみと申します。漢字で書くと末並です。「末波」とよく間

    「開発しない」という越境 #DevLOVE - assertInstanceOf('Engineer', $a_suenami)
    igrep
    igrep 2014/11/16
    “何が必要か/本当に必要かがわかるまでは開発しないか最低限の開発で検証を重ねるのがいいと思いますし、その結果コアドメインが姿を表したらユビキタス言語を構築してモデリングをする”
  • 受託開発と技術者の育成 - ぷっちん日記(2012-03-29)

    ■ 受託開発と技術者の育成 今のところ、私たちの会社(万葉)は受託開発がメインになっている。 世の中には、受託開発 VS 自社プロダクト/サービス提供 という対立軸もあって、それについての私の見解は、こんな感じになる。 まず、純粋に「自社プロダクト/サービス楽しそう。やりたい!」という思いがある。自分たちの作りたいものを自分たちで作るというのはとても明快であり、齟齬が生まれにくい。作る立場として、とても気持ちが良いのはわかっている。 一方で、会社として次のどちらに力点を置くかというテーマがある。 ある目的を実現するために自社プロダクト/サービスを作る。たとえば「世の中をこんな風に変える」ために。 社員が、ソフトウェアの開発をすることで価値を提供できるようにする、すなわちべていけるようにする。 前者の場合、自社プロダクトやサービスの開発というのは目的達成の一部であるので、話の展開によっては

  • プログラマーは年を重ねてもスキルを向上させ続けていることが研究で判明

    By iLikeSpoons 「年輩のプログラマーテクノロジーの急速な変化についていけず、ソフトウェア開発から外れてしまう」という考え方が存在しますが、ノースカロライナ州立大学の研究によって、新しいソフトウェア・プラットフォームにおいても年輩プログラマーは若い同僚よりも知識があり、プログラミングのスキルは進歩し続けていることがわかりました。 NC State News :: NC State News and Information » Older Is Wiser: Study Shows Software Developers’ Skills Improve Over Time http://news.ncsu.edu/releases/wms-murphyhill-age-2013/ 研究者たちはプログラミング技術に関するナレッジコミュニティであるStack Overflowで8万

    プログラマーは年を重ねてもスキルを向上させ続けていることが研究で判明
    igrep
    igrep 2013/05/09
    学び続けなくては。
  • 第18回 プロジェクトにおけるアーキテクトの役割 | gihyo.jp

    アジャイルな開発でデスマーチは回避できるのか この業界には「デスマーチ」という言葉がある。現実的ではない開発スケジュールを設定してエンジニアに過酷な労働を強い、その結果生産されるコードの品質が落ち、次々に発生するバグのためにますます過酷な状態に陥るプロジェクトのことを指す。 デスマーチの根の原因は、プロジェクトマネジメントにある。現実的ではないスケジューリング、エンジニアの生産効率への過信、過酷な労働環境、非効率な開発環境、ラストスパート型の開発スタイル、などである。 特に日IT企業における「元請けが受注、実際の開発は下請け」というゼネコンウォーターフォール型のプロジェクトにおいて、実際にコードを書かないアーキテクトが机上で設計をするという悪習慣がある。これが、設計時(もしくは計画時)の見積りと実際の開発期間に大きなズレを生じさせ、下請け企業に過酷な労働環境を強いる原因の一つにもなっ

    第18回 プロジェクトにおけるアーキテクトの役割 | gihyo.jp
  • 「動的言語」の本当の意味の分からない半可通は静的型付言語をつかえ

    プロダクトマネージャーの親父がとおりますよ。 最近、型不要とか言っている半可通がいるけど それを書いている人より、それを見て型不要とかを真に受ける連中のほうが心配なんだよね。 とりあえず99%の庶民は静的型付言語を使ったほうがいいよ。 昔とくらべて、使える敷居は低くなってきているけど、実際に きちんとした教育を受けていない半可通が、動的言語がきちんと 使えこなせるわけないから。 一般庶民は コンパイル時にきちんと型エラーにしてくれる「TypeSafe」な言語を使ったほうが幸せだし 遅延評価なんかの動作がきちんと理解できない、職業プログラマ(IT土方)は多いんだよ。 一般庶民がそれなりに、一定品質を確保するために、「TypeSafe」な言語が必要なの。 教養として、動的言語を勉強するのはいいよ。 だけど、普通の仕事に使うのはやめとけ。ろくな品質にならないから。

    「動的言語」の本当の意味の分からない半可通は静的型付言語をつかえ
    igrep
    igrep 2013/03/17
    要はHaskellやOCamlみたいに型ガッチリだけど習得が容易な言語があればいいのですかね。
  • テストというのは、ソースコードの冗長化だと思う - きしだのHatena

    テストというのは、基的にはソースコードの冗長化だと思う。来ならプロダクトコードだけ書けばよいところを、信頼性を高めるために複数の視点でのコードを追加する。 また、サーバーの冗長化で、2台構成を3台構成にするよりも、はるかに1台構成を2台にするのが難しいように、テストも、10のテストを20にするよりも、最初のテスト(プロダクトコードも含めると2目のコード)を書くのが一番難しい。 テストがソースコードの冗長化であるなら、アクセスのないサイトでサーバーをクラスタリングするのが単なる金や設定時間の無駄であるように、長期的な信頼性の求められないプロダクトにテストを書くことも金の無駄だ。 アクセスが多いのにサーバー冗長化の金を払わない顧客に対してクラスタリング構成を構築する義理がないように、信頼性が求められるのにテストの金を払わず時間も確保しない顧客のためにテストを書いてやる必要もない。もち

    テストというのは、ソースコードの冗長化だと思う - きしだのHatena
    igrep
    igrep 2012/03/19
    異論も多くあるようですが覚えておきます。
  • 高速で無駄のないソフトウェア開発を実現するための7つのポイント | Social Change!

    どうすれば小規模なチームでも大きな成果を出せるのか。大きな組織で沢山の量をこなすのは当たり前のことで、あまりクールではありません。少ない人数でも大きな成果を出すには、スピードをあげることと、そのためにも無駄をなくすことがポイントになってきます。 ソフトウェアをつくるための3つの役割で書いた通り、ソフトウェア開発をクラウドのようなサービス提供で続けていくには、プロダクトオーナーとプログラマーがキャッチボールのような形で、仕様と実装をずっと繰り返しながら作っていくのが自然です。 SonicGardenで使っているツールと開発の流れの全体は以下のようになります。大事なことは「動くソフトウェア」の状態を保ったまま、どれだけ回転数をあげていけるか、ということです。そのために、プロダクトオーナーとプログラマの間で待ち時間を減らすために並行して進めるようにするなど工夫しています。 ホワイトボードとMVP

    高速で無駄のないソフトウェア開発を実現するための7つのポイント | Social Change!
    igrep
    igrep 2012/03/10
    後でじっくり読ませて頂きます!
  • いち早く70%〜80%程度の完成度で人に見せられるものを作ることがいかに重要か、という話 - 肉とビールとパンケーキ by @sotarok

    去年の年末、Facebookで以下の様な画像が流れてきて自分もついついシェアしたんだけど、久々に、というか、自分にとってのここ最近の課題をドンピシャで突かれたような気がして、しばらく頭から離れなかった。 出展: 中村 修治 - 中村 修治さんの写真アルバム | Facebook 「プロ」か「アマチュア」か、というのはこの際どうでも良くて、この図の、上の曲線が、目指すべきところだなって話なだけなので、とりあえずその話をまとめてみることにする。 けど、まぁ、だいたい、こういう話をまとめるのは苦手だし途中で面倒になってしまうので、以下サブセクションだけ先に作ってみたものの、ちゃんと書くかどうかわからない... が、まあ、いい!あと、なんかグダグダ書いてしまいそうだけど、結局、サブセクションのタイトルにしたことをこねくりまわしているだけです。 作ってみるまでわからない 何にも言えることだけど作って

    いち早く70%〜80%程度の完成度で人に見せられるものを作ることがいかに重要か、という話 - 肉とビールとパンケーキ by @sotarok
    igrep
    igrep 2012/01/05
    とりあえず僕はアマチュアの曲線から抜け出せるよう頑張ろう。。。
  • ソフトウェアの品質はいつ決まるのか?〜「Point of Sales」から「Point of Use」へ | Social Change!

    ソフトウェアの品質はいつ決まるのか?〜「Point of Sales」から「Point of Use」へ | Social Change!
  • プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena

    イデアルITスクールというところで、1時間ほど話をしてきました。 プログラマとしてやっていくために大事なことというテーマ。 資料を作らずに、というか構想すら練らずにやってしまったので、ここで整理とまとめと補足を。実際にこれをしゃべったというのではなくて、だいたいこんなことをしゃべろうとしてたという内容をかなり盛って書いてます。 当然ですが、プログラマの仕事はプログラムを書くことです*1。 プログラマとしてやっていくためには、どこで動くプログラムを書くか、なにをするプログラムを書くかということを意識することが大事です。 ということで、まずはプログラムが動くところがどう変わったかという話。 1970年代ころは、デバイスを動かすためのプログラムが多かったのではないかと。 あと、ここには書いてないけど、業務アプリはほぼメインフレームで動いてたと思います。 それが、1980年代くらいからパソコンが出

    プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena
    igrep
    igrep 2011/09/15
    素晴らしい。厳しい現実を知ったぜ。
  • 1