What Are Best Practices for Working with a Software Agency?

What Are Best Practices for Working with a Software Agency?

Whether you’re a new SaaS entrepreneur or an executive at a Fortune 500 company it’s important to know what to consider when hiring the perfect custom software company. And once you’ve figured out which type of software company best fits your needs, it’s important to know how to engage with them to save money, time, and avoid any headaches. This article will teach you best practices when selecting a software development agency and preparing to work with them once you’re at that point.

1. Sort out what fits your needs and budget

There are a couple key decision factors when selecting the option that best fits your situation and budget. You’re either looking to get something done quick and cheap, where the back-end quality and technical debt is less of a concern, or you want a solid foundation built correctly, so it’s scalable and has fewer problems in the future.

If you’re building a business-critical application or something of significant importance that involves a high number of users, it’s a good idea to take it slow and don’t rush the development process. You should also make sure to have some cushion in your budget to support the software build afterward—hosting, bug fixes, and support, to start.

With either option—quick and cheap or mission critical—put in the time to plan appropriately before you make the first call.

2. Educate yourself about types of software agencies

There are a few different types of agencies that you’ll typically come across when seeking a software development company. There’s no one specific way to structure a software development agency and there are many variables but this breakdown will shed some light on what’s common in the industry.

Budget Friendly

Hourly Cost: $10 – $40

What it is: This will be an agency that's typically completely distributed, with no centralized office and a group of independent contractors. Or it's an offshore agency that has junior programmers with two years or less of development experience who will be working on your project.

Best for: This is a great option for tight budgets and simple software that isn't being used by a lot of people, or if you're developing a proof of concept, where security and code quality is less of a concern.


Hourly Cost: $40 – $70

What it is: This will be an agency that may have a hybrid approach: they have a centralized office with a couple key employees who oversee a team that mostly (or completely) consists of independent contractors. Alternatively, the agency may rely on a secondary offshore team to which they pass on the development efforts and the team in the office will act as project managers.

Best for: This is a great option to go with if you’re looking to get an MVP built to help get funding or are an existing business that needs a smaller software product built, such as a customer portal.


Hourly Cost: $70 – $150+

What it is: This will be an agency that typically has several full-time employees, a centralized office, and does all of the design and development in-house. However, they may still work with senior-level independent contractors. This is because it can be hard to find the level of talent needed in a company's hometown and there's a lot of red-tape associated with hiring employees from other countries.

Best for: This option is best for larger enterprise products, companies that just received early-stage funding, and for software products that have a significant amount of users.

3. Prepare for and understand the process

Before seeking out a software development agency a little preparation on your end can go a long way. Over 80% of the time, clients will come to us, explain what they want in a call, then expect an estimate immediately. That’s not a realistic process or expectation. Instead, here’s information about some of the documents you may need to prepare and the typical process that happens when you engage a software agency.

Start with a problem, solution, timeline document

To get the discussions off to a good start, you should at a minimum write out a document that has the problem you’re trying to solve, how you intend to solve it, and the timeline you’re trying to solve it in. List out the main functionalities that the application should have and if there are any integrations (for example Stripe, QuickBooks, etc.) If there is an existing application involved, knowing the technology stack (languages/frameworks that it’s written in), and the history of the prior team and application is helpful. For a brand new application, the next best thing is creating a flow map that displays how a user would move through the application. There are great free tools available to assist with this, (for example, FlowMapp and LucidChart). Whether or not you have any artistic ability, sketching out your vision can help a lot. We have clients that send us sketches using pencil and paper with only boxes and text. Having these items in place can get the conversation going in the right direction.

Have a plan for the business requirements document

A business requirements document (also referred to as a design document or technical requirements) is the first step to any software project that’s being developed from scratch or to a significant overhaul of an existing application. Preparing the business requirements document is the #1 best practice for starting work with a software development company.

If you have a business with a larger budget that doesn’t have a technical member on staff who has experience writing technical requirements, then the software development agency you’re partnering with should do this for you. This typically takes 20 – 160 paid hours, with the deliverable being a 30 – 100+ page document that details every moving piece within the application. That way you know exactly what you’re getting and the software agency knows exactly what they are building. This will be the master document that’s referred to for any change requests, testing, and finalizing the scope of work at the end of the project build. It should eliminate most obstacles that the development team may have, ensuring you can keep them working efficiently on your software. For those with tighter budgets, spending this amount of time and money upfront may be hard to swallow, but in the long-run, it will save you thousands of dollars and it’s just something that comes with building software.

Be aware of the user interface design phase

Once the design document is in place, the next step to focus on is the user interface (UI) design of the application. This will be the second part to software preparation that’s critical before development starts. The UI designer will create all of the pages and the small elements that come along with that—buttons, pop ups, notifications, etc. The final deliverable should be a high-resolution design that will look exactly like the end product. You could also request a clickable prototype so you can navigate through the application design and get a feel for the user experience. The UI design process is a good opportunity to find out if there are parts that aren’t really needed for development, or discover features that may be critical and not previously anticipated. You’ll want to flush out and focus on the core components of the application during the design document and UI design phases, because this will save you a lot of time during the development phase.

