IPTV application development is much simpler than cable STB apps, but it still has some complicated issues, mostly on the backend in the data acquisition, and overcomming the small nuances of middlewares.
One example is a Mosaic applications used by a major European operator, connected to the hardware mosaic generator for realtime update of the layout.
Besides the obvious issues with the functionality itself (the integration path), we had to build the app to work on two different middlewares (SVG-based Motorola Dreamgallery, and HTML5-based Nordija FokusOn), and account for some business rules like the availability of the mosaic application when certain services weren't purchased by the end customer, even if the platform itself didn't support that level of customization.
Another example is a CUTV (CatchUp TV) application. This one had the frontend components (built on top of Nordija's FokusOn IPTV Middleware), and the backend component did the transpackaging of the source files to HLS so the video would be available both in the STB and on mobile platforms, integrating with the broadcaster's metadata platform. All of these backend components are redundant as well.
These were mostly done in Javascript (the app itself) and C++/Lua scripting on the backend to provide the data needed. I programmed both of these components.