Finnbar Ryan asks: “Do you ever start a project on a certain stack/direction/etc., and then realize mid project that there are better options or what you have won’t fulfill the client’s needs? How do you handle essentially starting over or powering through and putting out fires with time/cost constraints?”
My general feeling is that once the ship has set sail, unless it is sinking, it’s too late to return to port or change the framework. It is possible to ‘add new paint’ so to speak and upgrade the navigation system.
Many years ago I came onboard a project-in-progress. There was one other developer who had been promoted from a different discipline. He was a super smart guy who always had a new $50 book in his hand. He had started the project with design “A”, he then read book “B” and because it was clearly going to be easier, he shifted to design “B”. Then he read book “C” and that seemed to be even easier, so he shifted to design “C”.
The better part of a year had elapsed and there was no visible progress on delivery, just a series of disconnected prototypes of sub-systems. I quickly discovered why I was brought into the project – there was only two months left until the project needed to be delivered.
Are Better Options Really Better?
There is always – from some point of view – a ‘better option.’ However, that option is never actually better if you need to sacrifice delivering your project on time.
It’s critical to know before a project starts if the platform selected won’t fulfill the client’s needs. If there are project elements for which solutions are uncertain, we focus on those aspects early in the R&D phase before the technology decisions are finalized.
In my opinion, any competent developer on a platform which can be extended can make anything work — it just may not be as easy as it would be if another platform was chosen from the start.
So, as far as changing a platform mid-project, I would have to say:
- Don’t fall for the grass appearing to be greener – it rarely is.
- Once you start down a path, stick to it unless it is a proven failure.