Lock down costs at this point

A software development company can’t give you an accurate timeline and cost estimate until a design document and the UI design are in place. Without these, the best you can hope for is a large ballpark estimate. Consider it a red flag if a software development company provides a fixed cost estimate with minimal information and no design document in place. Some may be able to provide a fixed cost estimate with a UI design, which is fine for smaller applications, but we’ve found that our most accurate estimates stem from the proper upfront planning.

Prepare for the development phase

Now that you have a design document and approved UI design, the software development agency has everything it needs to provide an accurate timeline of the build and the cost. It’s important to keep in mind that if you continuously add features during the development phase, it can drive up the cost and extend the timeline.

Avoid looping in too many people

Make sure there aren't too many “chefs in the kitchen.” Too many opinions about the software can make the process more muddled. While most software agencies work in an agile way, limiting the number of changes you want after development starts will streamline the process. Only make changes if they are critical.

Consider purchasing preparation tools anyone can use

If you are looking to save money and learn as much as you can about how your software is going to work, there are things you can do to prepare all of the above in advance. If you have an idea of how your application will look, you can do a Google image search for “blank mobile templates” or “blank browser templates” and print off several of those. Next, use a pencil to do a rough sketch of all the different screens of the application. The more information and details you can provide, the less time the agency will have to spend working on those elements, which can save you a considerable amount of money.

4. School yourself on the right questions to ask

Take a moment to sort out any questions you may have and, in particular, be sure to ask about relevant legal documents and get a feel for how the company works and whether it fits with your needs.

Ask about legal Documents

Before you start moving forward with the software development agency, ask to see their master service agreement upfront for review. That way you make sure you own the intellectual property (IP) to what the team is building and that they aren't reusing components from projects for possible competitors, etc. You could also hire an IP attorney to take a few hours to review the contract. Another document worth looking at is the Scope of Work (SOW). This should be the legally binding document that outlines exactly what you’re getting and at what cost.

Ask for transparency into the company structure

To get more insight into how an agency is structured, one important question to ask is if they push projects out to subcontractors. Will your code be written by someone with one year of experience or someone fresh out of coding bootcamp being overseen by a senior-level developer? Ask about their testing process. For example, do they include automated testing into their estimate? Automated testing is important to have and considered a best practice, but be aware that it can drive up the cost. Automated Testing is developed separately, but in parallel with the application development. Having tests that happen automatically when new code is added to the codebase can save you from a lot of bug fixes in the future. It’s also good to know whether the agency has a quality assurance (QA) team that manually tests the application or if you will be responsible for testing the application yourself. Maintaining a partnership with the software agency that built your application is the best-case scenario for long-term success. Asking about support offerings and understanding what type of support an agency has in place after the build is good to know before making any decisions.

The bottom line

Take time to know the rules of engagement with a software development agency.

  • Sort out what fits your needs and budget
  • Educate yourself about types of software agencies
  • Prepare for and understand the process
  • School yourself on the right questions to ask

Then, as you advance through the process, here’s a recap of the steps you should take before development starts, in slightly different order than what we’ve discussed above, but this is how a typical flow works.

  • Prepare a project overview document that explains what problem you’re wanting to solve and all known details. Bonus points for flow maps and sketches.
  • Meetup by video with the agency to get a feel for their team and ask any pertinent questions.
  • Request a ballpark estimate to ensure the agency's rough budget matches what you have in mind.
  • Complete the UI design
  • Complete the business requirements document
  • Select the agency that best fits your project
  • Start development

By following these best practices, you can help minimize any chance of things going south. Building solutions to problems using technology doesn’t have to be a painful experience—in fact, it can be a lot of fun—all you need to do is start with a plan!

This article was submitted by and expresses the views and opinions of the independent freelancer listed as the author. They do not constitute the views or opinions of Upwork, and Upwork does not explicitly sponsor or endorse any of the views, opinions, tools or services mentioned in this article, all of which are provided as potential options according to the view of the author. Each reader and company should take the time needed to adequately analyze and determine the tools or services that would best fit their specific needs and situations.
This article was submitted by and expresses the views and opinions of the author. They do not constitute the views or opinions of Upwork, and Upwork does not explicitly sponsor or endorse any of the views, opinions, tools or services mentioned in this article, all of which are provided as potential options according to the view of the author. Each reader and company should take the time needed to adequately analyze and determine the tools or services that would best fit their specific needs and situations.
Article Author
What Are Best Practices for Working with a Software Agency?
Jason L. M.
Top Rated Plus
Software Consultant
Boise, United States
Software Consulting
Software Development
Project Management
UI/UX Design
Hire the Author

Read more from Jason L. M.