Posts Tagged ‘プログラミング’
優れたプログラマの姿勢トップ10

Steve Rileyさんがブログに書いていた記事がリバイバルでバズっていました。「The Top 10 Attributes of a Great Programmer」と題して優れたプログラマが持っている姿勢をリストアップしています。
- 優れた問題解決者であること
- 物事を遂行すると同時に怠惰である
- 他人のコードを理解する
- プログラミングへの情熱
- 学びたいという欲求の為に学ぶ
- 数学が得意
- コミュニケーションスキル
- ディベートに強い
- 超楽観主義者
- 超悲観主義者
本人の体験ベースで書かれていることもあり納得しやすい項目ですね。記事内ではさらに追加の10項目として時間の見積もり力やスキルを他のプログラマに伝えられるといった内容も挙げられています。またコメント欄でも20件以上のリプライがあり、いろいろ指摘が出ています。
- 11個目にユーモアのセンスを追加だ
- Emacsのアウトラインモードを使うと思考の助けになるよ
- 12番:優れた英語力
- 優れたプログラマを具体的に挙げて欲しいな
皆さんは優れたプログラマとは何だと思いますか?
via:http://programmingmatters.com/the-top-10-attributes-of-a-great-programmer/
プログラマはプログラミングをしていないという現実

フロリダのRubyプログラマのSteve Clayさんがブログに投稿した「プログラマーはプログラミングをしている、はずが実際はそうでもない」という記事が話題になっていました。
神話:プログラマは一日中、プログラムを書いている。
現実:多くのプログラマは下記の事に多くの時間を費やしている。(順不同)
- 外部のプログラマーのMLへのメールやテックでない人へのメールを用心深く書く
- ミーティングに参加、モックアップやDBスキーマの作成、要求された機能へのパフォーマンスの心配
- バグレポートを書く、過去のバグを検索
- 複雑なシステムの障害の原因を何ギガもあるログを探索して調べる
- ダウンタイムについてユーザーや上司への説明
- 他人の問題の解決へ協力
- ドキュメント、本、ブログ、リリースノート、脆弱性アナウンスを読む
- 必要な既存の名前の分からないようなコードを探す
- 見つかったコードが自分の環境に互換性がありライセンスに問題がなくコミュニティが生き残っているかを検証する
- ソフトウェアをインストール、設定、テストまでしてみたがけっきょく自分の環境では動かない
- エラーメッセージをググる
- 公開されているコードを調べて「あるOSSがどう動いてるかを調べる」
- ソース管理ツールやbash、GNUツール、Linuxのファイル権限について学習
- IDEやVM、サーバー、データベースの設定
- 共存できないように設計されたコードをなんとかひとつにまとめる方法を考える
- おわりなくやってくるタスクに優先度をつける
プログラマならだれもがこういった作業に半日、あるいは1日費やしてしまった事があるのではないでしょうか?ドキっとしますよね。
コメントにもいろいろな反応がありました。
- 挙っているいくつかはシステム管理者の仕事でプログラマはやるべきじゃない
- 1つ足すと「キャッシュとは何かをCMSを使っている編集者やマネージャーや創業者に説明する
- よかった、僕は独りじゃなかった
via:http://www.mrclay.org/2011/04/01/programming-is/
データベースの間違った使い方10項目

一般的なシステムで広く利用されているリレーショナルデータベースですが、システムの進化と共にデータベースの構造も複雑になりがちです。RestMQの作者、Gleicon Moraes氏の公開したスライドがシステムが複雑化していく様子をわかりやすく説明した上で「アンチパターン」を提示していました。
それによるとデータベースのアンチパターンは以下の通り。
- 動的なテーブルの作成
- テーブルをキャッシュとして使う
- テーブルをキューとして使う
- テーブルをログとして使う
- 分散したグローバルなロック
- ストアドプロシージャ
- 使われない項目
- JOIN地獄
- ORMによって繰り返されるクエリ
- 負荷のコントロール
どれも理由があって採用されるデザインですが、確かに後に問題を引き起こした経験もあり耳が痛い感じですね。スライド内ではそれぞれの問題についての解決策としてMongoDBやRestMQなどの利用を進めています。「本来の使い方をしていない」という事の例として「レースカーのようにドリフトする鴨の画像」が使われていたのもユーモラスです。

他のページの画像も面白くタメになる内容なのでご覧になってみてください。
via:http://www.slideshare.net/gleicon/architecture-by-accident
KIDS RUBY – ゲーム作りや学習に使えるこども用Ruby

先日はJavaScriptを利用した学習環境を紹介しましたが、Rubyを使った学習環境「KIDS RUBY」ものが公開されて話題になっていました。キャッチフレーズで宿題をハックする事に触れているあたりが遊び心がありますね。Windows、MacそしてUbuntuベースのオールインワン環境が整備されているようです。
動作画面

