Coding/Maintenance Practices

This question is murky but the idea is to glean some good coding practices:

 I'm a consultant and I have multiple clients at any one time.  They often want me to come to their office to code.  For discussion sake, let's say that everyone uses SourceSafe.  

  I am usually able to code on my personnal laptop.  However, I have some companies that require all coding to occur on their computers.

  Like all developers, I have my personal collection of modules which I've written and collected over the years are in a totally different folder...

  c:\mycompany\VBTOOLS\Modules\mADOStuff.bas ....
(for bevity, let me call these my "standard modules" even though it also includes certain forms, class modules, and activex dlls)

PROBLEM: It seems I am constantly getting various versions of my "standard" modules floating around on different computers at different companies on different projects.

Admittedly, a lot of it is caused by laziness on my part - trying to get an application working quickly, I "improve" my standard module on the company computer and then I don't copy the improved module back to my laptop and I end up recoding the same improvement for another company....

QUESTION: Has anyone out there got a neat system that keeps their standard modules constantly updated and uniform while bouncing around companies/computer/projects?
Who is Participating?
rspahitzConnect With a Mentor Commented:
Here's a radical idea:

Create "standard" modules that are self-contained/encapsulated.  These objects or dlls get built exclusively on your laptop and distributed to user machines as units.  Any new development related to these is done on the laptop, including exposing new properties/methods.

Obviously, this idea is very simplistic and doesn't match every situation, but I've tried implementing this here where the modules are controlled through sourcesafe and changes to them must be authorized by me.  And certainly, it becomes comvenient to transfer the source code to the test machine, but that should really be the exception case where you can't easily code it because of inter-object communication problems that need to be debugged first-hand.
No.  I suffer that same problem, although my coding only moves between my home computer and my work computer.  I am considering writing an XML based VB Briefcase kind of program, but that would be more project based rather than module based.
why don't you keep all of your "STANDARD' modules, in SourceSae, on YOUR laptop.  Then you Must checkOut from the Laptop t the Customers's PC, make the changes, and CHeckIn back in back to YOUR laptop...and like "MAGIC", you now have the latest and greatest on your laptop.  Just remember the CHECK-IN step, BEFORE to leave Customer Site A for the day...

seems like a logical choice to me.

Just my 2-cents worth.
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

One thing that I've done is tried to remember to copy/paste the text to an e-mail to myself, but that wouldn't be necessary if you have the laptop.

How about if you hook your laptop up to their network, and use that as the source for such modules?
EasyAimAuthor Commented:
To clarify, I am using my laptop as the initial source.  The way it works is:

  * Company_A needs a new application.
  * I hook up my laptop and code the entire application on my laptop.
  * For final testing (usually to use licensed components that are not on my laptop) I have to copy the entire project including my standard modules over to a company issued desktop.
  * After it is completed, the entire project is uploaded from the company computer into SourceSafe.
  * Subsequent changes to the project are usually performed on the company desktop computer.
  * The problem is that improvements to my standard modules on the company computer rarely make it back to my laptop due to:
  > no laptop on subsequent visits
  > laziness or lack of time
  > sheer complexity (three projects being coded at the same time, each using an archived copy of the standard modules)...

Arthur_Wood's idea is what I actually try to do but I often have connectivity problems with the various clients' networks OR some clients won't even let me use my personnal computer on their network (i.e. virus fears).  I'm having to use floppy disks at some places.

PaulHews - I'll think about your idea about creating an application to sniff out the changes - or maybe just look a the "Modified Date"... and maybe use 'rpahitz' idea to have it automatically email me the changes.  

Thanks for the inputs...  I'm going to leave this question open for while to see if I get any other ideas.
EasyAimAuthor Commented:
 I like that idea....  it would force me to maintain the source.  
  The only glitch is that my clients want the source code of course... but I could give it to them with a private and personal vow to never, ever touch the source code on the company machines.
  That would take a lot of will-power on my part.
Well, if the client wants the source, give it to them in a zipfile.  That should slow you down ;)
EasyAimAuthor Commented:
I hate to close out a thread but we seem to be slowing up a little here.  

  rspahitz, I like your idea to bundle up my modules into a DLL.  It looks more professional and it will more easily make me update the procedures on my computer.
I'm glad it works for you.  I've started doing it more myself, and probably need to follow through even seems that it also helps with memory management, as discussed in
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.