<div dir="ltr">Ancillary story.<div><br></div><div>On one occasion I did do a detailed business rule design to the extant of constructing a full on Zed document. In this case there were 10-15K lines of completely opaque RPG code dealing with pricing. Not a living soul on this planet understood how pails, buckets, gobs, and dump trucks full shadowy data (most of which at the end of the day, didn't influence a damn thing) were poured into said system and then machinations resulting in spitting out a price from the other end. Think your digestive track here and you're pretty close.<div>
<br></div><div style>It took weeks to put the document together. But ... when we went to code, it was the smoothest flowing constant stream effort to completion of any software project I've experienced. After code completion we found far more bugs in the spec than we did in the code. Most of the issues were failures to uncover subtle corner cases (most of which were themselves bugs, legacy deprecated rules etc) in the RPG code.</div>
</div><div style><br></div><div style>Summary.</div><div style>Overall far less bugs.</div><div style>Lesser proportion of bugs were from variance between spec and code.</div><div style>Most bugs were in variance between spec and reality (actual business rules).</div>
<div style>Overall, I liked it the approach to the point where I would apply it again.</div><div style>Interestingly, I never have, though there have been a few situations where it would have been applicable.</div><div style>
<br></div><div style>These days, I'd throw someone out the window who wanted to start coding from the get go with the idea we'll sort of Agile random walk the code and logic to the desired end state, as I will someone who advocating full on upfront MBase.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 21, 2013 at 11:36 AM, Richard Cleis <span dir="ltr"><<a href="mailto:rcleis@me.com" target="_blank">rcleis@me.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
My experience is the same. But try to explain to a program or project manager that at least four things gradually change to complete a project: design, code, tests, and docs. I am no longer expecting to ever work on a project where the leaders do not insist each of those is a milestone completed in some exact order that was preconceived by someone who never finished a good project.<br>
<br>
rac<br>
<br>
On Mar 19, 2013, at 2:29 PM, Patrick Li wrote:<br>
<br>
> My personal experience is that a good and detailed design is hard to<br>
> get to *without* doing the coding.<br>
> -Patrick<br>
><br>
> On Tue, Mar 19, 2013 at 1:50 PM, Jos Koot <<a href="mailto:jos.koot@gmail.com">jos.koot@gmail.com</a>> wrote:<br>
>> One remark down intermixed in your email.<br>
>> Jos<br>
>><br>
>>> -----Original Message-----<br>
>>> From: <a href="mailto:users-bounces@racket-lang.org">users-bounces@racket-lang.org</a><br>
>>> [mailto:<a href="mailto:users-bounces@racket-lang.org">users-bounces@racket-lang.org</a>] On Behalf Of Hendrik Boom<br>
>>> Sent: martes, 19 de marzo de 2013 15:15<br>
>>> To: <a href="mailto:users@racket-lang.org">users@racket-lang.org</a><br>
>>> Subject: Re: [racket] OFFTOPIC - Quote on Programming<br>
>>><br>
>>> I forget where that quotation came from originally, but it<br>
>>> antedated the<br>
>>> days where internal documentation was the norm.<br>
>>><br>
>>> On Tue, Mar 19, 2013 at 06:20:57AM +0100, Jos Koot wrote:<br>
>>>> Well, that may depend on how you define "clever code".<br>
>>> Surely it is clever<br>
>>>> to write well documented code that can easily be<br>
>>> understood, debugged,<br>
>>>> maintained and reused by yourself and by others.<br>
>>><br>
>>> The "clever" refers to cleverness merely in producing a<br>
>>> foemalism that<br>
>>> appears to work.<br>
>>><br>
>>>> Understanding may require<br>
>>>> knowledge of the discipline the code is written for, of<br>
>>> course. In my<br>
>>>> opinion it helps a lot first finishing the documentation<br>
>>> and the design<br>
>>>> (both user and 'inside' docs) before starting coding.<br>
>>><br>
>>> You're talking about metacleverness -- the know-yourself kind of<br>
>>> cleverness that acknowledges your own limitations and take them into<br>
>>> account.<br>
>>><br>
>>>> With good and well<br>
>>>> described design it is even possible to leave the coding to<br>
>>> another person,<br>
>>>> just like an architect designs a building and constructors build it.<br>
>>>> My 2c, Jos<br>
>>><br>
>>> I've never found it to be feasible to leave the coding to another<br>
>>> person, except in cases where the remaining coding is so<br>
>>> trivial that a<br>
>>> machine could do it.<br>
>><br>
>> I have experienced some good things leaving the coding to others. I think<br>
>> that in some cases a good and detailed design makes coding almost trivial.<br>
>><br>
>>><br>
>>> [ In which case it makes sense to use a compiler. :-) ]<br>
>>><br>
>>> -- hendrik<br>
>>>><br>
>>>> From: <a href="mailto:users-bounces@racket-lang.org">users-bounces@racket-lang.org</a><br>
>>> [mailto:<a href="mailto:users-bounces@racket-lang.org">users-bounces@racket-lang.org</a>]<br>
>>>> On Behalf Of Harry Spier<br>
>>>> Sent: martes, 19 de marzo de 2013 2:56<br>
>>>> To: users<br>
>>>> Subject: [racket] OFFTOPIC - Quote on Programming<br>
>>>><br>
>>>><br>
>>>> I found this quote on a blog and couldn't help sharing it :-)<br>
>>>><br>
>>>><br>
>>>> "Debugging is twice as hard as writing the code in the first place.<br>
>>>> Therefore if you write the code as cleverly as possible, you are by<br>
>>>> definition not smart enough to debug it." Brian Kernigan<br>
>>>><br>
>>><br>
>>>> ____________________<br>
>>>> Racket Users list:<br>
>>>> <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
>>><br>
>>> ____________________<br>
>>> Racket Users list:<br>
>>> <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
>><br>
>> ____________________<br>
>> Racket Users list:<br>
>> <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
> ____________________<br>
> Racket Users list:<br>
> <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
<br>
<br>
____________________<br>
Racket Users list:<br>
<a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div><br></div>