From my experience, #4 and #5 are definitely problematic for SMEs and start-ups.
Often, due to lack of leverage, sales and upper management are inclined to take on assignment that brings in short-term revenue. Engineers and developers end up doing “sprints” that are sometimes strategically incoherent. That also means the company will be devoting a lot of time and effort achieving short-term goals at the expense of long-term objectives.
When money is on the line, especially if you are desperate, it is hard to turn away from dead-end gigs. Setting the proper expectations from customers is important, especially the request does not align with over business strategy (i.e., “For the project pricing this will take longer than expected, but we will do our best.”) But the struggle between short-term gains and long-term growth will always exist.
On the other hand, engineers and developers sometimes start taking on “special assignments” as they either want to take on more challenges, or as a way to keep themselves away from their tasks at hand. While a modicum of side lines are good for over growth, when they get totally side tracked, your company gets totally side tracked.
Discipline and proper prioritization are critical in this case. If it is clear that one is taking in extra work to avoid doing what they are supposed to do, it should management’s job to find out what the bottleneck is mitigate it. Otherwise, if this lies in the attention span of the individual in question, using this special assignment as incentive would help. But then what can you do when he gets bored with his new assignment and you run out of carrots?