失敗 by 本田宗一郎
失敗もせず問題を解決した人と、十回失敗した人の時間が同じなら十回失敗した人をとる。
同じ時間なら失敗した方が苦しんでいる。
それが知らずして根性になり、人生の飛躍の土台になる。
今年(2018年)、失敗した?
7of9はいくつか失敗した。
振返ってみよう。
2018年に「やらかした」こと
2018年に「やらかした」こと、やらかさないために検討した事項を以下に挙げる。
概要コメントもつけて。
-
C++ Builder XE4 > TCP > WriteLn()の誤用
- WriteLn()とWrite()の使い間違い
- 送信文字列にLFがあるにもかかわらず、WriteLn()を使った
-
組込み+RTOS > C > 70秒待ち > 46秒で処理が終わる > 実装ミス
- 1秒待ちを1.3秒待ち
- 2回コール
-
naming > ASXST55とASXST-55
- 自分の失敗ではないが、一般的によく見られる事象
- 気を付けるべき事項
-
新人プログラマ応援 > 標準からはずれたことをするときは、それが明示されるようにしよう | .bashrcでの明示
-
標準からはずれたことをするときは、それが明示されるようにしましょう
-
-
AD2 > I2C > ERRORという表記 > SCLとSDAの接続が反対でした
- SCLとSDAの設定間違い
- それを指摘できる技術者のすごさよ
-
comment > 意図について記載する, if/for/whileの後の空白, 関数の後の空白(なし)
- 意図が分かりにくいコードは読む人の負担になる
- リファクタリング時に失敗を誘発する
-
SmartGit > Mergeの種類 > Create Merge-Commit | Merge to Working Tree | Cancel > マージ手順の間違い
- マージの間違い
- 被害が大きい失敗
- とくに注意すべき失敗
-
linux > 自動起動 > /etc/rc.local (2018/03/12版) > nohupでなくsudoで実行 | 設定ミス(致命的: OS起動しなくなる)
- 被害が大きい失敗
- 本番環境で発生させては絶対にいけない
-
PyMieScatt > MatrixElements() > Equation of S11, S12, S33, S34
- 式の記載間違い
- 筆者に連絡して修正された
- きちんとした筆者であってよかった
- 訂正を連絡しても対処されないところは多い (AmazonのKindle版とかAmazonのKindle版とかAmazonのKindle版とか)
-
Document > version > Scipy lecture notes > 同じEditionのファイルが更新される > 読者側のバージョン管理
- 修正は入ったが、同じEditionとしての文書管理
- Editionを確認しても内容が異なる、ということが発生する悪い例
-
Python3 > モジュールのリロード > importlib.reload(demo)
- Jupyter Notebookでときどきやらかす失敗
- キャッシュは便利ではあるが、失敗の要因にもなる
-
Link > mistakes > @ stackoverflow
- StackOverflowでの失敗例
- 失敗から学ぶこと大切
-
SmartGit > Branchesペイン > Local Branches > ブランチ > rename > originのブランチ名は変更できない
- 名前変更したが、一部では名前が変更されないという症状
- 全部が名前変更されないことで、将来の参照性が悪くなる例
-
Python > a[0] > for multidimensional a, a[0] is interpreted by taking all elements in the unspecified dimensions.
-
a[0]
は使ってはいけない
-
-
C++ Builder 10.2 Tokyo > FindComponent()した結果をTEdit *に入れる場合 > dynamic_castと(TEdit *)キャストの違い
- キャストの仕方の違い
-
C++ Builder 10.2 Tokyo > TOpenDialog | TSaveDialog > FilterとFilterIndex > デザイン定義とコード定義 > ソフト変更時の失敗予防
- デザインとコード、両方の変更が必要であるために、片方の変更を忘れるということ
-
将来変更しそうな処理は一か所にまとめる
-
Windows 8.1 + Excel 2016 > .xlsx保存時に「のコピー」を自動的に付加される > 元の.csvファイルが読み取り専用の場合
- Excelの仕様により「ユーザの気づきにくい変更」がされる例
- ユーザ側の対処としては
- 「こういうことがある」と知っておくこと
- 細かな点に気づくこと
-
grep > grep --color=always opt *.c | grep -v option > optionが除外されない理由
- grepの使用により「ANSI escape codes」が追加される例
-
X68000 XVI > 電源基板 > 回路図と現物の違い
- 参照しているドキュメントそのものが間違っているという例
- 枯れたドキュメントの場合、訂正情報がインターネットで見つかる
- その情報含めて入手してからの作業が吉
-
C > mistake > ++ > 1日(246060秒)を超えない | 別のハマリ事象 (0..255のループ)
- 変数の型によりループ処理から抜けない点
- 似たような事例は過去10年の間に3件は遭遇している
-
UI > 「xxxを削除しますか?」ダイアログ > デフォルトボタン > キャンセル (破壊的なコマンドの安易な実行を避ける)
- 破壊的なコマンドをデフォルトにしない
-
UI > 誤ったエラーメッセージ > ファイルが見つからないか、読み取りのアクセス許可がありません。 | 圧縮(zip形式)フォルダーは無効であるか、または壊れています > MAX_PATH260問題?
- 誤ったエラーメッセージをユーザに見せない
-
C++ Builder XE4 > TMemo > Strings[0]とTextの違い
- 間違ったプロパティの使用
- 間違ったものを使用していることに如何に気づくことができるか
-
C++ Builder XE4 > モジュール'XXX.exe'のアドレスXXXでアドレスYYYに対する書込み違反が発生しました。 > 「自動生成フォーム」を「使用可能フォーム」にした上でそのフォームを使うことで発生する
- 機能を中途半端に残して、原因不明の不具合となっていた
-
対処としては、「きちんと機能を取除く」こと。
失敗の対策
2018年にやらかしたこと。
その対策を検討した。
- 機能について良く知る
- 過去の失敗から学ぶ
- 正しい情報を探す
- 第一ソースとなる情報を探す
- 作業を中途半端にしない
- 細かい違いに気づく
- 同じ失敗を繰り返した時、立ち止まって考える
- 作ったものを見返す、見直す