November 2005
M T W T F S S
« Oct   Dec »
 123456
78910111213
14151617181920
21222324252627
282930  
Chris Donnan

Create Your Badge

Chris Donnan : Programming – Brooklyn Style

software, trading, family, fun

Slice the Work Vertically, Not Horizontally .. IoC/DI Frameworks
I have been debating with a client about how to ’slice up’ the implementation of a piece of software development/ refactoring. Some folks on the client team were advocating what I consider to be a fairly deadly approach to developing software. They were basically advocaing a waterfall-ish approach to developing the software… Build the backmost layer 1st, then the next, the next, you get to the UI in the end, etc.I stumbled across this http://codebetter.com/blogs/jeremy.miller/archive/2005/11/26/135098.aspx blog entry from Jeremy miller. He is on my feed list these days…. And I quote….

Slice the Work Vertically, Not Horizontally

The metaphor of software development as construction is common, but horribly wrong. Approaching software development as constructing a structure on top of a foundation, then adding the finishing trim can be a slow, painful path to project failure.

Time and time again I’ve learned or observed that projects go much smoother when you build vertically instead of horizontally. What I mean by this is that you build a new system by creating a feature at a time with the entire stack of UI, business logic, and database work to make the feature fully functional. As you build new features you religiously eliminate duplication to avoid creating a Stovepipe anti-pattern and harvest reusable code.

One of the more disappointing project failures I’ve observed was the very first .Net pilot project in a VB6 shop. I wasn’t involved with the project, but I had a stake in the project as it was going to prove the viability of .Net for application development and also be a pilot for doing iterative development.* Unfortunately they blundered by crafting an iteration plan that called for them to write the entire data access layer first, the business layer second, then finally put together the user interface. It failed miserably. When the project was cancelled midway they didn’t have the slightest bit of deployable code because they had focused solely on the backend database. One of the other things they found out was that the data access they coded wasn’t exactly what the business and UI layers needed. In other words, they had wasted effort by speculatively creating code that turned out to be unnecessary.

He hit the nail on the head. YOU NEED TO HAVE DEPLOYABLE CODE ALL THE TIME. The risk of waterfalling is all or nothing. Either you finish the building, or you do not. I was just happy to see someone else using my terms exactly “Slice the Work Vertically, Not Horizontally” to describe how to do development work!!! The whole article is actually great – I suggest the full read.

He also references in this blog entry one of my favorite papers http://www.objectmentor.com/resources/articles/Principles_and_Patterns.PDF . Read it if you have not :)

He also references using IoC/DI frameworks. Please – dev community – get behind IoC/DI frameworks and ideas. Seperation of implementation and abstraction is KEY and these IoC/DI tools REALLY help make this stuff a help you!

All in all – he touched on a few near and dear to my heart items. I just had to give my 10 penny commentary :)

-CD


You can leave a response, or trackback from your own site.



My Gabe (Left-most) and his school best buddies!!!


You can leave a response, or trackback from your own site.



Love this

You can leave a response, or trackback from your own site.



Good Agile Dev Article

You can leave a response, or trackback from your own site.



Microsoft Lauds ‘Scrum’ Method for Software Projects

Microsoft Lauds ‘Scrum’ Method for Software Projects.

I have been scrumming for some time now – the folks at Finetix (my most excellent employer) are proud Scrum folks as well – with quite a few certified ScrumMasters

See Slashdot.org post
at EWeek


You can leave a response, or trackback from your own site.



Why coding standards??????

From: sun
Why have code conventions? Code conventions are important to programmers for a number of reasons:

  • 80% of the lifetime cost of a piece of software goes to maintenance.
  • Hardly any software is maintained for its whole life by the original author.
  • Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly.

From: My fav

  • Avoidance of errors/bugs, especially the hard-to-find ones.
  • Maintainability, by promoting some proven design principles.
  • Maintainability, by requiring or recommending a certain unity of style.
  • Performance, by dissuading wasteful practices.
  • Rules and recommendations are given that promote reliability and maintainability.

From: ambysoft

Why Coding Standards are Important
Coding standards for Java are important because they lead to greater consistency within your code and the
code of your teammates. Greater consistency leads to code that is easier to understand, which in turn
means it is easier to develop and to maintain. This reduces the overall cost of the applications that you
create.
You have to remember that your Java code will exist for a long time, long after you have moved on to other
projects. An important goal during development is to ensure that you can transition your work to another
developer, or to another team of developers, so that they can continue to maintain and enhance your work
without having to invest an unreasonable effort to understand your code. Code that is difficult to
understand runs the risk of being scrapped and rewritten – I wouldn’t be proud of the fact that my code
needed to be rewritten, would you? If everyone is doing their own thing then it makes it very difficult to
share code between developers, raising the cost of development and maintenance.
Inexperienced developers, and cowboys who do not know any better, will often fight having to follow
standards. They claim they can code faster if they do it their own way. Pure hogwash. They MIGHT be
able to get code out the door faster, but I doubt it. Cowboy programmers get hung up during testing when
several difficult-to-find bugs crop up, and when their code needs to be enhanced it often leads to a major
rewrite by them because they’re the only ones who understand their code. Is this the way that you want to
operate? I certainly do not.

From: macadamian

At Macadamian we’ve always believed the path to enlightenment starts with a solid set of Coding Conventions.

From: chris-lott

When a project tries to adhere to common standards a few good things happen:

  • programmers can go into any code and figure out what’s going on
  • new people can get up to speed quickly
  • people new to C++ are spared the need to develop a personal style and defend it to the death
  • people new to C++ are spared making the same mistakes over and over again
  • people make fewer mistakes in consistent environments
  • programmers have a common enemy :-)

From: extremeprogramming.org

Code must be formatted to agreed coding standards. Coding standards keep the code consistent and easy for the entire team to read and refactor.

PS – this is an extreme admonition – PROJECTS NEED CODING STANDARDS!!!!!


You can leave a response, or trackback from your own site.



I Got the Clearcase/UCM Blues too

Oh how I echo my colleague’s thoughts!!!

Marc

We are surely suffering!!! – Oh how I long for my friend Perforce!!!


You can leave a response, or trackback from your own site.



Lowly Blog Value!!

Ala : Another Finetix Fellow….


My blog is worth $0.00.
How much is your blog worth?

…amusing…


You can leave a response, or trackback from your own site.