We have seen a transition from top of the pyramid “architect” to a more inclusive “archtect-planner”, a move which requires a greater level of understanding laterally: in a buildings context. And, we are in that same evolution in the software version of the architect too.
What is “Full Stack”?
In the world of computer science, and specifically web program development, there is a debate currently engaging the community. It began with the converging of ‘devs’ (developers): people writing programs, and ‘ops’ (operations): people who focus on how those programs run.
‘Dev-ops’ is a world where you have not just the code to worry about, but also how it runs at scale across the globe, when hundreds, or even millions of users are trying to use applications and manipulate data without errors or downtime.
The ‘stack’ is essentially the layers of knowledge needed to create these very smooth running web applications. It starts at the top, with the front-end. This is the end you see when you go onto the web browser and use the mouse/keyboard/touch device to manipulate that view. This is written in one language.
Go down a layer and we get to the server side code, often written in a different framework or language, powering the calculations from the front-end events. Down a layer again and we have the data-stores. Down again we have the Operating System, the kernel layer.
Common ‘full stacks’ are the LAMP stack (Linux, Apache, MySQL, PHP), and a more modern MEAN stack (Mongo, Express, Angular, NodeJS), usually running on Linux as well.
Now, this is where most developers say the stack ends, but this is where the debate begins and there are many more layers beyond this scope.
Below the OS we find the Hypervisor; VMs. Then we have the BIOS and finally the physical hardware of the computer. Then we get into the operations end of things.
From the application layer, software and the current ‘full stack’, we can go down the internet route. First, underneath the software application we find the TCP layer, otherwise known as the Transport Layer. Then we find the IP layer, which handles the addresses and routing. Then we find the Network Access Layer which handles the ethernet/wifi/etc protocols. Finally we have the hardware layer again, the same hardware as found in most computers, but also radiowaves, copper and fibre.
Arguably, it is necessary to have a level of knowledge in every single one of these layers, in order to design and build the best applications for the internet. This is the current debate in the computer science community. We know it starts at the human interaction with the web browser, the UX, but where does the stack end? How much is necessary to know?
The Built Environment
Now as computing becomes ubiquitous in our built world through the Internet of Things (IoT), Building Information Modelling (BIM), operations and facilities management, the stack can theoretically continue through the physical computer and into the building fabric itself, through the software application to the construction data.
If applications are to handle the design, construction and operations of the building, and hardware is embedded in its fabric, a knowledge of how they work with the building is vital.
One size does not fit all
Existing BIM solutions are barely built for the internet, but with BIM level 3 currently being defined as the connected BIM, it is becoming more apparent that without a network this is impossible. Current software vendors design large monolithic code bases with steep learning curves and there are only a few authoring programs to pick from. With such monopoly over the computer side of AEC, and all the effort put into extending these large programs, creating lightweight bespoke buildings becomes more and more difficult.
Architect designers, who are dreaming up the look, feel and function of the building should also be thinking of the applications required to design, and operate it. Applications which become part of the building, passed on from stage to stage: from contractors to clients, from builders to users.
The only way to deliver this effectively is through the internet. So where do the architects and engineers of the future need to draw the line on their knowledge? It is certainly well beyond where the line currently lies, where they can often just about use a user friendly program, let alone know how programs work on a code level. However, alongside computer science they also need to retain their knowledge of materiality, physics, and theory from the built world.
This is a lot to ask for any single human, and it is the team expertise that will prove most useful here, but without the awareness or knowledge of the stack to a degree, perfectly performing buildings in the future are out of reach.