I see that you got some answers, but I would like to repeat how much time is wasted going beyond the borders of different governors on the platform. As much as I like the platform at certain levels, I would strongly, strongly recommend against it as a common application development platform. This is great as a super customizable and extensible CRM application, if that's what you want. While their marketing is exceptional in order to promote the idea of Force.com as a common development platform, it is not even remotely closed.
The effectiveness of using a stable platform and avoiding big problems with performance and stability is easily lost, trying to encode the boundaries that people refer to. There are so many restrictions on the platform, it becomes completely insane. These restrictions are not the ultimate restrictions that you click when you have many users, you will immediately hit them.
Although there are usually ways around them, it is very difficult to find strategies to avoid them, while you are also trying to develop the business logic of your actual application.
To give you a simple idea of how the developer is not friendly with the environment, take the "lack of debugging environment" mentioned above. This is worse. In the debug logs, you can see up to the 20 most recent server requests. So, when you are developing inside the application, you need to create a “New” debugging request, select your name, click “Save”, return to your application, refresh the page, return to the debugging tab, try to find the request that will host your debug log , click “find” to search for the text you are looking for. It's like ten clicks to see the debug output. Although this may seem trivial, this is just an example of how little attention is paid to the experience of developers.
Everything about the development platform is a misleading thought. This is great for what it is, but overall PITA for the most part. If you don’t know exactly what you are doing (since you are certified and have a very deep understanding of Apex), it will easily transfer you to 10-20% of the time, which in another environment, something like this would be ridiculously simple if you can even succeed at all.
The restrictions of the governor are really so bad. You have a combination of various restrictions (database queries, returned strings, "script statements", future calls, callouts, etc.), and you must know exactly what you are doing to avoid these errors. For example, if you have a calculated field formula value for an object, and you have a trigger for a child object, it will trigger the triggers of the parent objects and count them against your restrictions. Such things are not obvious until you have experienced the painful process of trying and failing.
You will try one thing to avoid one limit, and hit another in an endless game of "hit the limit." In the process, you will have to radically redesign your entire application and approach, as well as rewrite all of your test code. You should have 75% coverage of the test code for deployment to production, which is actually very good, but in combination with all other restrictions it is very burdensome. You’ll actually hit the governor’s limits by writing your own test code that wouldn’t appear in normal user scenarios, but that would not allow you to achieve coverage.
This is not to mention a number of other problems. Packaging is not what you expect. You cannot pack your application and deliver it to users without significant user intervention and configuration from the organization administrator. AppExchange is a complete joke, and they even started charging 5K to get your application. Importing with a data loader sucks in, especially if you have triggers. You cannot export all of your data in one step, which includes your relationship in such a way that it can be easily imported into another organization in one step (for example, dev org). You can update the sandbox only once a month from production, without any exceptions, and you cannot include your data in the default update unless you call the manager of your account to unlock this feature. You cannot delete data in user objects in bulk. You cannot change package names. Some things may take many days after you requested them, for example, backing up data before you want to deploy the application, without reporting progress on this path and not making much sense when exactly the export took place. Given that there are problems of data synchronization, if there are relationships between the data, there are serious problems with data integrity because there is no such thing as a “transaction” that can export multiple objects in one step. There are probably some commercial tools to facilitate this, but they are not available to regular developers who may not have a huge budget.
Everything else said here is true. Sometimes it may take from five seconds to a minute to save the file.
I do not want to be so negative, because the platform is somewhat cool, and they are trying to do something in a multi-tenant environment that no one else does. This is a very innovative environment and powerful at some levels (I really like VisualForce a lot), but give it another year or two. They collaborate with VMware, perhaps this will lead to the fact that developers will play more in mannequins, rather than in a prison cell, to work.