January 2007
Monthly Archive
Monthly Archive
Posted by Andrey Khavryuchenko on 16 Jan 2007 | Tagged as: Summary
Chad Fowler on the edge of the years did a great job collecting most of the reasons why “rewrite it” software project fail.
My experience says that most of the time, people doing the Big Rewrite will assume that they’re doing an implementation and will staff and estimate accordingly.
Infinite “must be” and “wanna be” features list:
Imagine going to the hospital for a kidney transplant, and before and during the surgery saying to the surgeon: “Oh, and while you’re already in there digging around, I’ve had some problems with my lungs that could use a little attention. And, yes, I’ve been overeating terribly—-could you do one of those stomach reduction things I hear about? And on that note, how about a little plastic surgery since we’ve got the knives out?”
But by making it a Big Bang release, you’ve maximized the chances that you’ll be behind schedule when you get to the end, and you’ve therefore maximized the chances that you won’t spend enough time preparing. This results in a bad time for both you and your customers.
Justifications for Big Rewrite are too close to lies. And this happens too frequently.
The piles of justification lead to piles of additional work and/or piles of mismatched expectations and disappointment after release.
Existing product frequently coevolves with the “Big Rewrite” version.
The reasons above make any “big rewrite” project to fail, no matter what.
Posted by Andrey Khavryuchenko on 16 Jan 2007 | Tagged as: News
KDS Software Group releases development preview snapshot of Py2Py code reformatter.
It is a byproduct of the PyBeast project aimed to create the python mutation tester.
Now Py2Py code reformatter ignores all comments and 80-char line length requirement. Nevertheless, it produces the same AST as the original code.
The code is developed in a test-first manner and has 100% test coverage.
Feedback, criticism and bug reports are welcome.
Posted by Andrey Khavryuchenko on 15 Jan 2007 | Tagged as: Blog
Since it is not possible to predict every detail, every project plan, not just a software development one, needs a feedback loop.
The After Action Review is such feedback link, that was missing in the outline of basic software development process. The third component.
The first two key components are:
Originally it was employer by US Army to adapt to a fast-changing tactics of its opponents. Lately it was incorporated in all army actions and found its way into business.
In simplest form it consists just of four questions, that could be explored either individually or team-wide. These questions are:
In software development we apply them at every measurable activity step:
We were surprised how quickly the AAR highlights the open problems in the software project and in the software development process and how quckly and easily we were able to come up with useful and implementable decisions. Decisions that do work and improve the value we bring to a Customer.
It is such simple and powerful tool that not much could be written about it. You have to experience it: try doing daily AAR for at least of couple a weeks.
Apply the AAR and the decisions made rigirously and the world would turn around you.
More information about After Action Review:
Posted by Andrey Khavryuchenko on 14 Jan 2007 | Tagged as: Summary
Posts reviewed:
The bottom line:
How ‘done’ something looks should match how ‘done’ something is.
In more details:
Also, take into account that
The more “done” something appears, the more narrow and incremental the feedback.
In other words, to get more general feedback (e.g. about software and UI structure), make it more fuzzy.
See how it works for an html:
For Java SWIG:
Posted by Andrey Khavryuchenko on 14 Jan 2007 | Tagged as: Blog
Based on RFC 1925. It’s almost verbatim - most of truths are common.
Posted by Andrey Khavryuchenko on 14 Jan 2007 | Tagged as: Summary
Jeremy outlines the basic principles on writing a maintainable code in much more details that I would.
The principal points are:
The best ready-to-instant-use thing is Maintainable Code Checklist, which I copy here verbatim:
Question Yes comes from… Can I find the code related to the problem or the requested change? Good Naming, High Cohesion, Single Responsibility Principle, Separation of Concerns Can I understand the code? Good Naming, Composed Method, The Principle of Least Surprise, Can You See The Flow of the Code?, Encapsulation Is it easy to change the code? Don't Repeat Yourself, Wormhole Anti-Pattern, Open Closed Principle Can I quickly verify my changes in isolation? Loose Coupling, High Cohesion, Testability Can I make the change with a low risk of breaking existing features? Loose Coupling, High Cohesion, Open Closed Principle, Testability Will I know if and why something is broken? Fail Fast