SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
闇の魔術に対する防衛術
2015/12/12
(だいたい)新卒エンジニア向け技術交流会 vol.5
@hoto17296
アジェンダ
• 闇の紹介
• クソコード
• クソ設計
• クソエンジニア
• 闇とどう立ち向かえばいいか
(前置き)
この世界は
クソプロダクトで
れかえっている
たとえクソプロダクトでも
価値が提供できていれば
それでいい
ただぼくたちエンジニアが
心穏やかでないというだけ
闇の紹介
クソコード
• テストが書かれていないのはデフォ
• 過剰な抽象化
• 「やってみたかっただけ」感
• 1機能の些細な修正がプロダクト全体に影響
• フレームワークの思想やデザインパターンをガン無視
• View にデータ更新処理が書いてある
クソ設計
• Web サーバ2台あるはずなのに1台死んだら

サービスが止まった
• 互いのミドルウェアに依存していた
• 冗長化 #とは
• 冗長化してると思ったらただの負荷分散だった
クソエンジニア
• 深夜に障害対応をしてありがたがられる
• 障害の原因を作ったのもお前だ
• 徹夜で開発して重宝がられる
• 「残業はデフォ」みたいな空気を作るな
しかし
もう辞めたエンジニアを

愚痴ってもなにも改善しない
前に進もう
闇に立ち向かう方法
バージョン管理
• 闇を生まないための基本 (1)
• いつ誰が何をどう変更したのかがわかる
• 以前の状態にロールバックできる
コードレビュー
• 闇を生まないための基本 (2)
• 責任の分散
• 「見抜けなかった俺も悪かった」
• 「レビューされる」という意識を持つことで

気が引き締まる
テストケース
• 闇が生まれても倒せる
• 高速な開発サイクルを回すのに必要不可欠
しかし結局
どうやったって
闇は生まれる
闇を許容せよ
許容したうえで、
立ち向かう強さを持とう
ハンロンの剃刀 (Hanlon's razor)
Never attribute to malice that which is

adequately explained by stupidity.
無能で十分説明されることに悪意を見出すな
クソプロダクトは
無能や愚かさから
生まれるのであって
そこに悪意が
あるわけではい
人は誰しもがどこか
無能で愚かなのであり
人によってその程度が
少し違うだけである
だから
おもむろに git blame -w <file> で
犯人を探し出して
は
い
死
ね
|
!!!
やめよう
心穏やかに
エンジニアリング
しよう
闇の魔術に対する防衛術

Weitere ähnliche Inhalte

Ähnlich wie 闇の魔術に対する防衛術

BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノBluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノKazumi IWANAGA
 
CardboardのUXをカメラで向上する (droidkaigi 2015/04)
CardboardのUXをカメラで向上する (droidkaigi 2015/04)CardboardのUXをカメラで向上する (droidkaigi 2015/04)
CardboardのUXをカメラで向上する (droidkaigi 2015/04)Kenichi Takahashi
 
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功Tatsuya Sakai
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBMToshiki Tsuboi
 
パケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るパケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るcloretsblack
 
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -Kishi Shundo
 
プロ生品川 2012 12-22
プロ生品川 2012 12-22プロ生品川 2012 12-22
プロ生品川 2012 12-22Kaede Kondoh
 
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)BizCOLLEGE
 
BlackMagic ProbeでARMをデバッグする
BlackMagic ProbeでARMをデバッグするBlackMagic ProbeでARMをデバッグする
BlackMagic ProbeでARMをデバッグする裕士 常田
 
情報理工Android勉強会第一回大将Part
情報理工Android勉強会第一回大将Part情報理工Android勉強会第一回大将Part
情報理工Android勉強会第一回大将PartHiroki Sakamoto
 
20180217 hackertackle geode
20180217 hackertackle geode20180217 hackertackle geode
20180217 hackertackle geodeMasaki Yamakawa
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Yoshiyuki Nakamura
 
今年かかった麻疹まとめ
今年かかった麻疹まとめ今年かかった麻疹まとめ
今年かかった麻疹まとめAkira Suenami
 
コードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めようコードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めようShin-ya Koga
 
Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-Hiroki Sakamoto
 
NGN2012B 発表資料
NGN2012B 発表資料NGN2012B 発表資料
NGN2012B 発表資料Kenji Nagase
 
IDCFクラウド MeetUp2 LT
IDCFクラウド MeetUp2 LTIDCFクラウド MeetUp2 LT
IDCFクラウド MeetUp2 LTFujishiro Takuya
 
PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?mokudai masayuki
 
はんなりPython #45
はんなりPython #45はんなりPython #45
はんなりPython #45hiroya akita
 

Ähnlich wie 闇の魔術に対する防衛術 (20)

BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノBluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
 
CardboardのUXをカメラで向上する (droidkaigi 2015/04)
CardboardのUXをカメラで向上する (droidkaigi 2015/04)CardboardのUXをカメラで向上する (droidkaigi 2015/04)
CardboardのUXをカメラで向上する (droidkaigi 2015/04)
 
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
パケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るパケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作る
 
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
 
Surface で 謎開発
Surface で 謎開発Surface で 謎開発
Surface で 謎開発
 
