I went to visit Mount St. Helens yesterday. Unfortunately, it was raining and we couldn’t see the volcano. We stopped at the Johnston Ridge Observatory (JRO), named for David A. Johnston. Johnston was a USGS volcanologist who was on duty at the ridge the day Mount St. Helens exploded on May 18, 1980. "Vancouver! Vancouver! This is It!" was all he could report when the mountain erupted. Johnston was one of the 57 people who lost their lives. The JRO is 5 miles from the volcano on the ridge where Johnston was observing. The power of the eruption was equal to 500 atomic bombs.
In Star Trek, Captain James T. Kirk was always asking "Scotty, We need more power!". Lieutenant Commander Montgomery "Scotty" Scott would usually reply something like "Captain, I don’t know how much more emergency power we can take before we start to break up" or "I can’t change the law of physics!"
In Jeff Atwood’s Coding Horror blog post on February 13, 2009, Jeff talk about Real Ultimate Programming Power. In the article he lists many of the power programming practices and methodologies that have appeared between 1969 and 2005. I’ve use his list as a starting point and added a few (with links).
- Structured Programming
- Structured Analysis
- Structured Design
- Structured Analysis and Design (SADT)
- Object-Oriented Programming (OOP)
- Rapid Application Development (RAD)
- Dynamic Systems Development Method (DSDM)
- Extreme Programming (XP)
- Rational Unified Process (RUP) and it’s variations
- Information Engineering (IE)
- Feature Driven Development (FDD)
- Event-Driven Programming
- Functional Programming
- Lean Software Development
- Aspect-Oriented Programming (AOP)
- Literate Programming (LP)
- Genetic Programming
- Personal Software Process (PSP) and Team Software Process (TSP)
- Agile Software Development
- Test Driven Development (TDD)
- Generative Programming
At Embarcadero Technologies we use Scrum for our product development (usually with 3 or 4 week sprint durations). For the Embarcadero Community web site we use a form of Feature Driven Development (a good fit for rapidly adding site capabilities). We deliver real ultimate power to developers who use our native code optimizing compilers for Delphi and C++Builder.
In his blog post, Jeff’s also added a list of acronyms that he associates with "Real Programming Power":
- DRY - Don’t Repeat Yourself
- KISS - Keep it simple stupid
- YANGI - You aren’t gonna need it
To this list I add a few more to give you additional power and guidance:
- WYSIWYG - What you see is what you get
- DWIM - Do what I mean
- PTP - Prototype to Production (visual, RAD development with Delphi)
- SOTSOG - Standing on the Shoulders of Giants (reuse and extend components)
- WIR - (We will ship it) When It’s Ready
- ITA - Inspiration to Application
Which methods, listed above, do you use for yourself or your team? Do you use other methodologies? What gives you the most power? What do you want to get more power?