The programming exercise can be useful when there's many ways to solve the problem. I specifically use one that, depending on the person's approach, could run in linear or exponential time based on the number of input records. In either case, I know that they gravitate towards efficient solutions or can have a followup discussion on what they would do differently in input data size were larger and execution time were more critical. In either case, it tells me something useful about the candidate and shows how comfortable they are in front of a computer. It's amazing how many people will apply for senior positions who act like the computer is an evil and frightening black box.
I use the programming exercise to determine if the person's computer skills match their claimed skills. From the resume and interview, I should have a good impression of what the person has done and could do. If I describe the problem to them and they say they can easily do it in 10-20 minutes, that's a good opportunity to nut up or shut up. The better they do, the more confidence I have in everything else they told me. If they claim lots of experience and are uncomfortable being put in front of a computer, they're not the kind of person I want to hire.
When I interview people, I ask them about their experience and give them opportunities to let me know their strengths and weaknesses. If someone says language X is their go-to language for solving simple day-to-day problems and they're an expert, a short demonstration tells me much more than they ever could. I will never ask someone to use a language they haven't already said is one of their strongest or do anything to make the problem difficult or obscure.
I tried the fizzbuzz exercise mentioned in another post and it took me 1 minute, 40 seconds from creating a scratch directory to running the completed, working program. Having never seen or thought about the requirements before, I consider that a confirmation that this isn't a bad interview question.
The programming examples I ask for are more complicated, but ones that I can do from scratch in under 3 minutes, so giving someone 45 minutes, ability to ask any questions or clarifications they need and full access to google and man pages seems perfectly reasonable. Even if the person is nervous and not good at interviewing, they should be able to complete the exercise. I want programmers who are good at collecting requirements and communicating with the computer by means of code. This is an opportunity to shine if their interviewing or communication skills are not as strong as their programming. The exercise is pass/fail and I never compare their time to complete the exercise to my own.
When I look at the code, there are several places where style and experience show. For example, if I have them run their code against 20 records, will it take exponentially longer if I later run with 200 or 20000 records? That's not part of the stated requirements, but if their code runs in linear instead of exponential time, they pass with a solid thumbs up. If their runtime would be exponential, it's an opportunity to pose that back to them and see what they would do differently given that as a new (after the fact) requirement. Understanding the difference and knowing how to fix it is also perfectly acceptable. Requirements change all the time and that's a good opportunity to understand their thought process.
I've never hired a programmer without making them write code and never would. I'm also cautious of places that would hire me without putting me in front of a computer, even though I interview well. I've interviewed far too many people who may talk the talk or hide behind English as a second language, but are actually just incompetent. Likewise, producing elegant code on the fly speaks for itself.
Patents should not be consumer centric. The idea of a patent is that you get to benefit from your novel idea by having exclusive rights for a period of time. The patent system is intended to benefit those with good ideas and the companies that invest in bringing those to life.
Sitting on patents should invalidate them. Profit for the creator should be the purpose of a patents. If you hold a patent, you should be actively working towards producing the product that you patented. Software patents are a perfect example of how this should be used. The patent is presumably created after the code, so if you don't license the code to perform the function for a published fee, your patent should be invalid. If your patent covers checking if an integer is in a specified range and you charge $1000 per item produced, nobody will ever pay that and therefore you're not actually trying to sell it. On the other hand, if RSA sells software that performs authentication and the cost of that product or library is reasonable, people will purchase and use it because it's a lot more work and risk to try to do it yourself without the experience and expertise they provide.
Imagine a good idea for a product that can be molded out of plastic. Once you design and produce a trial run of your product, someone in China can copy your resulting product and sell it for far less than you can. The benefit of a patent is that the local plastic molding shop can't just rip off your idea and undercut you on price. Without that protection, why would someone invest a significant amount of time and money in creating something new? We don't have a society that pays for cost of living for people who are altruistic and donate all of their good ideas to the public domain.
Patenting rounded corners is taking stupid to a new level. Can I patent sharp corners? My patent allows everyday objects with my patented sharp corners to be used as improvised weapons to cause injury to oneself or others. Then you either have to pay apple or me, and I'm willing to charge you a mere penny per corner, as long as you agree that payment of the fee does not relieve you of any legal liability for injuries caused by your weapon(or you may call it product).
A person's value increases as their capabilities become more valuable to an employer. Comparing totally unrelated jobs is not at all reasonable. Someone could be trained on emptying trash cans in a day. Nobody's going to be a good software engineer without many years of experience.
A software engineer would never be able to make what a CEO makes without learning to smile while lying and stabbing people in the back. Most software engineers I know/am would prefer to not be a total douche bag, and aren't suffering too badly for that.
Learning a programming language is just as useful as learning a foreign language. It teaches kids how to communicate with computers. Programming by itself may be a questionable field to get into as a life long career path, but as a skillset it can benefit many professions. Are there any sciences, engineering or math career paths that would not benefit from the ability to let computers do the repetetive work?
I did consulting for several years as a single member LLC. The paperwork/cost of getting setup was negligible and made contracting through various companies easy. There's a lot of contract gigs available, and you can get a larger percentage of the rate if you do them as 1099 instead of W2 contracts. That becomes important if any of the part time gigs end up becoming your primary source of income.
Hiring all new people as contractors is the right approach for the extended/on the job interview. The overhead cost of contracting companies is worth it when you want to get rid of someone that can't do the job or doesn't play well with others. It's a great way to help the company evaluate the person and vice versa. Every company says they treat their employees well, but being a contractor will show you whether or not you'd still want to work there if you weren't paid by the hour.
I'm basing the "already lost" comment on experience with two of my mom's cases. She prevailed in both cases, one in small claims and one via arbitration, but the time and effort that went into both was far in excess of a couple of hours. It's a part time job for a few weeks for people who don't have the experience with the process and need to learn on the fly.
I wholeheartedly agree that the affected users are entitled to a refund. However, I'm always amazed that people will suggest calling lawyers, taking them to court, or class action lawsuits before fully exploring the "I don't accept your new terms, I'd like a refund" option. From other responses, it sounds like they're probably giving refunds to those who request it, saving everyone time and money.
The deal implies that you're SOL if they go out of business. In that case, backing up your data has always been your problem. I pay $20/year for 20GB of storage from Amazon. You can make up all sorts of reasons they're bad people, but why not get the $499 back, move on and go somewhere else. That's almost 25 years of service for more space from Amazon, so that seems like the path with the least wasted time.
If you have to deal with a lawyer or go to court, you've already lost. Going down that path suggests your time is totally worthless, as is your money.
I don't see why more people don't think of something as simple as responding with a polite request for a refund. Is it really worth their time to deal with bad PR and the deluge of hate emails/calls to their support people from a bunch of annoyed/.ers? Hint: it's really easy to waste many thousands of dollars on dealing with annoyed customers. There's got to be a limited number of people who have the lifetime product, so there's a finite amount that refunds would cost the company to get out of the deal with the least hassle.
It would be a small claims case, so not much to file a case.
However, the reference to something coming in February 2006 implies they've been in business for over 6 years. That suggests that if they're smart, they just refund the $499 to anyone who asks, or offer them double in future service credits. How long would $1000 worth of service credits last?
You think the US military would use bombing, biological, chemical and nuclear strikes against US cities? Any soldier who wouldn't refuse such orders is far worse than any terrorist.
I was a contractor for 10 years for organizations that had the short term mentality. I was glad to be hourly when their schedules were unrealistic. I'm an FTE now with a different company that treats people well, pays well, and encourages development. I no longer bother responding to headhunters with "how much?" since I don't care.
Treat people like they're expendable cogs and don't be surprised that they see you the same way. Treat people decently and most people will reciprocate.
I'm in a similar boat - not morbidly obese, but I could safely lose 100 pounds. I've found that just using smaller plates help. The difference between an 8" and 12" plate doesn't sound like much, but it gives you more opportunities to evaluate your intake. When you're done with one serving, you can take a minute to decide if you really need to go back for more or if you've been eating larger servings because it was already on your plate. No need to starve yourself or make drastic changes to the foods you eat, just give yourself more opportunities to ask if you're still hungry.
I find it completely credible that stalking could go on for a long time and that law enforcement wouldn't help at all. Many years ago my girlfriend had a stalker. He was leaving weird messages on her car at home and at work and showed signs of escalating like messages on her bedroom window, which was in the back of the house. We went to the police with the notes, a summary of when and where things had been done as well as the text of the law against stalking and they refused to take a report. Her employer didn't like someone coming on to their property to harass an employee, so they had one of their attorneys do all of the paperwork and force the police to take a report. The guy was identified and convicted of stalking. Stalking is ignored by law enforcement until after the victim is raped or killed, then it can be used as evidence of pre-meditation.
There are support contracts with large companies that take this into account. I used to work for a financial company that would not allow hard drives to leave the data center. There was some fee associated with this arrangement, but it was less than the cost of buying a replacement drive. When you have a lot of hardware from a particular vendor, it's not a big deal to let the little stuff like this slide.
Should be, but generally isn't. Security costs money, and most companies have been in a cost cutting mode for years. Security is one of the first things to go since it's invisible until you're compromised.
It's 2038, and it will only happen if they don't upgrade from the archaic 32 bit version of Unix that runs on them now. 32 bit operating systems destroy women, children and space/time. For the humor impaired, this is not a serious comment.
I created new databases and tables to have a fair comparison for performance testing. There were no indexes at all used for testing. That wasn't meant to be a robust test of the capabilities, but more of a validation of what was happening and why. I agree that with the right architecture and strategy it's entirely possible to make MySQL perform well, I was just surprised to see such a dramatic performance difference in some relatively simple queries. It's always going to be necessary to do some work on performance tuning to get the best results, I was just surprised with how much earlier in the process that's required under MySQL.
I keep coming back to trying MySQL and finding it disappointing, usually related to work. I've been using PostgreSQL since 1997 and it's always worked well for me. The most interesting comparison isn't between MySQL/PostgreSQL, since that is a religious war with a lot more people on the MySQL side. The best comparison is how easy/difficult it is to migrate from one DB to another. Migrating from PostgreSQL to Oracle has been very simple when I've done it. Everything just basically works the same out of the box. If it's common to need to do so much MySQL-specific performance tuning, I would see converting to/from it to be a much more difficult project.
I really wonder how much time and effort goes into large MySQL databases and how much is related to how it works. Basically, from a practical standpoint, is that money being spent on people's time costing more than Oracle licenses would? I'm not even a big Oracle fan, but I have developed data warehouses on Oracle and I can't argue with using a tool that works. At the end of the day, finding the right solution to the problem is what counts. It would just be interesting to see cases (other than small, simple databases) where MySQL really shines. A lot of people really like MySQL and use it for some pretty large and business critical applications. I would like to think there's more than ignorance of other databases that drive those decisions. =)
The join worked better in MySQL, taking 2s, compared with 10ms with PostgreSQL. I went with the join because I could also create a view, but was again dismayed that the 2s view took 14 minutes to run when I added "where hostname like 'foo%'" to the query on the view. The moral of the story seems to be that you can make things work with MySQL, as long as you're willing to spend the time figuring out how to do it their way and not trying to use any abstraction like views to keep the structure obvious. I've seen significant improvements with performance tuning in PostgreSQL and Oracle, but never had such simple queries take so long on relatively small data sets out of the box.
There's a level of complexity and size where Oracle does a much better job out of the box than MySQL. Oracle is expensive - it can cost more to license than the expensive hardware it runs on. However, a team of people to address performance issues is not a trivial cost either. Trying to take something huge, like they have now, and switch databases is a giant undertaking and I wouldn't be surprised if it cost more than 10 years of Oracle licensing when you think of all of the manpower required. Oracle is an expensive, bloated pig of a database, but as databases grow in size, Oracle does well and they'll do everything they can to keep you happy. People look at the cost of converting from MySQL to Oracle, but I've never seen anyone try to go the other way around to save some money.
Ability to convert depends completely on the application. If the MySQL app written using simple or at least standard SQL, it will be easy to migrate. However, MySQL has some very problematic areas (i.e.: select foo from table1 where id in (select id from table2 where criteria='something')) that make people do some very nonstandard and MySQL-only style fixes to address performance. The query shown with 5000 rows in table1, 50000 in table2, table2 only having 50 rows that met the criteria took ~10ms on PostgreSQL 8.3, and 52 minutes on MySQL 5.1 on the same hardware. The only way I could find to get the ~10ms performance on MySQL was so goofy that MySQL itself refused to allow me to create a view from that select statement.
Converting from PostgreSQL to Oracle has always seemed much easier and smoother, but PostgreSQL isn't as popular as MySQL because it hasn't been as easy to throw hardware at problems with scaling PostgreSQL, whereas MySQL has always made that option easier.
Each database has its own pros and cons, but most times you don't discover how hard it is to migrate until it's too late.
The programming exercise can be useful when there's many ways to solve the problem. I specifically use one that, depending on the person's approach, could run in linear or exponential time based on the number of input records. In either case, I know that they gravitate towards efficient solutions or can have a followup discussion on what they would do differently in input data size were larger and execution time were more critical. In either case, it tells me something useful about the candidate and shows how comfortable they are in front of a computer. It's amazing how many people will apply for senior positions who act like the computer is an evil and frightening black box.
I use the programming exercise to determine if the person's computer skills match their claimed skills. From the resume and interview, I should have a good impression of what the person has done and could do. If I describe the problem to them and they say they can easily do it in 10-20 minutes, that's a good opportunity to nut up or shut up. The better they do, the more confidence I have in everything else they told me. If they claim lots of experience and are uncomfortable being put in front of a computer, they're not the kind of person I want to hire.
When I interview people, I ask them about their experience and give them opportunities to let me know their strengths and weaknesses. If someone says language X is their go-to language for solving simple day-to-day problems and they're an expert, a short demonstration tells me much more than they ever could. I will never ask someone to use a language they haven't already said is one of their strongest or do anything to make the problem difficult or obscure.
I tried the fizzbuzz exercise mentioned in another post and it took me 1 minute, 40 seconds from creating a scratch directory to running the completed, working program. Having never seen or thought about the requirements before, I consider that a confirmation that this isn't a bad interview question.
The programming examples I ask for are more complicated, but ones that I can do from scratch in under 3 minutes, so giving someone 45 minutes, ability to ask any questions or clarifications they need and full access to google and man pages seems perfectly reasonable. Even if the person is nervous and not good at interviewing, they should be able to complete the exercise. I want programmers who are good at collecting requirements and communicating with the computer by means of code. This is an opportunity to shine if their interviewing or communication skills are not as strong as their programming. The exercise is pass/fail and I never compare their time to complete the exercise to my own.
When I look at the code, there are several places where style and experience show. For example, if I have them run their code against 20 records, will it take exponentially longer if I later run with 200 or 20000 records? That's not part of the stated requirements, but if their code runs in linear instead of exponential time, they pass with a solid thumbs up. If their runtime would be exponential, it's an opportunity to pose that back to them and see what they would do differently given that as a new (after the fact) requirement. Understanding the difference and knowing how to fix it is also perfectly acceptable. Requirements change all the time and that's a good opportunity to understand their thought process.
I've never hired a programmer without making them write code and never would. I'm also cautious of places that would hire me without putting me in front of a computer, even though I interview well. I've interviewed far too many people who may talk the talk or hide behind English as a second language, but are actually just incompetent. Likewise, producing elegant code on the fly speaks for itself.
Patents should not be consumer centric. The idea of a patent is that you get to benefit from your novel idea by having exclusive rights for a period of time. The patent system is intended to benefit those with good ideas and the companies that invest in bringing those to life.
Sitting on patents should invalidate them. Profit for the creator should be the purpose of a patents. If you hold a patent, you should be actively working towards producing the product that you patented. Software patents are a perfect example of how this should be used. The patent is presumably created after the code, so if you don't license the code to perform the function for a published fee, your patent should be invalid. If your patent covers checking if an integer is in a specified range and you charge $1000 per item produced, nobody will ever pay that and therefore you're not actually trying to sell it. On the other hand, if RSA sells software that performs authentication and the cost of that product or library is reasonable, people will purchase and use it because it's a lot more work and risk to try to do it yourself without the experience and expertise they provide.
Imagine a good idea for a product that can be molded out of plastic. Once you design and produce a trial run of your product, someone in China can copy your resulting product and sell it for far less than you can. The benefit of a patent is that the local plastic molding shop can't just rip off your idea and undercut you on price. Without that protection, why would someone invest a significant amount of time and money in creating something new? We don't have a society that pays for cost of living for people who are altruistic and donate all of their good ideas to the public domain.
Patenting rounded corners is taking stupid to a new level. Can I patent sharp corners? My patent allows everyday objects with my patented sharp corners to be used as improvised weapons to cause injury to oneself or others. Then you either have to pay apple or me, and I'm willing to charge you a mere penny per corner, as long as you agree that payment of the fee does not relieve you of any legal liability for injuries caused by your weapon(or you may call it product).
Is this how it's done in China? If so, their enlightened patent handling process is clearly superior to ours. =D
A person's value increases as their capabilities become more valuable to an employer. Comparing totally unrelated jobs is not at all reasonable. Someone could be trained on emptying trash cans in a day. Nobody's going to be a good software engineer without many years of experience.
A software engineer would never be able to make what a CEO makes without learning to smile while lying and stabbing people in the back. Most software engineers I know/am would prefer to not be a total douche bag, and aren't suffering too badly for that.
Learning a programming language is just as useful as learning a foreign language. It teaches kids how to communicate with computers. Programming by itself may be a questionable field to get into as a life long career path, but as a skillset it can benefit many professions. Are there any sciences, engineering or math career paths that would not benefit from the ability to let computers do the repetetive work?
I did consulting for several years as a single member LLC. The paperwork/cost of getting setup was negligible and made contracting through various companies easy. There's a lot of contract gigs available, and you can get a larger percentage of the rate if you do them as 1099 instead of W2 contracts. That becomes important if any of the part time gigs end up becoming your primary source of income.
http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/Single-Member-Limited-Liability-Companies
Hiring all new people as contractors is the right approach for the extended/on the job interview. The overhead cost of contracting companies is worth it when you want to get rid of someone that can't do the job or doesn't play well with others. It's a great way to help the company evaluate the person and vice versa. Every company says they treat their employees well, but being a contractor will show you whether or not you'd still want to work there if you weren't paid by the hour.
I'm basing the "already lost" comment on experience with two of my mom's cases. She prevailed in both cases, one in small claims and one via arbitration, but the time and effort that went into both was far in excess of a couple of hours. It's a part time job for a few weeks for people who don't have the experience with the process and need to learn on the fly.
I wholeheartedly agree that the affected users are entitled to a refund. However, I'm always amazed that people will suggest calling lawyers, taking them to court, or class action lawsuits before fully exploring the "I don't accept your new terms, I'd like a refund" option. From other responses, it sounds like they're probably giving refunds to those who request it, saving everyone time and money.
The deal implies that you're SOL if they go out of business. In that case, backing up your data has always been your problem. I pay $20/year for 20GB of storage from Amazon. You can make up all sorts of reasons they're bad people, but why not get the $499 back, move on and go somewhere else. That's almost 25 years of service for more space from Amazon, so that seems like the path with the least wasted time.
If you have to deal with a lawyer or go to court, you've already lost. Going down that path suggests your time is totally worthless, as is your money.
I don't see why more people don't think of something as simple as responding with a polite request for a refund. Is it really worth their time to deal with bad PR and the deluge of hate emails/calls to their support people from a bunch of annoyed /.ers? Hint: it's really easy to waste many thousands of dollars on dealing with annoyed customers. There's got to be a limited number of people who have the lifetime product, so there's a finite amount that refunds would cost the company to get out of the deal with the least hassle.
It would be a small claims case, so not much to file a case.
However, the reference to something coming in February 2006 implies they've been in business for over 6 years. That suggests that if they're smart, they just refund the $499 to anyone who asks, or offer them double in future service credits. How long would $1000 worth of service credits last?
They're voluntarily discontinuing the service, they should be willing to pay the $499 back to those who ask for it.
You think the US military would use bombing, biological, chemical and nuclear strikes against US cities? Any soldier who wouldn't refuse such orders is far worse than any terrorist.
I was a contractor for 10 years for organizations that had the short term mentality. I was glad to be hourly when their schedules were unrealistic. I'm an FTE now with a different company that treats people well, pays well, and encourages development. I no longer bother responding to headhunters with "how much?" since I don't care.
Treat people like they're expendable cogs and don't be surprised that they see you the same way. Treat people decently and most people will reciprocate.
I'm in a similar boat - not morbidly obese, but I could safely lose 100 pounds. I've found that just using smaller plates help. The difference between an 8" and 12" plate doesn't sound like much, but it gives you more opportunities to evaluate your intake. When you're done with one serving, you can take a minute to decide if you really need to go back for more or if you've been eating larger servings because it was already on your plate. No need to starve yourself or make drastic changes to the foods you eat, just give yourself more opportunities to ask if you're still hungry.
I find it completely credible that stalking could go on for a long time and that law enforcement wouldn't help at all. Many years ago my girlfriend had a stalker. He was leaving weird messages on her car at home and at work and showed signs of escalating like messages on her bedroom window, which was in the back of the house. We went to the police with the notes, a summary of when and where things had been done as well as the text of the law against stalking and they refused to take a report. Her employer didn't like someone coming on to their property to harass an employee, so they had one of their attorneys do all of the paperwork and force the police to take a report. The guy was identified and convicted of stalking. Stalking is ignored by law enforcement until after the victim is raped or killed, then it can be used as evidence of pre-meditation.
There are support contracts with large companies that take this into account. I used to work for a financial company that would not allow hard drives to leave the data center. There was some fee associated with this arrangement, but it was less than the cost of buying a replacement drive. When you have a lot of hardware from a particular vendor, it's not a big deal to let the little stuff like this slide.
Should be, but generally isn't. Security costs money, and most companies have been in a cost cutting mode for years. Security is one of the first things to go since it's invisible until you're compromised.
It's 2038, and it will only happen if they don't upgrade from the archaic 32 bit version of Unix that runs on them now. 32 bit operating systems destroy women, children and space/time. For the humor impaired, this is not a serious comment.
I created new databases and tables to have a fair comparison for performance testing. There were no indexes at all used for testing. That wasn't meant to be a robust test of the capabilities, but more of a validation of what was happening and why. I agree that with the right architecture and strategy it's entirely possible to make MySQL perform well, I was just surprised to see such a dramatic performance difference in some relatively simple queries. It's always going to be necessary to do some work on performance tuning to get the best results, I was just surprised with how much earlier in the process that's required under MySQL.
I keep coming back to trying MySQL and finding it disappointing, usually related to work. I've been using PostgreSQL since 1997 and it's always worked well for me. The most interesting comparison isn't between MySQL/PostgreSQL, since that is a religious war with a lot more people on the MySQL side. The best comparison is how easy/difficult it is to migrate from one DB to another. Migrating from PostgreSQL to Oracle has been very simple when I've done it. Everything just basically works the same out of the box. If it's common to need to do so much MySQL-specific performance tuning, I would see converting to/from it to be a much more difficult project.
I really wonder how much time and effort goes into large MySQL databases and how much is related to how it works. Basically, from a practical standpoint, is that money being spent on people's time costing more than Oracle licenses would? I'm not even a big Oracle fan, but I have developed data warehouses on Oracle and I can't argue with using a tool that works. At the end of the day, finding the right solution to the problem is what counts. It would just be interesting to see cases (other than small, simple databases) where MySQL really shines. A lot of people really like MySQL and use it for some pretty large and business critical applications. I would like to think there's more than ignorance of other databases that drive those decisions. =)
The join worked better in MySQL, taking 2s, compared with 10ms with PostgreSQL. I went with the join because I could also create a view, but was again dismayed that the 2s view took 14 minutes to run when I added "where hostname like 'foo%'" to the query on the view. The moral of the story seems to be that you can make things work with MySQL, as long as you're willing to spend the time figuring out how to do it their way and not trying to use any abstraction like views to keep the structure obvious. I've seen significant improvements with performance tuning in PostgreSQL and Oracle, but never had such simple queries take so long on relatively small data sets out of the box.
There's a level of complexity and size where Oracle does a much better job out of the box than MySQL. Oracle is expensive - it can cost more to license than the expensive hardware it runs on. However, a team of people to address performance issues is not a trivial cost either. Trying to take something huge, like they have now, and switch databases is a giant undertaking and I wouldn't be surprised if it cost more than 10 years of Oracle licensing when you think of all of the manpower required. Oracle is an expensive, bloated pig of a database, but as databases grow in size, Oracle does well and they'll do everything they can to keep you happy. People look at the cost of converting from MySQL to Oracle, but I've never seen anyone try to go the other way around to save some money.
Ability to convert depends completely on the application. If the MySQL app written using simple or at least standard SQL, it will be easy to migrate. However, MySQL has some very problematic areas (i.e.: select foo from table1 where id in (select id from table2 where criteria='something')) that make people do some very nonstandard and MySQL-only style fixes to address performance. The query shown with 5000 rows in table1, 50000 in table2, table2 only having 50 rows that met the criteria took ~10ms on PostgreSQL 8.3, and 52 minutes on MySQL 5.1 on the same hardware. The only way I could find to get the ~10ms performance on MySQL was so goofy that MySQL itself refused to allow me to create a view from that select statement.
Converting from PostgreSQL to Oracle has always seemed much easier and smoother, but PostgreSQL isn't as popular as MySQL because it hasn't been as easy to throw hardware at problems with scaling PostgreSQL, whereas MySQL has always made that option easier.
Each database has its own pros and cons, but most times you don't discover how hard it is to migrate until it's too late.