DEV Community

Cover image for Journey to fullstack engineering.
Osita Chibuike for Legobox

Posted on

Journey to fullstack engineering.

This article was originally posted in the legobox blog

Hmm fullstack 💭

In the year 2011, I started coding semi-professionally, It's a bit difficult to explain what that means though, but In essence, I was creating little projects which some individuals find interesting. I had no specific learning path in development and my strategy to learning, was almost like the Nigerian super eagles' strategy, solve your problem as they come ( as e dey hot).

This forced me to dabble in a lot of things ranging from frontend development using HTML, CSS, and Javascript, at its infancy as of then to working with PHP and MySQL for the database, or python in place of PHP when a friend recommended it.

This is not a piece on my story, but I just want to say I never knew when I became a full-stack developer, didn't learn with a coding boot camp, never been to Andela and what's more only met the coding community in 2015, since then I learned about several other tools and technologies that enabled me to do better work. I learnt to code for the love of it, I was hooked, I still am. but then the question came to mind,

Am I really full-stack?

See full-stack is a bit complicated for some to believe that someone could actually embody all attributes of full-stack development, but in order to me to really bring it to view, we have to look at what it would encompass as a whole.

  • UX / UI experience as a designer.
  • Frontend Development and Interface implementation.
  • API development and Backend Development
  • Deployment, Testing, and Development Cycle management (DevOps)

In each item in this list there are several more checklists to be met, so how would one respond to a title in which each section requires several if not some really extensive understanding or knowledge in each area?

Is the full-stack myth real?

Full-stack developers are real, yes I said it they are real, for the fact you haven't met a real one doesn't mean they don't exist, and if you've met one, then you surely know they are real, even more, I think full-stack developers go-ahead to build businesses and products because they gain an integral ability to see the entire pipeline as a whole and not just separate components. For that reason, I think there are 2 major types of full-stack engineers.

please the following terms were coined by me and me alone, no other should be held responsible (aka, they are not real things outside of this article)

  • Single point full-stack developers -- These developers usually know one part better than the rest, and therefore they would usually be able to communicate with teams working in the other sections. Outside of the team, they'd only take on the other sections if absolutely necessary and would usually be reluctant to even look for advancements in these sections.

  • Product focused full-stack developers --These engineers are more product inclined and therefore find it blurry seeing a separation of concerns between the different sections, they are usually looking at the product as a whole and would usually work in order to make the best features available to the central product, these guys typically make good freelancers and may not perform well in a large team.

Yea there's a third (The Liars) - These guys are novices in every section, even the once they seem most prominent at, in the end, they are hobbyist in all areas.

So in order to become a full-stack we have to understand where we fall under, Modern day software development has opened up resource to a whole lot of tools that confuse more than they help, and full-stack development has become a real beast.

Modern-day full stack.

A newbie looking to become a developer today is in for a real fight. but it gets easier as you go along. The repo link below gives you an insight into what it means to be a modern day fullstack developer.

https://github.com/kamranahmedse/developer-roadmap

So here’s an overview.

In the end it all comes down to 3 major plays,

  • Frontend
  • Backend
  • DevOps

Frontend Developement comes down to the frameworks, but these are easier to understand once you get the basics down.

  • HTML
  • Css
    • On the advanced side
    • Preprocessors
      • Scss
      • Less
      • PostCss
    • Css Frameworks
      • Bootstrap
      • MaterializeCss
  • Javascript.
    • The battle of the frameworks
    • React
    • Vue
    • Angular
  • Testing
    • The less known tools of frontend development
    • Jest
    • Mocha
    • Karma

This goes deep. But I’m pretty sure you get the gist. Backend Development on the other hand is another deep trench.

Backend development is really deep and would require another article to really look at what’s going on there in 2018, but a simple overview would show the following.

Backend development revolves around to sets of languages

  • The Scripting Languages
  • The Functional Languages

A full-stack is not expected to know all but is supposed to really understand one. With the scripting languages, we have a look at the following technologies pretty sure you’ve heard of them.

  • Php
  • Node
  • Python
  • Ruby

on the functional side we have

  • Elixr
  • Erlang
  • Clojure
  • Haskell

And there’s more development patterns and technologies with relation to APIs and request-response systems.

  • GraphQL
  • Oauth
  • Redis
  • WebSockets

We also have job and task management as well as cron job management using tools like

  • Message Brokers
    • RabbitMD
    • Iron Worker
  • Search Systems
    • Elastic Search
    • Sphinx

and so much more. and it doesn't stop there, there’s DevOps to worry about.

This section deals with all factors involved in managing an application from development to deployment, this includes managing its resource system, containers and runtime environments as well as server configurations and load balancing.

So how best to describe a full-stack developer if not as someone who loves all processes involved in taking an idea from concept to launched product.

My experiment — Becoming the product developer.

In order to answer my own questions, I have decided to take on the process of building a few products from ideas and concepts for launching them. In this process, I would share my experience building each of these and possibly certify myself with a realization that full-stack developers are at their core product enthusiasts who want to see the product becoming what it is from an idea.

