Being a freelancer means that I adapt to the needs of each client. Most of them know they want something, but I'm often the one who has to figure out what it's called and whether it's possible. Then I have to figure a way to put it all together without charging what an tech company might charge. I've had to purchase a few components when I could not find a free Joomla solution, but I've also ended up skipping some of my purchased components when a free version works better for a specific need.
Here's an example of the customer being right, kind of, and then maybe moreso. I designed a custom form in Breezing Forms that redirected to a free download. Email is sent to admins with information about person who wants info. Worked well, but they had to add email and name into separate Jnews form to add to their mailing list. The reason they has Jnews is a longer story, but because the site was using it instead of Acymailing, I didn't know about the fairly simple integration of Breezingforms with Acy--my ultimate solution and what proves the customer is kind of right.
In the meantime, I upgraded the site from Joomla 2.5 to 3. A few hiccups I got blamed for but fixed like a pro. Then it was, "Let's do a new form that hides the free download a little better." I decided Community Builder tied to AcyMailing. Upon registration, you get redirected to the download (using autoactions). People, however, aren't signing up. Bossman doesn't like his staff logging in to see database.
Complain. Job not done. Four more hours into this one and I now have original BreezingForms working with AcyMailing, which I'd added to integrate with Community Builder. Does it matter that I think it's better to have CB or Joomla users with info in searchable profiles rather than just a filled-in form that sends an email and name to a newsletter component? The client doesn't like username and passwords, so I don't like them either, but that means no users.
But it's all OK. I learned again why I have to bill by the job and not the hour, especially if fixing what isn't totally broken is still part of the job. I also learned some limitations and abilities (my own and the components I use.) Whether the client was right, I was right, or we were both a little right, the point is that I was able to fix the problem, using Joomla and some of the best-available add-ons. You can too, whether you're designing or hiring a freelancer. There's always a way to do it, and probably a half dozen right ways, along with twice as many wrong ways. Most of them interesting and frustrating.