That a “working” prototype with no tests is just as good as a carefully-designed and well-tested feature. I see this happen so often that a coder puts a prototype in front of a product manager or exec and they are like, “this is exactly what we need, now! Ship that!” And then misery ensues for all of the engineers that need to maintain this piece of garbage. As managers pressure the engineers to build new features on top, they inevitably break fundamental parts of it, and without a confident leader to demand that tech debt is paid off, that product will consume the souls of many desperate coders.
In contrast, if you do it right the first time, there will be significant parts of code that never need to change, and the parts that do need to change will be much easier, because it will be obvious if it breaks the tests.
Anyway, a prototype is not a bad thing, if the managers know the difference.
It’s easier said than done to “do it right the first time” if you don’t know how / what to build.
Prototypes can be built to validate hypotheses and generally figure out what works, then build the real thing afterwards.
Yea I should have clarified. Prototypes are a great idea. The problem occurs when you say, “this is good enough we can improve on it as we go.” Yea good luck balancing priorities when everything breaks from tapping your keyboard too hard.
As my first job out of college (when I didn’t know what I didn’t know) I was hired to build a bespoke inventory system for a manufacturing company. My prototype became a production system the second I showed it to one of the engineers. The next three months of my life were a living hell as I frantically fixed bugs on a live system. Lesson learned.
I like puting my prototype code in namespaces like “garbage” “trash” “throwaway” etc to emphasize how unfit for production. I’ve no concrete evidence of it’s success, but I like to think it dissuades other team members from using it where they shouldn’t.
That a “working” prototype with no tests is just as good as a carefully-designed and well-tested feature. I see this happen so often that a coder puts a prototype in front of a product manager or exec and they are like, “this is exactly what we need, now! Ship that!” And then misery ensues for all of the engineers that need to maintain this piece of garbage. As managers pressure the engineers to build new features on top, they inevitably break fundamental parts of it, and without a confident leader to demand that tech debt is paid off, that product will consume the souls of many desperate coders.
In contrast, if you do it right the first time, there will be significant parts of code that never need to change, and the parts that do need to change will be much easier, because it will be obvious if it breaks the tests.
That sounds super familiar :D
Anyway, a prototype is not a bad thing, if the managers know the difference. It’s easier said than done to “do it right the first time” if you don’t know how / what to build. Prototypes can be built to validate hypotheses and generally figure out what works, then build the real thing afterwards.
Yea I should have clarified. Prototypes are a great idea. The problem occurs when you say, “this is good enough we can improve on it as we go.” Yea good luck balancing priorities when everything breaks from tapping your keyboard too hard.
Please, we ship whole projects without any automated testing whatsoever then we spend month fixing the mess. The company I work for is smort
This is every company I’ve ever worked for. If other people didn’t vouche for their own tests, I’d assume automated testing was a myth.
hey it’s job security
As my first job out of college (when I didn’t know what I didn’t know) I was hired to build a bespoke inventory system for a manufacturing company. My prototype became a production system the second I showed it to one of the engineers. The next three months of my life were a living hell as I frantically fixed bugs on a live system. Lesson learned.
I like puting my prototype code in namespaces like “garbage” “trash” “throwaway” etc to emphasize how unfit for production. I’ve no concrete evidence of it’s success, but I like to think it dissuades other team members from using it where they shouldn’t.