The Merits and Ethics of Learning on the Job in App Dev
Another Monday, another successful reader question Monday. Today’s question is about learning on the job. Let’s take a look.
This is more of an app dev shop question than a consulting question, but here goes.
Say you’re consulting for a client and the client has a specific need for some app dev work which they ask you to do. That work requires you to use a technology that’s either completely new to you, not quite in your line of specialty, or you haven’t used in several years, but you’re constrained in some way to use this technology and to do the project you would need to “ramp-up”.
The question is: do you bill the client for this “ramp-up” time or do you take the hit against your own personal time to come up to speed? Does it make a difference in the response if it’s a legacy technology that you may never use again (FORTRAN) vs. a “hot” language that it would benefit you to learn (Python)?
First of all, for everyone else, here’s what the reader is referring to about consulting vs. app dev. I’ve written a good bit about how writing software for someone else isn’t “consulting” no matter what people might call it. So the question concerns either app dev shops or app dev freelancers.
Learning on the Job: The Quick Answer
I’ll start by answering the question at the tactical level. Should you bill for this ramp-up time? Absolutely, as long as you can negotiate it and you do so in good faith.
The last time I agreed to app dev work, I dealt with something like this. I’d worked with the client before, and they liked my work. I had domain knowledge and we had a good rapport, so they engaged me for some work. I told them that I had to learn an important technology as I went, and they were fine with this added cost. They viewed it as worth it.
Contrast this with a different situation. Imagine you’re a Ruby on Rails developer and you need some work. So you answer an RFP for help with an ASP MVC site, knowing nothing about ASP MVC but claiming you’re competent. That’s pretty much the opposite end of the spectrum, and obviously problematic.
So start with the requirement that you’ll be frank about anything you need to learn to execute on an engagement. The matter of who bears the cost of that learning then becomes a matter of negotiation as part of the contract. And, that should make sense, since you’ll always have to learn something to help a client. If you need the gig more than they need you, you might need to spend unpaid evenings learning a framework. If they really need you and you’re on the fence, you can require that they include your onboarding as part of the deal.