Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I know the title is a bit vague so I'll try to be more precise in explaining what's my actual question (I apologize in advance if this is a duplicate).

I work for a small company (8 people) that works with Linux / PHP / MySQL to deliver various solutions (CRM amongst everything) to several larger financial institutions.

The process of actually winning the contracts was always painful and I was tasked with explaining why use MySQL and not MSSQL or PostgreSQL or Oracle 11g, why use PHP and not a compiled language or ASP.NET or Java and the list goes on.

And this is the problem - I really am not proficient enough with mentioned commercial solutions (databases). I've done some worth with mentioned databases, but that was simple testing, such as how to create view in this RDBMS opposed to MySQL, how to do a trigger here, how to declare a stored procedure here, how to profile a query - but, I've never worked with any of the mentioned databases extensively as much as I have with MySQL.

On the other hand, I've been introduced to MySQL in early 2000. only to be more and more proficient with it, its quirks and even extending it trough UDFs or hacking the source code in order to see how things work behind the scene - so, as I like to think, I know how MySQL works, what to expect of it and how to add functionality we require.

A few days ago we started initial negotiations with our next-to-be client who is in need of bespoke solution for client / business management. They have their own team, however those people didn't succeed in delivering what the company actually needs - which is where my company enters. Naturally, first thing I wanted to know was what kind of technology was used to build systems that are currently running and keeping the client's company running - and I saw things from Postgres for smaller apps to MSSQL for the actual client database.

Of course, as the company isn't satisfied with their current system(s), that implies something is going wrong. Currently, there's no way of synchronizing data between the main company and its branches, thus - there's no unified client database. It's incredibly hard to track expenses, again - due to disparate systems.

And here is what I have problems with - as soon as I mentioned technology we use, the company's development team frowned upon us and belittled us saying that open source technologies are insecure, buggy, prone to hacking, slow opposed to commercial ones (without any actual proof).

Just for argument's sake, I've worked with larger datasets built upon MySQL (25TB+) that stores various information and I've been able to keep up with any requirement I had so far when it comes to response times and performance of the application built upon MySQL.

But, since I am not experienced enough with other databases - I'm unable to provide actual facts representing that technology I use is at least on par (if not better + cheaper!) than commercial solutions. How would you defend your (my) position when faced with a technical person who favors Microsoft's software over open source one in a company that employs several tens of thousands of people with over 10 million customers? Would you even choose MySQL for the database behind a system that should be powering such a large company? If not, what would you choose and why?

Sorry for the wall of text :)

share|improve this question
2  
Being in the MS camp, I'd say try and find a common ground, e.g: SQL is SQL. Its probably very easy to migrate from MSSQL to MySQL (and visa versa) without to much effort; The Web front end is also interchangeable. It doesn't matter which tech you use, in the end it will run on any browser equally. I can't see why using a mixed approach would not work? e.g. Use PHP with MSSQL, heck even PHP can be easily installed in IIS. That way at least the clients will not "feel" too alienated. –  Darknight Mar 23 '11 at 15:10
1  
I have to disagree with you here. While SQL specification doesn't care about actual low level implementation and limitations of hardware - vendors do. That's why you have various RDBMS systems working in a different way, with their own extensions to SQL itself. If I wouldn't have to worry about how the app will behave when dataset reaches a few TBs - good, I'd have no problems. However, that's not the case, so I cannot assume that SQL is SQL and that I can just use drop-in replacement out of the box. –  Michael J.V. Mar 23 '11 at 15:55
    
Having gone through Oracle -> MySQL migration I know that many RDBMS have their own extensions, and their own performance characteristics which cause migrations to be a huge pain. –  dietbuddha Mar 23 '11 at 16:45
add comment

8 Answers

up vote 5 down vote accepted

Keep in mind that IT has a big responsibility, and they tend to be rather conservative. In their minds (whether it is right or not), IT has to protect the corporation from itself. If the corporation wants to have a completely open topology and no DMZ to protect the internal network from the external network, IT wouldn't be doing their job if they let that happen.

The reason IT is so conservative is that they know that when the crap hits the fan, it is going to be their butt on the line. They want to know that what you are proposing is safe, and they aren't going to get hauled in for a verbal beat down if the service you provided falls over one day due to the load.

IT has darling technologies, which they trust. Trust is an important factor here in the emotional attachment to the alternatives. What you lack is knowledge about the alternatives--what they can do for you and how they can solve your problems. If you are going to engage the IT department, you have to meet them where they live. They trust technology X, you trust technology Y. You're job is to find out what they trust about technology X and how technology Y satisfies those concerns. You also have to bring in the bottom line arguments. If IT understands how to maintain technology X, it's a big win. They are going to need training for technology Y. Showing how they are potentially similar can also help you.

