Monday, February 9, 2015

Learning to Live with the White Whale

My white whale 
I have mentioned the most difficult thing about being a technologist is when you develop a sense of competence about your skills and career something comes along which forces you to start from scratch.  I have had to relearn how to write software four times in the last seventeen years.  My over-all skills have improved but I consider myself an intermediate programmer.  This is because I once thought I had mastered web application development with ASP.NET web forms.  To my surprise, MVC came along and I had to start over unlearning all the techniques from web forms and then using my knowledge in this strange world of MVC.  Slowly, I am learning basic competence in design patterns and test driven development.  This brings me to today’s topic which is my collaboration with Intuit and their Quickbooks Online service.

This began approximately six months ago when I met a potential client who said that they entered the same record into three different systems and then entered it into Quickbooks to invoice the client. I thought it was madness.  After sleeping on it, I decided that E3 systems would prototype a web application which would reduce the number of times they have to enter data and automatically sync with Quickbooks.  I just did not know how to do it.

The web application was the easy part where I stumbled was the communicating with Quickbooks.  A quick search revealed a tremendous source of frustration.  The Intuit Sync Manager was being discontinued and according to chatter on the web it was hard to work with.  This forced me to turn to Intuit Quickbooks API.  I would be pushing JSON and XML to communicate with their API so that it could populate a version of Quickbooks Web service.  This is when I was transformed from a competent web developer to someone behaving like Captain Ahab from Herman Melvil’s “Moby Dick”.

After reading the documentation and struggling with getting the service up and running, I began to follow the directions on how to use the .NET SDK which Intuit was good enough to produce.  It did not work.  Worse when I tried to debug the application I received vague error messages which would not help me solve the problem.  I was so frustrated, I seriously considered hacking off my own leg.  Fortunately, some folks on twitter were listing to me rant and were able to provide direction.  In addition, they were understanding of my frustration and anger with how they designed their systems.

Thanks to the efforts of the Intuit twitter team, including Nimisha and Meg, they were able to talk me off the ledge put down my harpoon and get back to coding.  It was not easy and I was prickly at times but they did the job.  Now, E3 systems and I are developing competence in working with Quickbooks online and the web-api.  This is bonus to our business and to the good folks at Intuit who want to spread the adoption of their cloud based service.  It looked shaky at first but E3 systems is on its way to writing web applications of Intuit.  I still feel a bit like Ahab chasing my white whale but at least I know how to use these newfangled row boats provided by Intuit.  Thanks gang, look forward to working with you more in the future.

Until next time.