タグ

Programmingとmanagementに関するrydotのブックマーク (19)

  • 美しいソフトウェアをなぜ、どうやって書くか - Qiita

    最近、デザイナー(兼ほとんどエンジニア)の先輩と話していて確信したのが、ソフトウェアデザインはエンジニアが相手のデザインであるということです。デザイナーとエンジニアがやっていることに似通っていることがいろいろと挙がりました。 ソフトウェアも良さを「美しい」とか「きれい」とか表現すると思います。でも美しさ難しいです、人それぞれあると思います。僕の中で思っている美しさがなんなのかを吐き出してみます(実際この通りに書けてるか、これが当に美しいのか、とか言われるとちょっとドキッとしそうなので自戒の念も込めて・・)。 なぜ美しいソフトウェアを書かねばならないのか ハッカーと画家(翻訳版)に出てくる一文(原文はSICPからの引用)です。 「プログラムは、人々がそれを読むために書かれるべきである。 たまたま、それが計算機で実行できるにすぎない。」 以下はハッカーと画家からの前後の引用です。 ソフトウェ

    美しいソフトウェアをなぜ、どうやって書くか - Qiita
  • コードの品質を維持したまま開発スピードを上げる | POSTD

    高品質のコードベースは、反復作業やコラボレーション、メンテナンスを簡単にすることで、長期的な開発のスピードを上げてくれます。Quoraではベースコードの品質は重要だと考えます。 高品質のコードを維持することは利点がありますが、その反面かなりのオーバーヘッドが発生し、実際の開発のサイクルに時間が掛かってしまいます。このオーバーヘッドと利点の折り合いを付けるのは難しい問題です。この場合、2つの選択肢しかないように思えます。低品質でコードスピードが速いか、もしくは高品質でスピードが遅いか。スタートアップは素早い開発サイクルに最適化しているので、多くの人は低品質で進めたほうがいいと思っています。 このジレンマは解消できます。ツールやプロセスを工夫することで、コードベースの品質を維持したままスピードを速めることができるのです。この投稿では、コードの品質に関しての私たちの考えや、2つの世界を共存させる

    コードの品質を維持したまま開発スピードを上げる | POSTD
  • クソコードに対する怒りとコードレビューにおける人格攻撃について | おそらくはそれさえも平凡な日々

    デキるプログラマだけが知っているコードレビュー7つの秘訣 7つの秘訣の1〜5は当にそのとおりだと思います。 「怒り」って言葉を使っているところはなかなか画期的だと感じた。というのも僕は前から「人格攻撃に思われて」しまうような、コードで人を殴るようなことをしてしまう人が出てきてしまうのは何故かということを考えた時に、そこには「コードに対する怒り」があるからだろうなと思っていたからである。怒りがあるからこそ強く指摘しすぎてしまうことが起こりうる。 「怒り」というのはつまり「感情」である。であれば、「その『怒り』はコードに向けられたものであり、書いた人に対してのものではないので、その人に対しての攻撃ではない」というのは、理屈ではかろうじて通るかもしれないが、書いた人の「感情」的には通らないこともあることは理解したほうが良いと思う。 じゃあ怒らなければ良い、という話にはしたくなくて、どうしても怒

    クソコードに対する怒りとコードレビューにおける人格攻撃について | おそらくはそれさえも平凡な日々
  • ソフトウェアのスケーラビリティについてスターバックスが教えてくれること | POSTD

    2004年に Gregor Hohphe が「 スターバックスでは2相コミットを使わない(Starbucks Does Not Use Two-Phase Commit) 」という優れた投稿を発表しました。それを読んでいたら、学生時代にスターバックスでアルバイトをした頃がいきなり関わってきました。何年もの間に次第に分かってきたのは、プログラマでさえ有名なコーヒーショップのチェーンから学べることが思った以上にあるということです。 多くの人はスケーラビリティのあるソフトウェアを作ろうしますが、最初に考えていたよりも非常に難しいことがあります。個々のタスクをこなしているうちに「あらゆるものの重要性は等しく、同じリソースを必要とし、決まった順序で同期的に進行する」と考えてしまう罠に陥ってしまうのです。 実際には、少なくともスケーラビリティのあるシステムでは、当てはまりません。もちろんスターバックス

    ソフトウェアのスケーラビリティについてスターバックスが教えてくれること | POSTD
  • 出来ない人のレベルに合わせてはいけない - GoTheDistance

    あるあるネタだと思いますが、組織がより優れたパフォーマンスを出す為にやっちゃいけないことが「出来る人とできない人がいた場合、出来ない人のためにレベルを下げること」です。 優れた解決策を持ってる人に合わせよう コードのバージョン管理で、出来へん人が「あの僕はGit使えないんでZIPで差分管理して欲しい」とか言い出した時に「そうだね!出来ない人に合わせないとね!」とはならず「Git覚えて」となるでしょ。優れた解決策を持ってる人が、結局は出来ない人を助けている。わかりやすいでしょ。— やきう大好きござ先輩 (@gothedistance) 2015, 12月 24 簡単にいえば「↑」のようなことです。非エンジニアの方にはわかりにくい例ですが、Excelをファイル名+日付+バージョン名で複製して管理するのはとても大変ですよね。そんなことをしなくても良いツールがあるんです。それを使える人がいるのであ

    出来ない人のレベルに合わせてはいけない - GoTheDistance
  • Martin Fowler's Bliki in Japanese - 生産性は計測不能

    http://www.martinfowler.com/bliki/CannotMeasureProductivity.html 設計手法などのソフトウェアプロセスについて、感情的に議論されているのをよく目にします。しかし、その議論に答えを出すのは不可能です。ソフトウェア産業では、ソフトウェア開発の効果要因を計測する術がないからです。特に、生産性を合理的に計測する方法はありません。 生産性とは、インプットとアウトプットで決定されるものです。 ソフトウェアの生産性を測るには、ソフトウェア開発のアウトプットを見なくてはいけません……が、そのアウトプットを計測できないからこそ、ソフトウェア開発の生産性が計測できないのです。 これに対して何もしなかったわけではありません。コード行で生産性を計測しようと研究をしている人たちがいます。めちゃくちゃムカつきますね。だって言語は違うし、数え方の違いもあるし

  • 効果の高いテストについて考える - gong023の日記

    テストエンジニアという奇異な立場にいる。 普通にプロダクトメンバーの一員だが、プロダクト自体のコードはあまり書かず、品質という観点から良かれと思ったことをする。大体グーグルのテストに載っているSETをロールモデルとしている。 テストから見えてくる グーグルのソフトウェア開発 作者: ジェームズ・ウィテカー,ジェーソン・アーボン,ジェフ・キャローロ,長尾高弘出版社/メーカー: 日経BP社発売日: 2013/05/23メディア: 単行この商品を含むブログ (8件) を見る SWTは、例えばエンジニアがテストを書きやすいようにライブラリを作ったり、テストがリリースのネックにならないように高速化したり、手動テストを支援するようなサポートツールを作ったりするのが役割となる。普通に単体テストも書く。(が、それはあまり理想ではなくて、当はそのコードを書いた人が単体テストも書くべきだ。) しかし、現

    効果の高いテストについて考える - gong023の日記
  • テストを書く - シンデレラは削らない

    http://t-wada.hatenablog.jp/entry/debugging-tests 和田さーん! テスト駆動開発(TDD : Test Driven Development)は、プログラマが自分の不安を克服し、自分が書くコードに自信を持ちながら一歩一歩進んでいくための手法です。不具合の発生は、端的に言えばこれまでの「自信」を揺らがせる事態です。テスト駆動開発者は不具合にどう立ち向かうのでしょうか? やはりテストを書いて立ち向かってゆくのです。 チーム内にテストを書く習慣を持ち込んで三年、最初のうちは工数が増えるだけだ(あるある)、テストを書いても不具合がでるじゃないか(あるある)、システムテストでカバーすればいい(あるある)などという抵抗があり、それでも僕は淡々と雨の日も、晴れの日も、雪の日も、朝も夜も深夜も、終電後のオフィスでも、GW中の人気のないオフィスでも、自動テスト

    テストを書く - シンデレラは削らない
  • いまだにユニットテストって受け入れられないんだろうな - 個人的なまとめ

    色んな所で「テスト(ここではユニットテスト)を書かないのは小学生までだよねー」とか、もっと汚い言葉で言われたりするけど、いまだにうちのチームでは自分だけしか書かない現状が悩ましい。 Jenkinsさんが激おこになっても誰も何も反応しない。 もちろん、全部が書けるとも思ってないので、自分が不安なところとか、変更が多く入りそうなところとかを中心に書くようにしてる。一種の精神安定剤みたいなもん。 あるとき、一緒に働いてるエンジニアさん(ここではAさんとしておこう)に「ここ難しそうだから、テスト書いたほうがいいですよ」って話をしたら、「じゃぁ、工数かかっちゃいますね」って言われて結局書いてなかったな。 そうだよ。ユニットテスト書いたら工数かかるよ。それは純然たる事実。でも、再利用できないチェックシートを作ってやるよりもいいと思うんだけどね。しかもこの前に見せてもらったこのチェックシートも運用レベル

    いまだにユニットテストって受け入れられないんだろうな - 個人的なまとめ
  • GitHubエンジニアによる「リファクタリングにおける冒険とは」の翻訳 - Qiita

    GitHubエンジニア Ben Lavender によるYAPC2015のセッション「Adventures in Refactoring」のスライドが公開されたので、翻訳を試みました。 注)私はセッションには行っていないため、いくつかわからない箇所がありますので、編集リクエストを送って頂けると幸いです(同時通訳の内容を公開してくれたら、もう少しわかるのですが・・・)。 ちなみに英語ですが動画も公開されています。 Adventures in Refactoring / Ben Lavender リファクタリングとは? (できれば)振る舞いを変えずにコードを変えること 第1部 リファクタリングする理由 リファクタリングする理由として悪いもの 一貫性を上げる

    GitHubエンジニアによる「リファクタリングにおける冒険とは」の翻訳 - Qiita
  • テスト駆動開発は戦略である - 偏見プログラマの語り!

    稿は、前回の記事 『テスト駆動開発について僕は誤解していた』 を踏まえた上で僕が TDD について思うことのまとめです。 どうも TDD は「あらゆる開発現場で適用できる」「大掛かりな仕掛けは不要である」「やった方が良いらしい」ことが見えてきました。ということは、世間は「TDD を実践するのが当たり前」になっているはずです。しかしどうもそうなっていないようです。何かがおかしい気がします。 Siri に聞いてみましたが教えてくれませんでした。 1. 手間がかかるから実践されていないのだろうか。 テストコードを書く手間はゼロではありません。お金儲けをしている以上、かける手間は少なければ少ないほど良いわけですよね。「手間がかかるからやらない」という意見はありえそうです。もしかして、これがネックになっているのでしょうか。 2. みんながやってないから実践されていないのだろうか。 前回の記事を書い

    テスト駆動開発は戦略である - 偏見プログラマの語り!
  • 些末なゴミは出所を問わず拾うのが客商売 : 404 Blog Not Found

    2014年03月13日16:30 カテゴリArtCode 些末なゴミは出所を問わず拾うのが客商売 USJのジェットコースターは なぜ後ろ向きに走ったのか? 森岡毅 たとえ話を一つ。 些末なコードレビュー - naoyaのはてなダイアリー あるサービスの JavaScript が重いとか、そのコードが難読化されてないとか、担当者とおぼしき人間が書いたコメントがそのまま残ってるから消しましょうよとか、そんなことが書かれていた。JavaScript が重い、という話は結局そのサービスの JavaScript が重かったのではなく、ユーザーが自分で導入した広告が重いというだけの話だった。駐車場に停めてあったクルマがぐしゃぐしゃになっている。向かい側に停めていた人が、アクセルとブレーキを踏み間違えて、いきおいよくぶつけちゃったらしい。クルマの持ち主はもちろん、クルマのメーカーも何も悪くない。だけどつ

    些末なゴミは出所を問わず拾うのが客商売 : 404 Blog Not Found
  • 思考停止ワードとコミットログとコードコメント - 勘と経験と読経

    古い記事になるのだけれど、バージョン管理ツールにコミットログのNGワードを登録するという話が面白かった。ソフトウェアは思考がそのまま品質につながるようなところがある。思考停止に近しいワードを禁止してしまうのも手かもしれない。 コミットログのNGワード 注意するのも疲れるし、大抵の場合は注意しても直りません。 そんなわけで、私が面倒を見ている環境だとpre-commit-hooksを使って、規定のバイト数のコメント書かないとコミット出来ないようにして対応しています。 コミットコメントを意地でも書かせたい - almost nearly dead 単にコメント無しを規制するだけではなく、思考停止してしまうようなワードを禁止しているのが素敵。 また、これに加えて会社名や人名も禁止してしまうのはうまいやり方だと思う。人の名前が出てくるとそこで情報が隠蔽されてしまうし、「問題 VS 我々」のスタンス

    思考停止ワードとコミットログとコードコメント - 勘と経験と読経
  • プログラマーは皆、常に秘密や嘘を抱えている - totopon114689の日記

    プログラマーは皆、常に秘密や嘘を抱えている。 これは間違いない。 基的には誰にも話さないが、 (家族や友人などプログラムを知っていない人間に話しても分からない、という事もある) プログラマー同士の飲みの席などで、過去の笑い話として酒の肴になる事はある。 秘密や嘘の傾向には幾つかのパターンがある。 1) 仕様があいまいな場合の適当なコーディング 仕様があいまいな機能を実装する場合、想定していたものよりもプログラム量が膨大になる事はよくある。 また、細かいパターンや想定外のケースに対し、どのようにプログラム的対処を行うべきか? 洗い出しているとキリがない場合もある。 仮に事前に洗い出していたとしても、 「ケース自体は洗い出せているが、具体的にどのようなエラーメッセージを表示すべきか?」 などといった、その先がまたあいまいになっている場合もある。 このような場合、来であれば決裁権のある人間に

    プログラマーは皆、常に秘密や嘘を抱えている - totopon114689の日記
  • プログラムは手段だけど、せっかく作るなら儲かって綺麗にこしたことはない。 - お前の血は何色だ!! 4

    コードは綺麗だけど儲からないプロジェクトと、 コードは糞汚いけど儲かるプロジェクトのどっちがいいですか? もちろん、コードは綺麗で儲かるプロジェクトがいいのは理想ですが、今回は、この2つです。 コードは糞汚いけど儲かるプロジェクトの場合、次期バージョンとかの予算を確保することができます。 そこで、汚い部分を捨てて書きなおすことだって出来ます。 コードは綺麗だけど儲からないプロジェクトは、次のバージョンの改修費用もでずにゴミ箱に送られる運命です。 プロジェクト解散、メンバーは散り散りです。 フリーソフトの場合は、儲かるをユーザに使ってもらえるソフトとか支持されるソフト、 ゲームの場合は、儲かるを面白いゲーム、支持されるゲームとかと適当に読み替えてください。 コードは綺麗に越したことはないです。 だけど、プロジェクトとして成立しないことには意味がありません。 コードは綺麗だけど、誰も遊んでくれ

    プログラムは手段だけど、せっかく作るなら儲かって綺麗にこしたことはない。 - お前の血は何色だ!! 4
  • 作業中断のコスト

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    作業中断のコスト
  • エンジニアを頑張ったで評価する会社は衰退する | rake enjoy

    この前飲み会でこんな話をしていたのでまとめてみます。 終身雇用が崩壊し、昨今では会社の評価制度では成果主義というのが普通になりつつあります。ただ成果主義とは言いつつ何を持って成果とするかは議論の余地があると思います。 例えば営業職であれば分かりやすく売上目標というものがあります。企画職の場合でも売上やその他のKPIを目標設定することで分かりやすく評価出来ると思います。ではエンジニアの場合はどうでしょうか。 開発したシステムが実際に軌道に乗って数字を出し始めるまでには相当時間がかかります。(最近のゲームなどは除く)またその数字が出るか出ないかは実際営業や企画側の問題が多分にある為、こういったケースでエンジニアを数字で評価するとシステムの良し悪しとは関係なく単純に運がいいか悪いかだけになってしまいます。もちろん企画に意見が反映出来る環境であったり営業に指示できる環境であればエンジニアでも数字を

    エンジニアを頑張ったで評価する会社は衰退する | rake enjoy
  • なぜ新人は聞きに来ないのか? - teruyastarはかく語りき

    プログラマで、生きている: ググるな危険 http://el.jibun.atmarkit.co.jp/hidemi/2009/11/post-9d2b.html わたしが新人が検索に頼ってしまうことを危険視するのは、コピペの寄せ集めでもなんとなく動くコードが書けちゃって、それで自分は仕事を達成したという錯覚に陥ってしまうからです。 たいていの場合、新人プログラマには「きちんとしたコードを書くこと」は期待していません。先輩たちが期待しているのは「きちんとしたコードを書ける人になってくれること」です。 そこらへんの意識が行き違っちゃってるから、仙台に行くことよりも、新幹線に乗ることの方が重要事項になっちゃうんですかねえ。 最後に、わたしが新人の時に先輩から言われた言葉をご紹介させていただきます。 「自分で説明できないコードを1行たりとも書くな!」 間違うのはしかたありません。けれども、「自分

  • アジャイル開発手法「SCRUM」の真実

    スクラム(SCRUM)という開発手法がある。一時期雑誌をにぎわせたさまざまなアジャイル開発手法群のうちの1つである。日国内で実際の導入事例はないが、米国では提唱者のケン・シュエイバー(Ken Schwaber)氏によって着実に導入実績を積み重ねているという。今回公開する「スクラムワークショップ体験記」は、筆者2名が日人として初めて認定スクラムマスターを授与されたワークショップの様子を報告したものである。 米国のソフトウェア開発業界における独立系コンサルタントの躍進とアジャイル開発手法群の台頭という現象は切っても切り離せないものだ。このことは、XP(eXtreme Programming)の提唱者であるケント・ベック(Kent Beck)氏をはじめ、ソフトウェア開発手法に関する分野の“カリスマ”が日のソフトウェア開発業界に紹介されたことからも記憶に新しい。米国のこのような動きは日にも

    アジャイル開発手法「SCRUM」の真実
  • 1