Just before Christmas, Bill Erickson, wrote a great article about why he stays as a consultant. Basically he rarely charges hourly and pretty much only works on things that can be optimized. The more ‘custom’ a feature is the more you’re just trading time for money since it’s less likely you can use it again.
While Bill totally defends the business side of sticking with client work, there is a larger reason that I always plan to have some clients.
Yes even if I have products that make lots of money, I plan to always also take on some clients.
People by nature are creatures of comfort. When faced with 2 options we choose the easy way, or the way we already know. This extends to technical challenges as well.
The nice thing about clients is that they aren’t programmers for the most part. Since they aren’t programmers they ask for things to get done and concentrate on how they want it to look or function. They don’t care so much about technical limitations.
This lack of knowledge is simultaneously awesome and frustrating. Awesome because it pushes you to do things you’re not comfortable with. Frustrating because you can see that if they just change one requirement a little bit it would be so much easier.
Clients help keep us on our toes and can push us in new directions of learning. That’s why I’ll always do some client work.