In 2014, a blog post — On the Legitimacy of “Full-Stack” — made the rounds on the popular subreddit r/webdev. The author, Casey Kinsey, argued that full-stack developers would become a staple for tech startups in years to come, their skillset ideal for companies looking to do more with less.
“‘Full-stack’ is not destined to die among the ranks of ‘ninja’ and ‘developer rockstar,’” Kinsey wrote. “It’s not a corny marketing buzzword.”
Fast forward seven years later and Kinsey’s take was somewhat prophetic; on Built In, there are more than 4,400 open roles for full-stack developers. In 2021, companies are seeking out developers who can speak the same language, so to speak, as other stakeholders, as well as adaptable team members who can implement best practices across the stack.
“As a full-stack developer, you really need to be a jack of all trades,” Morten Nesvik, VP of enterprise architecture at Cognite, recently told Built In Austin. “Programming languages, tools, storage, middleware and UI frameworks are changing constantly, accelerated by the adoption of microservices architectures.”
Yet, telling full-stack developers that they need to “know it all” can feel a bit overwhelming. To narrow down the scope of essential skills full-stack developers need today, Built In Austin interviewed Nesvik and two other local engineers about the technical and soft skills they find most essential to their roles, as well as the advice they have for those looking to add to their full-stack repertoire.
Clear communication is one of the most overlooked skills a full-stack engineer needs to succeed in today’s world, Leila Adams, a senior software engineer at digital sports media company FloSports, said. She added that precision, though not the be-all and end-all to all problems, can ensure developers are on the same page.
What technical skills do you consider to be the most essential for your success as a full-stack developer, and why?
Typescript, a superset of JavaScript, is a useful technical skill for full-stack web developers because you can use one language across the entire stack. At FloSports, I use Typescript to create beautiful interactive web pages and to develop feature-rich APIs. Using the same language for both server and client keeps me in great shape, and I never feel rusty moving across the stack to contribute in different areas. However, TypeScript is more so a language than a “skill.”
If you don’t have the luxury of using the same language, understanding and applying design patterns is a useful skill that transcends languages. Patterns we use at FloSports include singleton, decorator, strategy, observer, and many others. It will take time, but being able to identify how to solve a problem by applying a common design pattern can free you up to be a problem-solving polyglot, one who can contribute across any stack.
What’s a soft skill that you also consider critical for your success? Why is this skill so important?
Written and verbal communication — whether posting a message in Slack, demoing a new feature, or leaving a PR comment — is an essential soft skill today. As more companies like FloSports offer remote opportunities, communication is key as most ideas are expressed over Slack and on Zoom calls. Admittedly, I wasn’t born a good communicator and I still probably have a lot of work to do.
My goal, just like when coding, is to try to be as precise as possible, especially when posting messages on Slack and I don’t have body language or facial expressions to aid me. A practical tip? Ditch the pronouns when communicating. Replace vague “it,” “this,” and “they” with concrete nouns so folks have more context. “It” is replaced with “The function on line 430...”, “this” becomes “user account 12345...”, and “they” becomes “@Sam from advertising.” Now my messages have more clarity and value, and if not closer to a solution, at least we are moving forward with a better understanding.
As more companies like FloSports offer remote opportunities, communication is key.”
Throughout your career, what steps have you taken to strengthen these skills? And what advice do you have for developers looking to build up their full-stack repertoire?
I actively apprentice successful people in order to strengthen my skills. Early on in my career I simply asked a college professor “Will you mentor?” That’s how I got my first software development gig. I worked at the digital library at UF for minimum wage scanning old books one page at a time. It was so boring! I wanted to do more technical work so I asked the assistant director to mentor me.
A few weeks later, she saw an opportunity and thought of me. Next thing you know, I’m developing the new science library portal for UF. That’s just one example. Nowadays, I might ask someone at work to “virtual coffee.” They might open up their command line and cURL a new open-source API I haven’t heard of. Full stack has more than just two layers — it’s more like an onion. So it doesn’t hurt to glean knowledge from others. Ask yourself what can I learn from those around me? Then reach out. Don’t just study code, study people. Don’t just study people from afar (that’s creepy), create relationships by asking them to share their secret to success. Next thing you know, you have a new friend and a new path to advancing your career.
For Jonathan Vasek, a senior software developer at omnichannel subscriber engagement and messaging platform Pushami, the skills needed to be a successful full-stack developer are more holistic. Problem-solving skills and the application of soft skills to difficult problems have helped him approach the ambiguity of the role.
What technical skills do you consider to be the most essential for your success as a full-stack developer, and why?
Although there are many technical skills that full-stack developers require to be successful in their work, I have found that a few are more essential than others. When approaching an existing project, it is imperative that we efficiently learn the current design and why it was chosen over others. Most of my development resides in the domain of code, therefore a strong understanding of a few low-level and high-level languages will significantly help you grasp concepts of niche or new languages to your organization. Having a solid foundation when learning new languages will unlock higher tiers of problem-solving. You will move away from thinking about problems in code and start solving them conceptually.
Another important technical skill is accepting defeat and approaching problems from different angles. Sometimes we may think that spending a few more hours on a solution, in hopes of it working, is better than throwing away hours or days of work. It is best to bounce ideas and concerns off a peer or mentor because they may be able to enlighten you about the problem domain and/or solutions they’ve implemented in the past.
Skills really are like muscles, and you must exercise them if you want to excel; always remember to approach software development with a passion.”
What’s a soft skill that you also consider critical for your success? Why is this skill so important?
There are three soft skills that I apply every day that have led me down the path of success: listen and repeat, adapt, and persist.
-
Listen and repeat. Some people have a photographic memory; I do not. I have found that paraphrasing and asking about gaps in my understanding helps me retain that knowledge. In addition, it gives others an opportunity to correct any misunderstandings and avoid mistakes.
-
Adaptability. For full-stack developers, it is ideal when we can solve problems sequentially since it is less mentally taxing. However, the world is rarely ideal and often we must switch between different tasks throughout the day. Having the mental fortitude to perform these context switches without slowing down is a quality of a unicorn developer.
-
Persistence. Some of the best developers that I have met do not give up on harder problems after repeatedly failing to solve them. Do not become discouraged. Have the persistence to push through those boundaries by asking questions when you don’t understand something; it’s what sets apart a junior developer from a senior developer.
Throughout your career, what steps have you taken to strengthen these skills? And what advice do you have for developers looking to build up their full-stack repertoire?
I love working in software development and I consider it both a career and a hobby. I will spend hours or days of my own free time learning about technologies, both new and old, by reading articles and working on personal projects.
About 10 years ago I accepted that becoming a great full-stack developer meant learning mostly through reading. For a developer, this means slogging through boring, and sometimes wholly incomplete, documentation. Documentation is only one part of the puzzle, however. You will need to be comfortable with reading code, both your own and that of other developers.
When I make changes to a stack, I tend to triple-check my work and this means re-reading the same code multiple times while executing it in the fuzzy virtual machine that is my brain. Often times I will apply the “Rubber Ducky” method while doing this. You wouldn’t imagine the number of bugs I have found before ever running a single line of code on a real machine.
The learning never stops for full-stack developers, says Morten Nesvik, VP of enterprise architecture at digital transformation company Cognite. Being well-versed in all areas of the stack ensures that full-stack developers can communicate clearly with all stakeholders.
What technical skills do you consider to be the most essential for your success as a full-stack developer, and why?
As a full-stack developer, you really need to be a jack of all trades. Programming languages, tools, storage, middleware and UI frameworks are changing constantly, accelerated by the adoption of microservices architectures. Platform-as-a-service (PaaS) and infrastructure-as-code are replacing managing hardware. The constant through all of these is data. Although a physical data model changes depending on the storage type — for instance relational vs. graph — a well-designed logical data model is essential to application performance, robustness, scalability and minimizing code changes for future expansion. The data model is also an essential communication tool between customers, developers, testers and other team members.
Being a full-stack developer means learning never stops. And that’s the fun part!”
What’s a soft skill that you also consider critical for your success? Why is this skill so important?
As a full-stack developer, it is necessary to quickly learn new technologies and frameworks. However, to truly differentiate oneself, communication is key. We do not work in a vacuum. To be able to translate something technical into something the audience intuitively understands, and vice versa, builds trust with clients, team members and other stakeholders — and avoids triggering rework and technical debt.
Throughout your career, what steps have you taken to strengthen these skills? And what advice do you have for developers looking to build up their full-stack repertoire?
Look at new frameworks, technologies, or design approaches and see how they can improve what you’re working on. Volunteer for tasks where you get to learn, practice and demonstrate technical and soft skills you want to add to your repertoire. The only way to become a real full-stack developer is to keep learning at all levels of the stack while building the soft skills needed.