When you build software, you want to start with the right foundation. Every software technology has strengths, weaknesses, history, and culture. Wise choices will help make your project successful; Poor choices will tend to cause difficulties.
Below are some things to consider when making technology choices for your project. This isn’t intended to be an exhaustive list, but it should help to get you started.
- Are you solving a unique technical problem? The majority of software projects can be implemented with a variety of technology combinations. Some projects require specific approaches to succeed. Are you a technical innovator, or are you innovating in other areas?
- Use technologies that fit your company’s core values. Is your company young, energetic, and cool? Maybe you’re experienced, stable, and trustworthy? What kind of culture do you want your development team to have? Are you more like a startup, or more like a Fortune 500?
- Don’t blindly copy others’ technology decisions. “Programming language X worked for ____, so it should work for me” is rarely a valid argument. Facebook was built with PHP, and it “worked for them”. That doesn’t mean you should use PHP.
- Be aware of industry trends. Websites like hotframeworks.com, trends.builtwith.com, and trends.google.com can help you to understand where various technologies stand, in terms of popularity over time.
- Don’t be overly influenced by industry trends. Programming trends can come and go quickly. Jumping on a fad today could leave you struggling to find developers in a couple of years.
- Keep your options open. If you’re building a Minimum Viable Product (MVP), realize that the thing you ultimately build might not be the thing you start building. Avoid technologies that limit you when your company pivots in 6 months.
- Learn about the technology adoption lifecycle and know where you are within it.
- Consider the quality of developers you want to attract. Great programmers want to use great programming technologies. (Beware: Bad programmers often want to use great programming technologies, too.)
- How important are performance and scalability? Are you market testing a new idea, or building Healthcare.gov?
- What’s your marketing plan? If you intend to sell apps via advertising, then it’s preferable to develop both Android and iOS versions from the start. Otherwise, your advertising may be 50% less efficient than it could be.
- Will your software be ported to other platforms? Some platforms will make this easier than others.
- Know the long-term costs of your technology decision. Be aware of ongoing licensing fees, developer program memberships, specialized hosting, etc.
- Can you benefit from 3rd party code? Quality frameworks and libraries can save you weeks of development time.
- Optimize for your hardest problems. Your hardest problems could be performance, scalability, or perhaps something non-technical like viral user adoption. Know what your hardest problem is, and don’t compromise in that area.
- Discuss your technology needs with a developer who has experience with a wide range of technologies. If you discuss your project with a Ruby on Rails expert, guess what they’ll recommend? When you’re a hammer, every problem looks like a nail.