[AccessD] Lazy, or Agile: that is the question... - Was Re:When to Use a JunctionTable

Eric Barro ebarro at verizon.net
Mon May 7 10:35:55 CDT 2007


Shamil,

I think that if you were to check with the principles of Agile Development
you will note that the goal is rapid application development (RAD) but not
at the expense of technical excellence and good design.

http://en.wikipedia.org/wiki/Agile_software_development

Specifically... 

Some of the principles behind the Agile Manifesto are:

    * Customer satisfaction by rapid, continuous delivery of useful software
    * Working software is delivered frequently (weeks rather than months)
    * Working software is the principal measure of progress
    * Even late changes in requirements are welcomed
    * Close, daily, cooperation between business people and developers
    * Face-to-face conversation is the best form of communication
    * Projects are built around motivated individuals, who should be trusted
    * Continuous attention to technical excellence and good design
    * Simplicity
    * Self-organizing teams
    * Regular adaptation to changing circumstances

--Eric

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Shamil
Salakhetdinov
Sent: Sunday, May 06, 2007 3:08 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Lazy, or Agile: that is the question... - Was Re:When
to Use a JunctionTable

Hi Gustav,

The point is agile development - to implement and to deliver ASAP requested
*functionality*. Customers most of the time do not care how you achieve the
result: there are exceptions but these are few - these *exceptional^
customers who force you to use this or that *development method(ologies)*
are another subject and we can discuss it in another thread not here.

<<<
... the client may call on others to judge your quick'n'dirty delivery...
>>>
No problem with that at all, Gustav.
I can find many arguments to "defend" my agile position/approach: you know
I'm a professional "old-school BDUF" developer with rich experience in this
BDUF forcing a developer to foresee all the future change requests and
requests for new functionality. Yes, I do know that customers change their
mind often and I'm ready and I do know what to do to promptly
convert/refactor "quick'n'dirty" solution to the "right" one...

Therefore no problem with my customer calling other developers to check - if
he will decide he needs "right" solution from the very beginning I will try
to explain him that he will get it promptly when his business will urge for
this "right" solution but currently, I will tell him, "quick'n'dirty"
solution is all he needs....

Yes, my approach is risky but USD100 vs. USD300 for other solutions should
make the difference for customer to charge me with this project. And this my
sample case is just a sample and of course USD200 not a big difference but
in real life case that could be EUR10,000 vs. EUR30,000 and one month of
work until delivery vs. three months of work until delivery - that bigger
financial and time difference, I expect you agree, will "play on my side"...

<<<
Second, programming should be fun
>>>
Agile development is a lot of fun, Gustav. Much more fun than BDUF or
"right" development are. (I know what I'm saying having spent most of my
development carrier working on projects using BDUF or "right" development
methodologies) And agile development needs a good portion of courage - and
when you see how you "refactor" this courage into useful delivered on time
and on budget applications then you get even more fun from that software
development business activity...

And agile development is not easy. And it needs a lot of experience to be
effective. I'm leaning it by doing my customers' projects. And it works.
Still there are a lot to learn - in a nutshell agile is a natural for
software development trial'n'error procedure but unlike traditional BDUF or
"right" approaches agile constantly gives "perceivable" results and these
"perceivable" results feedback is a fun also: everybody who worked on large
projects could remember months (and years?) of design and development before
delivery and who experienced such projects do remember that the more months
(years) a project takes before delivery the less is the team and customers'
optimism, the higher is the probability that the finally delivered software
will not satisfy customers' business needs...

And "right" solutions are also constantly changing - that is the fact, and
the more "right" is the solution delivered using traditional development
methodologies the less easier to refactor such "right" solutions into
"proper" ones and then again to the "right" one and so on...

Agile gives you experience and courage (and fun from this courage) I
mentioned above to react promptly on change requests delivering new
functionality when it's needed. And "right" and BDUF approaches do not
give/do not develop in you this experience and courage. I know that Gustav
and I know you know that too of course - the more complex software you
develop becomes the less courage you have while fixing bugs in it or
implementing new functionality, which results in changing existing code -
"don't touch it when it works well to not make it broken" mantra is far from
being called a "courageous developer slogan" :)

