Friday, December 16, 2016

What is meant by Full Stack Developer

The term full-stack means developers who are comfortable working with both back-end and front-end technologies. 



Layers of the full stack
  • Server, Network, and Hosting Environment.
This involves understanding what can break and why, taking no resource for granted.
Appropriate use of the file system, cloud storage, network resources, and an understanding of data redundancy and availability is necessary.
How does the application scale given the hardware constraints?
What about multi-threading and race conditions? Guess what, you won’t see those on your development machine, but they can and do happen in the real world.
Full stack developers can work side by side with DevOps. The system should provide useful error messages and logging capabilities. DevOps will see the messages before you will, so make them count.

  • Data Modeling
If the data model is flawed, the business logic and higher layers start to need strange (ugly) code to compensate for corner cases the data model doesn’t cover.
Full stack developers know how to create a reasonably normalized relational model, complete with foreign keys, indexes, views, lookup tables, etc.
Full stack developers are familiar with the concept of non-relational data stores and understand where they shine over relational data stores.

  • Business Logic
The heart of the value the application provides.
Solid object oriented skills are needed here.
Frameworks might be needed here as well.

  • API layer / Action Layer / MVC
How the outside world operates against the business logic and data model.
Frameworks at this level should be used heavily.
Full stack developers have the ability to write clear, consistent, simple to use interfaces. The heights to which some APIs are convoluted repel me.

  • User Interface
Full stack developers: a) understand how to create a readable layout, or b) acknowledge they need help from artists and graphic designers. Either way, implementing a good visual design is key.
Can include mastery of HTML5 / CSS.
JavaScript is the up and coming language of the future and lots of exciting work is being done in the JavaScript world (node, backbone, knockout…)

  • User Experience
Full stack developers appreciate that users just want things to work.
A good system doesn’t give its users carpal tunnel syndrome or sore eyes. A full stack developer can step back and look at a process that needs 8 clicks and 3 steps, and get it down to one click.
Full stack developers write useful error messages. If something breaks, be apologetic about it. Sometimes programmers inadvertently write error messages that can make people feel stupid.
Understanding what the customer and the business need.
Now we are blurring into the line of architect, but that is too much of a hands off role.
Full stack developers have a grasp of what is going on in the field when the customer uses the software. They also have a grasp of the business.

How skilled are you in each discipline?

The basics of the languages/frameworks we learn today can often be picked up in a matter of hours. We no longer add skills to our CVs by taking a course, we simply download some code and start hacking through tutorials and demo code. The problem is, I feel the difference between knowing something in web development and truly mastering it is now becoming an increasingly blurred line.

It's very easy to become disillusioned with your own skills when you've deployed some code which has been consumed by lots of users. Let's say you've written a web application which has scaled well under load, and you've received great feedback. Are you a master of everything you used in this stack? Or are you simply good at implementing the layers you needed to make things work together? Because that's an entirely different skill, and in fact a very valuable one.

The skill of acquiring new skills

In my eyes the most valuable skill to have is the ability to learn, closely followed by the ability to know when you don't know something. I'm sure we've all met people who decide to put brakes on their own learning because they believe they've become a master at something. I don't know about you, but the smartest people I know (and the ones I have most respect for) are the ones who are still eager to learn new things every day, from everyone they meet. These people just don't stop growing, in terms of both ability and character.


Employability of a true full-stack developer

The employability of a true full-stack developer: HIGH.
The chances of finding a good full-stack developer: LOW.
Smaller companies and startups NEED full-stack developers. Developers are often forced to acquire new skills when the resources simply aren't available. I feel the problem for companies desperate to hire these guys and girls, is that the real multi-skilled developers are often lost in a sea of douchebags, claiming they know it all.


Conclusion


Technology start-ups need full stack developers for their versatility!  However, as an organization matures, it needs more and more focused skills.
I’m not sure you can call yourself a full stack developer until you have worked in multiple languages, platforms, and even industries in your professional career. Note that , only items 3-5 involve writing code.


No comments:

Post a Comment

System Design :: Performace Tuning: Scaling, Resiliency, persistence

Netflix System Deisgn