左側にソース、右側に出力という画面構成になっています。すでにBarCampでのハンズオンセッションなども行っているようで普及活動とセットのプロジェクトなんですね。BarCampの写真もなかなか楽しそうです。
わがままなプログラマにならない為の10のルール

「エゴレスプログラミング」という言葉があります。アメリカのコンピューター科学者、ジェラルド・ワインバーグ氏によって『プログラミングの心理学』にて取り上げられた思想です。プログラマ同士が協調する事で最終的なコードの品質が向上するという思想です。プログラマが協調できていないムードだとコードの品質が下がると言い換えてもなんだか思い当たるフシのある感じです。1970年代からある考え方ですが、ちょうど話題になっていました。さてそのエゴレスプログラミングの為の十戒は下記のようになっています。
- 自分が失敗をする事を認める
- コードは自分自身ではない
- どれだけ空手を知っているかは重要ではない。他にもっと知っている人がいる
- 相談なしにコードを書き換えない
- 自分よりも知識が無い人に対して尊敬と敬意と忍耐を持って接する
- 唯一不変な事は、世界は変わるという事
- 権威は立場からではなく知識から生まれる
- 自分が信じるものの為に戦え、ただし敗北は礼儀正しく認めよ
- オフィスでコードを書くだけの人になるな
- 人物ではなくコードを批評する。人には親切にし、コードには遠慮しない
このルールは1971年に作られたものですが、これらのルールの逆を行く人物を想像してみるとたしかにちょっと同じチームになるのは遠慮したい感じですね。考えさせられる内容なので原文もご覧ください。残念ながら日本語の書籍は手に入れづらい状況のようですが、英語のKindle版はすぐに手に入れる事ができます。
補足
ワインバーグ氏は現在、闘病中です。Twitterにて直近の様子を伺い知る事ができます。著作も多く広く読まれている物が多数です。
参考:
濃縮還元オレンジニュース Gerald M. Weinberg氏,胸腺癌で余命わずか
プログラミングの6大10項目リスト(青木靖氏のサイト内)
via:http://www.codinghorror.com/blog/2007/03/top-6-list-of-programming-top-10-lists.html
僕はアダム、シングルトン中毒から回復したんだ
プログラミングで使われるデザインパターンの一つにシングルトンというのがあります。ご存知の方も多いと思いますが覚えるととても便利でなんでもかんでもシングルトンにしたくなってしまう設計です。このシングルトンを使った設計の問題を訴えたAdamさんのブログが話題になっていました。
Adamさんによるとシングルトンのダメな所は下記のとおり。
- 依存関係を見えにくくし、コードが読みづらくなる。
- ユニットテストを難しくする。外部から渡せないオブジェクトはモックにする事が難しい。
- プログラムの再利用性が低下する。一度しか使わないからとシングルトンで作ってしまうと複数のユーザーから利用されるような場合に対応できなくなる。
- スケーラビリティが低下する。
- 良いオブジェクト指向の設計とは言えない。
異論、反論を受付中ということでコメント欄も盛り上がっています。
- 食べると太るから食べ物は悪だ、みたいな話だ。
- Eric Gammaの本を読むといいよ。(GoFの1人)、シングルトンは無くなるはず。
- Spring使いなよ
- 素人な質問だけど、Springって何?
- シングルトンは使う度に後で後悔する
- マルチスレッド環境でのシングルトンは難しいことも忘れちゃまずい
- public staticなフィールドも同じことだな
- 次はDI(Dependency Injection)中毒になるだろうな
- スティーブです。僕もシングルトン中毒で、しかもまだ回復していないよ
この話題、古今東西どこでも盛り上がるみたいですね。あとコメントで出ていた「Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson」は日本語でも読みたいですね。このリンク先のインタビューにてシングルトンをカタログから除きたいというコメントが出ています。
via:http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
大企業はソースコードの管理に何を使っている?
Facebookの元CTOだったダスティン・モスコヴィッツが立ち上げた質問サイト、Quoraにて大企業がどんなソースコード管理システムを使っているのか?という質問が挙っていました。Quoraは回答の質が高いという触れ込みでスタートしているサービスなのでこれらの情報は多分正しいのでしょう。
- Facebook svn (一部の人はgitも使っている)
- Amazon perforce
- Zynga svn
- Netapp Perforce
- Google git(Android), Perforce
- Quora git
- SAP Perforce
- ebay Clear Case git(実験中)
- VMware Perforce
この内容の限りだとオープンソースではgit、商用ではPerforceという流れがあるようですね。
via:http://www.quora.com/What-version-control-systems-do-large-companies-use


