Forging the right Identity

Are you Frontend, Backend or Fullstack?

Last week, I committed to writing about what I learned in the mentorship programme I'm currently going through. I believe you now understand how to learn as software engineers and professionals with my last article. Every topic I will write about will capture the lessons for the week.

Software Engineering is a very wide field in which one can easily get drowned in its ocean whichever aspect of it one might want to explore. Specializations like Frontend, Backend, QA, Testing and many others. A simple google search would provide you with a myriad of results on the said topic. You might find this list interesting. Here, I'll focus on the first two specializations listed above.

The mentor started by defining software development and engineering and the distinction between the two. Software development focuses on building usable features based on a given requirement i.e it focused on the development part of Software Engineering. While Software Engineering refers to the application of an engineering approach to building software. Also, It utilizes a holistic approach to building software. Software development is a subset of software engineering.

Practically, Software engineers work on a larger scale to design, develop, test and deploy entire computer systems and application software for a company or organization. While Software developers focus on the development aspect of software engineering. Also, Software Engineers do exhibit some leadership traits as they are as responsible for the creation of the right processes in place and the ability to carry all stakeholders involved in the development process along.

Part of the requirement for being a software engineer is being able to collaborate and communicate effectively. You might be using many of these practices already. Transitioning from a software developer to an engineer can be a lot smoother provided one is deliberate about the practices of software engineers.

Having sacrificed the earlier sections on the background knowledge. In the coming paragraphs, I'll be focusing on Frontend, Backend Engineering and Fullstack Engineering. Is Fullstack a thing? Stay tuned.

I'll start with Frontend engineering. Frontend engineering deals with planning, designing, building, and implementing the user interface systems of websites, software programs, and web-based applications. There is an interesting debate I found online on which of the field is more complex and which frontend is easier than the backend. Well, that's not the subject here. The point is Frontend is a very complex and interesting field of Software engineering to delve into. With a lot of tools (libraries and frameworks) getting released every time. One might get lost in the trend. There are State management, DOM manipulation, browser APIs, Accessibilities, Web language fundamentals and a myriad of libraries and frameworks to learn.

And on Backend engineering, Backend engineering deals with working on server-side software, which focuses on everything you can't see on a website. Back-end engineers ensure the website performs correctly, focusing on databases, back-end logic, application programming interface (APIs), architecture, protocols and servers. Also, backend engineers have good knowledge of Networking, Automation, System Design, Distributed Systems and Microservices.

As complex as these two are, is it worth it to be Fullstack?

I have always wanted to be a Fullstack Engineer myself. I used to feel it was limited to identify as either of both. And that can be deep-rooted in my Startup experience. We could not deliver products on time. APIs are not coming in. And considering the nimbleness required of a startup, my startup could not survive. Since then, I've always wanted to be proficient at both. The realization that full-stack does not really exist felt like heartbreak for me and people like myself. In the real sense, Fullstack Engineers are mostly stronger in one stack than the other. There is Fullstack (Frontend) and Fullstack (Backend).

The mentor gave an analogy and perform an experiment that got me totally convinced. One, he asked, if you are CEO of a company that has a legal issue on Intellectual property, would you hire an Intellectual property lawyer or a generalist lawyer? Your answer is as good as what you want to happen to your company. To get us convinced, he then asked a question, what would you do if your application is very slow? Most of us started solutions giving we thought might solve the problem.

Through our answers, he was able to determine our area of strength (Frontend) since we took a frontend approach to solve the problem. And that validates the idea that Fullstack exists in the first place. Being stronger at one and having a decent understanding of the other doesn't make you Fullstack.

How do you forge the right identity?

To forge the right identity, you should spend more time building competence by having a fundamental understanding of the area you want to identify as. Frontend or Backend. Cutting your niche would help your career a lot. Being a Backend Engineer and having a good knowledge of Frontend is valuable but should not be taken as Frontend. Although, job titles holding Fullstack do show up. Deep down, you will function in one more than the other. Most companies who hire Fullstack Engineers are Startups that are lean on budget and want to build working products. Companies running at scale will prefer engineers with a specialty.

This article was not written to condemn anybody's choice but to clarify misconceptions. I also used to be a full-stack lover. I was employed as a Fullstack Engineer. But, going forward, I'll prefer to be a Backend Engineer with a good knowledge of the Frontend. Either way you go, being intentional about your growth by learning and practicing would help you grow very fast and reach the peak.

Thanks and God bless. Till the next article.