With your experience with ArcGIS, the transition to QGIS should be quite rapid, and the ability to relate operations to a client will be very straightforward.
Programming, or scripting in QGIS or ArcGIS just takes practice, and an understanding of the object models.
I am a big fan of the books by Anita Graser, Joel Lawhead, and Eric Westra.
They have all been a big help to me, as has this site.
There are some great people here!
Packt Publishing, and LocatePress are good resources for QGIS information.
I have found that I am able to accomplish certain specific tasks in a shorter amount of time in QGIS, than I was in ArcGIS, even though I was much more familiar with what I was doing in ArcGIS at the time.
I have a very strict set of rules that I adhere to with any GIS package I use.
All of my data is in the same projection. I do not like re-projecting on the fly. It has bitten me a few too many times in the past.
All of my imagery is in the CRS (Coordinate Reference System) of the project.
I am also able to share data, projects, settings, and so on with others without the fear of misplaced data.
I will re-project the data for export, only if requested, otherwise, they get the data in the projection I am working with.
I have found myself building the same projects in QGIS, as well as ArcGIS, even when I am required to work in ArcGIS.
My biggest problems have been the difference in SQL, and the expression builders. Certain queries work in QGIS that do not work in ArcGIS, and vice versa.
I have upgraded everything to QGIS 2.14.1, and have had very few problems.
I am very interested in seeing where QGIS goes when version 3.0 is released, and how the transition to Python 3+ will affect some of my code/scripts.
I have heard rumors that ESRI will be adopting QT (C++, and Python bindings) for development of add-ins, and scripting, but I cannot confirm this.
Either way, learning Python is not a waste of time, no matter what version.