I got a Mega 2560 about a week ago along with an ethernet 'shield'. I have previous experience programming microcontrollers before so I thought this should be pretty straightforward.
I write some code to use the ethernet shield. (What are these adapters called 'shields' anyway?) It works but isn't particularly reliable especially on cold boot. Then I see the 'shield' shares the same reset as the main processor which has a impractically low value reset capacitor. I know this is done to allow the interface to reset the device but doesn't work well when standalone.
A design goal for my project is high reliability. It needs to be able to reset the ethernet chip in case of difficulty. I discover this isn't possible without hacking the design. This requires cutting the reset pin off.. J.. well - the connector labeled 'power' (as opposed to the actual 'power' connector). Then only after much frustration I discover the same reset line goes to the ICSP connector, so I have to cut that off too.
Only then can I connect the ethernet reset to a processor port to permit a software reboot.
In any high availability design one absolutely must have a watchdog function. I enable the watchdog timer on the AVR and soon find the bootloader frustratingly omitted the single line of code necessary to disable this on startup - therefore it immediately enters a loop on boot.
After researching this I see where others have modified the bootloader to fix this and other issues. The only way to do this is via an ICSP programmer. I proceed to build the parallel programmer described on the bootloader page to fix this bug only to discover after assembling it doesn't work on win64. This should be a the top of the page in my opinion.
I'm wondering if others are sharing similar frustrations and if Arduino is really ready for prime time. Please feel free to follow up with any 'gotchas' you've discovered to help save us all some time and aggravation.