Non-technical managers and clients are not familiar with the implications of a quick patch when compared to a quality build.
As a software engineer, you can easily explain the complex features with real-world examples or enumerate the things you have to build in order to deliver a given component or a project.
My cheatsheet when talking to clients covers three main areas: Stability, Speed, Security. Those are inevitably related to over 90% of the use cases.
If your manager has a hard time justifying the development time, explain to them what the alternatives are and why your solution is the best one. Examples:
- Unless we build that specific security layer, the new form would be a subject to XSS attacks/SQL injections. Simply put, a 14-year-old would pick a random script online, run it against the website, and fetch a list of all users and passwords. This extra layer can be leveraged by other user-faced forms across this component.
- We can go for a simple workaround but this would impact the load times. Once we hit 100 records in the backend, the pagination will start misbehaving. With 500 records, the component will load in 20 seconds which will irritate our users.
- This new build will take 60 hours which also includes the module for handling user roles and capabilities. Omitting this one will lead to regressions and missing components for specific users. We can’t handle thousands of different use cases without incorporating the right programmatic logic that would route those requests and serve as a dispatcher – just as the air traffic controller makes sure that there are no CNN news waiting for an explosion next to JFK.
The key is in reviewing the available alternatives and explaining the consequences and possible regressions using a human understandable language.
- Provide real-world examples.
- Point to specific features that would break otherwise.
- Mention constraints and limits that a simple build will introduce.
- Discuss areas related to the key features of the platform and stress on the possible implications.
Non-technical people are not idiots – they simply have no clue what happens behind the scenes. They don’t get operating systems, networks, databases, application layers.
But a feature takes time because it requires a set of algorithms that take care of different problems. Explain the essence of those problems and why those methods/classes/libraries are paramount for the ongoing development of the platform.