How Much Stack Is Too Much Stack?
Should application development include cloud infrastructure as part of the full stack? The trend over time has been to put more and more on developers. The cloud is just another API you can program against, right? Why not have the application developers do it?
If you asked me 6 months ago I would have said something like, "who wouldn't want to freedom to own the entire stack?". The more I have talked with developers and considered this question, I am starting to think it is not fair to do this.
First of all, application developers are already expected to basically be masters for the front-end and back-end of the application. They also need to be great at testing if they want to build apps with greater reliability. This alone covers so many domains of expertise including UX, UI, testing, the app code stack, query language, API's, and so much more.
Now consider you are asking them to learn to write infrastructure code. It is just declarative scripting, right? Should not be a big leap from JSON, surely. This is a gross under simplification. To deploy cloud infrastructure you need to know at least a little about architecture, security, compliance, deployment automation, and that is probably just the beginning of the list. Notice I didn't even mention any infrastructure specific tooling, languages, or new coding paradigms.
Recommended by LinkedIn
For the sake of the argument, let's say that you did this. There might be a small few who love that they are a generalist in all of these areas, but what you essentially start doing is expecting one person or a group of people to know everything. This adds a tremendous amount of pressure and probably starts to make the proportion of the work developers are doing that they love smaller and smaller.
If the pandemic has taught us anything it is that companies need to prioritize the wellbeing and happiness of their employees in order to retain and attract the best talent. The result of all of this is that we may need to start thinking more about how we build our teams so that front-end developers can focus on the front-end, backend-developers can focus on the backend, architects can focus on architecture, and cloud engineers can focus on the infrastructure and deployments. It would even be nice if your QA team was actually a different team (just saying).
Just some of my thoughts. What do you think?
So true, Justin. It's quickly becoming the case that developers are expected to own the entire solution from requirement gathering to development to automated testing to automated deployment to L3 operational support. It's unreasonable to expect one person to know all of these things, and even more importantly, be GOOD at all of it. It doesn't scale. We need teams of professionals that work together and are experts in their respective areas.
Way too much. We're in a world of high consumption delivered at high speed. This demands developers and stacks to move quickly too. I think we need to slow down (as a species.)
I want to thank Jan Jorgensen for putting some things in a context for me that pushed me to write this article. I've been hearing these things for a long time, but I thought something had to be said for it.