📜 ⬆️ ⬇️

Who is a “full stack” developer?

Is it reasonable to expect every developer to be a master in every aspect of the development process? Most likely not, but Facebook may require this from you. Being at the OSCON conference, a Facebook employee told me that they only hire “Full Stack” developers. Good, but what does this mean?

For me, "Full Stack" A developer is someone who is familiar with every aspect: he is fluent in many of them and has a genuine interest in all technologies.

Skilled developers who are familiar with all aspects can make life easier for the people around them. Therefore, I am so opposed to the hard division of labor in the workplace. Of course, in large organizations, politics and communication problems prevent this. I believe that the essence of Facebook's hiring policy is that if smart people use their heads and their hearts, then the best product can be made in less time.
')

Components of "Full Stack"


1. Server, Network and Hosting Environment.

A. Includes an understanding of what can break and why the resource is taken for granted.
B. Proper use of the file system, cloud databases, network resources, and understanding of redundancy and data availability.
C. How does the application scale up with these hardware limitations?
D. What about multi-threading and race conditions? Know that you will not see all this in your workings out, however it may appear and necessarily appear in the real world.
E. “Full stack” developers can work side by side with DevOps. The system should provide meaningful error messages and the possibility of collecting logs. DevOps will see these messages before you, so consider their opinions.

2. Data Modeling

A. If the data model is incorrect, then business logic and higher classes begin to need a strange (ugly) code - crutches - in order to compensate for exceptional cases that this model does not take into account.
B. “Full stack” developers know how to create a weighted relational model with foreign keys, indexes, reviews, reference tables, etc.
C. “Full stack” developers are familiar with the concept of non-relational databases (NoSQL) and understand how they are superior to relational databases.

3. Business logic

A. The essence of the benefits brought by the application.
B. This requires strong object-oriented skills.
C. You may also need frameworks here.

4. API class / Action / MVC class

A. How your business logic and data model interact with the real external world.
B. At this level, frameworks should be as involved as possible.
C. “Full stack” developers have the ability to write cleanly, consistently, simply for the convenience of the user. It scares me to what extent some APIs are confusing.

5. User Interface

A. “Full stack” developers: a) understand how to create a readable pattern, b) realize that they need the help of artists and graphic designers. In any case, the use of good visual design is extremely important.
B. May include a good command of HTML5 / CSS.
C. JavaScript is the upcoming language of the future and a lot of exciting work is done on JavaScript (node, backbone, knockout ...)

6. UX

A. “Full stack” developers understand that users need things to work simply.
B. A good system does not cause carpal tunnel syndrome or eye irritation to its users. A “full stack” developer can step back and take a look at a process that requires 8 clicks and 3 steps, and then reduce it all to a single click.
C. “Full stack” developers write helpful error messages. If something breaks, apologize. Sometimes programmers unintentionally write error messages that make people feel like idiots.

7. Understanding what is needed by the client and business

A. Currently, the area of ​​responsibility of a development engineer is not completely clear, but this is for the most part an independent role.
B. “Full stack” developers have a deep understanding of what happens when a client uses a product. They also have an understanding of how a business works.

Other components of the puzzle:

1. Ability to write quality unit tests. By the way, today they can be written even under JavaScript.
2. Understanding of repetitive automatic processes required for building an application, testing it, providing documentation, and scaling it.
3. Security awareness is important, as each class is vulnerable in its own way.

Final thoughts

A bad habit is to tightly tie code to a specific application (library, OS, hardware, etc.). Just because the “full stack” developer understands the entire range, it does not give him the right to choose the shortest path. Well, they actually do it when it comes to prototyping.

Technological startups need “full stack” developers because of their versatility! However, as the organization grows, it requires more and more specialized skills.

I'm not sure if you can call yourself a “full stack” developer until you work in different languages, platforms, industries. “Full stack” is beyond the scope of the “senior programmer”; it is a kind of polyglot programmer with a broader vision of all components. Notice that on my list, only 3-5 items apply to writing code.

The translation was made as part of the Tolstoy Summer Camp start-up summer school .

Source: https://habr.com/ru/post/185202/


All Articles