System Requirements Can Bring Any Software Project To a Screeching Halt
Part of 10 reasons why Software Development projects fail series.
--
In the computer science world, there is an incredibly thin line between the “easy” and the “virtually impossible.” If you’ve never written a line of code, that might seem like a very bold piece of hyperbole. But it’s true. Asking a software developer to add Feature A to your app or website might be trivial, yet asking the same developer to add a very similar Feature B might be shot down as being entirely impractical and well-nigh impossible.
Not convinced? Consider, for the sake of argument, the example of a photo-sharing mobile app for birdwatchers. If a client requests a new feature indicating whether or not a photo of a bird has been taken in a national park, that’s actually a pretty trivial feature to include, due to the way that mobile phones can provide very precise geographic locations. However, what if that same client requests that you also identify the type of bird that has been included in the photo?
In the mind of the client, of course, this would be a very obvious feature to include. Shouldn’t a photo-sharing app for birdwatchers provide basic info about the type of bird in the photo? But what that ignores is that this is no longer purely a software development issue, it is now an artificial intelligence (AI) issue as well. You now need to train your model to recognize a bird. Something that might seem easy and trivial to a client, therefore, becomes virtually impossible in the mind of a developer.
And that’s just the beginning of the types of problems that might be encountered with badly defined system requirements. For example, the term “mobile operating system” might seem to be a bit of marketing gobbledygook for a non-programmer. An operating system is an operating system, right? Wrong. Ever wondered why so many apps come out ONLY on Android or only on Apple iOS? There’s a good reason for that — you’re essentially designing, coding and testing two different apps at the same time. Thus, when the VP of marketing boldly strides into a conference room and questions why an app can’t be made available for Android as well, be prepared for some pushback from developers.
Everywhere you look, you’ll see how different tech companies have erected technological moats (i.e. “platforms”) around their products, making them difficult for rivals to compete with — but also making them difficult for developers to work with as well. There’s a good reason why all the big tech companies now hold lavish annual developer conferences — there is very much a real need to woo over these developers in order to convince them to develop products for their platforms.
The sneaky little part about badly defined system requirements is that even a tiny, extra-small new addition to a project can really ramp up costs, both in terms of financial costs and human manpower costs. In some cases, these new additions might require additional infrastructure, or force a re-thinking of everything that has been built to date in order to introduce support for new features or functionality. So, if you don’t want to bring your next software development project to a screeching halt, make sure you accurately define all system requirements upfront.
Hey! I’m Tomer, an entrepreneur and maker. You might know me from Mevee, Crane, and Shots, among other products I’ve launched! This article is a part in a larger series I’m writing mostly based on my experiences, and is largely made of my and my team’s opinions.
I hope this helps you to avoid making the same mistakes I did, and remember to keep shipping!
This article is part of a series 10 reasons why Software Development projects fail :
- System Requirements Can Bring Any Software Project To a Screeching Halt
- Hey, Who Moved the Goalposts?
- What We’ve Got Here Is Failure to Communicate
- Poorly Defined Outcome
- “Your app will be finished on Tuesday.” — which Tuesday?!