# Choosing your stack

Your "tech stack" refers to the combination of programming languages, software, and other technologies you will leverage to build your project. This page aims to provide some high-level considerations you might want to keep in mind as you choose the pieces for your project.

# Goals

The first thing you should do is lay out your goals for this project, and decide if your primary goal is to:

  • learn to use particular technologies
  • deliver on a product
  • integrate with an existing tool or project

For example:

  • if you want to deliver on a product, you might want to focus on familiar technologies by leveraging your team's existing competencies
  • if you need to integrate with an existing project that only provides a library in a particular language, you might have no choice but to go with said language as a starting point.
  • if you have an idea that requires a camera, it would be best to go with a mobile platform (and base your technology choices on that)

# Competencies

An important part of building a project with a team is determining your team's competencies - in general, to have a productive learning experience you should aim to have at least one or two points of contact who are familiar with at least some of the technologies you choose.

Note that these points of contact do not have to be members of your direct team - it could be a friend who is willing to act as a guide, a member of another team (for example, someone else in Launch Pad), or some chosen online resources that your team has deemed very reliable.

One way to assess competencies is to ask everyone to list out their experiences with different technologies, graded on a 1 to 5 scale, where 5 indicates that you have deployed something to production with the technology.