読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

28. 「魔法」に頼りすぎてはいけない Alan Griffiths:『プログラマが知るべき97のこと』

以下の記事は,オライリージャパン社から出版された

プログラマが知るべき97のこと』

の中から1つのエッセイを選び,

そのエッセイを,クリエイティブコモンズ3.0の条件の元で転載したものです.

Creative Commons ― 表示 3.0 アメリカ合衆国 ― CC BY 3.0

本書の内容は,オープンソースモデルに従い,

ほぼ無制限で利用が可能です.

クリエイティブ・コモンズ表示3.0の条件下で,

自由に使用することができるのです.

つまり,どのエッセイも,

著者の名前を明記すれば,自由に転載,改変が可能であるということです.

ーー"はじめに"から抜粋 pXII


もし,他のエッセイを読みたい場合には,

記事末のリンクを辿るか,

以下のリンク先のTwitterアカウントのつぶやきからお探し下さい.

Twitter Account: 97 Things Bot



また,元の英文によるエッセイを読みたい方は,

こちらを参照して下さい.

Contributions Appearing in the Book - Programmer 97-things


28. 「魔法」に頼りすぎてはいけない アラン・グリフィス (Alan Griffiths):『プログラマが知るべき97のこと』

他人のする仕事というのは,

どういうものであれ,

遠くから見ていると

どうしても実際より簡単だと思ってしまうものです.

自身が開発を経験していないマネージャは,

プログラマの仕事を簡単だと思っていますし,

逆にマネージメントの経験のないプログラマは,

マネージャの仕事を簡単だと思い込みがちです.



厄介なのは,

今は「プログラマ」ではなくても,

以前プログラミングをしたことがある人は

意外にいるということです.

しかし,

「ちょっとやったことがある」という程度だと,

プログラミング作業の中で最も難しい部分,

つまり自分の頭を使って考える部分

についてはよくわからないものです.

少なくともそれをあまり重要だとは思わないでしょう.

これは,過去何十年もの間,

「知識と経験を持った人でないと分からない部分」

をプログラミングから

排除する努力が続けられてきたおかげでもあります.

最も早い時期からその努力をし,

特によく知られている人物がGrace Hopper*1です.

Hopperは,まるで暗号のようだったプログラミング言語を,

より分かりやすいものにすべく力を尽くしました.

それができれば,専門のプログラマは不要になるのでは,

という予測もありました.

努力の結果生まれたのが,プログラミング言語COBOL”ですが,

COBOLの誕生により,

専門家は不要になるどころか,

その後,数十年に渡り,プログラミングによって収入を得る専門の

プログラマが多数生まれることになります.



ソフトウェアの開発がこのまま簡単になっていけば,

いずれは,プログラミングの作業はまったく不要になる,

という見方はずっと以前からあり,

現在も無くなっていません.

この見方は,

プログラミングを良く知っている人間から見ると,

「あまりに無邪気」としか言い様がないものです.

しかし,ついこういう見方をしてしまうのが人間である,

ということも同時に言えます.

そして,プログラマもやはり人間なので,

同じようなことをする時はあるのです.



プロジェクトには必ず,

プログラマが積極的に関わるわけではない作業も多数発生します.

例えば,ユーザの要件を確認することや,

予算の申請,ビルドサーバのセットアップ,

QA環境や本番環境へのアプリケーションのデプロイなどもそうです.

業務プロセスやプログラムを

古いものから新しいものへ移行することなどもそうでしょう.



自分が積極的に関わらない仕事に関しては,

無意識のうちに簡単だと思ってしまうし,

まるで「魔法」のように自動的にできるような

錯覚に陥ってしまうのが人間の性です.

すべて順調な時には,

確かに魔法だと思っていてもさほど支障はありません.

問題は「魔法が解けた」時です.

魔法が解けてしまえば,途端にプロジェクトは頓挫し,

混乱してしまいます.



例えば,私の関わったプロジェクトでは,

常に正しいバージョンのDLLがロードされていなければ,

システムがまったく動かないのに,

誰もそのことを理解していなかったということがありました.

問題が頻繁に起こり始めてから見当違いの調査を繰り返し,

誤ったバージョンのDLLがロードされているせいで

動かないということに気づくまでに

何週間もの時間が無駄になりました.



対照的に,

何もかもが順調に進む部署がありました.

納期には絶対に遅れず,

深夜までデバックに追われるということも,

顧客から緊急でバグ修正を求められる

ということもありませんでした..

あまりにスムーズなので,

会社の上層部は,

物事がまるで自動的に回っているかのように思い込んでしまいました.

そして

「プロジェクトマネージャなど不要なのでは?」

と考えるようになったのです.

プロジェクトマネージャがいなくなった後,

その部署の仕事ぶりは

他と何ら変わらないものになってしまいました.

納期には遅れ,バグは大量で,

リリース後も絶えずパッチをあてている

という有様になってしまいました.



もちろん,

プロジェクトに関わる

