When it comes to building software, the opportunities are endless. If you have an idea, chances are you can find someone to build it. If you’re nontechnical, however, finding a development team and managing your software project can be tricky. Especially if you’re still in the planning stages and figuring out where to start.
We’ve worked on quite a few projects over the years, with a wide range of clients. You can take a look at some of those projects here. Most of what we’ve built can be grouped into three categories:
- Software as a product
- Software to improve internal processes
- Software to enhance an existing product or service.
Even if your project doesn’t fit into one of those categories, chances are you’re ready to get started with a software project of your own. We want to help.
Before beginning your software project, try to adopt the mindset, “I’ll never know less than I do right now.” Building software can be surprising because features that seem simple often turn out to be the most difficult and time consuming to build.
Think of it like building a house. Knowing that you want a four bedroom, three bathroom house with a two car garage seems simple enough, but there are tons of underlying decisions to make before it can be built. The size of each room, for example, or how many windows you want. Whether you want carpet or wood floors in the living room. If you choose wood floors, should you do real wood or fake wood? What color should the finish be? Each decision you make impacts the overall cost and timeline, and it’s hard to know if you’ve accounted for everything if you’ve never gone through the process before. Building software is no different.
At Agape Red, we often recommend clients go through Discovery before we start work on their projects. During Discovery we lay out all the technical details, design a development plan, and estimate the cost and timeline of a project. We suggest that our clients build as little software as possible up front, a Minimum Viable Product (MVP), that they can use to test out their software ideas. Once they’ve tested the MVP on users, clients can choose to add or remove features based on user feedback. Although the MVP is often much smaller than desired, building less software upfront offers more flexibility and saves time and money in the long-term.
Most development firms will lead you through a discovery phase. The length of Discovery will vary depending on the size of the project, but shouldn’t take longer than one or two weeks.
Know What to Expect
Building software often requires tradeoffs. These tend to occur in one of three areas:
- Time: Hours spent working on the project.
- Budget: Money spent on the project.
- Scope: Features built into the product.
Most Project Managers will tell you to choose the two that are most important, because you can’t have all three. We typically ask customers to choose one. For example, we worked on a project geared toward the last general election. Time was the client’s biggest priority. Regardless of how much money they had left to spend, or how many extra features they wanted to add, the project needed to be finished in time for the general election.
If you prioritize budget because you only have $50,000 in the bank, then when that money runs out you have to stop. If having all the desired features is most important to you, then be prepared to spend the extra time and money needed to get everything built.
Choosing Your Development Team
Before you get started, you need to decide what kind of software development team best suits your needs. First, consider whether it would make more sense to hire a team or outsource the project. Each have their benefits.
Reasons to Hire:
- Generally lower costs compared to a freelance developer or firm of consultants (like Agape Red).
- You will have someone on your team who is fully dedicated to the software project and can continue maintenance once the project is complete.
Reasons to Outsource:
- If you’re not technically-minded, save time by avoiding the difficult tasks of hiring developers and managing an internal development project.
- Gain full access to a team of developers with varying skills and experience.
If you choose to outsource, you have a few options.
- Hire a Freelance Developer
Freelance developers generally offer lower cost services, but they can vary in level and skill set. The biggest downside to hiring a freelance developer is that they are just one person. That means that if they get really busy, fall ill, have to deal with any family issues, etc., it can completely stall your project. Also, keep in mind that although the developer might have the skills to build awesome software, the task of managing the project will still fall on you, which can be a heavy burden on your time.
- Hire a Low-Cost Overseas Firm
There are many companies that specialize in providing low cost labor from overseas developers. These companies often assign a project manager to facilitate communication between you and your development team.
Dealing with time zone differences and communicating through a third party, however, creates a longer feedback cycle and makes it easier to overlook errors and mistakes. If you have the time and patience to work through the communication difficulties, this could be an affordable option for your project.
- Hire a US-Based Firm
This is the most expensive option, but also the easiest and fastest to get started with. Communication is generally more effective because you’ll be working directly with the developers on your project. There are some US-based companies that will try to assign a third party manager to your project, but we recommend avoiding them.
If you choose to work with a US-based firm, make sure they have multiple people available to work on your project. One of the benefits of working with a team of developers is that in case of an emergency, there is often someone available to pick up where the other left off and keep your project moving.
Make sure the team you hire has solid project management practices in place to keep your project on track.
Whether you choose to work with a freelance developer or a development team, you need to make sure they have the skills to finish your project. Having a basic understanding of available technologies will help you do this.
Technology Basics: Web vs. Mobile
Choose technology that complements your software’s purpose. We recommend choosing just one to start.
If you have customers already, find out what they are using. If they prefer iPhones, for example, then consider building a mobile app for iOS. If your users are all internal, think about how the software should be used and the hardware you have available.
- Ease of deployment and speed of updates
- Generally lower cost for development
- Less churn in the technology
- High Performance
- Access to features you won’t have with web: push notifications, being on the App Store, having an icon on the customer’s phone, etc.
Responsive Web Sites
You’ll hear a lot of designers and developers talking about “responsive” websites. All that means is that the site “responds” to the device that it is being viewed on. So, it will look attractive and be functional on multiple device browsers.
Hybrid Mobile Applications
These are native apps that are partially implemented as web applications. This can be the best of both worlds because you get to decide on a feature-by-feature basis which technology best suits your needs.
Understanding the Development Process
There are several formal methodologies for developing software. Below are three essential components that all methodologies share:
- Regular and abundant feedback: You should get to see and touch your software on a regular basis. If you are not able to play with it and use it regularly, then there’s a chance the developers are not building what you think they are.
- Iterative: You should have regular review times built into the process. This should be a time for you to look over what has been done, come up with any changes, and talk about what will be done next.
- Heavy on communication: There should be a lot of communication throughout the process. If you go several weeks without talking to anyone working on your project, it’s likely that your project is either stalled or they are building the wrong thing.
User testing is an ideal part of the development process. This can be done pretty easily. Give the software to users (potential customers), ask them to test out the features, let them interact with the software, and get feedback.
There are two general methods for structuring the payment of a software project. It can either be a fixed set of features for a price or you can pay hourly for developer time. Below are a few notes about each:
Time & Materials
- Flexibility throughout the process, you can change your mind as much as you want or even stop the project at any time.
- You capture the upside of cost savings or efficiencies.
- The focus is on making you happy.
- You don’t know exactly what your final cost is going to be.
- If you are not communicating regularly with your developers, things can spiral out of control quickly.
- Set cost, kind of like buying insurance. It protects from any overages, but you forfeit any losses.
- The focus shifts from making you happy to fulfilling the contract.
- If you change your mind about product features, you have to renegotiate a new contract every time.
There are pros and cons to each type of payment. If you have never been part of a software development project before and budget is your biggest concern (see above), then we recommend starting with a Fixed Bid arrangement.
Deploying a web application is pretty straightforward, you just put it out there and make it available to the world.
If you are sharing an app on the App Store, however, it’s going to take more time. Apple has an approval process that all apps have to go through. Your app will be used and reviewed by an actual person. As long as you are following Apple’s guidelines, App Store approval is usually not an issue, it just takes some time. Optimistically, you could plan on getting through the approval process within a week, conservatively I would plan on it taking up to a month.
Additional Maintenance and Enhancements
We’ve had clients go years without making changes to their software, and we’ve also worked with others who are constantly adding features and making improvements. Plan on your software changing as much as your business does.
If you have a website or any kind of back-end server for your mobile app, make room in your budget for ongoing maintenance to ensure you have the latest security patches and updates. It’s also very important to never skimp on security for any system that you are asking real people to put their information into.
Ready to Get Started?
Contact us if you want to learn more about software development or you’re ready to get started with your next project.