My process would involve a few weeks of building products — from my personal ideas taking them from concept to design, to frontend and interface implementation to functionality (backend) and deployment/testing (DevOps).

My first Idea is code named Spectre (Project Spectre) — A deployment management system for developers and teams to manage the deployment of code from the repository to the server. At the moment I'm in the process of developing the platform and I hope to release it before September. every week, I’ll document and review the process and what it means to build a product in all respect.

I hope for this to be a wonderful experience, never built an open project before but I’m willing to have the idea out there and would love to share my in-process and in-progress stats and review on who I go about implementing features.

Conclusion.

Journey to full-stack engineering is targetted to help others learn and understand that full stack development isn’t as hard as some think it to be.

My Ideas might be premature, but the intentions are focused on proving the full-stack myth. As I would always say, a javascript developer who knows frontend development and uses node (javascript on the backend) and knows how to work with Nginx and docker, can be accorded a full-stack title (there’s no diploma for these things ), but it all depends on the quality of work and knowledge.

the key is switching to a product development mindset, think of yourself as owning the idea and working with the understanding that you are looking for the best possible means of solving your problem. One step at a time.

Top comments (15)

Collapse
 
sam_ferree profile image
Sam Ferree

My advice: narrow your focus.

Do not try to become a full stack engineer by learning MySQL PostreSQL, MongoDB, RavenDB, php, Django, rails, ASP.NET, Spring, React, Vue, Angular, Aurelia, Bootsrap, Bulma, etc...

Pick ONE stack, and learn that front to back.

Collapse
 
lschultebraucks profile image
Lasse Schultebraucks

I agree! It is super hard to learn multiple things deeply at the same time. It is better first to concentrate on one to two technologies and to slowly increase your stack if you learned one technology deep enough (whatever deep enough means).

Collapse
 
greenhatman profile image
Albert Cloete

This is my approach as well. I learn just one or two technologies on each part of the stack.

I like doing it this way because it gives me a very good understanding of the overall software development process and software architecture.

It's easy to swap out one of the parts at a time for a different technology, if needed later.

Collapse
 
mozartted profile image
Osita Chibuike

I agree, it difficult and largely not advisable to undertake learnings in all technology stacks, I'm rather advocating on looking at development from a product-focused orientation, and making sure to work with the best tools for that job, in all sections, be it design, frontend, backend, or DevOps.

Collapse
 
shakeelosmani profile image
Shakeel Osmani • Edited

After working as a professional software engineer for 8 years and having formal education in Comp Sci. I came across people of various skill level and some really smart colleagues and some not so smart ones. One thing always stood out people who had worked on an Enterprise level software stack like Java / .net or C++ etc. tend to be easy to teach any newer fancier technology easily as they usually have strong software engineering foundations. Where as people who are trained in scripting languages, some front end frameworks, it's a hit or miss. If the person is really smart (which is lower number of people in general) he would pick anything up but majority will have harder time to stick to good software development principles.

Collapse
 
vmaggio profile image
Vincenzo Maggio

Minor correction: it's Clojure,not Conjure

Collapse
 
mozartted profile image
Osita Chibuike

thanks, corrections made

Collapse
 
greenhatman profile image
Albert Cloete

Also RabbitMQ, not RabbitMD.

Thread Thread
 
mozartted profile image
Osita Chibuike

Wow...thanks once again.

Collapse
 
trull_dev profile image
Kevin Trullemans

Simple question for me: Is jQuery worth it by now when diving into JavaScript?

Collapse
 
mozartted profile image
Osita Chibuike

Well most platforms existing today wildly used were created in time periods where JQuery was very prominent and regarded as a pioneering tool, with regards to maintaining such platforms and transitioning them (in case of that) the knowledge of JQuery is needed. But most businesses and software companies today, look for individuals using frontend component frameworks (React, Vue, Angular etc.), especially startups. But which every you settle with, there's always going to be a place for you in the industry. The knowledge is a plus though.

Collapse
 
trull_dev profile image
Kevin Trullemans

Thank you for your answer. I'm still at a beginner level and I'm getting a bit lost in the middle of all those technologies and languages. My teacher here, in Belgium, is only teaching jQuery. We barely had any vanilla JavaScript and I have to use a lot of free time focusing on the hot trends and what will make me attractive for eventual future opportunities.

Collapse
 
ns23 profile image
Nitesh Sawant

Really nice article, In my short career as software developer I have mostly worked with backend but now I slowly want to migrate to full stack.
This article will surely help me.

Collapse
 
kodekage profile image
Prosper Opara

Wow, this was enlightening..

I'd love to know. Where would you classify a Developer that knows a little in all the major track and are not hobbyist?

Collapse
 
toritsejufo profile image
Faith Odonghanro

Is that possible? You're not even a hobbyist then. Except you're wondering and checking which would be the best for you before diving in.