すべての人の仕事を詳しく知る必要はありませんし,

しかし,たとえその一部でも,

知ろうとして損はないのではないかと思います.

そして,自分の知らない仕事,

自分の直接関わっていない仕事をしている人を

尊重するということが大事です.



忘れてならないのは,

「魔法が解けてしまった時は,

 誰かがかけなおさなくてはならない」

ということです.


■著者データ

[アラン・グリフィス (Alan Griffiths)]

これまで一貫してソフトウェア開発の仕事に関わってきたが,

プロジェクト毎に開発プロセス

利用した技術や言語などは実に様々である.

ソフトウェア開発を行った企業,製品を提供してきた企業も多岐にわたる.

その他,数々の雑誌への寄稿,カンファレンスでの講演もこなす.

「常識を持つ人は実は少ない.

常識を持っていれば,

それをお金に換えることができる」

が信条.

現在は自身の会社,

Octopull Limitedでコンサルティングサービスを提供している.

詳しくはサイトを参照してもらいたい.

Octopull


関連記事

1.分別のある行動 Seb Rose:『プログラマが知るべき97のこと』 - MY ENIGMA

2.関数プログラミングを学ぶことの重要性 Edward Garson:『プログラマが知るべき97のこと』 - MY ENIGMA

3.ユーザが何をするかを観察する (あなたはユーザではない) Giles Colborne:『プログラマが知るべき97のこと』 - MY ENIGMA

4.コーディング規約を自動化する Filip van Laenen:『プログラマが知るべき97のこと』 - MY ENIGMA

5.美はシンプルさに宿る Jorn Olmheim:『プログラマが知るべき97のこと』 - MY ENIGMA

6.リファクタリングの際に注意すべきこと Rajith Attapattu:『プログラマが知るべき97のこと』 - MY ENIGMA

7.共有は慎重に Udi Dahan:『プログラマが知るべき97のこと』 - MY ENIGMA

8. ボーイスカウト・ルール Robert C. Martin:『プログラマが知るべき97のこと』 - MY ENIGMA

9. 他人よりまず自分を疑う Allan Kelly:『プログラマが知るべき97のこと』 - MY ENIGMA

10. ツールの選択は慎重に Giovanni Asproni:『プログラマが知るべき97のこと』 - MY ENIGMA

11. ドメインの言葉を使ったコード Dan North:『プログラマが知るべき97のこと』 - MY ENIGMA

12. コードは設計である Ryan Brush:『プログラマが知るべき97のこと』 - MY ENIGMA

13. コードレイアウトの重要性 Steve Freeman:『プログラマが知るべき97のこと』 - MY ENIGMA

14. コードレビュー Mattias Karlsson:『プログラマが知るべき97のこと』 - MY ENIGMA

13. コードレイアウトの重要性 Steve Freeman:『プログラマが知るべき97のこと』 - MY ENIGMA

14. コードレビュー Mattias Karlsson:『プログラマが知るべき97のこと』 - MY ENIGMA

15. コードの論理的検証 Yechiel Kimchi:『プログラマが知るべき97のこと』 - MY ENIGMA

16. コメントについてのコメント Cal Evans:『プログラマが知るべき97のこと』 - MY ENIGMA

17. コードに書けないことのみをコメントにする Kevlin Henney:『プログラマが知るべき97のこと』 - MY ENIGMA

18. 学び続ける姿勢 Clint Shank:『プログラマが知るべき97のこと』 - MY ENIGMA

19. 誰にとっての利便性か Gregor Hohpe:『プログラマが知るべき97のこと』 - MY ENIGMA

20. すばやくデプロイ,こまめにデプロイ Steve Berczuk:『プログラマが知るべき97のこと』 - MY ENIGMA

21. 技術的例外とビジネス例外を明確に区別する Dan Bergh Johnsson:『プログラマが知るべき97のこと』 - MY ENIGMA

22. 一万時間の訓練 Jon Jagger:『プログラマが知るべき97のこと』 - MY ENIGMA

23. ドメイン特化言語 Michael Hunger:『プログラマが知るべき97のこと』 - MY ENIGMA

24. 変更を恐れない Mike Lewis:『プログラマが知るべき97のこと』 - MY ENIGMA

25. 見られて恥ずかしいデータは使わないこと Rod Begbie:『プログラマが知るべき97のこと』 - MY ENIGMA

26. 言語だけでなく文化も学ぶ Anders Noras:『プログラマが知るべき97のこと』 - MY ENIGMA

27. 死ぬはずのプログラムを無理に生かしておいてはいけない Verity Stob:『プログラマが知るべき97のこと』 - MY ENIGMA

*1:グレース・マレー・ホッパー (Grace Murray Hopper, 1906年12月9日 - 1992年1月1日) は、アメリカ海軍の軍人かつ計算機科学者。最終階級は准将。ハーバード マークIの最初のプログラマーの一人であり、プログラミング言語COBOLを開発した。グレース・ホッパー - Wikipedia