Hey, Full-snack developer

Recently, I often hear in Bishkek shouts of small children “I am Full-stack. I’m full-stack. “ And something tells me, that these guys do not understand, who is full-stack. In their understanding, if they bit a backend and learned about React.js or something else (starts on something there and ends with js), that’s all. They are at the club. They are in the club of those, who are called full-stack developers.

Full-stack does not end there. And it does not begin either.

There is one definition for the full-stack developer:

Definition for the Full-stack Developer.

In this version, a person must understand everything and close the entire stack of technologies, components. To be able to understand servers, hosting, operating systems, databases, understand several PaaS. In general, it is as efficient as possible to spend the money of the company for which it works. This is Vasya, scrolling in the AWS scaling for the Django application, running in the docker containers running the Kubernetes cluster.

In another version, more lightweight, it’s just the ability to close the employer’s technology stack. It can be a full-stack Wordpress developer. It’s just a man who does sit-outs on wordpress and deploys it. It can be Full-stack Django Developer. This is the person who will completely cover the development stack on Django. But here we have problems with the fact, that it is difficult to assess the level.

After all, yesterday student, who knows how to python and css/js, and the person who spelled more than one application on Django, scaling it, are the same full-stack.

Well, which levels do I see here? I’ll just throw the levels up and down the stairs.

  1. A person knows what is Django. A person knows what js is. A person can make up.
  2. A person understands how Django works (ORM, Cache, internals).
  3. A person understands how the frontend works. He knows how to do a cross-browser layout and write cross-browser JS code.
  4. A person understands how the frontend works. How the browser renders the page, what are his events.
  5. A person understands how the network works in the browser. A person understands how the page rendering can save battery on the mobile phone. Can make an adaptive layout. He knows how to make his site fast, like diarrhea. Can cash in the browser. Can use the service-workers. Knows how to make custom offline pages.
  6. A person understands how his language works (Python) (OOP versus a functional approach, knows the difference between a decorator / generator / metaprogramming and knows how to apply it).
  7. A person understands how to do a performance at the language level using all sorts of optimization.
  8. A person understands how the selected WSGI server (uWSGI, Gunicorn) works.
  9. A person understands how the OS works with sockets and a network (epoll).
  10. A person understands how the network works on the server (Traffic control, shaping, Firewall).
  11. A person understands how the OS kernel works with the network.
  12. A person understands how HTTP and HTTPS works and knows how to provide PFS.
  13. The person knows the difference and is able to apply HTTP (1.0/1.1/2) and Websockets.
  14. A person can deploy and organize it. Making it Graceful, rolling, etc.
  15. A person can optimize queries in the database and knows how his database works (which indices are used, how to set indexes, which indices are used in Mongodb / MySQL / PostgreSQL depending on which storage engine was chosen).
  16. That’s not to mention all the usual algorithms.

A lot of skills, right? Difficult in places, huh? But we have not gone lower in the OS and in hardware, front-end, UX and other things, especially, in the server and the organization of cross-dc replication and writing mobile applications :)

All for what? Stop calling yourself Full-stack. Full-stack is an even more vague term than DevOps, SRE, and others. Full-stack is a myth. And Full-snack sounds funny at least :)

Custom Software and Mobile App Development.

How to ruin a relationship with the client

We continue to share our experience in project management. In the previous article, we shared advice on how to lead your project to fail, today we...

How to automate Jira: Mad Devs experience

People bring a human factor to company regulations and standards. We forget tasks while creating to-do lists and waste time by fixing the crappy...

You want to develop a mobile application? Are you sure?

Every day we get more and more requests for the development of mobile apps. Everyone wants a mobile application, starting from event makers and...