Building better tools

956 views

Published on

A talk on how system engineers and administrators, the people who maintain the infrastructure of the internet and who write a lot of code without (usually) having any training in software engineering practices, can improve their tools. Originally given at NYCBug in June 2009.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
956
On SlideShare
0
From Embeds
0
Number of Embeds
52
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Building better tools

  1. 1. Building Better Tools Slide 1 Building Better Tools Jan Schaumann jschauma@netmeister.org 136D 027F DC29 8402 7B42 47D6 7C5B 64AF AF22 6A4CJan Schaumann June 3, 2009
  2. 2. Building Better Tools Slide 2whoami$ groupsnetbsd yahoo$Jan Schaumann June 3, 2009
  3. 3. Building Better Tools Slide 3whoami$ groupsnetbsd yahoo$Jan Schaumann June 3, 2009
  4. 4. Building Better Tools Slide 4whoami$ groupsnetbsd yahoo$Jan Schaumann June 3, 2009
  5. 5. Building Better Tools Slide 5A much better way to spend your time.Jan Schaumann June 3, 2009
  6. 6. Building Better Tools Slide 6People think the internet looks like this.Jan Schaumann June 3, 2009
  7. 7. Building Better Tools Slide 7In reality...Jan Schaumann June 3, 2009
  8. 8. Building Better Tools Slide 8ToolsJan Schaumann June 3, 2009
  9. 9. Building Better Tools Slide 9The right tool?Jan Schaumann June 3, 2009
  10. 10. Building Better Tools Slide 10The right tool?Jan Schaumann June 3, 2009
  11. 11. Building Better Tools Slide 11The right tool?Jan Schaumann June 3, 2009
  12. 12. Building Better Tools Slide 12The right tool?Jan Schaumann June 3, 2009
  13. 13. Building Better Tools Slide 13Internet RealityJan Schaumann June 3, 2009
  14. 14. Building Better Tools Slide 14Sturgeon’s Revelation 90% of everything is crud.Jan Schaumann June 3, 2009
  15. 15. Building Better Tools Slide 15A better hammer!Jan Schaumann June 3, 2009
  16. 16. Building Better Tools Slide 16Tools DevelopmentThree basic categories: scripting programming software developmentJan Schaumann June 3, 2009
  17. 17. Building Better Tools Slide 17Tools DevelopmentThree basic categories: scriptingJan Schaumann June 3, 2009
  18. 18. Building Better Tools Slide 18Tools DevelopmentThree basic categories: scripting automating very simple tasksJan Schaumann June 3, 2009
  19. 19. Building Better Tools Slide 19Tools DevelopmentThree basic categories: scripting automating very simple tasks customization of user environmentJan Schaumann June 3, 2009
  20. 20. Building Better Tools Slide 20Tools DevelopmentThree basic categories: scripting automating very simple tasks customization of user environment often only suitable for one individual userJan Schaumann June 3, 2009
  21. 21. Building Better Tools Slide 21Tools DevelopmentThree basic categories: scripting automating very simple tasks customization of user environment often only suitable for one individual user usually eventually evolves into larger programsJan Schaumann June 3, 2009
  22. 22. Building Better Tools Slide 22Tools DevelopmentThree basic categories: programmingJan Schaumann June 3, 2009
  23. 23. Building Better Tools Slide 23Tools DevelopmentThree basic categories: programmingJan Schaumann June 3, 2009
  24. 24. Building Better Tools Slide 24Tools DevelopmentThree basic categories: programming suitable for simple to moderately complex tasksJan Schaumann June 3, 2009
  25. 25. Building Better Tools Slide 25Tools DevelopmentThree basic categories: programming suitable for simple to moderately complex tasks results frequently used by a small base of usersJan Schaumann June 3, 2009
  26. 26. Building Better Tools Slide 26Tools DevelopmentThree basic categories: programming suitable for simple to moderately complex tasks results frequently used by a small base of users uses basic framework or common toolkitsJan Schaumann June 3, 2009
  27. 27. Building Better Tools Slide 27Tools DevelopmentThree basic categories: programming suitable for simple to moderately complex tasks results frequently used by a small base of users uses basic framework or common toolkits provides consistent interfaceJan Schaumann June 3, 2009
  28. 28. Building Better Tools Slide 28Tools DevelopmentThree basic categories: programming suitable for simple to moderately complex tasks results frequently used by a small base of users uses basic framework or common toolkits provides consistent interface may evolve into full productJan Schaumann June 3, 2009
  29. 29. Building Better Tools Slide 29Tools DevelopmentThree basic categories: software development Felton Pilate, MC Hammer’s producerJan Schaumann June 3, 2009
  30. 30. Building Better Tools Slide 30Tools DevelopmentThree basic categories: software developmentJan Schaumann June 3, 2009
  31. 31. Building Better Tools Slide 31Tools DevelopmentThree basic categories: software development required for any reasonably complex taskJan Schaumann June 3, 2009
  32. 32. Building Better Tools Slide 32Tools DevelopmentThree basic categories: software development required for any reasonably complex task uses formal software engineering approach (measurable goals, requirements, specifications, ...)Jan Schaumann June 3, 2009
  33. 33. Building Better Tools Slide 33Tools DevelopmentThree basic categories: software development required for any reasonably complex task uses formal software engineering approach (measurable goals, requirements, specifications, ...) may evolve from previous prototypesJan Schaumann June 3, 2009
  34. 34. Building Better Tools Slide 34Tools DevelopmentThree basic categories: software development required for any reasonably complex task uses formal software engineering approach (measurable goals, requirements, specifications, ...) may evolve from previous prototypes requires ongoing continous maintenance / development effortsJan Schaumann June 3, 2009
  35. 35. Building Better Tools Slide 35Evolution of the programming systems product F. Brooks, “The Mythical Man Month”Jan Schaumann June 3, 2009
  36. 36. Building Better Tools Slide 36Evolution of the programming systems product F. Brooks, “The Mythical Man Month”Jan Schaumann June 3, 2009
  37. 37. Building Better Tools Slide 37“Trust me, I know what I’m doing.”Jan Schaumann June 3, 2009
  38. 38. Building Better Tools Slide 38Documentation “RTFM!”Jan Schaumann June 3, 2009
  39. 39. Building Better Tools Slide 39Documentation WTFMJan Schaumann June 3, 2009
  40. 40. Building Better Tools Slide 40User InterfaceJan Schaumann June 3, 2009
  41. 41. Building Better Tools Slide 41Unix PhilosophyJan Schaumann June 3, 2009
  42. 42. Building Better Tools Slide 42Unix Philosophy Do one thing and do it well.Jan Schaumann June 3, 2009
  43. 43. Building Better Tools Slide 43The KISS PrincipleJan Schaumann June 3, 2009
  44. 44. Building Better Tools Slide 44POLAPrinciple of Least AstonishmentJan Schaumann June 3, 2009
  45. 45. Building Better Tools Slide 45Test DrivenJan Schaumann June 3, 2009
  46. 46. Building Better Tools Slide 46The Zen of Python Beautiful is better than ugly.Jan Schaumann June 3, 2009
  47. 47. Building Better Tools Slide 47The Zen of Python Explicit is better than implicit.Jan Schaumann June 3, 2009
  48. 48. Building Better Tools Slide 48Explicit is better than implicit. Autovivification is Evil!$oink = { ’foo’ => { ’x’ => 1, }, ’bar’ => { ’y’ => 2, }, } ;if (exists($oink->{’baz’}{’z’})) { print "oink->baz->z existsn";}if (exists($oink->{’baz’})) { print "oink->baz existsn";}Jan Schaumann June 3, 2009
  49. 49. Building Better Tools Slide 49Explicit is better than implicit. For $Deity’s sake, return something.sub func { my ($ref, $ref_or_is_it_something_else) = @_; for my $a (@{$ref}) { if (condition) { return 1; } }}Jan Schaumann June 3, 2009
  50. 50. Building Better Tools Slide 50The Zen of Python Simple is better than complex. http://xkcd.com/399/Jan Schaumann June 3, 2009
  51. 51. Building Better Tools Slide 51The Zen of Python Complex is better than complicated.Jan Schaumann June 3, 2009
  52. 52. Building Better Tools Slide 52The Zen of Python Flat is better than nested.Jan Schaumann June 3, 2009
  53. 53. Building Better Tools Slide 53The Zen of Python Sparse is better than dense.Jan Schaumann June 3, 2009
  54. 54. Building Better Tools Slide 54The Zen of Python Readability counts.Jan Schaumann June 3, 2009
  55. 55. Building Better Tools Slide 55The Zen of Python Special cases aren’t special enough to break the rules.Jan Schaumann June 3, 2009
  56. 56. Building Better Tools Slide 56The Zen of Python Special cases aren’t special enough to break the rules. Although practicality beats purity.Jan Schaumann June 3, 2009
  57. 57. Building Better Tools Slide 57The Zen of Python Special cases aren’t special enough to break the rules. Although practicality beats purity. Sturgeon’s Law: Nothing is always absolutely so.Jan Schaumann June 3, 2009
  58. 58. Building Better Tools Slide 58The Zen of Python Errors should never pass silently.Jan Schaumann June 3, 2009
  59. 59. Building Better Tools Slide 59The Zen of Python Errors should never pass silently. (That would be implicitly accepted failure.)Jan Schaumann June 3, 2009
  60. 60. Building Better Tools Slide 60The Zen of Python Errors should never pass silently. (That would be implicitly accepted failure.) (You know what would be better than something implicit?)Jan Schaumann June 3, 2009
  61. 61. Building Better Tools Slide 61The Zen of Python Errors should never pass silently. (That would be implicitly accepted failure.) (You know what would be better than something implicit?) (Why, of course, something explicit!)Jan Schaumann June 3, 2009
  62. 62. Building Better Tools Slide 62The Zen of Python Errors should never pass silently. Unless explicitly silenced.Jan Schaumann June 3, 2009
  63. 63. Building Better Tools Slide 63The Zen of Python In the face of ambiguity, refuse the temptation to guess.Jan Schaumann June 3, 2009
  64. 64. Building Better Tools Slide 64The Zen of Python There should be one – and preferably only one – obvious way to do it.Jan Schaumann June 3, 2009
  65. 65. Building Better Tools Slide 65The Zen of Python There should be one – and preferably only one – obvious way to do it.Although that way may not be obvious at first unless you’re Dutch.Jan Schaumann June 3, 2009
  66. 66. Building Better Tools Slide 66The Zen of Python Now is better than never.Jan Schaumann June 3, 2009
  67. 67. Building Better Tools Slide 67The Zen of Python Now is better than never. Although never is often better than right now.Jan Schaumann June 3, 2009
  68. 68. Building Better Tools Slide 68The Zen of Python If the implementation is hard to explain, it’s a bad idea.Jan Schaumann June 3, 2009
  69. 69. Building Better Tools Slide 69The Zen of Python If the implementation is easy to explain, it may be a good idea.Jan Schaumann June 3, 2009
  70. 70. Building Better Tools Slide 70A simple interface, easy to explain. Yet...Jan Schaumann June 3, 2009
  71. 71. Building Better Tools Slide 71The Zen of Python Namespaces are one honking great idea – let’s do more of those!Jan Schaumann June 3, 2009
  72. 72. Building Better Tools Slide 72ConsistencyJan Schaumann June 3, 2009
  73. 73. Building Better Tools Slide 73Robustness Principle or Postel’s Law Be conservative in what you do; be liberal in what you accept from others.Jan Schaumann June 3, 2009
  74. 74. Building Better Tools Slide 74Toss it!Jan Schaumann June 3, 2009
  75. 75. Building Better Tools Slide 75Avoid the Quick Fix There’s nothing as permanent as a temporary solution.Jan Schaumann June 3, 2009
  76. 76. Building Better Tools Slide 76Take a good look in the mirror! Nice Ass!Jan Schaumann June 3, 2009
  77. 77. Building Better Tools Slide 77Take a good look in the mirror! Until you can prove otherwise, assume that you are an Ass!Jan Schaumann June 3, 2009
  78. 78. Building Better Tools Slide 78Don’t try to be clever! insert clever sentence or image about how trying to beclever increases complexity and leads to code that is difficult to understand hereJan Schaumann June 3, 2009
  79. 79. Building Better Tools Slide 79Avoid the Project That Was Never Finished Don’t let the Perfect be the enemy of the Good.Jan Schaumann June 3, 2009
  80. 80. Building Better Tools Slide 80Avoid Feature Creep http://www.feepingcreatures.comJan Schaumann June 3, 2009
  81. 81. Building Better Tools Slide 81Release Early, Release Often “More users find more bugs.” F. Brooks, “The Mythical Man Month”Jan Schaumann June 3, 2009
  82. 82. Building Better Tools Slide 82Increase the Bus Factor “Just friends.”Jan Schaumann June 3, 2009
  83. 83. Building Better Tools Slide 83Fix Broken WindowsJan Schaumann June 3, 2009
  84. 84. Building Better Tools Slide 84Program Maintenance “... is an entropy-increasing process, and even its mostskillful execution only delays the subsidence of the system into unfixable obsolescence.” F. Brooks, “The Mythical Man Month”Jan Schaumann June 3, 2009
  85. 85. Building Better Tools Slide 85Toss it!Jan Schaumann June 3, 2009
  86. 86. Building Better Tools Slide 86Starting freshJan Schaumann June 3, 2009
  87. 87. Building Better Tools Slide 87OwnershipJan Schaumann June 3, 2009
  88. 88. Building Better Tools Slide 88Done!Jan Schaumann June 3, 2009

×