How to deal with problematic programmer on project

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Steve Jorgensen

    How to deal with problematic programmer on project

    Hi all,

    I'm working on a project through a consulting company, and I'm writing some
    database code for use in another programmer's project in Excel/VBA. The other
    programmer is working through the same consulting company.

    I did not initially know this other programmer's experience level, but he
    seemed down to earth and friendly. I saw some signs of trouble after having
    him try to integrate some of my code, but chalked it up to him trying to wrap
    his mind around how another programmer thinks, which can be hard with the best
    of code.

    Now, it has become clear this person has some serious problems as a
    programmer, and I'm not sure the best way to handle it. it's going to reflect
    badly on me if the code I deliver keeps working badly, but believe me, my code
    is carefully designed and rigorously tested when delivered.

    The code I delivered for this project encapsulates -everything- a user could
    need from it in a few class modules. Create an instance of one class to
    manage the database connection and ADO command object, set its properties to
    assign parameters, and call its methods to get instance of more classes that
    encapsulate result recordsets, provide type-safe methods for accessing
    recordset fields, etc. Totally plug-and-play.

    So he's having performance problems, though my tests run well, and he has me
    look at his code. he took my tests module that is designed to thoroughly test
    -everything- my code does, and he's calling it in a loop! That means, he's
    among other things, recreating the conneciton and command objects each time
    through his loop when it only needs to be done once, and running the biggest,
    slowest queries my code can run each time even though his current code won't
    need those results at all. He created string variables that duplicate the
    purposes of my enumerated types, then uses both! He uses global variables to
    pass parameters, and never specifies variable data types. he obviously never
    compiles his code, because I can't try to compile mine to check for problems
    because I'd have to comment out about 50 lines compile errors in his code to
    do it, etc. He also fails to always use Option Explicit.

    How should I handle this situation diplomatically, but in a way that protects
    the project from total disaster?

    Any thoughts?
  • Jim Carter

    #2
    Re: How to deal with problematic programmer on project

    "Steve Jorgensen" <nospam@nospam. nospam> wrote in message
    news:ei7u30t4n8 14st93ghs97e3km 137eoasjv@4ax.c om...[color=blue]
    > Hi all,
    >
    > I'm working on a project through a consulting company, and I'm writing[/color]
    some[color=blue]
    > database code for use in another programmer's project in Excel/VBA. The[/color]
    other[color=blue]
    > programmer is working through the same consulting company.
    >
    > I did not initially know this other programmer's experience level, but he
    > seemed down to earth and friendly. I saw some signs of trouble after[/color]
    having[color=blue]
    > him try to integrate some of my code, but chalked it up to him trying to[/color]
    wrap[color=blue]
    > his mind around how another programmer thinks, which can be hard with the[/color]
    best[color=blue]
    > of code.
    >
    > Now, it has become clear this person has some serious problems as a
    > programmer, and I'm not sure the best way to handle it. it's going to[/color]
    reflect[color=blue]
    > badly on me if the code I deliver keeps working badly, but believe me, my[/color]
    code[color=blue]
    > is carefully designed and rigorously tested when delivered.
    >
    > The code I delivered for this project encapsulates -everything- a user[/color]
    could[color=blue]
    > need from it in a few class modules. Create an instance of one class to
    > manage the database connection and ADO command object, set its properties[/color]
    to[color=blue]
    > assign parameters, and call its methods to get instance of more classes[/color]
    that[color=blue]
    > encapsulate result recordsets, provide type-safe methods for accessing
    > recordset fields, etc. Totally plug-and-play.
    >
    > So he's having performance problems, though my tests run well, and he has[/color]
    me[color=blue]
    > look at his code. he took my tests module that is designed to thoroughly[/color]
    test[color=blue]
    > -everything- my code does, and he's calling it in a loop! That means,[/color]
    he's[color=blue]
    > among other things, recreating the conneciton and command objects each[/color]
    time[color=blue]
    > through his loop when it only needs to be done once, and running the[/color]
    biggest,[color=blue]
    > slowest queries my code can run each time even though his current code[/color]
    won't[color=blue]
    > need those results at all. He created string variables that duplicate the
    > purposes of my enumerated types, then uses both! He uses global variables[/color]
    to[color=blue]
    > pass parameters, and never specifies variable data types. he obviously[/color]
    never[color=blue]
    > compiles his code, because I can't try to compile mine to check for[/color]
    problems[color=blue]
    > because I'd have to comment out about 50 lines compile errors in his code[/color]
    to[color=blue]
    > do it, etc. He also fails to always use Option Explicit.
    >
    > How should I handle this situation diplomatically, but in a way that[/color]
    protects[color=blue]
    > the project from total disaster?
    >
    > Any thoughts?[/color]


    Stab him in the eye with a sharpened pencil.
    Leap up on to his desk.
    Stomp all over his keyboard.
    At the top of your voice, scream:
    "I am the Database Queen around here!"
    "Have you got that, bitch?"


    HTH

    Jim


    Comment

    • MacDermott

      #3
      Re: How to deal with problematic programmer on project

      Hi, Steve!

      Having been in the position of your colleague not so very long ago myself, I
      can feel your pain, but also guess at his.

      Excel permits a user to record a macro which duplicates the actions of
      keystrokes -
      in many cases, minor modifications of such code is all that it takes to
      "program in Excel/VBA".
      My guess is that your colleague is a high-end Excel user, who has also
      learned to record and modify macros.
      The whole concept of classes is not something such a user would necessarily
      be familiar with; it certainly sounds as if he hasn't fully grasped it.
      (In Access, we work with Forms all the time, so it's fairly easy to expand
      from that concept. In my experience, UserForms, although they exist in
      Excel, are not commonly used.)
      I'd also mention that if you've learned mostly by modifying recorded macros,
      Option Explicit and data types are not necessarily issues that would have
      arisen.
      And if you know of a way to compile Excel/VBA code other than running it,
      I'd love to learn!

      I think the significant question here is how interested he is in learning.
      His interest level, of course, may be strongly influenced by how
      diplomatically you make the suggestion.
      You could offer to spend a half an hour with him covering concepts like
      variable declarations, data types, and Option Explicit. Such a session
      should be enough to tell you whether he's able and willing to do such
      learning, and is short enough that nobody should get too upset about who's
      paying whom for it.
      If he still just doesn't seem to be getting it, you might want to talk to
      your supervisor at the agency -
      expressing a good deal of respect for his non-programming Excel
      abilities, but indicating he'd need some organized coursework to be the kind
      of developer they want.
      If he does get it, he's probably salvageable.
      One tactic I sometimes use in such cases is to say you need to provide
      some documentation with your code, so folks like him can use it
      appropriately, so you need his input on what should be in the documentation.
      This gives you a chance to explain its use thoroughly to him.
      If you know a good tutorial that explains classes and how to use them,
      you could refer him to that, and possibly save yourself some time.

      I don't know what the talent pool is in your area, but in the smaller city
      where I live, I've run into one - well, maybe two - competent Excel/VBA
      programmers in my decade or so of experience. It's not a common skill.

      HTH
      - Turtle



      "Steve Jorgensen" <nospam@nospam. nospam> wrote in message
      news:ei7u30t4n8 14st93ghs97e3km 137eoasjv@4ax.c om...[color=blue]
      > Hi all,
      >
      > I'm working on a project through a consulting company, and I'm writing[/color]
      some[color=blue]
      > database code for use in another programmer's project in Excel/VBA. The[/color]
      other[color=blue]
      > programmer is working through the same consulting company.
      >
      > I did not initially know this other programmer's experience level, but he
      > seemed down to earth and friendly. I saw some signs of trouble after[/color]
      having[color=blue]
      > him try to integrate some of my code, but chalked it up to him trying to[/color]
      wrap[color=blue]
      > his mind around how another programmer thinks, which can be hard with the[/color]
      best[color=blue]
      > of code.
      >
      > Now, it has become clear this person has some serious problems as a
      > programmer, and I'm not sure the best way to handle it. it's going to[/color]
      reflect[color=blue]
      > badly on me if the code I deliver keeps working badly, but believe me, my[/color]
      code[color=blue]
      > is carefully designed and rigorously tested when delivered.
      >
      > The code I delivered for this project encapsulates -everything- a user[/color]
      could[color=blue]
      > need from it in a few class modules. Create an instance of one class to
      > manage the database connection and ADO command object, set its properties[/color]
      to[color=blue]
      > assign parameters, and call its methods to get instance of more classes[/color]
      that[color=blue]
      > encapsulate result recordsets, provide type-safe methods for accessing
      > recordset fields, etc. Totally plug-and-play.
      >
      > So he's having performance problems, though my tests run well, and he has[/color]
      me[color=blue]
      > look at his code. he took my tests module that is designed to thoroughly[/color]
      test[color=blue]
      > -everything- my code does, and he's calling it in a loop! That means,[/color]
      he's[color=blue]
      > among other things, recreating the conneciton and command objects each[/color]
      time[color=blue]
      > through his loop when it only needs to be done once, and running the[/color]
      biggest,[color=blue]
      > slowest queries my code can run each time even though his current code[/color]
      won't[color=blue]
      > need those results at all. He created string variables that duplicate the
      > purposes of my enumerated types, then uses both! He uses global variables[/color]
      to[color=blue]
      > pass parameters, and never specifies variable data types. he obviously[/color]
      never[color=blue]
      > compiles his code, because I can't try to compile mine to check for[/color]
      problems[color=blue]
      > because I'd have to comment out about 50 lines compile errors in his code[/color]
      to[color=blue]
      > do it, etc. He also fails to always use Option Explicit.
      >
      > How should I handle this situation diplomatically, but in a way that[/color]
      protects[color=blue]
      > the project from total disaster?
      >
      > Any thoughts?[/color]


      Comment

      • DFS

        #4
        Re: How to deal with problematic programmer on project

        Education and communication is the key. Have you told him what you've told
        us (in a nice way, of course)? He'll probably appreciate the chance to
        learn a better way.

        OOP and classes can be difficult to understand and use in a spreadsheet/db
        interface environment. Are they necessary to the project? I'm sure in your
        mind they are, and I don't doubt your approach is clean and efficient, but
        he might not understand their usage. I've personally written classes and
        used class instances only a handful of times in 8 years of VBA coding
        (though on a couple of Java projects I worked on it was OOP from the start).

        Another option: you're a much more advanced developer than he is, so maybe
        it's possible for you to "step it down a notch" and make adjustments in your
        work to compensate for his knowledge base? "dumb it down" as it were...

        You should document the issues - summed up well by your 4th and 5th
        paragraphs - and make sure your consulting company project manager is aware
        of them. Maybe they'll split your assignments up differently, so there's
        less (or no) mingling of code, and fewer potential problems.




        "Steve Jorgensen" <nospam@nospam. nospam> wrote in message
        news:ei7u30t4n8 14st93ghs97e3km 137eoasjv@4ax.c om...[color=blue]
        > Hi all,
        >
        > I'm working on a project through a consulting company, and I'm writing[/color]
        some[color=blue]
        > database code for use in another programmer's project in Excel/VBA. The[/color]
        other[color=blue]
        > programmer is working through the same consulting company.
        >
        > I did not initially know this other programmer's experience level, but he
        > seemed down to earth and friendly. I saw some signs of trouble after[/color]
        having[color=blue]
        > him try to integrate some of my code, but chalked it up to him trying to[/color]
        wrap[color=blue]
        > his mind around how another programmer thinks, which can be hard with the[/color]
        best[color=blue]
        > of code.
        >
        > Now, it has become clear this person has some serious problems as a
        > programmer, and I'm not sure the best way to handle it. it's going to[/color]
        reflect[color=blue]
        > badly on me if the code I deliver keeps working badly, but believe me, my[/color]
        code[color=blue]
        > is carefully designed and rigorously tested when delivered.
        >
        > The code I delivered for this project encapsulates -everything- a user[/color]
        could[color=blue]
        > need from it in a few class modules. Create an instance of one class to
        > manage the database connection and ADO command object, set its properties[/color]
        to[color=blue]
        > assign parameters, and call its methods to get instance of more classes[/color]
        that[color=blue]
        > encapsulate result recordsets, provide type-safe methods for accessing
        > recordset fields, etc. Totally plug-and-play.
        >
        > So he's having performance problems, though my tests run well, and he has[/color]
        me[color=blue]
        > look at his code. he took my tests module that is designed to thoroughly[/color]
        test[color=blue]
        > -everything- my code does, and he's calling it in a loop! That means,[/color]
        he's[color=blue]
        > among other things, recreating the conneciton and command objects each[/color]
        time[color=blue]
        > through his loop when it only needs to be done once, and running the[/color]
        biggest,[color=blue]
        > slowest queries my code can run each time even though his current code[/color]
        won't[color=blue]
        > need those results at all. He created string variables that duplicate the
        > purposes of my enumerated types, then uses both! He uses global variables[/color]
        to[color=blue]
        > pass parameters, and never specifies variable data types. he obviously[/color]
        never[color=blue]
        > compiles his code, because I can't try to compile mine to check for[/color]
        problems[color=blue]
        > because I'd have to comment out about 50 lines compile errors in his code[/color]
        to[color=blue]
        > do it, etc. He also fails to always use Option Explicit.
        >
        > How should I handle this situation diplomatically, but in a way that[/color]
        protects[color=blue]
        > the project from total disaster?
        >
        > Any thoughts?[/color]


        Comment

        • Eric Schittlipz

          #5
          Re: How to deal with problematic programmer on project

          "DFS" <nospam@nospam. com> wrote in message
          news:103uicgn64 44q8d@corp.supe rnews.com...[color=blue]
          >
          > OOP and classes can be difficult to understand and use in a spreadsheet/db
          > interface environment. Are they necessary to the project? I'm sure in[/color]
          your[color=blue]
          > mind they are, and I don't doubt your approach is clean and efficient, but
          > he might not understand their usage. I've personally written classes and
          > used class instances only a handful of times in 8 years of VBA coding
          > (though on a couple of Java projects I worked on it was OOP from the[/color]
          start).[color=blue]
          >[/color]



          Within this newsgroup, you sometimes get the impression that classes were
          the only proper way to get anything done. Therefore, your best bet would be
          to rush out and get the Access Developer's Handbook and do everything how it
          is done there.

          Now what happens when you want some simple functionality like open an
          existing file. If you did it their way you would create about 1000 lines of
          code in a class module and about 250 lines in an associated module (although
          there is supposed to be some redundant code copied from other modules so
          perhaps not needed). Include heaps of extra functionality and roll it
          together with something that you can use to select colours, use callback
          functions etc. and sprinkle with copyright notices and heaps of developer
          notes.

          If you distribute .mdb files (so the code is available to the customer
          should you get hit by a bus) do you include these notices advertising the
          fact that it is not your code? Do you modify it sufficiently so that it is
          your code? Or do you say that putting a whole heap of code in your
          application which you didn't write and don't have the time to go through
          line by line, simply so that you can say you have achieved the Holy Grail of
          using a class in your application is not worth it.

          Even once you have written the class module and associated public functions,
          etc just look at the fun you have just to get the path to an Excel file (see
          below). I currently have a fraction of the number of lines of code in a
          module modOFN which includes a function:
          Public Function GetOFN(AccessOF N As MSA_OPENFILENAM E) As String
          Would any sane developer recommend I replace this clearly inferior public
          function with a vastly superior class module? If so, do I re-write it using
          my coding conventions and remove the ADH notes and copyright notices or
          perhaps modify the code but leave the notices, or perhaps just accept that
          it was
          written by more experienced developers and so not touch the code?

          I am genuinely interested. What do you folks do? It's a very popular
          book - is anyone using the ADH class modules?



          Private Sub cmdTest_Click()

          On Error GoTo Err_Handler

          Dim objDlg As CommonDlg
          Dim strPath As String

          Set objDlg = New CommonDlg

          With objDlg
          .CancelError = True
          .hWndOwner = Me.hWnd
          .OpenFlags = cdlOFNHideReadO nly Or cdlOFNEnableHoo k
          .DialogTitle = "Select file to import..."
          .Filter = "Excel Workbooks (*.xls)|*.xls"
          .CallBack = adhFnPtrToLong( AddressOf GFNCallback)
          .ShowOpen
          strPath = .FileName
          End With

          MsgBox "Holy Cow!" & vbCrLf & strPath

          Exit_Handler:

          If Not objDlg Is Nothing Then
          Set objDlg = Nothing
          End If

          Exit Sub

          Err_Handler:

          Select Case Err.Number

          Case cdlCancel
          ' Do Nothing

          Case Else
          MsgBox Err.Description , vbExclamation, "Error No: " & Err.Number
          Resume Exit_Handler

          End Select

          End Sub


          Comment

          • Brendan Reynolds

            #6
            Re: How to deal with problematic programmer on project

            I'm a big fan of the ADH, but no, I do not use the classes from the ADH, at
            least, not directly - I use them as learning tools to figure out how to do
            that stuff myself when I need to.

            And, no, I don't use classes for most things. I use them only when I need
            the code to be widely re-usable - reusable by me in other applications, and
            reusable by my colleagues.

            When I write code solely for my own use, in one application, I can make
            certain assumptions, based on the way that I like to do things, that I can
            not make when writing code that may be used in other applications, or by
            other developers who may prefer to do things in other ways. The alternative
            to using a class in the latter situation is often a very complex procedure,
            with a large number of optional arguments and lots of conditional loops to
            take different actions depending on the values of those optional arguments.
            In that situation, the procedure becomes more complex and difficult to
            maintain than a class would have been.

            --
            Brendan Reynolds

            "Eric Schittlipz" <eric@schittlip z.com> wrote in message
            news:c1nlvb$nm7 $1@hercules.bti nternet.com...[color=blue]
            > "DFS" <nospam@nospam. com> wrote in message
            > news:103uicgn64 44q8d@corp.supe rnews.com...[color=green]
            > >
            > > OOP and classes can be difficult to understand and use in a[/color][/color]
            spreadsheet/db[color=blue][color=green]
            > > interface environment. Are they necessary to the project? I'm sure in[/color]
            > your[color=green]
            > > mind they are, and I don't doubt your approach is clean and efficient,[/color][/color]
            but[color=blue][color=green]
            > > he might not understand their usage. I've personally written classes[/color][/color]
            and[color=blue][color=green]
            > > used class instances only a handful of times in 8 years of VBA coding
            > > (though on a couple of Java projects I worked on it was OOP from the[/color]
            > start).[color=green]
            > >[/color]
            >
            >
            >
            > Within this newsgroup, you sometimes get the impression that classes were
            > the only proper way to get anything done. Therefore, your best bet would[/color]
            be[color=blue]
            > to rush out and get the Access Developer's Handbook and do everything how[/color]
            it[color=blue]
            > is done there.
            >
            > Now what happens when you want some simple functionality like open an
            > existing file. If you did it their way you would create about 1000 lines[/color]
            of[color=blue]
            > code in a class module and about 250 lines in an associated module[/color]
            (although[color=blue]
            > there is supposed to be some redundant code copied from other modules so
            > perhaps not needed). Include heaps of extra functionality and roll it
            > together with something that you can use to select colours, use callback
            > functions etc. and sprinkle with copyright notices and heaps of developer
            > notes.
            >
            > If you distribute .mdb files (so the code is available to the customer
            > should you get hit by a bus) do you include these notices advertising the
            > fact that it is not your code? Do you modify it sufficiently so that it[/color]
            is[color=blue]
            > your code? Or do you say that putting a whole heap of code in your
            > application which you didn't write and don't have the time to go through
            > line by line, simply so that you can say you have achieved the Holy Grail[/color]
            of[color=blue]
            > using a class in your application is not worth it.
            >
            > Even once you have written the class module and associated public[/color]
            functions,[color=blue]
            > etc just look at the fun you have just to get the path to an Excel file[/color]
            (see[color=blue]
            > below). I currently have a fraction of the number of lines of code in a
            > module modOFN which includes a function:
            > Public Function GetOFN(AccessOF N As MSA_OPENFILENAM E) As String
            > Would any sane developer recommend I replace this clearly inferior public
            > function with a vastly superior class module? If so, do I re-write it[/color]
            using[color=blue]
            > my coding conventions and remove the ADH notes and copyright notices or
            > perhaps modify the code but leave the notices, or perhaps just accept that
            > it was
            > written by more experienced developers and so not touch the code?
            >
            > I am genuinely interested. What do you folks do? It's a very popular
            > book - is anyone using the ADH class modules?
            >
            >
            >
            > Private Sub cmdTest_Click()
            >
            > On Error GoTo Err_Handler
            >
            > Dim objDlg As CommonDlg
            > Dim strPath As String
            >
            > Set objDlg = New CommonDlg
            >
            > With objDlg
            > .CancelError = True
            > .hWndOwner = Me.hWnd
            > .OpenFlags = cdlOFNHideReadO nly Or cdlOFNEnableHoo k
            > .DialogTitle = "Select file to import..."
            > .Filter = "Excel Workbooks (*.xls)|*.xls"
            > .CallBack = adhFnPtrToLong( AddressOf GFNCallback)
            > .ShowOpen
            > strPath = .FileName
            > End With
            >
            > MsgBox "Holy Cow!" & vbCrLf & strPath
            >
            > Exit_Handler:
            >
            > If Not objDlg Is Nothing Then
            > Set objDlg = Nothing
            > End If
            >
            > Exit Sub
            >
            > Err_Handler:
            >
            > Select Case Err.Number
            >
            > Case cdlCancel
            > ' Do Nothing
            >
            > Case Else
            > MsgBox Err.Description , vbExclamation, "Error No: " & Err.Number
            > Resume Exit_Handler
            >
            > End Select
            >
            > End Sub
            >
            >[/color]


            Comment

            • Lyle Fairfield

              #7
              Re: How to deal with problematic programmer on project

              "Eric Schittlipz" <eric@schittlip z.com> wrote in
              news:c1nlvb$nm7 $1@hercules.bti nternet.com:
              [color=blue]
              > Within this newsgroup, you sometimes get the impression that classes
              > were the only proper way to get anything done. Therefore, your best bet
              > would be to rush out and get the Access Developer's Handbook and do
              > everything how it is done there.
              >
              > Now what happens when you want some simple functionality like open an
              > existing file. If you did it their way you would create about 1000
              > lines of code in a class module and about 250 lines in an associated
              > module (although there is supposed to be some redundant code copied from
              > other modules so perhaps not needed). Include heaps of extra
              > functionality and roll it together with something that you can use to
              > select colours, use callback functions etc. and sprinkle with copyright
              > notices and heaps of developer notes.
              >
              > If you distribute .mdb files (so the code is available to the customer
              > should you get hit by a bus) do you include these notices advertising
              > the fact that it is not your code? Do you modify it sufficiently so
              > that it is your code? Or do you say that putting a whole heap of code
              > in your application which you didn't write and don't have the time to go
              > through line by line, simply so that you can say you have achieved the
              > Holy Grail of using a class in your application is not worth it.
              >
              > Even once you have written the class module and associated public
              > functions, etc just look at the fun you have just to get the path to an
              > Excel file (see below). I currently have a fraction of the number of
              > lines of code in a module modOFN which includes a function:
              > Public Function GetOFN(AccessOF N As MSA_OPENFILENAM E) As String
              > Would any sane developer recommend I replace this clearly inferior
              > public function with a vastly superior class module? If so, do I
              > re-write it using my coding conventions and remove the ADH notes and
              > copyright notices or perhaps modify the code but leave the notices, or
              > perhaps just accept that it was
              > written by more experienced developers and so not touch the code?
              >
              > I am genuinely interested. What do you folks do? It's a very popular
              > book - is anyone using the ADH class modules?[/color]

              Vague Ramblings ...

              I restrict my use of class modules to the following situations:

              1. I may require more than one concurrent instance of a procedure which
              uses modularly scoped variables. An example is a class which saves the
              current values of some form properties/controls in modularly scoped
              variables and, later, reopens the form with those property/control values
              set to those saved values.
              2. A procedure uses many variables which must be initialized and the
              procedure will be used many times. An example is a procedure which
              translates numerical data to words, as in 156 -> one hundred fifty-six.

              Classes seem slow and unnecessary in other situations. I have my own
              GetFileName Procedure. I don't know if it's longer or shorter than that
              commonly referenced here. I use it because it allows me to use the same
              procedure to search for a Directory.

              I distribute only ADPs and (not recently) MDBs. If someone steals
              something, it is he or she who is the lesser, not me. My contract quite
              clearly states that the purchasing organization may do whatever it likes
              with the application, except sell, transfer or otherwise make copies of it
              available to any other organization, or individual. If someone changes
              something and the project needs to be repaired, then he or she must pay for
              my time. My current ADP hovers around 1 megabyte (at this moment Explorer
              shows 1019kb) in size. I like it that way.

              I read the ADH many years ago. It is no longer one of the books I keep
              close by for immediate reference.

              --
              Lyle
              (for e-mail refer to http://ffdba.com/contacts.htm)

              Comment

              • Jeremy Wallace

                #8
                Re: How to deal with problematic programmer on project

                Steve,

                It seems like the responses have gotten pretty far off topic. One thing to
                take from that is a moment to think about whether or not the way you're
                going about things could be way over the head of someone and who is,
                nevertheless, capable of doing this job in a reasonable and reasonably
                efficient manner. If so, then I think there's good reason to think about how
                you two can find a middle ground, which might involve him hitting the books
                a little and you using techniques that are a little easier for him to grasp,
                even if they're a little less efficient, and even a little less bulletproof
                (to the developer, not the user).

                On the other hand, if this guy is just not going to be able to cut it, I
                would say that it's important that you go to the company through which
                you're working and let them know your concerns and how you would like to
                approach the situation. Probably best if you have a plan that gives the guy
                a chance and also makes clear where the problems lie. Definitely best if you
                talk to them before he does. Very important that you talk to the company
                with a huge amount of diplomacy, and probably even some humility (that's not
                a comment on what you've posted here or elsewhere). I'd try to approach it
                from a perspective of seeing this guy in over his head, wanting to help him,
                but looking out for the client, and not being 100% sure the guy is going to
                be able to make it through.

                Jeremy

                --
                Jeremy Wallace
                AlphaBet City Dataworks



                "Steve Jorgensen" <nospam@nospam. nospam> wrote in message
                news:ei7u30t4n8 14st93ghs97e3km 137eoasjv@4ax.c om...[color=blue]
                > Hi all,
                >
                > I'm working on a project through a consulting company, and I'm writing[/color]
                some[color=blue]
                > database code for use in another programmer's project in Excel/VBA. The[/color]
                other[color=blue]
                > programmer is working through the same consulting company.
                >
                > I did not initially know this other programmer's experience level, but he
                > seemed down to earth and friendly. I saw some signs of trouble after[/color]
                having[color=blue]
                > him try to integrate some of my code, but chalked it up to him trying to[/color]
                wrap[color=blue]
                > his mind around how another programmer thinks, which can be hard with the[/color]
                best[color=blue]
                > of code.
                >
                > Now, it has become clear this person has some serious problems as a
                > programmer, and I'm not sure the best way to handle it. it's going to[/color]
                reflect[color=blue]
                > badly on me if the code I deliver keeps working badly, but believe me, my[/color]
                code[color=blue]
                > is carefully designed and rigorously tested when delivered.
                >
                > The code I delivered for this project encapsulates -everything- a user[/color]
                could[color=blue]
                > need from it in a few class modules. Create an instance of one class to
                > manage the database connection and ADO command object, set its properties[/color]
                to[color=blue]
                > assign parameters, and call its methods to get instance of more classes[/color]
                that[color=blue]
                > encapsulate result recordsets, provide type-safe methods for accessing
                > recordset fields, etc. Totally plug-and-play.
                >
                > So he's having performance problems, though my tests run well, and he has[/color]
                me[color=blue]
                > look at his code. he took my tests module that is designed to thoroughly[/color]
                test[color=blue]
                > -everything- my code does, and he's calling it in a loop! That means,[/color]
                he's[color=blue]
                > among other things, recreating the conneciton and command objects each[/color]
                time[color=blue]
                > through his loop when it only needs to be done once, and running the[/color]
                biggest,[color=blue]
                > slowest queries my code can run each time even though his current code[/color]
                won't[color=blue]
                > need those results at all. He created string variables that duplicate the
                > purposes of my enumerated types, then uses both! He uses global variables[/color]
                to[color=blue]
                > pass parameters, and never specifies variable data types. he obviously[/color]
                never[color=blue]
                > compiles his code, because I can't try to compile mine to check for[/color]
                problems[color=blue]
                > because I'd have to comment out about 50 lines compile errors in his code[/color]
                to[color=blue]
                > do it, etc. He also fails to always use Option Explicit.
                >
                > How should I handle this situation diplomatically, but in a way that[/color]
                protects[color=blue]
                > the project from total disaster?
                >
                > Any thoughts?[/color]


                Comment

                • Steve Jorgensen

                  #9
                  Re: How to deal with problematic programmer on project

                  On Fri, 27 Feb 2004 11:15:44 -0500, "Jeremy Wallace"
                  <absolutejunk@A lphaBetCityData works.com> wrote:
                  [color=blue]
                  >Steve,
                  >
                  >It seems like the responses have gotten pretty far off topic. One thing to
                  >take from that is a moment to think about whether or not the way you're
                  >going about things could be way over the head of someone and who is,
                  >nevertheless , capable of doing this job in a reasonable and reasonably
                  >efficient manner. If so, then I think there's good reason to think about how
                  >you two can find a middle ground, which might involve him hitting the books
                  >a little and you using techniques that are a little easier for him to grasp,
                  >even if they're a little less efficient, and even a little less bulletproof
                  >(to the developer, not the user).
                  >
                  >On the other hand, if this guy is just not going to be able to cut it, I
                  >would say that it's important that you go to the company through which
                  >you're working and let them know your concerns and how you would like to
                  >approach the situation. Probably best if you have a plan that gives the guy
                  >a chance and also makes clear where the problems lie. Definitely best if you
                  >talk to them before he does. Very important that you talk to the company
                  >with a huge amount of diplomacy, and probably even some humility (that's not
                  >a comment on what you've posted here or elsewhere). I'd try to approach it
                  >from a perspective of seeing this guy in over his head, wanting to help him,
                  >but looking out for the client, and not being 100% sure the guy is going to
                  >be able to make it through.
                  >
                  >Jeremy[/color]

                  In response to all.

                  First, I used class modules in this case precisely because it was clearly the
                  -easiest- interface I could deliver, and the test code clearly demonstrates
                  how to use the classes. The recipient of my code doesn't need to understand
                  anything about how my classes work internally, and it's similar to haow the
                  other object models provided by VBA work.

                  Second, with regard to this programmer's profficiency, a programmer who never
                  compiles his code and fails to use data types for variables, and doesn't use
                  Option Explicit religeously? Sounds like a VBScript programmer, but I digress
                  <g>. No, this is obviously a -very- low-level programmer.

                  I do have no desire to attack this person, and I do assume until I know
                  otherwise that he does want to improve. I think I will take the approach of
                  trying to arrange to work more closely with him, and tutor him up to speed,
                  but I wonder how I should broach the subject, and to whom first to get the
                  best response?

                  Comment

                  • Jeremy Wallace

                    #10
                    Re: How to deal with problematic programmer on project

                    Steve,

                    Especially because you are so willing to work with this guy, I think it
                    makes sense to let the company who hired you know what's going on. Tell them
                    that you don't want to place the guy's job in jeopardy but that he's got a
                    lot to learn and that you can teach him this stuff quickly, if he's willing
                    to learn. Then approach him. There's no need to mention that you spoke to
                    anyone else about it, and I wouldn't think he would ask. It's a difficult
                    conversation, but it sounds like you have a fairly calm head about it.

                    "Can I show you why I did it that way" might be a decent way to lead into a
                    conversation about this kind of thing.

                    Jeremy

                    --
                    Jeremy Wallace
                    AlphaBet City Dataworks



                    "Steve Jorgensen" <nospam@nospam. nospam> wrote in message
                    news:n2tu30t2mk 7sop56g1l3715qs uvbdsclab@4ax.c om...[color=blue]
                    > On Fri, 27 Feb 2004 11:15:44 -0500, "Jeremy Wallace"
                    > <absolutejunk@A lphaBetCityData works.com> wrote:
                    >[color=green]
                    > >Steve,
                    > >
                    > >It seems like the responses have gotten pretty far off topic. One thing[/color][/color]
                    to[color=blue][color=green]
                    > >take from that is a moment to think about whether or not the way you're
                    > >going about things could be way over the head of someone and who is,
                    > >nevertheless , capable of doing this job in a reasonable and reasonably
                    > >efficient manner. If so, then I think there's good reason to think about[/color][/color]
                    how[color=blue][color=green]
                    > >you two can find a middle ground, which might involve him hitting the[/color][/color]
                    books[color=blue][color=green]
                    > >a little and you using techniques that are a little easier for him to[/color][/color]
                    grasp,[color=blue][color=green]
                    > >even if they're a little less efficient, and even a little less[/color][/color]
                    bulletproof[color=blue][color=green]
                    > >(to the developer, not the user).
                    > >
                    > >On the other hand, if this guy is just not going to be able to cut it, I
                    > >would say that it's important that you go to the company through which
                    > >you're working and let them know your concerns and how you would like to
                    > >approach the situation. Probably best if you have a plan that gives the[/color][/color]
                    guy[color=blue][color=green]
                    > >a chance and also makes clear where the problems lie. Definitely best if[/color][/color]
                    you[color=blue][color=green]
                    > >talk to them before he does. Very important that you talk to the company
                    > >with a huge amount of diplomacy, and probably even some humility (that's[/color][/color]
                    not[color=blue][color=green]
                    > >a comment on what you've posted here or elsewhere). I'd try to approach[/color][/color]
                    it[color=blue][color=green]
                    > >from a perspective of seeing this guy in over his head, wanting to help[/color][/color]
                    him,[color=blue][color=green]
                    > >but looking out for the client, and not being 100% sure the guy is going[/color][/color]
                    to[color=blue][color=green]
                    > >be able to make it through.
                    > >
                    > >Jeremy[/color]
                    >
                    > In response to all.
                    >
                    > First, I used class modules in this case precisely because it was clearly[/color]
                    the[color=blue]
                    > -easiest- interface I could deliver, and the test code clearly[/color]
                    demonstrates[color=blue]
                    > how to use the classes. The recipient of my code doesn't need to[/color]
                    understand[color=blue]
                    > anything about how my classes work internally, and it's similar to haow[/color]
                    the[color=blue]
                    > other object models provided by VBA work.
                    >
                    > Second, with regard to this programmer's profficiency, a programmer who[/color]
                    never[color=blue]
                    > compiles his code and fails to use data types for variables, and doesn't[/color]
                    use[color=blue]
                    > Option Explicit religeously? Sounds like a VBScript programmer, but I[/color]
                    digress[color=blue]
                    > <g>. No, this is obviously a -very- low-level programmer.
                    >
                    > I do have no desire to attack this person, and I do assume until I know
                    > otherwise that he does want to improve. I think I will take the approach[/color]
                    of[color=blue]
                    > trying to arrange to work more closely with him, and tutor him up to[/color]
                    speed,[color=blue]
                    > but I wonder how I should broach the subject, and to whom first to get the
                    > best response?[/color]


                    Comment

                    • David W. Fenton

                      #11
                      Re: How to deal with problematic programmer on project

                      Steve Jorgensen <nospam@nospam. nospam> wrote in
                      news:ei7u30t4n8 14st93ghs97e3km 137eoasjv@4ax.c om:
                      [color=blue]
                      > How should I handle this situation diplomatically, but in a way
                      > that protects the project from total disaster?[/color]

                      Talk to the people you're working for, the contracting consulting
                      company. Tell them what you just told us.

                      Let *them* sort it out, because they are the responsible party.

                      --
                      David W. Fenton http://www.bway.net/~dfenton
                      dfenton at bway dot net http://www.bway.net/~dfassoc

                      Comment

                      • David W. Fenton

                        #12
                        Re: How to deal with problematic programmer on project

                        "Eric Schittlipz" <eric@schittlip z.com> wrote in
                        news:c1nlvb$nm7 $1@hercules.bti nternet.com:
                        [color=blue]
                        > Within this newsgroup, you sometimes get the impression that
                        > classes were the only proper way to get anything done. Therefore,
                        > your best bet would be to rush out and get the Access Developer's
                        > Handbook and do everything how it is done there.[/color]

                        Because your major premise here is totally false, everythigg that
                        you wrote that followed is also false.

                        No one in this newsgroup is recommending coding class modules for
                        every task, only where the benefits of a class module are
                        appropriate.

                        --
                        David W. Fenton http://www.bway.net/~dfenton
                        dfenton at bway dot net http://www.bway.net/~dfassoc

                        Comment

                        • rkc

                          #13
                          Re: How to deal with problematic programmer on project


                          "Eric Schittlipz" <eric@schittlip z.com> wrote in message
                          news:c1nlvb$nm7 $1@hercules.bti nternet.com...[color=blue]
                          > "DFS" <nospam@nospam. com> wrote in message
                          > news:103uicgn64 44q8d@corp.supe rnews.com...[color=green]
                          > >
                          > > OOP and classes can be difficult to understand and use in a[/color][/color]
                          spreadsheet/db[color=blue][color=green]
                          > > interface environment. Are they necessary to the project? I'm sure in[/color]
                          > your[color=green]
                          > > mind they are, and I don't doubt your approach is clean and efficient,[/color][/color]
                          but[color=blue][color=green]
                          > > he might not understand their usage. I've personally written classes[/color][/color]
                          and[color=blue][color=green]
                          > > used class instances only a handful of times in 8 years of VBA coding
                          > > (though on a couple of Java projects I worked on it was OOP from the[/color]
                          > start).[color=green]
                          > >[/color]
                          >
                          >
                          >
                          > Within this newsgroup, you sometimes get the impression that classes were
                          > the only proper way to get anything done. Therefore, your best bet would[/color]
                          be[color=blue]
                          > to rush out and get the Access Developer's Handbook and do everything how[/color]
                          it[color=blue]
                          > is done there.[/color]

                          You're right about everyone echoing whoever it was that first suggested you
                          can't
                          be an Access peogrammer without at least one copy of the ADH. As far as the
                          widespread use of class module by participants here, I get exactly the
                          opposite
                          impression. There are only a handful of people that ever mention them at
                          all.

                          [color=blue]
                          > Now what happens when you want some simple functionality like open an
                          > existing file. If you did it their way you would create about 1000 lines[/color]
                          of[color=blue]
                          > code in a class module and about 250 lines in an associated module[/color]
                          (although[color=blue]
                          > there is supposed to be some redundant code copied from other modules so
                          > perhaps not needed).[/color]

                          The code I see suggested most often for the open file dialog is a function
                          not
                          a class. It would be easier to understand and use as a class in my opinion.



                          Comment

                          • (Pete Cresswell)

                            #14
                            Re: How to deal with problematic programmer on project

                            RE/[color=blue]
                            >I distribute only ADPs and (not recently) MDBs.[/color]

                            In an ADP suppose that, for some perverse reason, you had a combo box whose
                            dropdown had to be populated with 1,200 lines and using a callback procedure
                            make is just too slow to react

                            In a .MDB, I'd copy the box's rowsource to a work table in C:\Temp and just base
                            the .RowSource on the temp table. This gives an almost-instant dropdown.

                            Any idea of a similar workaround in a ADP? Something with some sort of
                            disconnected recordset so that MS Access functionally does the same thing?

                            I've felt ADP pulling at me for quite a few months now. My current contract is
                            up at the end of June...and I guess it's going to be learning ADPs and maybe a
                            little .NET then...
                            --
                            PeteCresswell

                            Comment

                            • Lyle Fairfield

                              #15
                              Re: How to deal with problematic programmer on project

                              "(Pete Cresswell)" <x@y.z> wrote in
                              news:orov309e7j 6s8u1ju65eif28d p8e7i08sv@4ax.c om:
                              [color=blue]
                              > RE/[color=green]
                              >>I distribute only ADPs and (not recently) MDBs.[/color]
                              >
                              > In an ADP suppose that, for some perverse reason, you had a combo box
                              > whose dropdown had to be populated with 1,200 lines and using a callback
                              > procedure make is just too slow to react
                              >
                              > In a .MDB, I'd copy the box's rowsource to a work table in C:\Temp and
                              > just base the .RowSource on the temp table. This gives an
                              > almost-instant dropdown.
                              >
                              > Any idea of a similar workaround in a ADP? Something with some sort of
                              > disconnected recordset so that MS Access functionally does the same
                              > thing?[/color]

                              I suppose that if I really had to do this I would create a form with some
                              filter buttons on it for, example, a-z, or whatever, which when clicked
                              would filter the form. Then selecting (current event) a record would set
                              input parameters on the (pseudo) sub form and filter (requery) it in
                              accordance with the (pseudo) main form. I've used this (but not with
                              anything like 1200 rows), and it is very fast. In my opinion, ADP input
                              parameters make subforms redundant.


                              --
                              Lyle
                              (for e-mail refer to http://ffdba.com/contacts.htm)

                              Comment

                              Working...