Yes ,the most efficient way is to make sure development team hear from user ASAP , sit down with the user to BUILD it(not copy paste codes try and try with luck),test it, demo it. your team is not like that? It’s ok. Mine is not as well .as long as everyone in team is a technical learner ,at least can understand code. But why ?
requirement need to be translated into technical terms , estamation need the basic understanding about how to BUILD it .software grows up from business ,also need the knowledge in different stages. there are 3 main stages in modern softwares :
— stage 1 :Running . Yes , it’s working well and being used by 1000-2000 users every day. how about 1 million ,10 million per second requests on server ?
— stage 2 :Runing under high Concurrent. It’s a public facing internet product ,being used by millions users . how to make it smart ?
— stage 3 :A Smart system. data is ready ,now it’s the time to add some machine learning features into system , prediction or catagorize . user will thank you .
Agile or Waterfall . As for now ,IT industry not there yet ,ALWAYS (REAL, not so called)agile .No one has the idea how to follow a certain standard flow (that’s why SDLC does not work) .so we must try and fail fast then try again .
NO RUSH . The Unit Test, The Refactor . The Code Review . Trust me ,Quality make sence , most times , It means everything.
Improve Quality of existing feature before building new feature ; Test more , Refactor more , Talk less .