Finding a new software project is hard, whether it is for a company who must pay its employees every month, or for a freelancer who wants to ensure cash flow. During lean times, it is common to accept projects from any client just to stay afloat. But even in desperation, there are certain types of clients that you should avoid. Some of these clients are major red flags. Trust me, it’s better off to not work with these clients that to get trapped by them. Which types are they? Let’s see in this post.
“I have a wonderful idea for a software that could take the market by storm”
Almost every potential client / entrepreneur believes that his/her idea will disrupt the market. It doesn’t matter what they think. The only idea that will ever work in the market is a proven one. One which solves customers’s problems and one for which they are willing to pay money. Everything else is just a pipe dream. The idea may completely fail and all your efforts will have been for a waste, with the client being unable to pay you anything at all.
Ideas are a dime a dozen. It’s only execution that counts.
– every successful entrepreneur ever
Instead, respect is due to a potential client who says, “I have a basic / well-established business with regularly paying customers. But running the business daily without automation is proving to be hell. Will you help me?”
A person also deserves attention for the following statement. “I wanted to create a piece of software for an idea I thought would do well. I am not a software engineer, so I started with a system where everything is done manually. Every lead is offline, such as from mall kiosks. Every operation is through telephone. Metrics are recorded on an Excel sheet. Customers are happy and my business model is proven. But now it is time to scale up and write that damn software. Please help.”
“I have no funds today. When this software is done, I will give you 10% from every sale I make”
Uhhh.. sounds good on paper. But will they generate enough sales such that the 10% you get will be worth your effort on the project? Can they guarantee that sales will be generated regularly?
When a client comes up with a pitch like this, you should be suspicious. After all, the software may be a complete failure in the market and you may end up with nothing. The offer is slightly more credible if the software will generate recurring payments such as subscriptions and repeat purchases.
But my advice is to stick with a company with sufficient funds, willing to pay you a fixed cost for your work upfront. Other rewards like share of revenue should only be an icing on the cake. By asking you to wait for payment until their first sale is made, the entrepreneur is asking you to take part in his / her business risk. You should only do that if you are a business partner, not a software engineer or a technology provider. Ideally all your risks should be for your own business and never for those of others.
“Part of your payment will be with our stocks”
There is ONE and ONLY ONE way that I collect stocks. I wait for a stock to go public, let it stay in the stock market for at least 500 days, look at the stock’s performance from its chart, do my own technical analysis and then choose to buy it wilfully. I am not having stocks of some random company shoved down my throat. No thanks, I will take real money.
This applies to you too. Do not accept stock payments from companies. You should decide to buy long standing stocks after having thoroughly analysed their performance on the stock market. This goes back to the point where an entrepreneur tries to mitigate some of his / her company’s risk to your shoulders. Do this by all means if you are an angel investor or a venture capitalist, NOT as a technology provider.
“We have this solution in place already. We want to tweak it just a little bit to make it work better. Can you?”
Trust me, you don’t want to go there. Their ‘just a little bit’ comes from a deep misunderstanding of or inexperience with technology. A company that hired me to consult, had made a PHP-based API. They asked me to tweak it ‘just a little bit’, because it was too slow. One look at their solution, and I was convinced that they had chosen the wrong programmers, the wrong software library and the wrong programming language.
The programmers were not graduates in computer science. They were mechanical engineers inducted into the IT industry, which seems to hire just about everyone. These programmers had used the most inefficient data structures and algorithms. No wonder the solution was slow. When I asked them about it, they replied that they were just learning the ropes of computer programming and had put together a concoction of code after copy-pasting templates from GitHub and Stack Overflow (one of the most misused websites on earth).
The software library they had used was putting extreme loads on their processor due to a practice that is a big NO-NO for experienced web programmers (URL rewriting). PHP with URL rewriting was not a good fit for their desired outcome: a speedily working REST API. PHP is rather a good fit for content-based websites like blogs and shopping cart websites.
I told them that it was nearly impossible to speed up their existing setup and offered to write a new solution from scratch using NodeJS, but notified them that it would take a while. They did not accept an overhaul, but agreed to rewriting one of their modules, provided I used PHP itself. Reluctantly, I did it for them, but professionally it was not a good month for me. Ever since, I have stuck to projects that give me full freedom with technology.
“Be available all day. I can call you anytime”
Unless the software is for a hospital or the army, there is no reason to be available at the whim of the client. You and your employees have the right to shut down for the day and not take work home. It is a right to be able to enjoy at home with your family and not field so-called emergencies.
You have to draw the line and say no to a client who uses this sentence. If they do not respect your boundaries, then you don’t need to work with them.
“I need this done in two days, one week at most.”
There is nothing wrong with this type of client, since he / she is stating the need. But I like to think of a software project as having the life cycle of a tree rather than the life cycle of an insect. Good software projects need time to grow and lead to the growth of everyone around them. Over a medium-to-long term project that lasts between a month to three, one can learn a lot and work better every day to finally deliver a work of art.
I usually stay away from projects that last a few days to a week, because I like to run marathons and not sprints. My best quality of work comes forward after I have soaked my mind into a sofware project for at least two weeks. The initial two weeks are spent in planning, making proofs of concept and getting to know the client’s needs better. I am unable to rise to the occasion while trying to deliver projects that last just a few days, because that means that each mini phase of the project needs to be done within hours. I don’t like the feeling of being rushed.
But if you are more suited to the rush of delivering projects within days and you thrive better under a really tight deadline, then go ahead by all means. It is important to realise the type of software engineer / company you are before you commit to a deadline.
Software engineers and technology companies exist for the purpose of solving the technology problems of clients. However, some clients have certain conditions that may not be suitable for you. In such cases, it may be better to let go of such clients and look for a better opportunity.