Guest Editorial: On writing SQL

  • Jeff Moden (12/12/2008)


    Heh... I've found that helical fletching makes a high velocity pork chop sound really cool as well as enhancing the flight path... haven't gotten into the bowyer mode of building launchers because, unless the bone is just right, pork chops are difficult to properly set a nock in. 😉

    What are you using? A 'tater cannon?

  • It's 5 degrees F outside these days here in central Washington state so there's not much outdoor arrow & inanimate object flinging going on, but I've got a batch of IPA slated to mash up in mid-January. I'll toast one for you when it's done!


    maddog

  • Thought provoking article Phil.

    So many comments on this article and sub-comments, that I feel less inclined to add much except the following:

    1. I think the biggest skill required, and the hardest one to teach, is being able to visualize the project and the appropriate relationship(s) to the business at hand. Sure you can train another to build from the building-block level, but good craftsmanship and re/useability is hard to teach. It is earned through personal effort and experience. Some have a gift "see the big picture"; the rest have to learn by rote. Sometimes when asked to build an peach-processsor in an orange juice factory, you have to be able to see your way enough to know how to stem or modify the requirements; sometimes you have to know when to let the requestor(s) have what they asked for, so that the real changes will happen with understanding. The writing of a complicated SProc is no different than writing a function in an application: inputs, outputs, with business logic between. Some environments are more conducive to logic, syntax, and error tracking than others, but the design moment is nearly identical, and internally digested and regurgitated. Experienced personal effort and skill in the design are what make that moment and the intelligence transferrable and reusable. This leads to my second point...

    2. The more things change, the more they stay the same. Agile, Extreme, et. al, and even new development lingo all seem to resurrect base concepts that are only presented in new light. Such concepts as are well known to those involved in the industry for more than a decade. Especially in the realm of methodologies; only the syntax and environment seems to change, all in an effort to codify tenets that are more intangible integritable skills than real and new technology. Once what is behind the new "acronym" is understood, it more often than not is just a redeaux, or a grouping of known concepts.

    For those out there that keep thinking they will be out-dated, remind yourself to learn what is really behind the new lingo before passing judgement on your skills.

  • gcopeland (12/17/2008)


    I always have to explain to tech gurus that, in business, the only poorly written system is one that doesn't meet customer requirements. I agree that it should also be good from a technical perspective, but only because that demonstrates good craftsmanship. The customer could care less.

    Ooooohhhh, I so disagree with that... the customer almost never includes performance and scalability requirements in any quantifiable manner... but they do get awfully ticked when it isn't designed to handle either. Few companies consider either in the code they've "engineered" because they don't think the customer would or could care. Emphasis on the words "don't think". 😉

    Heh... as a technical guru, I find myself explaining to people that should know that if you think the customer could care less, you're dreadfully wrong.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • dphillips (12/17/2008)


    Jeff Moden (12/12/2008)


    Heh... I've found that helical fletching makes a high velocity pork chop sound really cool as well as enhancing the flight path... haven't gotten into the bowyer mode of building launchers because, unless the bone is just right, pork chops are difficult to properly set a nock in. 😉

    What are you using? A 'tater cannon?

    Nah... the pork chop thing is mostly a metaphor for me. But, I did build a 'tater cannon two summers ago... 2' by 6" combustion chamber, 5' by 2" barrel... and a 5' by 2" removable barrel extension. I haven't made it so it's self ventilating or fueling, yet... but it does have a push button electronic ignition. I haven't measured the muzzle velocity or the ballistics curves, but depending on the charge, I get between 12 and 14 seconds hangtime out of it without the barrel extension. Haven't actually tried it with the extension, yet.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Potato cannons are all kinds of awesome. Mine is 4" combustion chamber by about a foot, then a 4 foot 2" barrel. Fueled from propane tank mounted to the side with a hose and a valve. Electronic ignition too. Can fire a spud the length of a football field (Canadian, not American).

    I need a trebuchet now so I can get rid of leftover pumpkins.

  • Jeff Moden (12/17/2008)


    dphillips (12/17/2008)


    Jeff Moden (12/12/2008)


    Heh... I've found that helical fletching makes a high velocity pork chop sound really cool as well as enhancing the flight path... haven't gotten into the bowyer mode of building launchers because, unless the bone is just right, pork chops are difficult to properly set a nock in. 😉

    What are you using? A 'tater cannon?

    Nah... the pork chop thing is mostly a metaphor for me. But, I did build a 'tater cannon two summers ago... 2' by 6" combustion chamber, 5' by 2" barrel... and a 5' by 2" removable barrel extension. I haven't made it so it's self ventilating or fueling, yet... but it does have a push button electronic ignition. I haven't measured the muzzle velocity or the ballistics curves, but depending on the charge, I get between 12 and 14 seconds hangtime out of it without the barrel extension. Haven't actually tried it with the extension, yet.

    Nice! The extension will give you more accuracy and slightly less distance. Don't have one myself, but a friend of mine was always too happy to demonstrate his. I preferred ModRocs punching holes into the sky, but got out of that after 9/11. Too painfull to walk the red tape any more, over false-information and fear-driven legislation. I am affraid that 'tater cannons fell into that mess too. Even R/C is taking a hit.

  • Ian Massi (12/17/2008)


    Potato cannons are all kinds of awesome. Mine is 4" combustion chamber by about a foot, then a 4 foot 2" barrel. Fueled from propane tank mounted to the side with a hose and a valve. Electronic ignition too. Can fire a spud the length of a football field (Canadian, not American).

    I need a trebuchet now so I can get rid of leftover pumpkins.

    A couple of years ago we went to our local renaissance festival/craft faire and there was a guy with a treb chucking pumpkins at a garbage dumpster. I was lucky and saw him hit it once! Even the misses were cool. He also did plate armor for cats and rats, all kinds of awesome!

    We did tennis ball cannons. I think they were soup cans, both ends cut, taped together. Hole punched in the side of the bottom can to ignite the lighter fluid. Made a nice *phoom!* and threw it a fair distance.

    I really should make one again some time, those were fun. And then there was the BB machine gun that we hooked up to my dad's industrial air compressor....

    -----
    [font="Arial"]Knowledge is of two kinds. We know a subject ourselves or we know where we can find information upon it. --Samuel Johnson[/font]

  • maddogs (12/17/2008)


    It's 5 degrees F outside these days here in central Washington state so there's not much outdoor arrow & inanimate object flinging going on, but I've got a batch of IPA slated to mash up in mid-January. I'll toast one for you when it's done!

    Be careful, too much can lead to rampant bowyerism. 😀

    [font="Times New Roman"]-- RBarryYoung[/font], [font="Times New Roman"] (302)375-0451[/font] blog: MovingSQL.com, Twitter: @RBarryYoung[font="Arial Black"]
    Proactive Performance Solutions, Inc.
    [/font]
    [font="Verdana"] "Performance is our middle name."[/font]

  • RBarryYoung (12/17/2008)


    maddogs (12/17/2008)


    It's 5 degrees F outside these days here in central Washington state so there's not much outdoor arrow & inanimate object flinging going on, but I've got a batch of IPA slated to mash up in mid-January. I'll toast one for you when it's done!

    Be careful, too much can lead to rampant bowyerism. 😀

    Har! I'll have to pass that tidbit on to my friend in the archery business.


    maddog

  • Jeff Moden (12/17/2008)


    Ooooohhhh, I so disagree with that... the customer almost never includes performance and scalability requirements in any quantifiable manner... but they do get awfully ticked when it isn't designed to handle either. Few companies consider either in the code they've "engineered" because they don't think the customer would or could care. Emphasis on the words "don't think". 😉

    Not sure why you don't agree with me, because I certainly agree with you. Performance and scalability may certainly be requirements, but my expertise is usually much better in these areas than the customers, so it is my responsibility to identify these requirements, not theirs. Maintainability is another requirement the customer knows nothing about, but I would certainly never build a system without addressing it (especially since it will probably be me doing the maintenance).

    Just saying that meeting customer requirements is more important to the customer than the technical perfection of a business system. I don't appreciate tech gurus that get snarky with me about this or that little issue without noticing how slick my user interfaces are.

  • gcopeland (12/17/2008)


    Jeff Moden (12/17/2008)


    Ooooohhhh, I so disagree with that... the customer almost never includes performance and scalability requirements in any quantifiable manner... but they do get awfully ticked when it isn't designed to handle either. Few companies consider either in the code they've "engineered" because they don't think the customer would or could care. Emphasis on the words "don't think". 😉

    Not sure why you don't agree with me, because I certainly agree with you. Performance and scalability may certainly be requirements, but my expertise is usually much better in these areas than the customers, so it is my responsibility to identify these requirements, not theirs. Maintainability is another requirement the customer knows nothing about, but I would certainly never build a system without addressing it (especially since it will probably be me doing the maintenance).

    Just saying that meeting customer requirements is more important to the customer than the technical perfection of a business system. I don't appreciate tech gurus that get snarky with me about this or that little issue without noticing how slick my user interfaces are.

    Ah... got it! I misread your post... I thought you were saying it was alright to give the customer only what they wanted instead of what they needed. My bad.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • I think customers rarely know what they need, or even they want. They have some vague idea, but they don't really think it through. It's important we kind of guide them along, use our expertise to ensure they have a positive experience.

    Not that we give away things for free, but do a good job, at a good cost.

  • Steve Jones - Editor (12/18/2008)


    I think customers rarely know what they need, or even they want. They have some vague idea, but they don't really think it through. It's important we kind of guide them along, use our expertise to ensure they have a positive experience.

    Not that we give away things for free, but do a good job, at a good cost.

    Some customers don't even know what business they are in or how their customers pay them. I kid you not.

Viewing 14 posts - 61 through 73 (of 73 total)

You must be logged in to reply to this topic. Login to reply