A web application typically has a front-end and a back-end. The front-end is what the user sees and handles user interaction and the back-end is where data is manipulated and stored. As a consultant, I have implemented many features in the front- and back-end for different products. In this article, I share my experiences as a full-stack developer to demonstrate why it’s worth learning.
I perceive a cross-functional team as a team that is self-sufficient and can release their (part of the) software without depending on someone outside of the team. For a part of the software to go live, you typically need developers, an experience designer and someone who can make product decisions. If each role is in the same team, it’s a strong indication that the team is cross-functional. The opposite would be having separate teams for design, product, front-end and back-end.
Now imagine you have a feature that requires changes to the front- and back-end and is ready for development. However, only front-end developers are available to implement it because the back-end developers are working on another feature. The feature cannot be finished until a back-end developer becomes available. Full-stack developers would be able to implement the feature completely, which means the feature can deliver value to users sooner. This seems like a pretty big advantage to me.
From my experience, full-stack developers have more influence on the product and team because they can interact more with the other developers. Those developers who spend more time in one section tend to come into contact with the other developers less, which leads to having less empathy for the problems they are trying to solve. I have noticed that having empathy for each role in the team allows you to make better-informed decisions.
Is it even possible to learn full-stack software development? I feel more comfortable in the front-end than in the back-end. It can be quite overwhelming to keep up with both, but I think it’s worth the effort. For me the extra understanding of back-end development is worth the time I would potentially give up to hone my skills in the front-end.
Deciding what to learn
Being a full-stack developer makes it more difficult to decide what to learn next. Should you focus more on becoming more specialised or pick something that you feel less comfortable with? I have noticed that full-stack developers tend to wait a bit longer before learning a brand new technology. The price to pay seems to be higher if you learn something that becomes outdated. Instead of learning something new and shiny in the back-end it might be better to learn something that is more established in the front-end.
From job ads and talking to developers from other companies, my impression is that most companies hire more front-end and back-end developers than full-stack developers. It seems to be quite rare that front-end developers implement features in the back-end and vice versa. I don’t know why this is, but I guess the role of a full-stack developer is either misunderstood or underestimated in the industry, which leads to there being less obvious job opportunities.
Leave the door open
At the end of the day, you can’t go wrong if you decide to pursue full-stack development because you can always decide to move away from one or the other later in your career. I am cautious about specialising too early because there is a chance I will pick the wrong direction and get bored with it. I don’t know about you but I also prefer more variety, so it’s nice to be able to alternate between writing code in the back-end and front-end as part of my job.
I wish the industry was more open to the role of a full-stack developer or at least less specific to front-end or back-end. Learning full-stack development can be difficult, but I think it allows you to have a better understanding of the application, focus more on learning what matters, deliver value sooner and have the luxury of specialising later.