What 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 you to take it. Being on the OSCON conference, the employee of Facebook told me that they hire only "Full Stack" developers. Okay, but what does that mean?

For me, the "Full Stack" Developer is someone who is familiar with every aspect of: excellent owning many of them and showing genuine interest in all technologies.

Qualified developers who are familiar with all aspects, can greatly facilitate the life of those around them. Why I'm so against rigid division of labour in the workplace. Of course, in large organizations, policy and communication issues interfere with this. I believe that the policy of recruitment of Facebook is that if smart people use their heads and their hearts, a better product can be done in less time.

Components of a "Full Stack"


1. Server, Network and Hosting environments.

A. Involves understanding what can break and why, the resource is taken for granted.
B. Appropriate use of file systems, cloud databases, network resources, and the understanding of redundancy and data availability.
C. How is scaling application under these hardware constraints?
D. What about multi-threading and race conditions? Be aware that you just do not see your development, however it may appear, and must 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 did, so respect their opinion.

2. Data modeling

A. If your data model is incorrect, then the business logic and the classes start to need strange (ugly) code — crutches — in order to compensate for exceptional cases, which this model does not 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 familiar with the concept of non-relational databases (NoSQL) and understand what they are superior to relational databases.

3. Business logic

A. the Essence of the benefits brought by the application.
B. there is serious object-oriented skills.
C. there may also need frameworks.

4. Class API/class Action/MVC

A. How it communicates your business logic and model data with the real outside world.
B. At this level, frameworks should be used.
C. "Full stack" developers have the ability to write clean, consistent, just for the convenience of the user. Scares me the extent to which some APIs are confusing.

5. User interface

A. "Full stack" developers: a) understand how to create a readable diagram, b) realize that they need help from artists and graphic designers. In any case, the use of good visual design is extremely important.
B. Can include a good command of HTML5/CSS.
C. JavaScript is the ascending language of the future and a large amount of exciting work produced in JavaScript (node, backbone, knockout...)

6. UX

A. "Full stack" developers understand that users need to have things just worked out.
B. Good system does not cause its users carpal tunnel syndrome or eye irritation. "Full stack" developer can step back and look at the process requiring 8 clicks and 3 steps, and then to bring it all to one click.
C. "Full stack" developers write useful error messages. If something is broken, sorry. Sometimes programmers inadvertently write error messages that make people feel like idiots.
7. Understanding what the customer's needs and business

A. currently, the scope of responsibilities of the engineer is not entirely clear, however, is a largely independent role.
B. "Full stack" developers have a deep understanding of what happens when the customer uses the product. They also have a good understanding of how the business worked.

Other components of the puzzle:

1. The ability to write quality unit tests. By the way, today they can write even under JavaScript.
2. Understanding repetitive automated processes required to build the application, testing, provision of documentation, as well as its scale.
3. Important awareness of security issues, as each class in its own is vulnerable.

Final thoughts

Bad habit — hard to tie code to a specific application (library, OS, hardware, etc.). Just because "full stack" developer understands the whole range, it does not give him the right to choose the shortest path. Well, actually they do, when it comes to prototyping.

Technology startups need a "full stack" developers because of their versatility! However, with the growth of the organization, it required more and more specialized skills.

I'm not sure whether you can call yourself a "full stack" developer, unless you work in a variety of languages, platforms, industries. "Full stack" goes beyond "senior programmer", this kind of programmer is a polyglot with a wider vision of all the components. Note that in my list, write the code are only 3-5 points.

the Translation is done in the framework of the summer school start-UPS Tolstoy Summer Camp.
Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

Automatically create Liquibase migrations for PostgreSQL

Vkontakte sync with address book for iPhone. How it was done

What part of the archived web