here's some stuff to balance it out.
first, a couple of common complaints:
- too complex
- too rigid
- too buggy
- too opaque
- difficult and time-consuming to debug problems
Howard @ tapestry, maven vs ivy
a collection of links on negative maven experiences
tips, interesting, notes to self, focus on software development
Don’t let your estimates become commitments. Remember the difference between an estimate and a commitment and keep the two activities separate, educating management and customers as necessary.Separate Estimating from Committing | Mike Cohn's Blog - Succeeding With Agile®
Interfaces are a very useful language feature, but are much abused. Symptoms include:Why do most system architects insist on first coding to an interface? - Stack OverflowAll these things are code smells, IMO.
- An interface is only implemented by one class
- A class implements multiple interfaces. Often touted as an advantage of interfaces, usually it means that the class in question is violating the principle of separation of concerns.
- There is an inheritance hierarchy of interfaces (often mirrored by a hierarchy of classes). This is the situation you're trying to avoid by using interfaces in the first place. Too much inheritance is a bad thing, both for classes and interfaces.
(Jim Cooper)
Building something with a single purpose from scratch is mind-bogglingly easy compared to changing something that already exists./dev/null : Weblog
....
The real cost of complexity increases exponentially.
....
One guy wrote eBay in a day -- one guy, one day! When they built version 2, the project took the same guy many weeks. Version 3 took many years. There can never be a version 4
....
why does each version take longer -- even if replacing the system in full? The answer is that small amounts of increases in perceived complexity (e.g. each new requirement) expands the real complexity of the system exponentially. Want examples? Take a hand-built web-site and add internationalization / localization. Add accessibility support. Add support for other devices, such as an iPhone. Add scale-out. Add high availability. Add security. If you know someone that thinks it's easy, then whatever you do, don't hire that person, fire them if they already work for you, and quit if you work for them.
BugsVoice is ... serving friendly error pages and saving the exceptions and feedbacks on your account.BugsVoice - turn bugs into opportunities
So if you get a trapped exception in your application (or in your web server), this will print out the script copied from your BugsVoice account, display the friendly error page to your customers, and collect their eventual feedback. All this will be saved in your account, and you can access any time to inspect the bug, feedback the customer etc. :-) .