And modern development needs a lot of courage because modern software is
becoming more and more complicated and because change requests are becoming
"a never ending storm" around you and a developer has to work in that
"stormy environment" and deliver useful functionality in time and on
budget...

<<<
Personally I hate when I have to make "quick" solutions - it happens - and
such work may even tend to take longer time than it should.
>>>
Yes, Gustav - "been there seen that", well, I must say I'm still "one leg
there and one leg here": I think this "hatred of quick'n'dirty solutions",
which is still living in hearts of experienced software developers as you
and me and many developers here are - this hatred comes from fear to fail to
deliver "right" software on *fixed* time and budget, resulting in many hours
of overwork, badly affecting private life and finances...
But when "right" solution is getting fallen as "playing cards home" a few
hours, days, months after delivery this sad picture results in even more
hatred and fear not fun... I can be wrong, but I guess I'm not - this is
what happened many times in the past with me and still happens, this is what
described in many books on agile software development I read, this is what
should happen with everybody except a few genius developers who I have never
met/seen - have you?

As for the subject and my proposal to use INSTEAD OF triggers for "agile
database design and development" - I have searched Internet and as far as I
see I'm not alone :) - well, of course I'm not talking about "silver bullet"
- and I asked, dear all, in my first posting what weak positions you see in
this approach: could it result in less reactive application system - very
slow system reaction compared to the traditional "right"
development/database design practices? I think that from financial point of
view proposed agile approach is (much) more attractive or that point is also
questionable? I assume that being experienced an agile developer will not
fail to refactor his "quick'n'dirty" solution into the "right" one when
needed on the same or slightly higher but in long run for sure considerably
less time and budget. Less in long run because agile will deliver only what
is needed not what "could be needed in the future".

My search on Internet has returned these useful links - I did do this search
after my first posting here:

VIEWS: THE KEY TO DATABASE AGILITY
http://www.tdan.com/i034ht03.htm 

Chapter 37 - Extending Triggers with INSTEAD OF
http://www.microsoft.com/technet/prodtechnol/sql/2000/reskit/part10/c3761.ms
px?mfr=true

Exploring SQL Server Triggers
http://msdn.microsoft.com/msdnmag/issues/03/12/DataPoints/ 

Exploring SQL Server Triggers: Part 2
http://msdn.microsoft.com/msdnmag/issues/04/01/DataPoints/ 

Making use of INSTEAD-OF triggers in SQL Server 2005
http://articles.techrepublic.com.com/5100-9592_11-6113179.html 

As you can find if you read through the articles from the above links
proposed approach could fail for large systems. But nobody did try to check
how well/bad it will work for such large systems. If I will find free time
in the near future I will try to check that but first I will try to collect
all possible information on this subject to not waste time to "reinvent the
(bad) wheel"...

And of course similar agile "quick'n'dirty" approach can be applied by using
stored procedures as an abstraction layer. In this latter case there is no
doubts that there will be no any system reaction degradation but using SPs
could be more laborious than INSTEAD OF triggers and what is also good with
triggers from conceptual point of view is that they will *physically* belong
to the objects(/VIEWs) depending on them - i.e. they will implement business
rules for the business objects owning them...

There are other advantages and disadvantages of views with INSTEAD OF
triggers - you can read about them by following the above URLs...

That's it for today.

Your turn now :)

Thank you.

--
Shamil
 
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock
Sent: Sunday, May 06, 2007 10:20 AM
To: accessd at databaseadvisors.com
Subject: Re: [AccessD] Lazy,or Agile: that is the question... - Was Re:When
to Use a JunctionTable

Hi Shamil

I see your point. The perfect solution that takes forever to implement is
useless.
However, it is my experience that once you've pinpointed if not the perfect
solution then a "right" solution, it doesn't take that much longer to
develop than a quick and dirty.

Add to this two topics: first, the client may call on others to judge your
quick'n'dirty delivery with the result that you are stamped as a non-pro.
Second, programming should be fun. Personally I hate when I have to make
"quick" solutions - it happens - and such work may even tend to take longer
time than it should.

/gustav

<<< tail skipped >>>

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com






More information about the AccessD mailing list