プロ生品川 2012 12-22
プロ生品川 2012 12-22プロ生品川 2012 12-22
プロ生品川 2012 12-22
 
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)
 
BlackMagic ProbeでARMをデバッグする
BlackMagic ProbeでARMをデバッグするBlackMagic ProbeでARMをデバッグする
BlackMagic ProbeでARMをデバッグする
 
情報理工Android勉強会第一回大将Part
情報理工Android勉強会第一回大将Part情報理工Android勉強会第一回大将Part
情報理工Android勉強会第一回大将Part
 
20180217 hackertackle geode
20180217 hackertackle geode20180217 hackertackle geode
20180217 hackertackle geode
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 
今年かかった麻疹まとめ
今年かかった麻疹まとめ今年かかった麻疹まとめ
今年かかった麻疹まとめ
 
コードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めようコードを書かずにLチカ。から始めよう
コードを書かずにLチカ。から始めよう
 
Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-Android勉強会第二回-非同期処理-
Android勉強会第二回-非同期処理-
 
NGN2012B 発表資料
NGN2012B 発表資料NGN2012B 発表資料
NGN2012B 発表資料
 
IDCFクラウド MeetUp2 LT
IDCFクラウド MeetUp2 LTIDCFクラウド MeetUp2 LT
IDCFクラウド MeetUp2 LT
 
PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?
 
はんなりPython #45
はんなりPython #45はんなりPython #45
はんなりPython #45
 

Mehr von Yuki Ishikawa

Introduction to GPU Programming in Python
Introduction to GPU Programming in PythonIntroduction to GPU Programming in Python
Introduction to GPU Programming in PythonYuki Ishikawa
 
新婚旅行を支える技術
新婚旅行を支える技術新婚旅行を支える技術
新婚旅行を支える技術Yuki Ishikawa
 
ラマダーン入門
ラマダーン入門ラマダーン入門
ラマダーン入門Yuki Ishikawa
 
ステージング環境のつくりかた
ステージング環境のつくりかたステージング環境のつくりかた
ステージング環境のつくりかたYuki Ishikawa
 
マッカレル de おうちハック
マッカレル de おうちハックマッカレル de おうちハック
マッカレル de おうちハックYuki Ishikawa
 
スタートアップのくせになまいきだ
スタートアップのくせになまいきだスタートアップのくせになまいきだ
スタートアップのくせになまいきだYuki Ishikawa
 
JavaScript over HTTP/2
JavaScript over HTTP/2JavaScript over HTTP/2
JavaScript over HTTP/2Yuki Ishikawa
 
コンポーネント時代の CSS 設計
コンポーネント時代の CSS 設計コンポーネント時代の CSS 設計
コンポーネント時代の CSS 設計Yuki Ishikawa
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話Yuki Ishikawa
 
サーバを運用する時代は終わった
サーバを運用する時代は終わったサーバを運用する時代は終わった
サーバを運用する時代は終わったYuki Ishikawa
 
Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略Yuki Ishikawa
 
アニメーションしたい
アニメーションしたいアニメーションしたい
アニメーションしたいYuki Ishikawa
 
Bot に家計を任せる
Bot に家計を任せるBot に家計を任せる
Bot に家計を任せるYuki Ishikawa
 
時をかけるほと
時をかけるほと時をかけるほと
時をかけるほとYuki Ishikawa
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?Yuki Ishikawa
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!Yuki Ishikawa
 

Mehr von Yuki Ishikawa (20)

Introduction to GPU Programming in Python
Introduction to GPU Programming in PythonIntroduction to GPU Programming in Python
Introduction to GPU Programming in Python
 
新婚旅行を支える技術
新婚旅行を支える技術新婚旅行を支える技術
新婚旅行を支える技術
 
ラマダーン入門
ラマダーン入門ラマダーン入門
ラマダーン入門
 
ステージング環境のつくりかた
ステージング環境のつくりかたステージング環境のつくりかた
ステージング環境のつくりかた
 
マッカレル de おうちハック
マッカレル de おうちハックマッカレル de おうちハック
マッカレル de おうちハック
 
スタートアップのくせになまいきだ
スタートアップのくせになまいきだスタートアップのくせになまいきだ
スタートアップのくせになまいきだ
 
JavaScript over HTTP/2
JavaScript over HTTP/2JavaScript over HTTP/2
JavaScript over HTTP/2
 
コンポーネント時代の CSS 設計
コンポーネント時代の CSS 設計コンポーネント時代の CSS 設計
コンポーネント時代の CSS 設計
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
サーバを運用する時代は終わった
サーバを運用する時代は終わったサーバを運用する時代は終わった
サーバを運用する時代は終わった
 
Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略
 
gulp芸
gulp芸gulp芸
gulp芸
 
アニメーションしたい
アニメーションしたいアニメーションしたい
アニメーションしたい
 
趣きのある Bot
趣きのある Bot趣きのある Bot
趣きのある Bot
 
Bot に家計を任せる
Bot に家計を任せるBot に家計を任せる
Bot に家計を任せる
 
時をかけるほと
時をかけるほと時をかけるほと
時をかけるほと
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
peco活用術
peco活用術peco活用術
peco活用術
 
JavaScript 研修
JavaScript 研修JavaScript 研修
JavaScript 研修
 

闇の魔術に対する防衛術