Hiring in-house delivers the most control. The engineers absorb your customers and your data model in a way no external team will match, and that knowledge remains with you. The cost is time and rigidity: hiring well is slow, getting someone productive adds several more weeks, and the salary carries on through the quiet quarters.
Full nearshore vs offshore outsourcing means the vendor owns delivery: they staff the project, they manage the plan, and the provider carries the staffing risk. This fits well when the scope is reasonably clear and there is a decision maker with time for it. It works badly when there is no one to answer questions, because a vendor is not able to invent your business rules.
Team extension is the middle option: you bring in developers but keep responsibility for delivery in-house. The main advantage is speed — a suitable engineer can start almost immediately — software maintenance and support services the commitment ends when the work does. The trade-off is that your technical leaders have to have the bandwidth to manage them. Without that, you end up paying seo agency for software factories effort with no owner.
In the real world, companies blend them. A frequent arrangement keeps the critical decisions and the core system with permanent staff, while an external dedicated team vs freelancer takes on discrete features, migrations or mobile clients. The rule is simple enough: keep what differentiates you, and delegate anything a competent team can specify and deliver.
Three questions usually settle it. First: is what you are building central to how you make money, or a supporting tool? Then: over what horizon does the work continue — months or years? Finally: who owns it once the vendor leaves? Answer these three honestly and the model becomes obvious.