Buzz words like “Dev Ops”, “Web Ops”, “Full Stack Developer”, “Technology Stack” are in popular vogue nowadays. Whether on job listings, training courses or blogs! So why this new wave of buzzwords, which weren’t around until a few years back, one might ask. These are all signals of a changing era in the IT world.
Until about a decade ago, software development primarily revolved around large corporations which were specialists in their domain – Databases, Operating Systems, Middleware, Web products and so on. But with the onset of the smartphone and XaaS deployment model, software development has democratised to allow small product companies to mushroom all over the world – referred to by the ubiquitous adage of “Startup”. Start-ups are by nature complete application providers, delivering an end-to-end product/service to the users. It’s a natural consequence that start-ups tend to recruit IT engineers who have expertise across the entire technology stack.
What does Technology Stack mean?
Technology Stack refers to the entire basket of software platforms, tools, services, hardware and networking devices that are employed in the development of an IT application. These individual components form the building blocks of the development ecosystem in the company and developers working in the company are expected to be proficient in them. A developer whose skills cover the entire range of the technology stack is called a “Full Stack Developer”.
Layering of various components in such a way that one layer can be serviced/ altered without impacting the other layers –is one of the main advantages of defining these technology stacks. The smooth and seamless synthesis of the various layers in the stack determines the success of the application developed.
Technology Stack Diagram - Layers and Examples
How to choose a Technology Stack for a product/application?
The complete set of technologies chosen to be part of the technology stack is governed by a set of factors. “My employees have a certain skill set”, “A particular technology is already available as a legacy in my company” – companies often make technology choices based on such reasons, which may not be the right approach.
Critical factors to consider are:
- Product requirements – Technology stack is a design choice, and it is completely dependent on the requirements to be fulfilled. I may have the most fancy new service framework at my disposal, but if a simple Python package can meet the requirement better, then why complicate? However, Technology stack must be forward seeking, anticipating feature additions and product growth.
- Resources available – Every product company comes with its set of human resource, funding and timeline constraints. Technology stack chosen must be optimum for the resources available at the company’s disposal. However, companies must critically evaluate the effectiveness of their choices before kicking off their development.
- User compatibility – Especially for B2B products and platform development projects, the user of my product is also exposed to my technology stack. This may be through APIs, add-ons, extensions and so on. In such cases, extra care has to be taken to ensure the exposed part of the stack is compatible with the user’s environment. Ex. A popular networking software platform had used some proprietary protocols in their exposed APIs which none of the telecom service providers could use. The project was a grand idea but failed.
Technology Stack used in popular IT applications
Just to get a perspective of what technology stacks are being employed by the most successful product companies in the market today, let’s try and explore a few of them.
Amazon Technology Stack – Java, Perl, Angular JS, MySQL, Amazon EC2 container service, DynamoDB and a host of other Amazon frameworks.
Google Technology Stack – Python, Java, Android SDK, Go, C++, Preact, Angular JS, Kubernetes, TensorFlow and a host of other Google frameworks.
Take a look at Serial Entrepreneur and Founder of Samosa, Abhilash Inumella describe the technology stack of Social Media / Short Video apps.
Abhilash Inumella on Tech Stack in an Open Discussion with Apxor
Specialized technology stacks
- The concept of a protocol stack has existed for decades now - OSI Layers, TCP/IP stack and other communication/control protocols.
- A mobile phone device is an example of a hardware technology stack – body, network processor chip, peripherals, memory, battery, LCD screen all stacked one above the other.
- W3 consortium defines a typical web technology stack.
- LAMP Stack – an open source stack consisting of Linux OS, Apache HTTP Server, MySQL RDBMS and PHP programming language.
- .NET Stack – covers all requirements for .NET developers. Consists of C#, VB.NET, and other Microsoft SDKs and IDEs.
- MEAN Stack – Java based technologies stacked upon the other, for building web apps and websites. Consists of MongoDB, Express.js web-app framework (runs on Node.js), AngularJS MVC framework, and Node.js server side framework.
Usage of Product Intelligence in development
Apxor can be of great help in evaluating the effectiveness of the technology stack used by a product company. Apxor, a complete product intelligence platform, can be seamlessly integrated into the application development space with minimal add-on code. Now, the product team is empowered with valuable insights on user behavioural patterns and data based inferences. Apxor can easily help you identify if there are issues faced by users in terms of handset models or OS versions, by helping you segment the users based on their user and session properties. To learn about this feature, refer to Apxor docs on User Segments.
You can also deep diving into individual user behavior to get insights about the exact time of an application crash, and the activity before that.
This serves to narrow down the problem in the technology stack. To learn about this feature, refer to Apxor docs on User Explorer.
The choice of the appropriate technology stack for an application is not entirely a technical decision. The company stakeholders must keep financial, human resource, maintenance, security and logistical challenges in mind before making a choice. Ensure the stack is scalable, modular and seamlessly integrated. And the application development process is guaranteed to be smooth and successful.