[AccessD] Move to C# - last post

Dan Waters df.waters at comcast.net
Wed Jan 5 10:20:51 CST 2011


Hi Jim,

Your Type 2 is what I currently use - pretty closely.  The differences are
that I charge a user license fee (it's a self contained system of which I
own the Library mdb), and I ask for fixed prices after installation - never
a problem with that.  I'm very strict on scope creep - we'll get the amount
agreed to before I start (and I have had to say just say no).  

The problem for me is that even though I charge a fairly high hourly rate,
my total income is probably half or less what it could be if I went back to
being a Quality Manager at a manufacturing company, or being a Business
Analyst somewhere.  But I like what I do now.  So, if I could do what I
like, and make twice what I make now, that might be worth being back in the
corporate environment.

My plan is to continue supporting my current 4 long-term customers.  But,
one of them wants their system converted to .Net/Sql Server so that outside
users have good access.  This will take a few months, at least.  After that,
with my new skill as a .Net developer, I'm hoping I can get more paid work.
Either being independent, or doing the same work in a medium sized company
not too far from home.

Thanks!
Dan


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Jim Lawrence
Sent: Tuesday, January 04, 2011 8:42 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Move to C# - last post

Hi Dan:

Contract type 1: A set contract is usually a problematic thing. The best you
can do is divide the contract up into separate segments and when each
milestone is reached the client pays up. This always makes the assumption
that, you as the programmer, are going to have a fully function piece of
code at the end of this contract. Usually the last payment is held for a
time until the client is satisfied. This can be dangerous as it is a grey
area where scope creep and the ever present danger of more bugs could
showing up. In the worse case scenarios it ends up with you being out your
last payment, the client upset, feeling there is so much you should and
could be doing to reach their absolute vision...all at no more additional
cost.

Contract type 2: The type of contracts that I usually go for is the
insurance type contracts. This is where a major portion of the development
and payments are made at the start, but a monthly retainer (open ended) is
added at the end of the building phase. In this scenario, the client is
charged a fixed rate, per month and you fix all those little bugs that pop
up as well as add all those items from the out-of scope-project-wish-list.
Sometimes these extended contracts can last from 6 months to as long as 20
years. If this works out well you spend little time at the clients, they
make small continuous payments, they know they are covered and it can work
out to be a very long term friendly relationship.

Contract type 3: The final type of contract tends to be of a size and
complexity that you will have to dedicate a major portion of time and effort
towards completion. It is sort of like a mix of contract type 1 and 2. The
potential customer knows it is going to be an expensive project and you know
it is going to be very time consuming. You can at this point propose a 6
month to a year full-time (employee type) contract. The client provides the
desks and equipment and you provide your services. This way there is not a
huge outlay towards a project and you have time to feel out what the client
really wants and needs and not have to end up making these jumps in faith in
what a sentence of paragraph really means. The project tends to evolve in a
better way.

Now how do you convince your client to agree to this or other type of
contract? Well, just know all the scenarios really well and be able to
present them... I bet when you became a programmer you did not realize that
half your skills sets were going to have be standing up in front of clients
making presentations and selling like a used car salesman.

Jim

    

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Dan Waters
Sent: Tuesday, January 04, 2011 5:22 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Move to C# - last post

Hi Jim,

I've been thinking about offering potential clients that I work as a direct
full-time employee for 1 - 2 years while I build their system.  Then I'd
move on to another company, but perhaps still provide some support to the
earlier ones.  It's seems like it's actually easier for a company to hire a
direct employee than it is to pay out cash to a contract developer.

How are you approaching your clients about being on their payroll?

Thanks!
Dan

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Jim Lawrence
Sent: Monday, January 03, 2011 9:32 PM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Move to C# - last post

In the long run it is definitely paying off. 

I have been in discussions with clients about putting me on payroll if they
want their system upgraded to .Net. The alternative of a 10 to 15K entrance
fee, with much more to come, scares off many but it seems many are realizing
that they too have no choice especially the ones who have been already badly
burned. ;-)

Jim



-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Monday, January 03, 2011 3:40 PM
To: Access Developers discussion and problem solving
Subject: [AccessD] Move to C# - last post

Jim,

 > You noted three excellent classes you created for your client. If you
were to accurately the 
hours required to get these classes fully tested and operational; what would
that be? This is just a 
diabolic curiosity but do not hesitate to put an appropriate dollar value to
your time with this 
development. ;-)

I cannot accurately estimate the actual time simply because I did it
piecemeal, and in a waterfall 
kind of way.  IOW I started with existing SQL stored procedures (about 50 or
so).  I wrote code that 
simply encapsulated calls to those plus logging.

I then went back and wrote classes that encapsulated those encapsulated
stored procedures 
(supervisors if you will).

I then learned new things and... I went from a simple status text box on a
form to a status list 
class which I now use throughout the system to report status for any process
that needs to do so... 
and nLog, and...

I started with single threaded, then moved to multi-threaded, breaking it
out etc etc.

How long would it take me to write the same from scratch knowing what I know
now?

Maybe 200 hours, and I charge $60 / hour to this client.  And while that
sounds like a lot of time 
and money (and it is) it automates a very complex process that moves me from
16-24 man hours per 
list (of my time) to zero man hours (of my time).  And I have a half dozen
lists, and they each need 
to be processed monthly.  And my orders pass through this process as well.

So the program now saves me well over 100 man hours a month of my time.

My server still takes man days to complete the work but it no longer
requires me typing on the 
keyboard for each step.

This export / process / import process is central to the business for this
client.  I started 
learning C# in Sept 2009, and within two months started building the first
iteration of this 
automation.  By January I was successfully processing these stored
procedures and logging results. 
However it was in a sequential fashion, start one and go until it was
complete.  Since any given 
table can be a couple of hundred thousand up to a hundred million records,
processing a single table 
could take days of processing time.  Each two million record chunk takes
about one hour to process. 
  And I had to manually start each table that needed processing.

Now I have a record in a supervisor table that contains the database name /
view name of the data to 
process and the date to start the process.  The asynchronous process can
read that supervisor record 
and decide whether it is time to process.  When it is, the program can do
the complete thing without 
intervention.  When it is finished, if it is a data database (master data)
it will automatically 
copy the supervisor record into a new record and set the date out 30 days so
that it just 
automatically reprocesses every month.  If it is an order supervisor record,
it just processes once 
and is done.

I have been through about three distinct refactorings to get from the first
fairly clumsy stab at 
this to where I am now.  I have learned a ton along the way.  And each
refactoring paid for itself 
directly as each version took less and less of my time.

John W. Colby
www.ColbyConsulting.com

On 1/3/2011 5:03 PM, Jim Lawrence wrote:
> Hi John:
>
> I agree with you fully. I have no intension of wasting any more time with
MS
> Access...it is simply a dead and dying platform. :-(
>
> Getting up to speed will take a long while but I know that can not be
> helped. Any adventure into this area will cost myself dearly in time and
my
> client's dearly in money but that can not be helped.
>
> You noted three excellent classes you created for your client. If you were
> to acurrately the hours required to get these classes fully tested and
> operational; what would that be? This is just a diabolic curiousity but do
> not hestitate to put an appropriate dollar value to your time with this
> development. ;-)
>
> Jim
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com


-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com





More information about the AccessD mailing list