In the last two parts of the series, we defined Tech Stack and its main components, plus the considerations that you need to make in choosing the right stack for your enterprise; in my pursuit of making digital and tech literacy mainstream, I present Tech Stack, Part 3.
Algorithms
Simply explained, algorithms are a set of step-by-step instructions designed to channel to one solution set, formulaically solving a variety of problems as well as automating and expediting repetitive sorting and integration tasks.
Everything your computer does can be translated into algorithms; there are different types with varying levels of complexity, but in general, all software is a computational interpretation of an algorithm.
Before the glorious days of machine learning, software developers were faced with the time-consuming task of anticipating every conceivable use case and possibility, eventuality or contingency, and then programming the app in a manner that accounted for all those variables, sometimes line by line. This is where machine learning brings a major advantage to the table; a well-crafted machine learning-based algorithm can identify trends, needs or patterns, then generate the appropriate code on an ad hoc basis.
Of course, many developers may still get fearful of the idea of an application that can self-program, but fear not my friends! To remain in control your development team can simply program the machine learning algorithm to suggest changes instead of implementing them automatically. This way, a human will have to approve and update the change. The outcome is an efficient and adaptable application that requires fairly minimal human intervention. Your team can then focus on more time sensitive and profitable activities, thereby improving your bottom line. I, for one, welcome our new AI overlords.
Examples of famous algorithms:
1. FB Algorithm
Facebook has a carefully thought out algorithm behind the organization, relevance, and frequency of content that appears on your timeline. Called “EdgeRank” by Facebook, the algorithm decides what you see on your page by sifting and cross-referencing what your friends enjoy and share and calculating what you tend to find most interesting from your habits, which are, after all, just a data set to be mined and put to practical use.
2. Google Algorithm
Directly from Google
“Google ranking systems are designed to do just that: sort through hundreds of billions of webpages in our Search index to find the most relevant, useful results in a fraction of a second, and present them in a way that helps you find what you’re looking for.
These ranking systems are made up of not one, but a whole series of algorithms. To give you the most useful information, Search algorithms look at many factors, including the words of your query, relevance and usability of pages, expertise of sources, and your location and settings. The weight applied to each factor varies depending on the nature of your query — for example, the freshness of the content plays a bigger role in answering queries about current news topics than it does about dictionary definitions.”
3. TikTok For You Algorithm
Directly from TikTok
On TikTok, the For You feed reflects preferences unique to each user. The system recommends content by ranking videos based on a combination of factors — starting from interests you express as a new user and adjusting for things you indicate you’re not interested in, too — to form your personalized For You feed.
Recommendations are based on a number of factors, including things like:
- User interactions such as the videos you like or share, accounts you follow, comments you post, and content you create.
- Video information, which might include details like captions, sounds, and hashtags.
- Device and account settings like your language preference, country setting, and device type. These factors are included to make sure the system is optimized for performance, but they receive lower weight in the recommendation system relative to other data points we measure since users don’t actively express these as preferences.
Stages of Product Development
The zoomed out view
Technical Architecture — Choosing the Right Stack
According to Alibaba — “Architecture is a structure and a vision.”
A technical architecture diagram provides a zoomed out view of the infrastructure of the application you’re developing. It illustrates how components in a system interact with one another in the large scale of things.
Modern application architectures are more often loosely coupled, using micro-services and application programming interfaces (APIs) to connect services, which provide the foundation for cloud-native application(s).
What you need to get started with technical architecture:
- Current and long term strategic goals of the application
- Required features of the application
- Use cases approved by the business
- Approved list of third parties/ APIs (if any)
- Understanding the future needs of the application
- Application Wireframes and Design
- Lastly consider how frequently you want to release updates to meet customer or operational needs, as well as what functionality is required by either business objectives or development needs.
Types of architecture diagrams:
- Application Architecture
- Logical Architecture
- Integration Architecture
- Deployment Architecture
- DevOps Architecture
- Data Architecture
- System Security Architecture
These diagrams can be used for digital solutions design to show your stakeholders a complete picture of the system before actual development begins.
You’ll use one of the above depending on the project. Make sure your technical team is creating these as part of the project planning deliverables. This information is key for the development team who’ll be managing the application post launch.
How to choose the right stack based on your application needs
1. Consider business and project requirements
The first thing to consider before choosing your tech stack is the scale, size and goals of your project’ depending on the complexity of your project, the more tools you might have to consider in your tech stack. Larger projects often require an extensive stack to maintain your app’s performance and integrity. These large stacks are used for multiple levels of frameworks and programming languages, dealing with large amounts of data.
A quick caveat: excess of technologies in your stack can cause your project to become unnecessarily complicated and unclear, and can also cause unintended incompatibility consequences, which is why you should only focus on essential technologies that fit your project requirements; find a balance between technology that fits your project needs and the capability of your team, especially the team who’ll be managing the application when it’s live, and consider tech which will be easier to scale.
2. Consider Scalability
Horizontal and vertical scaling are system design basics
Horizontal scaling strategy used to improve or enhance the performance of the server node by adding more instances of the server to your existing pool of servers. This ensures that the load is equally distributed.
In horizontal scaling, we do not change the capacity of the individual server, but we decrease the load on the server; scalability can be achieved with the help of a distributed file system, clustering, and load — balancing.
Vertical Scaling strategy can be considered if you want to increase the capacity of a single machine adding storage, memory, processing power etc. This can result in the enhancement of your server without manipulating your code. Limitation? You can only increase as much as the actual size of the server.
Example -
Your business’s marketing website. As your traffic increases overtime due to your digital marketing efforts, your server performance will start degrading. To be able to manage the traffic load, you’ll need to scale the product by adding faster RAM, CPU etc.
Horizontal scaling is always preferred over vertical scaling by most developers because it’s less likely that you’ll be sucked into a resource deficit. It also allows for more elasticity because it lets you add more to your existing computing resources that are online.
3. Consider Application Security
With the increase in cybersecurity threats around the world, the security of end-users’ personal information and data should be on top of your priority list. To avoid serious consequences later on, it’s very important to make use of technologies that align with your cyber security strategy and are known to guarantee the privacy of user data. Scalability and future maintenance form an integral part of the security technologies you’re using.
4. Consider Speed and Time to Market
The choice of tech stack also depends on how much time you have at your disposal before the first version of the application needs to go live. If the project needs to be marketed within a short span or client wants to release an MVP quickly, you need to select the tools that allow easy third party integrations and thus reduce the development time. MEAN is an ideal tech stack in that regard for a web application.