The 25 most important questions to ask a software development company before signing — organized by category, with what good and bad answers look like.
Questions to ask a software development team: Before hiring, ask about their process (how they handle scope changes), their portfolio (similar projects they've shipped), code ownership (do you own everything?), pricing model (fixed vs hourly), communication cadence (daily updates or weekly?), and post-launch support. The quality of their answers reveals more than their portfolio — teams that give vague or evasive answers will give you a vague, evasive product.
You've shortlisted 2–3 development companies. Now you need to figure out which one to trust with your project, your money, and your timeline.
The questions you ask during evaluation determine the quality of information you get back. Generic questions get generic answers. Specific questions reveal whether this team can actually deliver.
Here are the 25 questions that matter most, organized by category, with guidance on what good and bad answers sound like.
Good answer: A specific, step-by-step process. "We start with a 2-day discovery phase where we define the spec together. Then we design for 3–5 days. Development runs for 2 weeks with daily deploys to staging. You test throughout. We launch on day 18."
Bad answer: "We'll get started right away and figure things out as we go."
Good answer: "We document the change, estimate the additional time and cost, and you decide whether to include it in this phase or save it for the next one. The original scope and price don't change."
Bad answer: "No problem, we can add whatever you need." (This means they'll either bill you later or cut corners elsewhere.)
Good answer: "We deploy to a staging environment daily. You'll have a live URL you can visit anytime. We also do weekly demo calls where we walk through what's new."
Bad answer: "We'll send you updates." (Vague. No mention of staging or regular demos.)
Good answer: "We write automated tests for critical paths. We do manual testing before every staging deploy. Before launch, we do a full QA pass covering cross-browser, mobile, and edge cases."
Bad answer: "We test everything before delivery." (No specifics on how or when.)
Good answer: Explains trade-offs specific to your project. "Next.js gives us server-side rendering for SEO, which matters for your e-commerce use case. React Native would be overkill since your users are primarily on desktop."
Bad answer: "It's the best framework" or "It's what we always use." (No reasoning tied to your project.)
Good answer: "We design the data model during the spec phase, before writing code. We use migrations so the schema is version-controlled. We consider relationships, indexes, and query patterns upfront."
Bad answer: "We figure it out during development." (This leads to painful redesigns later.)
Good answer: Explains their approach to scalability — caching, CDN, database optimization, horizontal scaling. Even if you don't need 10x today, their answer reveals whether they think about architecture or just code features.
Bad answer: "We'll cross that bridge when we come to it."
Good answer: Specific practices — input validation, parameterized queries, secure authentication, dependency auditing, HTTPS everywhere, environment variables for secrets.
Bad answer: "We follow best practices." (Which ones? This answer says nothing.)
Good answer: "You do. From the first commit. The repository is on your GitHub account. We have contributor access, you have owner access."
Bad answer: "We'll transfer the code after the project is complete" or any variation where they retain ownership during development.
Good answer: "On your GitHub/GitLab account. We'll set it up on day one."
Bad answer: "On our internal servers." (You have no visibility and no control.)
Good answer: "On your hosting account — Vercel, AWS, Railway, whatever makes sense. You pay the hosting provider directly."
Bad answer: "On our servers." (You're locked in. If the relationship ends, your app goes with them.)
Good answer: "Absolutely. The code is yours. We'll document everything so another team can pick it up. We'll even do a handoff if you want."
Bad answer: Hesitation, conditions, or "why would you want to do that?"
Good answer: A specific name. "You'll work primarily with [name], our project lead. They're also a senior developer, so they can answer technical and business questions."
Bad answer: "Our project manager will be your point of contact." (If the PM isn't technical, they become a bottleneck for every question.)
Good answer: Names and roles. "Two developers, one designer for the first week, and a project lead who does code review and architecture."
Bad answer: "We'll assign the right team." (You have no idea who's building your product.)
Good answer: A specific commitment. "During business hours, we respond to messages within 2–4 hours. Urgent issues: same day."
Bad answer: "We're always available." (Unrealistic and not a real commitment.)
Good answer: Honest about time zones with a clear plan. "We're IST (UTC+5:30). We have a 4-hour overlap with your business hours. We do async updates daily and a sync call twice a week."
Bad answer: "Time zones aren't a problem." (They always are unless addressed proactively.)
If fixed: "What happens if the project takes longer than expected?" (A good partner eats the overage if scope didn't change.)
If hourly: "What's the estimated total, and what happens if it exceeds the estimate?" (Without a cap, hourly engagements are open-ended financial risk.)
Good answer: A specific list. "Design, development, testing, deployment, 30 days of post-launch bug fixes, and 2 hours of training. Hosting and domain are separate — you pay those directly."
Bad answer: "Everything." (Nothing is "everything." Get specifics.)
This is even more important than what is included. Get explicit answers about:
Good answer: "50% upfront, 50% on delivery" or milestone-based payments tied to specific deliverables.
Red flags: 100% upfront. Payment terms longer than net-15 on the final invoice. No clear payment schedule.
Good answer: "Yes, here's [name] at [company]. They had a similar project. I'll make an intro."
Bad answer: "We can share testimonials." (Written testimonials are curated. You need an actual conversation.)
Not just a screenshot — a working URL you can click through. Look at:
Good answer: An honest story about a challenge and what they learned. "We had a project where requirements changed significantly mid-build. We paused, re-scoped, re-priced, and delivered 2 weeks late but the client was happy with the outcome."
Bad answer: "We've never had a project go wrong." (Either lying or hasn't done enough projects.)
Good answer: "We include 30 days of bug fixes. After that, we offer a monthly maintenance retainer for updates, security patches, and small features. Or you can handle maintenance yourself — the code is yours."
Bad answer: "We hand off and move on." (No support plan.)
Good answer: "We write clean, documented code with a README that includes setup instructions. Any competent developer can pick it up."
Bad answer: No mention of documentation or maintainability.
Don't ask all 25 in a single call — that's an interrogation, not a conversation. Instead:
Take notes during every call. Compare answers across your 2–3 candidates. The differences will be obvious.
Ready to ask these questions to us? Book a free discovery call — we're happy to answer all 25. Or read how we work before we talk.
If this guide resonated with your situation, let's talk. We offer a free 30-minute discovery call — no pitch, just honest advice on your specific project.
An honest comparison of fixed-price and hourly billing for software development — when each model makes sense, the hidden risks of both, and how to structure an engagement that protects you.
10 min readChoosing a PartnerShould you hire a freelancer, an agency, or build an in-house team? This guide compares all three options across cost, speed, quality, risk, and long-term value — with honest trade-offs.
12 min read