Tuesday, February 27, 2018

I give away my source code to my customers

By Steve Endow

Dynamics GP partners and customers often hire me to develop custom Dynamics GP integrations, GP customizations, Visual Studio Tools AddIns for GP, or even custom web APIs for Dynamics GP.

I develop the solution, usually using .NET, then I prepare a deployment guide and deployment package that can be installed on the customer's servers.  The solution is tested, I fix some bugs and refine the solution, I prepare new deployments that get installed, and once everything looks good, the customer goes live.

Everybody's happy, and I'm all done, right?

Except for one critical piece.

Any guesses?

What about the source code?

"What about the source code?", you might reply.

I diligently check in my source code to Git, and the code is pushed to an online Git repository for safe keeping and accessibility.  And I have backups of backups of backups, both on site and off site.  Great.  So I'm all done, right?

Not really.

What if I disappear?  What if I win the lottery?  What if I decide that this whole modern civilization thing is overrated and go live off the grid?

In reality, I usually work with customers for years.  I've worked with customers as they've upgraded from GP 10 to 2010 to 2013 to 2016.  I've worked with customers where most of the accounting department and IT staff have changed.  I've worked with customers as they cycle through multiple Dynamics GP partners.  I've worked with customers that have been acquired, gone out of business, and migrated to other ERP systems.

I'm not planning on disappearing, but I've seen what happens when a Dynamics GP developer does disappear.  One guy just vanished and the customer couldn't locate him. More often, developers leave a Dynamics GP partner and nobody else at the partner knows where to find the customer's code.

And then there's the case where customers switch GP partners, and 2 years after the switch they realize that they don't have the source code for a GP customization or integration.  This happens all the time.

So, I give my source code to my customers.  If I'm working with a partner, I send the source code to the project manager after each release.  If I'm working with a customer, I usually send the source code to someone in IT.

"But gasp!  It's YOUR intellectual property!  You legally own the code!  Why would you give away your source code!", someone might ask.

My customers don't hire me to type funny words and inscrutable symbols into a development tool.  They aren't paying me to accumulate priceless intellectual property (that actually has no commercial value).  And they definitely aren't hiring me so that I can hold them hostage when they upgrade Dynamics GP or switch partners and need an updated version of their integration or customization.

I like to think that my customers hire me because I provide them with value, and the value I provide isn't a Git repository or zip file containing source code.  Sure, the code has value, but there are far better developers out there they could hire if all they needed was a coder.

Can you guess what happens when I give away my code to my customers?  When I send off that email with a link to download my precious source code?

Absolutely. Nothing.

Nothing happens.  It's completely uneventful.

Customers don't hire a cheaper developer.  Customers don't stop hiring me.  Customers don't try and maintain the code themselves so that they don't have to pay me.  Sometimes they consider supporting the code, but then they realize they don't want to maintain another project.  The last thing an overworked IT department wants is to inherit someone else's code that involves the ERP system and debits and credits--no joke.

But can you guess what happens over time?

Any questions about "code ownership" disappear.  Concerns over access to source code disappear.  Tensions around risk and critical dependencies dissolve.  Partners and customers feel more comfortable.  I think I have better relationships with my customers as a result.

And take a guess what happens when the partner or customer encounter situations where another developer won't provide the source code.  They notice.  They really notice.

"Wait a minute. Steve sends me his source code regularly and it's no big deal. But this other developer refuses to send me his source code."

When this happens, the partner is not happy and the customer feels exposed or at risk. It changes the relationship.

So strangely, giving away my code has become a small competitive advantage.  Tentative prospects sometimes ask me, "Steve, will this project include delivery of source code?"  Absolutely!  Once I deliver the code for the first release, concerns disappear.

Yes, I'm sure there are caveats for some organizations or some situations, and lawyers will gladly argue about IP and contracts and liability and blah blah blah for $500 an hour, but in the real world, the mid-market companies I work with are just looking to get things done.  The last thing anyone wants is to involve a lawyer, and nobody wants to worry or even care about source code.  I'm not building the next Azure or Axapta or VC backed killer app.

So when I hear stories about a GP partner who refuses to give source code to a customer who has switched to a new partner, I seriously wonder, "What in the world are they thinking?"

In the meantime, I'm working on making my customers happy.

It seems to be working.

You can also find him on Twitter, YouTube, and Google+

No comments: