Phy-gital Roundtable: Breakfast Roundup from Germany and Netherlands

02 May '15 | Debjyoti Paul

German Shoppers: Meet Them in the Fast Lane to Phy-gital

15 January '15 | Ralf Reich

Shoppers Will Share Personal Information (But They Don’t Want to be “Friends”)

15 January '15 | Anil Venkat

Modernize or Perish: Property and Casualty Insurers and IT Solutions

14 January '15 | Manesh Rajendran

Benelux Reaches the Phy-gital Tipping Point: Omnichannel Readiness is Crucial

13 January '15 | Anil Gandharve

The New Omnichannel Dynamic: Finding Core Principles Across Industries

13 January '15 | Debjyoti Paul

Technology does not disrupt business – CIO day 2014 Roundup

02 December '14 | Anshuman Singh

Apple Pay – The Best Is Yet To Come

02 December '14 | Indy Sawhney

Digital transformation is a business transformation enabled by technology

01 December '14 | Amit Varma

3 Stages of FATCA Testing and Quality Assurance

06 October '14 | Raman Suprajarama

3 Reasons why Apple Pay could dominate the payments space

18 September '14 | Gaurav Johri

Beacon of Hope: Serving Growth and Customer Satisfaction

05 August '14 | Debjyoti Paul

The Dos and Don’ts of Emerging Technologies Like iBeacon

30 July '14 | Debjyoti Paul

What You Sold Us On – eCommerce Award Finalist Selections

17 July '14 | Anshuman Singh

3 Steps to Getting Started with Microsoft Azure Cloud Services

04 June '14 | Koushik Ramani

8 Steps to Building a Successful Self Service Portal

03 June '14 | Giridhar LV

Innovation outsourced – a myth or a mirage or a truth staring at us?

13 January '14 | Ramesh Hosahalli

What does a mobile user want?

03 January '14 | Gopikrishna Aravindan

Towards Full-Stack – Generalization, Specialization and Beyond

Posted on: 24 July '17

At the dawn of computing, the business problems being solved with the help of programmable systems were fairly small and simple and did not involve a large number of computational components. Hence, knowledge of a specific operating system and an associated programming language were tools enough to address the problem at hand. The engineers of that period were more focused on acquiring an in-depth understanding of the business domain. The programming language they used, was only a tool to enable them to build applications that addressed the end-to-end business problem. Their expertise was measured by their ability to work with registers, optimize inner loops, profile code and use cryptic language features. Their level of abstraction was limited to that of the detailed features of the programming language they used. Entire applications were built using a single programming language like COBOL, C or C++ and this was the age of the generalized programmer.

As time passed, the landscape of the business problems being addressed using computational systems grew. This also increased the programmatic complexity and the number of components required to build the solution. With the advent of the Internet and Web applications, the client-server architecture paradigm gained prominence. The engineers started to use multiple programming languages to build different parts of the client-server application. They also started to abstract programming best practices and repeatable code fragments into frameworks to hide the complexity, improve productivity and drive consistent quality. This caused a dramatic increase in the amount of code that got built and deployed using various programming languages like HTML, JavaScript, C# and Java. Thus with a polyglot development environment and the associated frameworks, responsibilities got compartmentalized leading to the emergence of programmers who specialized in building either the visual tier components or the server tier components for the multi-tier applications.

With the emergence of the specialist engineer, individuals started to gain in-depth knowledge in programming languages and the associated frameworks, but slowly started losing focus on the end-to-end business significance. However, the increased productivity and depth of expertise of the componentized approach to development far outweighed the loss of focus on the end-to-end business significance of the solution.

Shortly after this, the application development lifecycle started to move from the then traditional waterfall development approach towards the newer agile development methodology. Stakeholders started to favor the iterative nature of the agile development model and the ability to implement corrective actions with shorter turn-around times. This also provided immense flexibility to the stakeholders to introduce change with minimum impact to the overall progress or roadmap. However, this introduced the challenge of frequent integration between the various components being developed by the specialists within the agile sprint. The logical solution to this problem of frequent integration would have been to avoid the need for constant handovers between different individuals developing the components. Enter the era of the full-stack engineer.

Towards Full-Stack – Generalization, Specialization and Beyond

As technology started to evolve at a lightning pace, the need for engineers who could take ownership of the functional features and build solutions end-to-end became the need of the hour. These engineers would fundamentally work along with the product owners and understand the business significance of the problem domain and craft solutions using technologies that are relevant to that domain. They would typically possess the skill to learn, unlearn and relearn programming languages and frameworks in an agile manner, consistent with the business need. With DevOps becoming more mainstream, these engineers would also need to understand the operational landscape of the solution they were building. This would mean, that they would not only be involved in creating the solution, but also be proficient in deploying the solution to its intended production environments.

Going forward, as full-stack becomes the flavor of the day, specialization will tend to move more towards technology stacks and further away from programming languages and frameworks. Engineers will begin to reskill and realign to such technology stacks as niche technology specialization loses relevance. The future of information technology may no longer be driven by Java and .Net specialists, but rather by mobile, web, cloud, big-data and IoT full-stack engineers. Despite the amount of effort taken to transition from the current format of skill acquisition to the full-stack format, organizations should make a concerted effort to move to the full-stack format as it is bound to deliver richer dividends to all; the individual, the organization and their customers.