I'm attending a Techsylvania 2019 talk, delivered by Aryk Grosz (CTO of Mixbook). The talk is called 'Only The Odd Survive' and lists the unusual things Mixbook did as a scaling startup.
Massive investments in logistics. Across-the-board communication. Transparency between sales/marketing and development. And, towards the end, something that triggered me: hiring fullstack developers only.
Seems like a suicide mission in a growingly understaffed industry. And yet, Aryk's reasoning was a disarmingly pragmatic one: simply put, a startup with big plans needs people who can cover almost all stages of the development process - from user interface to backend business logic to DevOps and such.
Will this ease your recruitment efforts? Far from it. Will it create friction with those team members less willing to build their stack up? Most likely, as Grosz revealed about Mixbook's case.
Coming from an environment such as Around25, 'fullstack' is no foreign word to me. However, after Aryk's talk I understood that:
- not every tech company/agency can afford to be fullstack;
- fullstack comes in different shapes and colors and it's more about the fullstack mindset than the 'fullstack' label;
- the more fullstack devs there are in a team, the most likely it is that the project will be delivered smoothly.
When digging more into this topic, I learned some other stuff about fullstack development, that there isn't a consensus on what it actually means, and that any founder who wants to outsource their tech should understand the option for fullstack in a broader sense.
It's the 2000's. For almost a decade until then, technologies have been undergoing a specialization phase. So, starting with the new millenium, another reality ensued: it became increasingly hard to cover operational costs for all the different specialists needed to complete a project.
That's when end-to-end developers (who were able to build an app from backend to frontend) were most sought after. It was around that time that we, Around25, started to develop a business.
So naturally, we approached our projects with this mindset, that developers in our team should be able to see the bigger picture and understand a project in all its architecture, business logic, features, functionalities.
Since then, things got a little bit more nuanced and stacks got a lot more layered. And while 'fullstack developer' is reportedly the most widespread job title as of 2018, the term nowadays rather refers to pure-breed software engineers, or more simply put, to agile problem-solvers. As recent research put it,
"Full stack development is a methodology which addresses all stack layers and in doing so creates a complete, implementable solution to business requirements. Full stack developers have broad experience among all stack layers and expertise in a few layers. They should be able to render a minimum viable product in a given stack." - cf. Towards a Consensus Definition of Full-stack Development, Shropshire et. al, 2018
As a founder who's outsourcing their tech operations, the most important takeaway is that you should strive for assembling a fullstack team out of devs who have a fullstack mindset. That's more like what Aryk Grosz is trying to achieve at Mixbook.
Because it's harder and harder for developers to get all-around knowledge, it's become easier to just classify them into 'frontend' (coding the 'visible' part of the product) and 'backend' (the 'invisible' stuff: system architecture and logic).
It largely depends on their journey: some may start with basic web design tasks so they quickly fall into the 'frontend' category. They can choose to specialize in this or they may want to expand their tech stack towards back-end.
That's why, when you hire fullstack developers, you shouldn't expect to have "engineers who have mastered every piece of the stack and can ship beautiful enterprise software single-handedly." (according to Caleb Kaiser in this AngelList piece). What you should expect is people who understand the fundamentals of computer science.
More about developers? Check our CTO's writeup about:
What is a
Senior Software Developer?
How do you know what type of developer your product needs?
An ideal distribution within a project team would be a nice blend between deep-diving specialists, integrators, quick-thinkers and everything in between.
But how can, say, a first-time founder with little to no technical knowledge decide which people they need in a team? The tendency is to go with anyone who covers as many skills as possible and expect them to handle all the project's needs. When, in fact, it's about finding the balance of expertise, which involves going beyond labels. You might get, for instance, a fabulous frontend developer who has had decent experience with databases and knows how to communicate efficiently with a backend person when the project needs it, and then implement changes in no time.
The easiest way to spot such a candidate at an interview is to ask them where they're most comfortable with their stack.
And an eloquent answer would be something like this comment I found on dev.to: "I think that there is something to be said about having an overall focus, as I have a general preference towards backend development, but am also comfortable on many frontend technologies, and I've been drawing my focus more towards the frontend. My specialty? I'd have to say I'm a strong problem solver and that I'm always looking for the best tool to do the job."
What should founders know when a company claims it's fullstack?
As a founder, you're in optimizing mode for at least a few years until you generate revenue. So the tech guys you hire should understand much more than just a feature they're working on or the framework they're currently using. They should understand the purpose of your project and how their day-to-day work impacts it.
As one of our software engineers Călin told me, "I believe it's very important to think in systems. Your contribution to a codebase or your change to a process is always part of a bigger system. A piece of code you start writing today might later serve a greater role than you first imagined. But even if it doesn't, be responsible with it. Think before you write. A lot. Software development is always a shapeshifting environment. And the only way I found to tame it is to step back and look at the whole painting before adding your strokes."
In the same note, after doing my research for this article, it occured to me that maybe fullstack developers should be called project-first developers.
The project needs you to shift from a task on responsive design to one on server changes, all in a span of 2 hours? The project-first dev does that.
The project needs you to design a new checkout flow and then move on to implementing the architecture for it? The project-first dev does that.
And so on.
And even if they don't need to do this kind of task-shifting on a regular basis, the idea is they have a good enough understanding of software programming principles so that they can step in, pick up a task, and take the project further down the road. Project first, as I said.
Takeaway: whenever you talk to a freelance developer or software/product development agency that's labeled fullstack, what you should really understand is they give you people who are - first and foremost - real, well-rounded software engineers.
This Is Why We Hire Fullstack Devs
As we speak, we're not 100% fullstack. What we are is a former outsourcing agency that's transitioning to a product development one. For this, we mostly hire fullstack-minded people - not to cut down on costs but to build efficient teams where people can work seamlessly and speak the same language (Software Development), no matter what background they come from.
As our CTO Cosmin Harangus puts it,
"At Around25 the term Fullstack has many implications. From a developer who is as proficient on frontend as he is on backend to a content writer who is featured in a developer newsletter and that occasionally codes changes to our website, to a CEO who does business development all day but can still test an app he cares about better than most devs I've met.
We value that because they have no limitation in what they want to learn and their curiosity pushes them to improve every single day, whether they know it or not. If you are building a startup or even a company culture you want those kind of people because they will constantly challenge you, your team and your product to do and be better than what you were a moment ago.
Just having learned multiple stacks (front + backend for example) is not enough to truly be part of this group without the mindset to push your own limits and illustrate that in everything you do."
Bottom line: fullstack is a mindset, not a label. Look beyond a promising job title and check a developer's logic and understanding of basic principles. I hope I managed to shed a bit more light into what fullstack means. And if I haven't, please let me know in the comments section below 🙂or with an email here.