Continuing on from Nobody cares that you "rewrote from scratch"...
There's a common belief amongst programmers that when confronted with a revolting, despicably complicated codebase with severe quality issues, the best you can do is throw it away and start again. That might have been true once (although I suspect not), but it's certainly not true today.
First, one has to ask, why is the codebase so bad? Almost always, the answer is due to shoddy processess - lack of testing, no culture of quality, a prevalent cowboy attitude within the coding team (or person). No number of rewrites will make these process problems go away. Software quality is a mostly solved problem today, at least on the small and medium-sized projects I have experience with. We know the solution, although too often it is not applied.
Second, today's great refactoring tools make it easy to turn bad code into good code. This is especially true in the Java world, where our IDEs runneth over with refactoring goodness. A codebase might seem to have tremendous quality problems, but normally most of the problems lie in a few concentrated areas. Once the biggest problems are identified they can be rectified.
A good refactoring process might go like this:
1. Break up that large, confusing method that keeps crashing into a number of smaller methods, which can be tested individually.
2. Write unit tests for those new smaller methods.
3. Add precondition checks for the methods. For example, check for null inputs or out-of-range values
4. Repeat from step 1 until the problem spot has become clear and simple
5. Repeat entire process with another problem spot
Once you've improved these trouble spots, you can claim what Microsoft claims with each new release of Windows: That the latest release is a "new, improved update, more stable than ever"
The Poker Copilot Blog
Tracking the development of Poker Copilot, Mac OS X software for poker analysis and statistics.
Wednesday, 3 December 2008
Instead of "rewriting from scratch..."
Subscribe to:
Post Comments (Atom)
Poker Copilot Translation Project
Want to use Poker Copilot in your language? Then help with the Poker Copilot Translation Project.
About This Blog
In May 2008 I started working on Poker Copilot, initially as a product to help me with my own poker playing. Soon I joined a "30-day Challenge", where the participants each aimed to launch a software product in 30 days. As a result of this challenge, Poker Copilot version 1.0 was launched in July 2008.
This blog tracks the ongoing development of Poker Copilot. Who would find this blog interesting? People interested in 1-person software development, in Poker, or in both.
Contact me via email at steve at pokercopilot dot com.
This blog tracks the ongoing development of Poker Copilot. Who would find this blog interesting? People interested in 1-person software development, in Poker, or in both.
Contact me via email at steve at pokercopilot dot com.
Blog Archive
-
►
2012
(96)
-
►
May
(13)
- Lock Poker News
- What do MP, EP, CO mean in the positional stats?
- Adding a new Ongame Network poker room to Poker Co...
- Adding a new Merge Network poker room to Poker Cop...
- PokerStars on iPad and Poker Copilot
- Lock Poker and Poker Copilot
- Phil Gordon's Little Gold Book and Poker Copilot's...
- Poker Copilot 3.10 Now Available
- Crushing the Microstakes and Poker Copilot's HUD
- Early Access Version of the next Poker Copilot Upd...
- How many hands do I need for Poker Copilot's HUD t...
- Coming soon: PFR by position, Aggression by street...
- Comments on this Blog
-
►
April
(18)
- Important information from 2+2 : Two Plus Two Foru...
- Coming in the next update: VPIP by position
- A Nice Email…in French
- Poker Copilot Tip: Move HUD Panels without the Ful...
- Update for Winamax Users
- Poker Copilot 3.08 Now Available
- Poker Copilot Blog: 1000+ blog posts
- Poker Copilot and Zoom Poker: Update
- Poker Copilot 3.07 Now Available
- A poker player uses Poker Copilot to improve
- Coming in the next update: FALSE filters
- Mockup of Potential Poker Copilot Dashboard Concep...
- A Poker Copilot work-around for Merge Network idio...
- Poker Copilot App Updating
- Carbon Poker has its own HUD! (but only on Windows...
- Improving Poker Copilot's App Updating
- Poker Copilot 3.06 Now Available
- False Assumptions
-
►
March
(18)
- How NOT to make money as a software company
- Zoom Poker HUD Early Access Edition
- Changes to the Poker Copilot Hand Formatter
- Coming in the Next Update: Zoom Stats can be separ...
- Poker Copilot and Zoom Poker: played my first sess...
- The Absurdity of Modern Life: Facebook claims trad...
- Poker Copilot and Zoom Poker: Progress Update
- What character is that?
- PokerStars screen names
- Poker Copilot and Zoom Poker
- Poker Copilot 3.05 Now Available
- Ongame and Table Size
- Updated Poker Copilot User Guide
- Coming in the next Update: Unopened PFR Statistic
- Poker Copilot 3.04 Now Available
- Google Analytics Update: Almost a Good Graph
- Poker Copilot Website in Russian
- Downloading Older Poker Copilot Updates
-
►
May
(13)
-
▼
2008
(184)
-
▼
December
(28)
- Link of the Day
- Poker Copilot, the HUD, and PowerPC users
- Finally: Poker Copilot with new HUD released
- Sentence of the Day
- Gaming for Grandmothers
- New HUD Preview (version 1.45)
- The Long Tail
- Playing Tournaments by Not Playing
- Learning Italian
- Link Bait Failure turns to Google Success
- More HUD news
- HUD Feedback Please!
- New HUD for PokerStars and Tiger
- Does Yahoo Still Matter?
- Support via Remote Desktop
- Poker Copilot Review
- New HUD Feature
- Sentence of the Day
- Early Access to new HUD: Take 2
- HUD Limitations
- Early access to new HUD for Full Tilt players
- Customising the Poker Copilot HUD
- Another PokerStars Update. Oh no.
- On Luck and Success
- Poker Copilot Update Available
- PokerStars Tournament Summary Problems
- HUD Sneak Preview
- Instead of "rewriting from scratch..."
-
▼
December
(28)


1 comments:
Hi, Steve,
(Second attempt: capthcha got me.)
http://www.joelonsoftware.com/articles/fog0000000069.html
Post a Comment