Story 1: You are working for a client on a project for 1-2 years. Things are going very good, you’re company decide that they will allocate another person in the team. The new developer will be a junior and he will take your place on the project. Because they allocated a new person in the team, you will be allocated only 2.5 days per week on the project. The rest of the time you will work on another project. They ask you to join the scrum every day and pretend that you are working all the week on the original project. The new member of the team will cover you. The client knows that the team is now n + 1 (the new member). So you begin to join the scrum every day and pretend that you are working…
First problem is sincerity. Going in a scrum meeting and pretend that you are working on the project on a specific day, but in reality you are working on another project is wrong. From the relationship perceptive you are destroying the trust that you have with the client. Yes, you think that he don’t knows, but in time he will observe that something is not okay.
Don’t forget that at the end of the phone another person like you exists. When you are pretending that you are working on the project – you are lying him.
A software engineer should never accept a request like this from the company because a thing like this affects him professionally. You cannot name yourself a professional when you are doing things like this. The company cannot force you to lie.
If you need to work for one or two days one another project you should tell the client that you will not be available on that days. But, in this situations your company will request you to not tell them the true.
The best thing that you can do in this situations is to tell them that you don’t want to work anymore on that project. You cannot accept this “business” model.
Story 2: Your company has a very good partnership with another big company. Your partner comes and ask you to investigate and search a solution for their problem. After 2 days of investigation, your boss is coming to you and say that the both solutions are good, but you should hack the “investigation” in such a way that the second solution to be selected. This should happen because the team that has knowledge on the given technologies doesn’t have any project on the queue. You know that the first solution is better, so what should you do?...
This is a very common situation and I heard people saying that this is the way how businesses are made. Maybe this is true, but when you propose and push a solution that is not valid for the client you will suffer a lot – and you deserve to suffer.
When you will be ready with version 1.0 or in the moment when you will add some new features you will realize that is impossible to accomplish and the costs are very high.
In this situation, the guilty is divided between your company and you. First of all they push a wrong solution and now they will need to pay in one way or another. If the project was a fixed price project then they have big problems. Otherwise, there are chances that the client will pay without knowing the true, but in the end the partnership between them will suffer.
The software engineer that pushes the wrong solution usually is the one that will need to solve the new problems and it will not be easy for him. From the beginning he is making a big mistake, listening the management “recommendation”. The best thing that can be done in this moment is to talk with the client and explain the mistake – the current solution is not the best one and they should use another solution.