I'm thinking about this for a moment, and this place seems to be perfect to discuss about it.
I'm a freelance, and some time ago, I worked for a small company as a front-end developer (mostly JS stuff). This customer was already working with another freelance (back, mostly PHP stuff).
I worked 1 or 2 days, mostly fighting with the lack of methodology and collaborative tools (no git, no bug report, nothing). This freelancer knew I'll work with him one month before I worked with him. And the only thing he planned is a USB key so I could copy my code and give it to him.
During my time working on this project, we (my and the other freelancer) were mostly fighting with poor HTML/CSS and JS code that came from other people. We were really aware of that as we were constantly joking on this.
On the end of my mission, the customer asked me "What do you think about the code?". So I answered honestly: "We are working on a low quality base code, so lot of things can break up, it will be a pain in the ass to maintain, it's not readable and it could easily be more performant. In a nutshell: it will work, but it would be great to optimize some stuff". So, I was honest, too much maybe, because seeing his reaction, he wasn't aware of that. When I thought he was :)
The thing is: the other freelancer was there when I gave my opinion. And well, he became kinda mad at me, because I said this. He was aware of my point of view and agreed with it (his code wasn't concerned), so I guess he was mad because I told the customer what I think, because, - and this is what suprised me - he hasn't told the customer that was low-quality code.
I don't want to know who is right or wrong here.
The only questions I have are:
- Was it "unprofessional" from me to tell the customer what I really think (considering he could never see it and there was no need to bother him)?
- Considering that this freelancer was on the project before me, should I have "covered" him? (well, his work wasn't concerned, but let's consider another freelancer make dirty work)
- Should a freelancer, in all cases, answer honestly to its customer/employer, when, in this particular case, it made an unconfortable situation and wasn't really needed?
EDIT FTR: My point of view in that was: the customer paid me to do some work and give some advices, so I have to tell him, regardless of what could other parts would think about it.
EDIT 2: When I explained the customer what I thought about the app, I didn't blame anyone, I just noted the relevant points, IMO.