To be or not to be a full stack developer?

Serengeti

Tech

06.08.2019.

featured image

This article is intended for web developers as I come from that part and therefore consider myself able to speak only about full stack web developers. The article can be used as a list of things that you can put a checkmark or use it as a to-do learn list. Maybe, I will succeed in convincing you that full stack developer is an expression you should use very carefully. Let’s dig in.

Sure, there are cases when you are a backend developer and you use some of the admin themes like this one and then you say I'm full stack developer. For some period, you are right. You made that CRM “alone” with the help of 5-6 developers who developed that theme and few open source developers. Yes, somebody actually developed and maintains FullCalendar all themes that are used. The problem occurs when in two months or a year client has specific expectations, ES/browser updates, things get deprecated, script is no longer maintained and so on. Your app UX becomes obsolete, buggy, slow, and maintaining is a horror. Guess what, those developers who developed theme are now consultants to guys who both that theme for a large company and maybe they are speakers at conferences. This is because in that specific area (frontend) they had to know much more than you, to develop that theme.

If you are a passionate developer you want to do things the right way, to progress and give back to the community. For sure, you don’t want to be ashamed of your previous work. That means you'll have sleepless nights wanting to learn, understand and use all mentioned in a list below, and perhaps know every little part of that theme you used, adjust theme to your needs or even improve theme code itself.

There is no doubt that a pilot can be a copilot at the same time too (but then the second seat would be empty). It’s not about the knowledge, it’s about the time, efficiency, safety and the amount of information a person can grasp and use efficiently while staying focused. Nowadays planes are fling on autopilot almost all the time. It’s not about when things work well, it’s about when things go sideways like its illustrated in pictures below, “things” is going to hit the fan.

When the thing hits the fan

I've created a list of things that I came across.

Hopefully, it will be a nice learn list for some, and I expect contribution comments to bring more for me to look for, so we can populate these two lists (create a list of BUZZWORDS). In Croatia, there is a term military path (list of battlefields a solder had during the war) so I'm assuming we could have a developer path - some kind of unordered list of buzzwords/tools/languages you already know and things you want to learn.

Anyhow, here’s the list. A sharp eye could notice that backend list is much shorter because I have chosen frontend as a main job and do backend from time to time.

FRONTEND checklist

  • Javascript styleguide 
  • Framework styleguide (know your framework) Angular, React, Vue.js, svelte
  • Javascript features/quirks (hoisting, eventloop, garbage collector, preflight request,
  • browser defaults and differences, (example microtasks)
  • optimizations (first paint, defer, size in KB, cache, service workers)
  • security and vulnerabilities (CORS, XSS, CSRF, CSS(yes, cascading style sheet attacks) etc)
  • patterns and paradigme
  • You have read at least 10 books about frontend
  • UX
  • CSS, SCSS (BEM, others)
  • build tools (gulp, webpack, ..etc)
  • Caching (client side, service workers)
  • Webworkers
  • PWA (service workers, caching, offline web app)
  • Contribute (make library, report bugs in existing libraries)
  • DDD/TDD/BDD/Reactive (RxJS)
  • Write tests - Unit test, E2E tests
  • CI/CD for frontend (Jenkins, Travis, GitLab)
  • Canvas/SVG
  • WebGL
  • Webassembly
  • Responsivness - Bootstrap, Flex, Grid
  • Semantic HTML
  • Assesibility
  • Microfrontends
  • Reusability - modules/npm/webcomponents
  • Webcomponents
  • Mobile apps (nativescript, react native, ionic)
  • Microdata

BACKEND checklist

  • Database (PostgreSQL/MySQL(offset is not needed any more, so thay say)/Elasticsearch and other)
  • Backend language styleguide
  • Framework/styleguide (know your framework)
  • Security and vulnerabilities (both database and programming language)
  • You have read at least 10 books about programming for backend
  • Server caching/Application caching
  • Contribute (make library, report bugs in existing libraries)
  • REST API/HATEOS
  • DDD/TDD/BDD
  • Event sourcing and CQRS
  • Reactive
  • CI/CD for backend
  • Microservices
  • Understand Timezones vs ZoneTime - as a fullstack developer when a part of Germany decides they want to have Switzerland Timezone, you will update your system accordingly for your users, and after that you'll fix that 2px shadow your designer was bragging about.
  • English (You didn’t expect that one coming! Did ya?:) )

Also, you should track changes and updates of all these things, both for frontend and for the backend.

Yes, I know Chuck Norris did that twice. But most of us are just ordinary people who love to get born, enjoy life and not to take all that knowledge to the grave. Imagine passing all that knowledge to your junior full stack developer. Show him these lists and we can all imagine his face while he thinks how much people earn digging trenches.

Frontend developer path

 
Frontend developer path
 

Backend developer path

Backend developer path

Great article from where these pictures are taken from and more elaborate and visually great representation of jungle of knowledge you’ll have to possess to be a full stack developer is this one; 2018 developers roadmap

If you agree, then you were a truly full stack developer. If you disagree, then I'll learn some things I was not aware of.

Either way, we as a (pair/team/company/humans) grew again.

I advise you; be a full stack developer for small projects. For example, some company intranet application. But for a real, advanced project (I will not say complex because no project should be complex at least regarding code readability) do what you are best at; be backend or frontend.

Jadranko Krajinović, Senior Developer