عرض کنم که سوال شما خیلی کلی است. جواب این سوال به معماری نرم افزار شما بستگی دارد.
حالا اگر از این موضوع بگذریم، باز هم من جواب مشخصی که همیشه و برای همه برنامه نویسها و تیم ها و پروژه ها بهترین کارایی رو داشته باشه نمی شناسم.
ولی به عنوان مثال برای یک معماری سرویس گرا من خودم بهترین حالتی که تاحالا جواب گرفتم این بوده که اول برای لایه سرویس(به عنوان لایه واسط کد سمت سرور و کلاینت) unit-test بنویسم و کد سمت سرور رو پیاده سازی کنم. بعد از اتمام این کار، سراغ پیاده سازی رابط یا رابط های کاربری و یا به طور کلی کانال های ورودی سیستم برم. این بهم کمک میکنه که در طول روند پیاده سازی واسط های کاربری، از هدف اصلی use-case دور نشم. و همچنین ساختار ثابت و تست شده سرویس بهم در تصمیم گیری در مورد چگونگی پیاده سازی رابط کاربری کمک می کنه. ضمنا اینجوری خیالم راحته که هیچوقت اشتباها ساختار و امضای متد ها و سرویس های سمت سرورم به یک واسط کاربری depend نمی شند.