You are going to need to talk to vendors for competing technologies. You need to find out how they can do what you want, and how much it would cost. Armed with this information, you can then go to your client with the answers to their questions. Also armed with this information, you can tell them that if we went with Oracle or MSSQL the cost would be 5x (or more) the cost of going with MySQL--even with MySQL support plans in place.

Finally, if you are serious about the work, you might start looking at the commercial technologies and figuring out how you can make something like the database interchangeable. There's nothing worse than losing out on potentially good clients just because you don't seem willing to look into what the client perceives as tried and true solutions.

share|improve this answer
    
+1 for trust - that is almost always what it boils down to. It also goes the other way - they possibly got burned with earlier versions of other technologies, and so do not trust them as much (I know several DBAs who talk about MySQL as if it was still version 3). –  HorusKol Mar 23 '11 at 22:31
    
This is a good answer, but a point I want to add: Trust is not all. Another factor is administration knowledge and experience. If a customer has tons of Windows and SQL Server admins a LAMP server might be hard to sell. With trust, to get back to the answer above, one probably might sell a "WIMP" stack (Windows+IIS+MySQL+PHP, youmay decide whether there's a pun intendet ;-)) –  johannes Sep 2 '13 at 17:27
add comment

Berin hit the nail squarely on the head. One does not sell technology to IT executives-- one sells peace of mind! IBM remained the king of the hill for decades because they had the best service and support organization in the industry (no one ever got fired for buying IBM equipment and software). If one of their products took a dump at 1:00 a.m., one could be assured that an IBM SE or CE would be on his/her way to one's site within minutes. Microsoft copied IBM's business model, so that they could break into the "glass house" market.

share|improve this answer
add comment

Does the database really matter? SQL Server is a fine database which will work as well as MySQL.

I'd try to find a middle ground. Why not use PHP with SQL Server? Adding some water by the wine might get them to accept the, in my opinion more important, programming platform.

share|improve this answer
add comment

When you go against someone's current technology, they'll find any excuse to justify what they're doing. The example you gave is a team that is now making excuses and licking their wounds over the failed project. Yes, they're pretty defensive, so they picked on open source. I'll bet if they're a Microsoft shop they'd have a reason to not use Oracle and visa versa. You need to focus on the decision makers that dropped the internal app. Their staff doesn't like your product, tell them to consider the source.

I'm not convinced your open source is cheaper argument is valid in all cases. If I have a bunch of Windows servers for other reasons (file/print sharing, Exchange, other apps using SQL Server), adding one more app is really not going to necessarily require additional licensing, hardware or hired expertise. If they expect exponential growth, that may be a different story.

Since you are saving on software licensing for your product, are you able to offer other services for the same/similar price? Do you have a better support package? Would you provide developer assistance, so your customer's could customize the system and integrate? Some companies may want the ability to grow into having in-house development that can do that. No application should be an island, especially CRM. Can you provide a hosted solution that could later be brought on site or be some sort of hybrid to make it easier for outside sales staff, clients and business partners to connect to the hosted version?

share|improve this answer
add comment

It sounds like they are avid Microsoft fans, so guiding them to an open source solution might be tricky, but not impossible. Here are some thoughts.

  • Give samples of work that you have done and stats about them. (ie. supports ###,### users, ###gb/tb or data, with quick response times.
  • Outline all the costs involved for each solution. Hardware, licensing, installation, setup, training, on-going costs, etc.
  • What will the ROI be? If you are dealing with managers who are not technically savvy and their is a significant ROI between solutions, to them (most) it's a no-brainer. Plus if the company is that big the 'savings' factor is something that will make them look good to their bosses.
  • Try to get the point across that your solutions work. If they are coming to you b/c theirs doesn't then they want your expertise. Give it too them! They will try to question your methods, etc, but stand strong. This is what you do for a living!
  • Do I even have to mention Windows vs Linux? An open source solution (LAMP) vs a closed solution (MS/asp.net/mssql)
    • Open source (can) have many more developers working on it
    • Open source issues are solved/patched much quicker and in less time (sometimes 'patch Tuesday' doesn't come quick enough)
    • Open source code has been peer reviewed by many people. More eyes on it means issues are typically spotted quicker and fixed sooner.

A quick search on Google of 'open source vs closed' or 'MS vs Linux' will help with all the factors you need.

Again, don't sweat about the dev team raising their eyebrows. You wouldn't have been called in if they were doing their job properly!

Good luck!

share|improve this answer
add comment

I think that at least a seed for the proof you need is in your question:

Just for argument's sake, I've worked with larger datasets built upon MySQL (25TB+) that stores various information and I've been able to keep up with any requirement I had so far when it comes to response times and performance of the application built upon MySQL. [emphasis added]

25TB is by anyone's standards a lot of data, although I'm sure there's bigger. How much data storage is this client likely to need? If it's less, you may be able to point to this project as an example of scalability. Even if they require larger, you can still use that to show that, yes, this is a serious technology.

Edit in response to comment: Perhaps someone from the other company (or another company you've done work for) would be willing to be a reference? They would be able to vouch for the quality of your solution. They would possibly be able to disclose more information as well since they know better what is proprietary and what could be disseminated.

share|improve this answer
    
Amount of data that the client will need is unknown, which implies that I must aim for a scalable architecture, such as the one when I worked with forementioned 25TB dataset. You are right, I can use it as the reference, however due to contractual constraints - I cannot actually show that particular dataset size or disclose any other information to the new client about the old client, which puts me in a difficult position when it comes to providing solid, visible proof. –  Michael J.V. Mar 23 '11 at 13:58
add comment

Have you tried explaining to them that MySql now has the backing of Oracle and that they can buy support from Oracle if that's what concerns them? Pull a load of stuff off the internet to back your point of view.

On the subject of Open Source generally, of which Postgres is part by the way, a good case I often make is that it has the support of a whole community of users who are almost all developers.

Alternatively, have you considered learning other technologies? You may not be as strong in SQL Server or whatever, but you will find it a very simple transition. Most of the concepts are the same. Some companies just feel a need to spend money, to make them feel they have a better product.

share|improve this answer
    
I'm currently in the process of compiling the list that backs up my choices. When it comes to learning new technologies - due to the day to day obligations I have, it's almost impossible for me to devote the necessary time to learn Postgres / MSSQL / Oracle 11g to the level I deem solid. Sure, the actual queries / views / procedures would probably take less time to get familiar with, but sadly - that's not the only thing I do, there's configuration, testing of the architecture, stress testing and so on. –  Michael J.V. Mar 23 '11 at 14:03
add comment

You cannot use reason against prejudice (beliefs based on rumor and not on facts), and you can't judge people for wanting to stick to what they know has more-or-less worked in the past.

The best you can do with such a client is ask them to allow you to run a pilot project to let them evaluate the proposed technologies and your ability to deliver. You may have to do that for free.

If the client won't give due consideration to your effort, then the problem is beyond learning the proprietary technologies they use.

share|improve this answer
    
Thing is, what they currently use isn't working, nor is it extensible at all so the costs of upgrading their current system is much, much larger than creating a new one and importing current data. It's not the client itself that's the problem, it's the IT department. The client knows they need to move forward, however no one wants to sack the IT department, but IT department won't budge. I've dealt with such cases before, however this time I absolutely must justify my reasons for using what I want - and the sole argument that I have is that I'm accustomed to it, which doesn't seem to be enough –  Michael J.V. Mar 23 '11 at 13:27
    
@Michael J.V., you are correct, that reason alone is not enough. You need to do a little market research to determine what the alternatives can do for you, and what the costs are. That means talking with sales people, etc. (I know, I'd rather have my teeth pulled out too). You can't intelligently talk about pros and cons until you know what they are yourself. –  Berin Loritsch Mar 23 '11 at 14:02
    
@Michael What you describe is a situation so common that one might label it as normal. You'll be in this situation many times in your career, so you can take this one as a learning opportunity, whatever the outcome. As to the technical problem, consider that yes, Microsoft technologies can be tweaked into delivering the functionality and performance required, even if they are the most costly option. IT is right in that part: to judge, you'd have to be able to compare what it would take with and without MS. –  Apalala Mar 23 '11 at 14:14
    
@Michael One can go against a complete, inept IT department if one has the leverage with upper management, but it is always ugly, it is long-term, and it is not always in the best interest of the client. You'll be surprised at how much IT can change over time if you just stick around and try to become their ally instead of their enemy. –  Apalala Mar 23 '11 at 14:19
    
You hit the nail on the head with this comment! Our largest client has absolutely inept IT department. Also, the IT dept. was given a task they weren't ready for - since they are mostly network engineers - they have no programming experience, hence they can't do complex tasks revolving around extending the company's CRM and what not. However, they battled us for years with implementation of our system and after all that struggle - we came to terms that we're all in the same camp, working together and no one wants to sack anyone. I just want to avoid the same happening with the new client :) –  Michael J.V. Mar 23 '11 at 15:57
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.