Most of these aren't really things that a startup can solve, since to be useful, you need to integrate with all the other crap out there, and once you do that, you find you're just as crappy as they are. But I'll chip in with my biggest pain point:<p>It's discontinuities in the development process. Y'know, those little features that seem like they should be easy to implement, but aren't.<p>The particular discontinuities differ between languages, but here are a few that really bug me:<p>Java, C, C++, and JavaScript: Converting a plain old field to a method that computes the property. This is why Java books tell you to always use accessors.<p>Any OO language: Adding a new method to an interface implemented by lots of classes<p>Java/C++: Adapting a 3rd-party class to an interface that it doesn't natively support.<p>Haskell: Converting a pure function to a monadic one<p>Haskell, Ocaml, & Erlang: Adding a new field to an ADT or tuple.<p>Any language without a refactoring browser: renaming a method, field, or variable.<p>All languages: converting prototype code written with ad-hoc data structures (tuples, lists, dicts) to production code with formal data structures (classes, ADTs)<p>All languages: changing the order of function arguments<p>All languages: internationalizing strings