Technology Stack
A technology stack (or solution stack) is a list of all the technology services used to build and run a software application. For example, to develop a web application, you may define the stack as the target operating system running the web server, database, and programming language. Developers tend to give name to commonly used technology stacks (such as LAMP, MEAN, $\dots$) because it makes it easy to communicate about it. You should not feel obligated to follow a predefined technology stack; you can borrow from different stacks or make up your own!
You must decide on the technology stack you will be using to develop your proposed software application before you start developing it. 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.
In this course, you must work with Git & GitHub. Other than that, you are free to choose your technology stack.
Here are some things to consider when making that choice for your project. This isn't intended to be an exhaustive list, but it should help to get you started.
-
Use the technology stack that best facilitates development of the end product. If you are building an Android application for instance, you most likely will use Java or Kotlin programming language. You would use Android Studio development tools and Android UI framework.
-
If you are not sure or set on the end product, go for a web-application or use cross-platform technology stacks. For example, Facebook's React Native (JavaScript), Google's Flutter (Dart), Microsoft's Xamarin (C#) allow you to build cross-platform applications (that work on Android, iOS, Desktop, and Web).
-
Use technologies that fit your groups core skills. If a few of you have taken taken EN.601.315 Databases for example, you might want to use SQL based (relational) databases. That's a safe choice. It is easier to work on things that you already know and have experience with.
-
Don't be afraid of learning new things. This is a bridge that you must cross sooner or later. Don't be afraid of it! When facing a new technology, framework, or programming language, remember you don't have to learn everything about it. You just have to learn enough to make it work whatever it is you are making.
-
Be aware of industry trends but don't be overly influenced by them! Software trends can come and go quickly. It's good to know what the industry trends are but in most cases you can do without. For example, you may have heard of Facebook's React, a very trendy and popular UI development for web applications. Most of React I see on the Web isn't necessary! In most cases, you can do with simple HTML, CSS, and (vanilla) Javascript.
-
Realize that the thing you ultimately build might not be the thing you start building. In this course, you are building a Minimum Viable Product. At this stage, you should focus on technology stack that provides the easiest and fastest path to turn your idea into a working prototype. You can worry about performance and scalability further down the road.
-
Consider the ecosystem and community around your technology stack. How hard is it to find help, resources, tutorials when you get stuck? How likely is it that you find an open-source library that readily provides a feature you want to add to your application?
Caution
Once you have decided on a technology stack, you must get the instructor's approval before proceeding with it.