We're not craftsmen and craftswomen

  • chrisn-585491 (1/16/2014)


    For all those who think that you shouldn't be striving to do a better job (NOTE: I didn't say always going to absolute perfection), I have to ask this: Have you looked at code you wrote 2/5/10 years ago? If so, are you looking at it and saying, "Yep, good enough" or are you looking at it and spotting issues that you would love to address if you had time because, as I usually refer to myself, old me was an idiot, and he really didn't know what he was doing.

    My response to Steve is based on the fact that he works at a great company that values quality software and cares about their employees. Some of us may not...

    It's great to preach quality to the masses when you don't have to deal with their realities. Of the developers in my division, I'm the go-to-guy. I get the hard and nasty problems, solve them and leave documented, designed code behind for my colleagues. I get rewarded with worse projects that no-one wants to do and no-one cares about the code or data quality, as long as crazy deadlines are met. It's positively Sisyphian and moral killing.

    So maybe it's not the developer or DBA or craftsman. Maybe it's their clients or managers that make the timelines or budgets that decide the quality.

    Although it is not always easy or realistic some people say that if things are that bad and the team cannot or will not change the situation then maybe it is time to move on. I have seen places that have learnt to change only after losing too many good people that they had relied upon.

    Gaz

    -- Stop your grinnin' and drop your linen...they're everywhere!!!

  • Stephanie J Brown (1/15/2014)


    The same can be said about our profession. Some people will be craftsman level, some will "build it with jigs", and some will "just get by".

    And different companies will hire different levels of people, depending on the corporate goals.

    And we all fill different roles at different times, sometimes in the same day.

    In general, your comment was spot on. Thanks for chiming in on this.

    [font="Verdana"]Please don't go. The drones need you. They look up to you.[/font]
    Connect to me on LinkedIn

  • Gary Varga (1/16/2014)


    Luis Cazares (1/15/2014)


    Tom Bakerman (1/15/2014)


    Luis Cazares (1/15/2014)


    In my experience, doing just enough to complete a job has resulted (most of the times) in errors that require extra work and more time invested than just doing it right in the first place.

    Companies and managers should understand that quality work requires an adequate time and working 20 hours a day won't increase productivity.

    I would claim that in this situation, the person did NOT do just enough to complete the job. If the results are incorrect, then the job is not completed. If I put wax on a piece of furniture meant for outdoor use, it doesn't matter how good a craftsman I am, the piece is not "fit for purpose".

    If someone was responsible of backing up a database and just created a backup, then that person did just enough to complete the job. If he validated the backup by fully restoring on a different instance, then he was being professional and went over the bare minimum.

    If we keep making excuses to do the bare minimum, we'll never get the opportunity to get a "craftsman job".

    Nope. A backup is not complete until it is validated.

    I was going to let this go, but I had a late night, so I need something to get the blood moving this morning.

    Are you really saying that you validate each and every backup? How many 9's of confidence to you go, because you'll never get to 100% without actually duplicating the working environment, rerunning all transactions, and then comparing between the two systems. As Toby said, you have to define Done.

    I think that the problem lies in the analogy between software development and any other work. Software development is like, well, software development. Period. Full stop. Any attempt at analogy only works when we discuss our jobs with "outsiders" (such as when I try to explain to my social worker wife what I did at work for the day). But to those of us working in software, the analogies just don't work. I do woodworking as a sideline. I can draw a piece of furniture for a client, we'll agree on a price, and I'll build it. The client doesn't stop me part way through and say "I know I said I wanted a chest of drawers, but I really meant a table" as happens almost all the time with software.

    There's been a lot of discussion about craftsmanship as quality. What is quality? Is it validating each and every backup, or is it simply ensuring that the backups ran each night? If I write a procedure that is well commented, easy to read, is it high quality although it doesn't do the write thing? Is Norm Abrams really the craftsman behind all the work that gets done on his shows, or just the guy in the flannel shirt in front of the camera (not to mention the whole power tool vs hand tool debate)?

    Our industry has a lot of people with various levels of knowledge. There have been lots of attempts to quantify those levels, such as professional licensing. Somebody used the term "just amateurs", but we all started out as "just amateur" professionals, and over time some of us manage to lose the amateur status, but unfortunately some of us keep that status even after 20 or 30 years. We all know that having a bunch of certifications doesn't magically change us from amateur to non-amateur, it's the skill with which we apply that knowledge we've gained that does it. As this discussion has progressed, I guess that I'd agree with the evolving definition of what a software craftsperson is. Maybe as a follow-up to Steve's editorial, somebody can refine that definition.

  • Tom Bakerman (1/16/2014)


    Gary Varga (1/16/2014)


    Luis Cazares (1/15/2014)


    Tom Bakerman (1/15/2014)


    Luis Cazares (1/15/2014)


    In my experience, doing just enough to complete a job has resulted (most of the times) in errors that require extra work and more time invested than just doing it right in the first place.

    Companies and managers should understand that quality work requires an adequate time and working 20 hours a day won't increase productivity.

    I would claim that in this situation, the person did NOT do just enough to complete the job. If the results are incorrect, then the job is not completed. If I put wax on a piece of furniture meant for outdoor use, it doesn't matter how good a craftsman I am, the piece is not "fit for purpose".

    If someone was responsible of backing up a database and just created a backup, then that person did just enough to complete the job. If he validated the backup by fully restoring on a different instance, then he was being professional and went over the bare minimum.

    If we keep making excuses to do the bare minimum, we'll never get the opportunity to get a "craftsman job".

    Nope. A backup is not complete until it is validated.

    I was going to let this go, but I had a late night, so I need something to get the blood moving this morning.

    Are you really saying that you validate each and every backup? How many 9's of confidence to you go, because you'll never get to 100% without actually duplicating the working environment, rerunning all transactions, and then comparing between the two systems. As Toby said, you have to define Done.

    I think that the problem lies in the analogy between software development and any other work. Software development is like, well, software development. Period. Full stop. Any attempt at analogy only works when we discuss our jobs with "outsiders" (such as when I try to explain to my social worker wife what I did at work for the day). But to those of us working in software, the analogies just don't work. I do woodworking as a sideline. I can draw a piece of furniture for a client, we'll agree on a price, and I'll build it. The client doesn't stop me part way through and say "I know I said I wanted a chest of drawers, but I really meant a table" as happens almost all the time with software.

    There's been a lot of discussion about craftsmanship as quality. What is quality? Is it validating each and every backup, or is it simply ensuring that the backups ran each night? If I write a procedure that is well commented, easy to read, is it high quality although it doesn't do the write thing? Is Norm Abrams really the craftsman behind all the work that gets done on his shows, or just the guy in the flannel shirt in front of the camera (not to mention the whole power tool vs hand tool debate)?

    Our industry has a lot of people with various levels of knowledge. There have been lots of attempts to quantify those levels, such as professional licensing. Somebody used the term "just amateurs", but we all started out as "just amateur" professionals, and over time some of us manage to lose the amateur status, but unfortunately some of us keep that status even after 20 or 30 years. We all know that having a bunch of certifications doesn't magically change us from amateur to non-amateur, it's the skill with which we apply that knowledge we've gained that does it. As this discussion has progressed, I guess that I'd agree with the evolving definition of what a software craftsperson is. Maybe as a follow-up to Steve's editorial, somebody can refine that definition.

    Maybe I am being pedantic here but the statement was:

    If someone was responsible of backing up a database and just created a backup

    in which case it suggest that it isn't another scheduled backup that is taken where the process has been tested and running a number of times. This is a backup requested for a specific point in time. If this cannot be restored due to a mistake (we all know that these happen) or a corruption (which rarely occur but do) then there can be serious repercussions.

    It is easy for me to say this because I am a developer :Whistling:

    Gaz

    -- Stop your grinnin' and drop your linen...they're everywhere!!!

  • Gary Varga (1/16/2014)


    Luis Cazares (1/15/2014)


    Tom Bakerman (1/15/2014)


    Luis Cazares (1/15/2014)


    In my experience, doing just enough to complete a job has resulted (most of the times) in errors that require extra work and more time invested than just doing it right in the first place.

    Companies and managers should understand that quality work requires an adequate time and working 20 hours a day won't increase productivity.

    I would claim that in this situation, the person did NOT do just enough to complete the job. If the results are incorrect, then the job is not completed. If I put wax on a piece of furniture meant for outdoor use, it doesn't matter how good a craftsman I am, the piece is not "fit for purpose".

    If someone was responsible of backing up a database and just created a backup, then that person did just enough to complete the job. If he validated the backup by fully restoring on a different instance, then he was being professional and went over the bare minimum.

    If we keep making excuses to do the bare minimum, we'll never get the opportunity to get a "craftsman job".

    Nope. A backup is not complete until it is validated.

    That was my point. Some people would stay with the creation of the backup and won't try to validate it.

    That's the difference between "craftsmen" and "amateurs".

    Luis C.
    General Disclaimer:
    Are you seriously taking the advice and code from someone from the internet without testing it? Do you at least understand it? Or can it easily kill your server?

    How to post data/code on a forum to get the best help: Option 1 / Option 2
  • I'm glad y'all have environments with space that let you validate your backups. Round here, I'm on the 'pray it worked' method, because I have no place to put it, particularly for our SoR which is our largest DB.

    No, literally. There's nowhere to go with that much data right now in my environments. Nor in my DR, which is where we're going if a restore fails.

    The generic you (and I) understand the value of validating backups. You can even automate the process to simplify things. I think I'm getting closer to the core of what about this article, and why the idea of 'being a craftsperson', is rubbing me the wrong way. Apologies, Steve, it's not the idea, it's the assumptions made from that being a method of approach. There's a lot of Ivory Tower going on.

    We should not make the assumption that we have the tools, the equipment, the space, or the financial backing to fix the previous three. The two industries I typically work in, Health Care and Finance, are late to technology compared to many other companies out there. Either that or I typically work for smaller companies with restrained budgets. I might be the *1* guy in the company/division/team who does SQL Dev. We may have racked RAIDs instead of a SAN. IT may be the red-headed stepchild given budget only because regulations say that if they don't have auditing outside of manual controls, they're going to be shut down.

    What does this restrict from our perspective? Options. Options in time, space, and tools. One place I worked at we couldn't implement RCSI because to do so expanded our TempDB to the point that we had to stand up another bay because the rack didn't have room to put another array into. It was financially unviable until we needed to significantly expand.

    Now, the idea of 'craftsman', as Steve presented it (if I understand what he means after his response to me), is the guy who takes pride in working with what he had and doing the best job he could. I'm okay with that (and made the previous situation work without RCSI). However, there's another implication being used here, and that's "If it's not perfect, you're an amateur." Such as with backup validation. That's really rubbing on me, particularly if that's the expectation and public views of my peers. In the end, we work for a business, not for the technology.


    - Craig Farrell

    Never stop learning, even if it hurts. Ego bruises are practically mandatory as you learn unless you've never risked enough to make a mistake.

    For better assistance in answering your questions[/url] | Forum Netiquette
    For index/tuning help, follow these directions.[/url] |Tally Tables[/url]

    Twitter: @AnyWayDBA

  • Personally, I'd like to thank everyone for the craftperson-like way they discussed this issue. :hehe: (I hope that's the last time I use "craftsperson-like".)

    [font="Verdana"]Please don't go. The drones need you. They look up to you.[/font]
    Connect to me on LinkedIn

  • I always do the best I can do within the constraints I am given. If it is time and resource constraints and I know that these are not sufficient to produce something that will be reliable and robust for at least 18 months then I will push back on those constraints.

    Most of the time its a triage situation.

    There is never time to do it right, but there is always time for bug fixes?

    There are a number of times I've kicked myself for not insisting on a certain level of quality. Handing over stuff that is going to cause people other than yourself pain is unforgivable.

  • If you would like to do it "right" but cannot because of restraints outside of ones control then, of course, there is no suggestion of being an amateur. This is on the assumption that the proper parties have been informed of the risks so that they can evaluate the scenario(s) and select the business mitigation strategy (a common one being "Ignore it").

    Once the risk has been raised then there is not necessarily a need to raise it at every reoccurrence of the same issue.

    It is essential, however, in this forum where we all have a potentially huge influence over how people work to highlight what is ideally done. It is up to the individual then to deal with their own unique reality.

    Gaz

    -- Stop your grinnin' and drop your linen...they're everywhere!!!

  • David.Poole (1/17/2014)


    I always do the best I can do within the constraints I am given. If it is time and resource constraints and I know that these are not sufficient to produce something that will be reliable and robust for at least 18 months then I will push back on those constraints.

    Most of the time its a triage situation.

    There is never time to do it right, but there is always time for bug fixes?

    There are a number of times I've kicked myself for not insisting on a certain level of quality. Handing over stuff that is going to cause people other than yourself pain is unforgivable.

    +1 Million.

    And that doesn't include the black eye that code can give the company in the eye of a very large public. Just because someone wants code real bad, doesn't mean that you have to give it to them that way. I wish the managers in some of the software sweatshops I've seen would understand that.

    And, no... being a craftsperson doesn't necessarily mean taking extra time to do something. It means that you already know how to do something the best way 'cuz you bin practicin'. If you have a family or a lot of other interests, it's sometimes very difficult to justify spending an hour or two each night learning something new. But, then again, lot's of folks will spend an hour or two working out at the gym. Why not work your brain, as well? It might even allow you to get out of the proverbial sweatshop, which your kids would love. 😉

    --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)

  • Evil Kraig F (1/16/2014)


    The generic you (and I) understand the value of validating backups. You can even automate the process to simplify things. I think I'm getting closer to the core of what about this article, and why the idea of 'being a craftsperson', is rubbing me the wrong way. Apologies, Steve, it's not the idea, it's the assumptions made from that being a method of approach. There's a lot of Ivory Tower going on.

    ...

    Now, the idea of 'craftsman', as Steve presented it (if I understand what he means after his response to me), is the guy who takes pride in working with what he had and doing the best job he could. I'm okay with that (and made the previous situation work without RCSI). However, there's another implication being used here, and that's "If it's not perfect, you're an amateur." Such as with backup validation. That's really rubbing on me, particularly if that's the expectation and public views of my peers. In the end, we work for a business, not for the technology.

    Craftmanship has nothing to do with perfection. It's not about results. It's about doing the best with what you have, and being professional.

    If you don't point out problems with your backups, or ask for space, or try to re-purpose old hardware and do restores periodically (or some other creative solution), then you're a craftsman.

    However if you're not even trying and throwing up your hands, or not caring, then you're not.

    I didn't intend to have people take the ivory tower approach, nor was that mine. I never said that we had to be perfect. I never said that things had to even work. We have to do more than the bare minimum we could with the limited resources we have.

    This isn't about results. It's about caring, improving, and doing our best. Far too many people accept much less than their best in this business (and others).

  • Jeff Moden (1/17/2014)


    And, no... being a craftsperson doesn't necessarily mean taking extra time to do something. It means that you already know how to do something the best way 'cuz you bin practicin'. If you have a family or a lot of other interests, it's sometimes very difficult to justify spending an hour or two each night learning something new. But, then again, lot's of folks will spend an hour or two working out at the gym. Why not work your brain, as well? It might even allow you to get out of the proverbial sweatshop, which your kids would love. 😉

    There's the way to be a craftsperson. Learn to do better in the same amount of time.

  • OK. The coffee break is over. I hope Steve writes another article soon so we can let this lie. Time to get back to BEING craftsmen so I don't have to unsubscribe.

    Rick
    Disaster Recovery = Backup ( Backup ( Your Backup ) )

  • Steve Jones - SSC Editor (1/21/2014)


    I didn't intend to have people take the ivory tower approach, nor was that mine. I never said that we had to be perfect. I never said that things had to even work.

    Quite true, Steve, and if I implied that was your comment my apologies. Those sentences ran together for the wrong implication apparently.


    - Craig Farrell

    Never stop learning, even if it hurts. Ego bruises are practically mandatory as you learn unless you've never risked enough to make a mistake.

    For better assistance in answering your questions[/url] | Forum Netiquette
    For index/tuning help, follow these directions.[/url] |Tally Tables[/url]

    Twitter: @AnyWayDBA

Viewing 14 posts - 46 through 58 (of 58 total)

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