As a product manager, you may be involved in determining your team's tech stack. A tech stack is essentially which technologies you'll be using to build and run your product, and it is particularly important for software products. You should start thinking about your tech stack as soon as you know what the product requirements (necessary functionalities) are because those should be the primary considerations when you decide what to use. Other things you should take into account are support and documentation for the technology, the engineers' familiarity, industry standards, and the client's existing tech stack.
You can divide your application into two main parts: a front end and a back end. The front end is what the user sees and interacts with whereas the backend is usually used to supply data to the front end and is not interacted with by the user. Since they serve different purposes, we often use different technologies for each to make it easier to implement the features we want. Regardless of whether you're designing the front end or back end tech stack, you should always do research to determine which technologies will best fulfill your application's use cases. In the next two sections, we'll discuss how to decide on a front end tech stack and a back end tech stack.
The most basic front end tech stack typically utilizes HTML (HyperText Markup Language), CSS (Cascading Style Sheets), and Javascript. HTML provides the skeleton of your web page, i.e. which elements are included. CSS is used to style the website and incorporate design features such as color, font, spacing, and sizing. Javascript is used to add interactivity to your website. Since HTML and CSS are not programming languages, they can only be used to render static pages. Javascript allow you introduce interactive elements and event-driven actions. For example, you could display a description when the user hovers their mouse over an icon. Though these three technologies are essentially, in most situations, they are not robust enough to develop larger-scale software projects in a timely manner. Software engineers often integrate frameworks and libraries to simplify and speed up the development process.
Frameworks provide the overall template of a web application. Though their rules and conventions may limit flexibility, frameworks are great tools for creating a neatly structured codebase and often incorporate everything you need to create a large-scale application. If you choose to use a framework in your web application, you typically only incorporate one to maintain continuity and limit errors.
Examples
Unlike frameworks, libraries tend to be very flexible in their implementation since you have creative control over their use. Rather than providing a template for your codebase, they are inserted as needed and serve very specific purposes. Oftentimes you mix and match libraries to add functionalities to your web application.
Examples
The back end is slightly more flexible than the front end in terms of which programming languages and technologies you use. Back end technologies include a programming language, framework/library, database, and server. We'll delve into each part of the back end below.
Back end frameworks are used to create the interface between the front end, database, and server. Typically back end frameworks are associated with a particular programming language, so the language and framework decisions go hand in hand.