Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I know the title is a bit vague so I\'ll try to be more precise in explaining wh

ID: 659619 • Letter: I

Question

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 :)

Explanation / Answer

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.