SE のタメになるメモ
SE のタメになりそうな雑多なメモ (スクラップ) です。スクラップ日時が古いモノほど下に置く傾向にあります。出来る限り出典 (引用元) を明記しておりますが、掲載内容に関して何か問題があればご連絡ください。
SE 業に関わらないライフハック・仕事術などは「ライフハック関連メモ」にまとめています。
目次
雑多なメモ
- ブログ: 業界6年目で考えが変わったソフトウェア開発のトピック
- 様々な経験レベルを持つ人がいるチームで仕事をする場合は、型付き言語の方が適している
- Javaはそれほどひどい言語ではない
- ソフトウェア・アーキテクチャは、おそらく他の何よりも重要である。優れた抽象化のクソみたいな実装は、コードベースに正味の害を与えません。悪い抽象化や欠落したレイヤーは、すべてのものを腐らせる
- 巧みなコードは通常、良いコードではない。明瞭さは、他のすべての懸念事項に勝る
- 必要ないのにスケーラブルなシステムを設計すると、困ったエンジニアになる
- DRYは特定の問題を回避するためのものであり、それ自体が最終目的ではない
- YAGNI、SOLID、DRY。その順番で
- 鉛筆と紙は最高のプログラミング・ツールであり、あまり使われていない
- テクノロジーを追加することはめったに正しい判断ではない
- 「スケーラブル」という言葉は、ソフトウェア・エンジニアの心に神秘的で呆れるほどの力を持っている。その言葉を口にしただけで、彼らを堕落した狂乱に巻き込む可能性があります。この言葉を使った容赦のない行動は正当化される
- コードスタイル、Lintingルール、その他の些細なことにストレスを感じる人は非常識な変人である
- コード網羅率はコード品質とはまったく関係ない
- モノリスは大抵の状況でかなり優秀
- TDD(テスト駆動開発)純粋主義者は最悪である。彼らの心の弱さは、様々なワークフローの存在を処理することはできない
- コンテクストメニューの役割 (agenda)
- コンテクストメニューは、ポイントされているオブジェクト、または位置に関する操作を行う為のメニューに絞るべき
- 「何故コンテクストメニューなのか」を全く考えないまま、直感的に便利だからという理由でコンテクストメニューに機能を詰め込んでいると思われるアドオンが多すぎ。「ポイントしなくても良い操作なら、コンテクストメニューにしてはならない」くらいの制約をまず課して考えてほしい
- プログラミングの進展をコードの行数で測るのは、飛行機建造の進展を重量で測るようなものだ - ビル・ゲイツ
- 今日のプログラミングは、馬鹿でも使える、より重大かつ高度なプログラムを構築する努力をしているソフトウェアエンジニアと、より重大かつ高度な馬鹿を生み出そうとする宇宙との間の競争である。今のところ、宇宙が勝っている - Rich Cook
- あなたのコードをメンテナンスすることになる人が、あなたの住所を知る強烈なサイコパスになりうるのを常に想定してコーディングしなさい - Rick Osborne
- 一つの問題に直面するとき、「そうだ。正規表現を使おう。」と考える人たちは、二つの問題に直面する - Jamie Zawinski
- そもそも、デバッギングはコーディングよりも2倍難しい。従って、あなたが可能な限り賢くコードを書くとしたら、定義からして、あなたはそれをデバッグできるほど賢くない - ブライアン・カーニハン
出典不明
個人メモにまとめた際に出典が分からなくなってしまったモノたち。
- 0.1秒:ユーザは、自分がシステムを「直接」操作していると感じる。
1秒:ユーザの思考を止めない限界。反応に時間がかかっていることに気づき、システムの存在を意識する。
10秒:ユーザが操作に集中できる限界。待っている間に何らかの形で処理の途中であることを伝えないと、容易に他のことに興味が移る(離脱する)。
つまり、Webサイトの反応速度(ページの表示速度)は、理想は0.1秒、可能な限り1秒以内に収めるべきで、それ以上ユーザを待たせると離脱が増えるばかり、ということが言えるでしょう- Excelのサポートを10年間やってきた経験から最も頻出の助言は「データベースファーストの原則」であり、この原則には「1セル1データの原則」「1列1データ型の原則」「セル結合禁止の原則」の3つが含まれる
- クソコードってまさしく「そういうものを同僚にお出ししていいと思っている」という人格の問題なので、コードレビューは人格否定と不可分なので、戦争の方法を学ぶしかない
- システムエラー出たとき、何種類かのネコのgif画像をエラー内容に合わせて表示するようにしたんだけど、
問い合わせが基本「猫ちゃんが出てきた」になったし
猫ちゃん見てるからクレームの温度感も温くなったし
こっちもとりあえず「画面にどんな猫ちゃん出てますか?」って聞けばいいし楽- おっさんプログラマのダメなとこはなんか楽にできる方法あるんじゃねえの?って探して力技しかない結論に達しても楽にしたい欲を捨てられずそこで手が止まることです
- 上品で美しい設計ができる人、たいてい最前線の激務に耐えられないし、そういう理由で社会を支えるシステムはテストや設計が壊滅していたりして脳筋な世界が完成する
- いいですか、タスクの名前は、やる活動の要約ではなくて、タスクが完了した状態の要約にするんですよ。進捗がやばくて、誰かに手伝って欲しいとき、前者だと助けにくいんですよ
- ウェブサービスの設計思想を練るにあたって、自分たちがやろうとしていることが、「Media」なのか「Tool」なのか「Community」なのか、そのうちのドコに軸足をおいて、どの要素を付け加え、どの要素は切り落とすべきなのか
- 考えてみると、「クラウドコンピューティング」って言葉は、MSがOfficeにあの雲のオートシェイプを仕込んでたからこそ生まれた言葉じゃねぇの?
- ビジネスの場において顧客が事前に自分たちのほしいものを認識して全ての要件を提示するのは不可能なので、ウォーターフォールは都市伝説だと思ってる
- コマンド打つのは誰でもできるんですが、打ったコマンドに責任持って最悪元に戻せるスキルと経験にお金を払うのがIT業界における作業費の意味なんです
- フルスタックになった人間は信頼できる同僚を持てなかった寂しい人間
- 現在IT業界とよばれるところは80万人の雇用があるが、専門教育を受けたちゃんとした人材だけで仕事すれば8万人で済むとのこと。それぐらい、今のIT業界は専門教育を受けていない人材が含まれている、すなわち、それでちゃんと回るような社内教育システム、開発体制、長時間労働体制が構築されている
- telnetの切り方のコメンド打つのがとても難しいのでいつも「そquit」と入力すると切っている。多分ひらがなの中の「そ」のエンコーディングでtelnetのコマンド入力モードになるコマンドと等価なものが入っているのだろう
- Remove は「取り除く」。
Unix の rm はディレクトリからエントリを取り除き、参照カウントが0になった時に実体が回収される。名前の通りの動作。- 「誰でもわかるようなドキュメントを書け」ってのは「ググっても出てこないような暗黙知を無くすようにする」ことであって「未経験者にもわかるように」ってことじゃないんだからね!
- 部屋とお姉さんとソースコードはきれいな方がいいと思います
- オブジェクト指向でも関数型言語でも同じだけど、抽象化の方法は1つじゃないので、設計者が何を思って何をどう抽象化したのかという点がわからない。ドキュメントはこの点のみ必要だと思う。設計者の意図
- テストでは品質は上がらないですよ。テストはあくまでも品質をあげるきっかけ。品質をあげるのはプログラミングです
- かつて、ソフトウェア科学に「そんな難しいことを現場のプログラマにどうやって教えるんだ?」との言葉が投げつけられていました。すでに答は出ています。「理解した人が現場に入れば良いだけ」
- あなたはプロジェクトを下のように行うことができる。
・時間通りに
・予算内に
・適切に
二つを選べ- カップ焼きそばを作るには、ただ熱湯を注ぐだけでなく「買ってくる」、「ソースを入れる」など前後に様々な工程があり、パッケージには「熱湯3分」とだけ書いてあっても実際の納品までは10分弱かかる計算なのです。これが、エンジニアが納期を想定の倍以上見積もったほうがいい理由です