In the B2B space, a lot of code gets written to wire up databases to front-ends of some time, and most of the time it involves an RDBMS. Unfortunately, with all the reliance upon ORM frameworks, developers often can't write or diagnose decent SQL to save their lives. We have a good chunk of Oracle code written by a large integrator, and there are innumerable cursors, one after the other, where a simple SQL join would have done the job much more easily. In Microsoft land, people are leaning way too much on LINQ, with transaction integrity and locking effects as distant afterthoughts.
On the front-end, things are even more chaotic. Whatever Javascript or UI framework you are using, there is always something newer, more "efficient" and inevitably more buggy if you don't take the time to learn to use it properly. Something like Angular is very cool, but very different, and there is a lot of front-end time to learn to use it properly in a production site. Unfortunately, in B2B space, we don't always get the time we would like to learn how to use the latest "hotness".
Abstraction for abstraction's sake is a killer too. Templates, abstraction and such re-use techniques get way overused. Yeah, it might be nice if every single block of code was reusable, and we could arbitrarily stub in test data for every possible call, but the complexity isn't always worth it. Setting up three levels of abstraction to make a class library call that was already abstracted accomplishes nothing. People that code this way never had to worry about stack or heap.
Maybe I'm old, maybe I'm yelling "get off my lawn", but I truly believe that, for especially internal, B2B applications, a focus on fundamentals would make life a little easier to manage.