Here is the basic rule:

Check from init.ora the value for DB_BLOCK_BUFFERS. Calculate how much this makes in bytes. Say you use block size of 8K and DB_BLOCK_BUFFERS = 5000. Then you come with a value of 40000K. The SHARED_POOL_SIZE should generally be 50% up to 150% of the calculated value. So we are now in the interval (approx.) 20M-60M. Now comes the tricky part, 20M? 40M? 60M? It depends on the amount of stored PL/SQL (functions, packages, etc). If you have a lot of them go fot 60M shared pool. There are Oracle DBs without any stored procedures. Then you might downsize your shared pool to even 10-15% of the calculated value based on DB_BLOCK_BUFFERS.

Was my explanation clear enough :-)