For the software you're thinking about, do you have specific use cases or users in mind? Or are you building, say, an app for the first time, perhaps for a very early stage startup that is nowhere close to market fit yet?
We typically write acceptance tests, and they have been helpful either early on or later in our product development lifecycle.
Even if software isn't defined upfront, the end goal is likely defined upfront, isn't it? "User X should be able to get data about a car," or "User Y should be able to add a star ratings to this review," etc.
If you're building a product where you're regularly throwing out large parts of the UI / functionality, though, I suppose it could be bad. But as a small startup, we have almost never been in that situation over the many years we've been in business.
We typically write acceptance tests, and they have been helpful either early on or later in our product development lifecycle.
Even if software isn't defined upfront, the end goal is likely defined upfront, isn't it? "User X should be able to get data about a car," or "User Y should be able to add a star ratings to this review," etc.
If you're building a product where you're regularly throwing out large parts of the UI / functionality, though, I suppose it could be bad. But as a small startup, we have almost never been in that situation over the many years we've been in business.