What is a full stack developer

Translation link: http://www.oschina.net/translate/what-is-a-full-stack-developer

Is it reasonable to expect to master every aspect of the development stack purely based on ethics? Probably not, but Facebook requires it. A Facebook employee told me in OSCON that Facebook only hires full-stack developers. So what does a full-stack developer mean?

For me, full-stack developers are people who are familiar with every layer, and if they are not really interested in all software technologies, they will not be proficient in them.

Good developers are familiar with the entire stack. They are the ones who know how to make things around life easier. This is why I am so opposed to paranoia in the office. Of course, political and communication challenges are still inherent in large organizations. I think that Facebook’s recruitment policy is: if smart people use their brains, they can build better products in a shorter time.

Full stack layers:

1. Server, network and server environment

  1. Knowing where and why it might collapse, nothing is taken for granted.

  2. Appropriate use of file systems, cloud storage, and network resources must have the concept of data redundancy and availability.

  3. Know the hardware requirements of application scalability.

  4. What are multithreading and race conditions? Think about it, you may not see these on the development machine, but they happen in the real environment.

  5. The full-stack coder must also be able to work side by side with operation and maintenance. Provide valuable error information and logs. Make sure they are reliable, because O&M will see these things before you. (Originally DevOps)

2. Data modeling

  1. If the data model is flawed, business logic and upper-level logic will use strange (ugly) code to make up for the flaws in the data model.

  2. Full stack developers must be able to establish a reasonable and standard relational model, including foreign keys, indexes, views, lookup tables, etc.

  3. Full-stack developers should be familiar with non-relational data storage (it should refer to more than NoSQL), and know their advantages over relational storage.

3. Business logic

  1. The core value provided by the application.

  2. Reliable object-oriented skills.

  3. The framework that may be used.

4. API layer, Action layer, MVC

  1. Understand external operations on data models and business logic.

  2. There will be many framework applications in this layer.

  3. Full-stack developers must have a clear, consistent and easy-to-use interface. Excessive complexity is disgusting.

5,UI

  1. 全栈coder:a)知道如何创建可读的页面布局;b)或者明白自己需要帮助设计师。A或B,关键是要能有好的视觉设计。

  2. 掌握HTML5和CSS。

  3. JS正在逐步成为语言新锐,Javascript的世界里已经完成了很多激动人心的工作(node, backbone, knockout...)。

6.用户体验

  1. 全栈coder要知道用户需要的就是It works!

  2. 一个好的系统不会废了用户的手腕和眼睛。一个全栈coder会发现和审视需要8次点击、3步操作的流程,并最终把它一键搞定。

  3. 提供有价值的错误信息。如果崩溃了,就要向用户致歉。有时候程序员会写出让用户自我感觉很二的错误信息。

7.知道用户和业务到底要什么

  1. 现在我们模糊了架构的界限,但却可能远离了实际需求。

  2. 全栈coder要明确知道用户使用软件时的场景,而且要领会业务。

关于这个问题的其它方面:

  1. 编写高质量的单元测试能力。顺便说一下现如今连JS也可以做单元测试了。

  2. 持续集成。发掘程序构建中重复、可自动化的流程,在一定程度上自动完成测试、文档和部署。

  3. 对安全性的敏感,不同的层都可能有自己的脆弱点。

最后:

应用严重依赖一个特定的第三方实现(lib、系统、硬件等)是非常糟糕的实践。全栈开发者要知道了解全面不代表就可以走捷径。当然在抛弃原型法中,他们可以这么干。

在技术起步时很需要全栈开发者的多面技能。然而,在团队定型后,会越来越需要专注技能。

我不觉得在具备了多语言、多平台甚至跨行业的职业生涯之前,你可以称自己为全栈开发者。全栈远超“高级工程师”,它更接近是多语言的开发者并且能在更高的角度看到之间的关联。注意在我的列表中只有3-5项涉及到编码。


Guess you like

Origin blog.csdn.net/justjavac/article/details/18446517