A good company is going to have lots of examples, and excellent references to back those examples up with. And you are going to be able to talk to all of them.
They are going to work with you in a collaborative fashion, and communication is going to be very easy. It’s going to feel like the person / team you partner with is an extension of your own company. Visit https://svitla.com/blog/how-to-give-feedback-to-your-development-team to know how a good software development company work.
They are going to challenge your ideas, if for no other reason to make sure they get the reason for them. You don’t want stenographers. Building great custom software is a creative endeavor.
Most companies work in the same technologies, including .NET, PHP, Java, iOS, Android, etc. The technology isn’t the issue. It’s the product you are creating.
I would also add that the good companies know how to architect a solution properly. You don’t just start programming. You need to understand how all the moving parts go together. It is the most important step, and most of our clients never ask about it, until we bring it up.
Regarding engineering processes, agile is the way to go. You can’t create good custom software by asking a few questions, and then going and building it. You need to build it a piece at a time, with help from the client.
Too many developers think they are geniuses, and they can’t bring themselves to ask basic questions. And that leads to software that does not work for their clients.