We started freelancing. However, most of our projects have failed because we had to do what we are not experienced with. For example, say our expertise is ASP, but we can't wait for ASP projects to become available, so we take a JSP project instead, which we are not experienced with.
How did you succeed and sustain freelancer jobs?
Our next target is to find local customers in need of a software solution and develop what they need. Is this a good idea? Or should we develop a generic product (say a CRM) and present it to customers and deliver it on demand (a customized one)?
Firstly you need to make sure you operate a business with integrity or you will have real trouble getting a growing list of customers. It sounds concerning that you have been accepting projects for work that you cannot do. If you only know ASP, don't take on JSP projects, I assume your clients didn't know that you weren't experienced in JSP.
As for getting success with freelancer jobs, there is no magic answer. You need to find jobs and deliver successful outcomes. Word of mouth will then work for you and not against you.
As for starting a product, you are going to find it really challenging if you just choose a product for the sake of it. You need to be passionate about the product, but also have expertise in the problem you are solving. "developing a generic product" is going to be very hard, there are going to be many competitors in the market already, and they have time and money behind them, how are you going to differentiate or be better?
I would recommend get your freelancer work going, and make sure you have successful projects. Once you have a steady income stream from this, you can start to spend some of your time building a product. I would also wait to you have a real need or passion for a product, don't just create anything because it seems like a good lifestyle, it is hard work, and hard to be successful.
D-Shan, I bet there is loads of work out there. If you can't get work for X and you are an expert in X, then X is not the problem. Something else is.
I suspect it's that you don't know how to sell your services. The biggest mistake I made as an IT professional was thinking that just because I was good at X I would get work for X. Nope.
You need a salesman to get sales. A programmer to do the work. Sounds like you've got the wrong man for the salesman's job.
The biggest problem we have when selling our own services is because we're so damn good at what we do, and because it comes so naturally, we end up under valuing it, and not being able to sell it efficiently.
Find someone (or learn yourself) how to value what you do, learn how to demonstrate value to prospective clients, and when your value (in their eyes) is higher than your price. You'll start getting business.
And when you learn how to do this. Business won't stop coming in.
You need to make a plan. Whether it is a business plan or just a practical written plan, you need something!
You should not necessarily pursue whatever projects are available. You should be willing to be flexible, but there is a line to be drawn.
The path to sustainable business is finding a few things you do really well, and doing them. Business will grow naturally. This is assuming you've made sure that the market is there for the service(s) you are offering. When you are providing good services, sales will be natural too.
Consider what you and your team are passionate about. When you are doing work you enjoy, you will see better quality, a happier culture, and less turn-over. Don't just think about where you can make money. What is your company about? What kind of work is the best fit for your team?
As far as developing software products, there are pro's and con's. Subscription based software products can allow you to build some stable regular income. However, trying to do much can sink you as well. It is really hard to manage software products and continue doing other projects. The software is a longer term investment and hard to make a priority when the shorter term projects tend to pay the bills, at least initially.