Skip to main content

Big companies, Software Engineer and Partnerships

Some weeks ago I talked with a friend that used to work in a big company. He told me two interesting stories.

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.

Comments

Popular posts from this blog

Windows Docker Containers can make WIN32 API calls, use COM and ASP.NET WebForms

After the last post , I received two interesting questions related to Docker and Windows. People were interested if we do Win32 API calls from a Docker container and if there is support for COM. WIN32 Support To test calls to WIN32 API, let’s try to populate SYSTEM_INFO class. [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } ... [DllImport("kernel32")] static extern void GetSystemInfo(ref SYSTEM_INFO pSI); ... SYSTEM_INFO pSI = new SYSTEM_INFO(...

How to audit an Azure Cosmos DB

In this post, we will talk about how we can audit an Azure Cosmos DB database. Before jumping into the problem let us define the business requirement: As an Administrator I want to be able to audit all changes that were done to specific collection inside my Azure Cosmos DB. The requirement is simple, but can be a little tricky to implement fully. First of all when you are using Azure Cosmos DB or any other storage solution there are 99% odds that you’ll have more than one system that writes data to it. This means that you have or not have control on the systems that are doing any create/update/delete operations. Solution 1: Diagnostic Logs Cosmos DB allows us activate diagnostics logs and stream the output a storage account for achieving to other systems like Event Hub or Log Analytics. This would allow us to have information related to who, when, what, response code and how the access operation to our Cosmos DB was done. Beside this there is a field that specifies what was th...

Cloud Myths: Cloud is Cheaper (Pill 1 of 5 / Cloud Pills)

Cloud Myths: Cloud is Cheaper (Pill 1 of 5 / Cloud Pills) The idea that moving to the cloud reduces the costs is a common misconception. The cloud infrastructure provides flexibility, scalability, and better CAPEX, but it does not guarantee lower costs without proper optimisation and management of the cloud services and infrastructure. Idle and unused resources, overprovisioning, oversize databases, and unnecessary data transfer can increase running costs. The regional pricing mode, multi-cloud complexity, and cost variety add extra complexity to the cost function. Cloud adoption without a cost governance strategy can result in unexpected expenses. Improper usage, combined with a pay-as-you-go model, can result in a nightmare for business stakeholders who cannot track and manage the monthly costs. Cloud-native services such as AI services, managed databases, and analytics platforms are powerful, provide out-of-the-shelve capabilities, and increase business agility and innovation. H...