Smart Contracts is really awesome because it promises applications that are “unstoppable”, but when you begin to look at it you will find several things that make it difficult to develop for if you are coming from a normal programming framework like Express.js or Ruby or Rails.
It is very difficult for others to execute your functions
To share what you built with a friend you have to send him this hash that your Smart Contract got and it is not something you can tell him out loud as it is too long.
And there is no good interface
The Ethereum Clients is the interface to your Smart Contracts, so it really depends on what “browser” your friend use. They can be using the Ethereum Wallet app or using a still very new app called Mist which not that many people use yet.
Deploying literally cost money
as you have to spend Ether currency to deploy it and if you friend wants to execute your function so does he/she have to!
But one things serverless and smart contracts has in common is that they are all based on functions and this can be super powerful if you can see this connection! That means that you can begin to think in the way a Smart Contract can be built, but still have all the benefits a normal Virtual Machine has, when developing and deploying with serverless functions.
So go build your next project as a serverless project if you want to develop for Ethereum and you can possible port your application straight to Ethereum in a couple of years!