There’s nothing more frustrating than finishing work on your feature only for Product to move the goal posts right? “The feature needs to do these 3 extra things now” or “we just realised that part won’t work” are dreaded words to developers. We just spent hours coding the feature exactly to spec and someone with no idea how long it took just pulled the carpet from under our feet.
The solution here is not for your Product managers to learn coding and understand from your point of view. It’s actually the opposite. You should get into Product, understand how product development works and why certain techniques result in great features for the customer (because that’s who we’re here for after all).
The end goal here is for you as a developer to be involved in the product development process higher up the chain. You shouldn’t receive a Spec, Jira ticket or Backlog item with no clue on how it got there. In fact you should be helping build the early validation prototypes of features. These, by definition are throw-away code. You expect a miriad of changes to be thrown at you, but you don’t mind because you and Product are validating the best way to build that feature for the customer. Once the feature has been validated (with your involvement) you will be better prepared next time you finish a feature and a change is requested.
Of course no self confessed blog post would be complete without an extensive reading list, these are ordered by importance: