The art of being full stack
Throughout my career, I have changed job roles more frequently than I have changed my wardrobe.
I started out being a tutor, then sold health insurance, marketed embedded products, designed interfaces, developed embedded systems, wrote software, wrote stories as a data journalist, was an entrepreneur, and much more.
As a software developer, specifically, I’ve been doing prototyping, design, front-end development, backend development and now exploring DevOps and data engineering. And that must be the reason that I’m frequently asked:
"How to do it all and be a full-stack developer?"
So, here are a few techniques that have been instrumental in my own life in being a full-stack and kicking do-one-thing-syndrome butt.
Everyone thinks full-stack is a skill set and everyone is wrong about it.
"Being full stack isn’t a skillset, it’s a mindset".
The perception of ‘full-stack dev’ is that it’s about writing APIs and working on nice-looking interfaces simultaneously. Front-end and Back-end.
This is both naive and over-simplistic.
Full-stack skills come from how much you care about the product you are building. It comes from one’s curiosity to figure out how things work in a system. Being full-stack comes from a need to solve problems, not from a need to hold a job with a specific title.
Skillsets are temporary and so are the tools we use in our workflows. One day they will be obsolete and that day was yesterday. What remains relevant in the entire process is your thinking, your love for attention to detail, and building products which change lives on a daily basis.
Your approach should always be about learning fundamentals. Being a UI designer is not about how to use Sketch or Photoshop but about how people will interact with your interface.
Being a full-stack web developer is not about learning Ruby on Rails or Django but about how APIs and DOM will work together to make information available. Learning Ruby and HTML will then be part of the process, not the process itself. Being DevOps is not about learning chef or ansible but how automation can help you build reliable software and make your life simple.
Every part of the product building exists because of a reason and your approach should be to understand that reason and philosophy and not just the tools and frameworks for it.
When people start working on something new, they feel like they need to wait until they know the answers to every question before they can consider themselves capable of doing that job.
But even the most experienced person in that field is still learning new ways of doing their work better. So it is important to start experimenting with it and not worrying about being perfect or knowing it all.
The best way to go about it is to start building something. Whatever may be in your mind, just go for it and give a good confident start. Look for inspiration from how other people have done it. If you are starting with design, look at communities like Dribbble. If you are starting with the frontend, look at platforms like code pen. Once you have your first iteration, look for feedback from people who are good at it or users of your product.
The art of being full-stack is about dreaming more than others think practical. Exploring what all you can be and giving it a try. It is not about being a professional or the best at everything you do but enjoying the process of building something you care about or love doing.